├── .DS_Store ├── All_Digital_VTSensor ├── 1st_version │ ├── Digital_Sensor_Verilog │ │ ├── DigitalVTSensor_Top.v │ │ ├── LICENSE │ │ ├── README.md │ │ ├── RO_MUX.v │ │ ├── RO_inv_lvt.v │ │ ├── RO_inv_rvt.v │ │ ├── RO_inv_slvt.v │ │ ├── RO_nand4_lvt.v │ │ ├── RO_nand4_rvt.v │ │ ├── RO_nand4_slvt.v │ │ ├── Ripple_Counter.v │ │ ├── SPI.v │ │ └── TDC_48step.v │ ├── Hard_Macro │ │ ├── Brown_PVTSensor.lef │ │ ├── Brown_PVTSensor.v │ │ ├── LICENSE │ │ ├── README.md │ │ └── Sensor_Compiler.py │ ├── LICENSE │ ├── README.md │ ├── Spice_Netlist │ │ ├── BGR.sp │ │ ├── LICENSE │ │ ├── README.md │ │ ├── Tosc.sp │ │ └── Vosc.sp │ └── Testbench │ │ ├── Analog_Sensor_Testbench.sp │ │ ├── Digital_Sensor_Testbench.sp │ │ ├── LICENSE │ │ └── README.md ├── 2nd_version │ ├── LICENSE │ ├── README.md │ └── Verilog_65nm_RTL │ │ ├── DigitalSensor_65_quadsensors.v │ │ ├── DigitalVTSensor_Top_V3_WDummy.v │ │ ├── DigitalVTSesnor_testbench.v │ │ ├── Dummy_RO_Top.v │ │ ├── Dummy_RO_cell.v │ │ ├── Images │ │ ├── LICENSE │ │ ├── spi_miso_code.png │ │ └── spi_mosi_code.png │ │ ├── LICENSE │ │ ├── README.md │ │ ├── RO_MUX.v │ │ ├── RO_inv_hvt.v │ │ ├── RO_inv_lvt.v │ │ ├── RO_inv_rvt.v │ │ ├── RO_nand4_hvt.v │ │ ├── RO_nand4_lvt.v │ │ ├── RO_nand4_rvt.v │ │ ├── RO_nor4_hvt.v │ │ ├── RO_nor4_lvt.v │ │ ├── RO_nor4_rvt.v │ │ ├── Ripple_Counter_RO.v │ │ ├── Ripple_Counter_SPIClkCnt.v │ │ ├── SPI.v │ │ ├── Scripts │ │ ├── LICENSE │ │ ├── README.md │ │ ├── Script_Dummy_RO_Top.py │ │ ├── Script_Main_RO_Writing.py │ │ ├── Script_TDC.py │ │ └── Script_testbench.py │ │ ├── TDC_48step.v │ │ └── testbench_RTL.v ├── LICENSE └── README.md ├── LICENSE ├── Microcontroller ├── FPGA │ ├── .DS_Store │ ├── .gitignore │ ├── .gitlab-ci.yml │ ├── LICENSE │ ├── README.md │ ├── ci │ │ ├── install-verilator.csh │ │ ├── rtl-basic-rvc.csh │ │ ├── rtl-basic.csh │ │ ├── rtl-ml-rvc.csh │ │ ├── rtl-ml.csh │ │ ├── rtl-sequential-rvc.csh │ │ ├── rtl-sequential.csh │ │ ├── setup_micro.csh │ │ ├── setup_riscy.csh │ │ ├── setup_riscy_fp.csh │ │ ├── setup_zero.csh │ │ ├── verilator-rvc.csh │ │ └── verilator.csh │ ├── create-archive.py │ ├── doc │ │ ├── api │ │ │ ├── .gitignore │ │ │ ├── api_doc.conf │ │ │ ├── conf │ │ │ ├── customdoxygen.css │ │ │ ├── footer.html │ │ │ └── header.html │ │ └── datasheet │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── content │ │ │ ├── adv_dbg_unit.tex │ │ │ ├── core.tex │ │ │ ├── memorymap.tex │ │ │ ├── overview.tex │ │ │ ├── peripherals.tex │ │ │ ├── peripherals_debug_unit.tex │ │ │ ├── peripherals_event_unit.tex │ │ │ ├── peripherals_gpio.tex │ │ │ ├── peripherals_i2c.tex │ │ │ ├── peripherals_pulpino_ctrl.tex │ │ │ ├── peripherals_spi.tex │ │ │ ├── peripherals_timer.tex │ │ │ ├── spi_slave.tex │ │ │ └── title.tex │ │ │ ├── datasheet.tex │ │ │ ├── figures │ │ │ ├── .gitignore │ │ │ ├── imperio_layout.jpg │ │ │ ├── pulpino_logo_inline1.png │ │ │ ├── riscy_archi.png │ │ │ └── zeroriscy_archi.png │ │ │ ├── figures_raw │ │ │ ├── adv_dbg_unit.obj │ │ │ ├── event_lines.obj │ │ │ ├── event_unit.obj │ │ │ ├── memory_map.obj │ │ │ ├── pulpino_block.obj │ │ │ └── riscv_overview.obj │ │ │ └── preamble │ │ │ └── preamble.tex │ ├── fpga │ │ ├── .DS_Store │ │ ├── .gitignore │ │ ├── Makefile │ │ ├── common │ │ │ └── messages.tcl │ │ ├── ips │ │ │ ├── xilinx_clock_manager │ │ │ │ ├── .gitignore │ │ │ │ ├── Makefile │ │ │ │ └── tcl │ │ │ │ │ └── run.tcl │ │ │ ├── xilinx_fp_fma │ │ │ │ ├── .gitignore │ │ │ │ ├── Makefile │ │ │ │ └── tcl │ │ │ │ │ └── run.tcl │ │ │ ├── xilinx_mem_32768x32 │ │ │ │ ├── .gitignore │ │ │ │ ├── Makefile │ │ │ │ └── tcl │ │ │ │ │ └── run.tcl │ │ │ ├── xilinx_mem_32768x32_dp │ │ │ │ ├── .gitignore │ │ │ │ ├── Makefile │ │ │ │ └── tcl │ │ │ │ │ └── run.tcl │ │ │ └── xilinx_mem_8192x32 │ │ │ │ ├── .gitignore │ │ │ │ ├── Makefile │ │ │ │ └── tcl │ │ │ │ └── run.tcl │ │ ├── pulpemu │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ └── tcl │ │ │ │ ├── impl.tcl │ │ │ │ ├── ps7_bd.tcl │ │ │ │ └── run.tcl │ │ ├── pulpino │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── constraints.xdc │ │ │ └── tcl │ │ │ │ ├── .gitignore │ │ │ │ ├── run.tcl │ │ │ │ └── src_files.tcl │ │ ├── rtl │ │ │ ├── clk_rst_gen.v │ │ │ ├── pulpemu_top.v │ │ │ └── pulpino_wrap.v │ │ └── sw │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── apps │ │ │ ├── gpio_access │ │ │ │ ├── Makefile │ │ │ │ └── main.c │ │ │ └── spiload │ │ │ │ ├── Makefile │ │ │ │ ├── arg_parsing.c │ │ │ │ ├── console_read.c │ │ │ │ ├── main.c │ │ │ │ └── spiloader.h │ │ │ ├── boot.bif │ │ │ ├── buildroot.config │ │ │ ├── busybox.config │ │ │ ├── device-tree │ │ │ ├── pl.dtsi │ │ │ ├── skeleton.dtsi │ │ │ ├── system.dts │ │ │ ├── zybo │ │ │ │ ├── pl.dtsi │ │ │ │ ├── ps.dtsi │ │ │ │ └── system.dts │ │ │ └── zynq-7000.dtsi │ │ │ ├── hsi │ │ │ ├── Makefile │ │ │ └── fsbl.tcl │ │ │ ├── kernel.config │ │ │ ├── u-boot-xlnx-def-env.patch │ │ │ ├── u-boot.config │ │ │ └── u-boot.config.zybo │ ├── generate-scripts.py │ ├── ips │ │ └── .gitignore │ ├── ips_list.yml │ ├── rtl │ │ ├── apb_mock_uart.sv │ │ ├── axi2apb_wrap.sv │ │ ├── axi_mem_if_SP_wrap.sv │ │ ├── axi_node_intf_wrap.sv │ │ ├── axi_slice_wrap.sv │ │ ├── axi_spi_slave_wrap.sv │ │ ├── boot_code.sv │ │ ├── boot_rom_wrap.sv │ │ ├── clk_rst_gen.sv │ │ ├── components │ │ │ ├── cluster_clock_gating.sv │ │ │ ├── cluster_clock_inverter.sv │ │ │ ├── cluster_clock_mux2.sv │ │ │ ├── dp_ram.sv │ │ │ ├── generic_fifo.sv │ │ │ ├── pulp_clock_gating.sv │ │ │ ├── pulp_clock_inverter.sv │ │ │ ├── pulp_clock_mux2.sv │ │ │ ├── rstgen.sv │ │ │ └── sp_ram.sv │ │ ├── core2axi_wrap.sv │ │ ├── core_region.sv │ │ ├── dp_ram_wrap.sv │ │ ├── includes │ │ │ ├── apb_bus.sv │ │ │ ├── apu_defines.sv │ │ │ ├── axi_bus.sv │ │ │ ├── config.sv │ │ │ └── debug_bus.sv │ │ ├── instr_ram_wrap.sv │ │ ├── periph_bus_wrap.sv │ │ ├── peripherals.sv │ │ ├── pulpino_top.sv │ │ ├── ram_mux.sv │ │ ├── random_stalls.sv │ │ └── sp_ram_wrap.sv │ ├── sw │ │ ├── .DS_Store │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── apps │ │ │ ├── .DS_Store │ │ │ ├── .gitignore │ │ │ ├── Arduino_tests │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── GPIO_test │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── GPIO_test.cpp │ │ │ │ ├── PWM_test │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── PWM_test.cpp │ │ │ │ ├── PulseIn_test │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── PulseIn_test.cpp │ │ │ │ ├── SPI_test │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── SPI_test.cpp │ │ │ │ ├── UART_test │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── UART_test.cpp │ │ │ │ ├── int_test │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── int_test.cpp │ │ │ │ ├── shift_test │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── shift_test.cpp │ │ │ │ ├── timer_test │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── timer_test.cpp │ │ │ │ └── wire_test │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── wire_test.cpp │ │ │ ├── CMakeLists.txt │ │ │ ├── CMakeSim.txt │ │ │ ├── bench │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── aes_cbc │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── aes_cbc.c │ │ │ │ │ └── aes_cbc_test.c │ │ │ │ ├── common.h │ │ │ │ ├── conv2d │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── conv2d.c │ │ │ │ │ └── conv2d_test.c │ │ │ │ ├── crc32.c │ │ │ │ ├── fdctfst │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── fdctfst.c │ │ │ │ │ └── fdctfst_test.c │ │ │ │ ├── fft │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── fft.c │ │ │ │ │ └── fft_test.c │ │ │ │ ├── fir │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── fir.c │ │ │ │ │ └── fir_test.c │ │ │ │ ├── ipm │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── ipm.c │ │ │ │ │ ├── ipm.h │ │ │ │ │ └── ipm_test.c │ │ │ │ ├── keccak │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── keccak.c │ │ │ │ │ └── keccak_test.c │ │ │ │ ├── main.c │ │ │ │ ├── matmul │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── matmul16.cpp │ │ │ │ │ ├── matmul16_test.c │ │ │ │ │ ├── matmul32.cpp │ │ │ │ │ ├── matmul32_test.c │ │ │ │ │ ├── matmul8.cpp │ │ │ │ │ ├── matmul8_test.c │ │ │ │ │ └── matmul_impl.h │ │ │ │ └── sha │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── sha.c │ │ │ │ │ ├── sha.h │ │ │ │ │ └── sha_test.c │ │ │ ├── boot_code │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── boot_code.c │ │ │ ├── compressed │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── compressed.S │ │ │ │ └── main.c │ │ │ ├── fpga │ │ │ │ ├── .DS_Store │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── fpga_test │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── main.c │ │ │ │ ├── gpio_demo │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── main.c │ │ │ │ └── led_demo │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── main.c │ │ │ ├── freertos │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── FreeRTOSConfig.h │ │ │ │ ├── Source │ │ │ │ │ ├── croutine.c │ │ │ │ │ ├── event_groups.c │ │ │ │ │ ├── include │ │ │ │ │ │ ├── FreeRTOS.h │ │ │ │ │ │ ├── StackMacros.h │ │ │ │ │ │ ├── croutine.h │ │ │ │ │ │ ├── deprecated_definitions.h │ │ │ │ │ │ ├── event_groups.h │ │ │ │ │ │ ├── list.h │ │ │ │ │ │ ├── mpu_wrappers.h │ │ │ │ │ │ ├── portable.h │ │ │ │ │ │ ├── projdefs.h │ │ │ │ │ │ ├── queue.h │ │ │ │ │ │ ├── semphr.h │ │ │ │ │ │ ├── stdint.readme │ │ │ │ │ │ ├── task.h │ │ │ │ │ │ └── timers.h │ │ │ │ │ ├── list.c │ │ │ │ │ ├── portable │ │ │ │ │ │ ├── GCC │ │ │ │ │ │ │ └── RI5CY │ │ │ │ │ │ │ │ ├── port.c │ │ │ │ │ │ │ │ └── portmacro.h │ │ │ │ │ │ └── MemMang │ │ │ │ │ │ │ ├── heap_1.c │ │ │ │ │ │ │ ├── heap_2.c │ │ │ │ │ │ │ ├── heap_3.c │ │ │ │ │ │ │ ├── heap_4.c │ │ │ │ │ │ │ └── heap_5.c │ │ │ │ │ ├── queue.c │ │ │ │ │ ├── readme.txt │ │ │ │ │ ├── tasks.c │ │ │ │ │ └── timers.c │ │ │ │ └── main.c │ │ │ ├── helloworld │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── helloworld.c │ │ │ │ └── helloworld.cpp │ │ │ ├── imperio_tests │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── testGPIO │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ └── testGPIO.c │ │ │ │ ├── testI2C │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── testI2C.c │ │ │ │ ├── testInterrupt │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── main.c │ │ │ │ ├── testSPIMaster │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── testSPIMaster.c │ │ │ │ └── testUART │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── testUART.c │ │ │ ├── ml_tests │ │ │ │ ├── .gitignore │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── mlAxpy │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlAxpy.c │ │ │ │ │ ├── mlAxpy.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlBilat │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlBilat.c │ │ │ │ │ ├── mlBilat.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlButter │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlButter.c │ │ │ │ │ ├── mlButter.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlChol │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlChol.c │ │ │ │ │ ├── mlChol.h │ │ │ │ │ ├── mlShared.h │ │ │ │ │ └── mlsave │ │ │ │ ├── mlDct │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlDct.c │ │ │ │ │ ├── mlDct.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlDist │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlDist.c │ │ │ │ │ ├── mlDist.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlDotp │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlDotp.c │ │ │ │ │ ├── mlDotp.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlFir │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlFir.c │ │ │ │ │ ├── mlFir.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlGemm │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlGemm.c │ │ │ │ │ ├── mlGemm.h │ │ │ │ │ ├── mlShared.h │ │ │ │ │ └── stimuli.h │ │ │ │ ├── mlGemv │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlGemv.c │ │ │ │ │ ├── mlGemv.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlGivens │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlGivens.c │ │ │ │ │ ├── mlGivens.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlGrad │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlGrad.c │ │ │ │ │ ├── mlGrad.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlGradDir │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlGradDir.c │ │ │ │ │ ├── mlGradDir.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlHom │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlHom.c │ │ │ │ │ ├── mlHom.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlHomErr │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlHomErr.c │ │ │ │ │ ├── mlHomErr.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlLog │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlLog.c │ │ │ │ │ ├── mlLog.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlQr │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlQr.c │ │ │ │ │ ├── mlQr.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlRbf │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlRbf.c │ │ │ │ │ ├── mlRbf.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlSchur │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── mlSchur.c │ │ │ │ │ ├── mlSchur.h │ │ │ │ │ └── mlShared.h │ │ │ │ ├── mlSin │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlShared.h │ │ │ │ │ ├── mlSin.c │ │ │ │ │ └── mlSin.h │ │ │ │ ├── mlSvd │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlShared.h │ │ │ │ │ ├── mlSvd.c │ │ │ │ │ └── mlSvd.h │ │ │ │ ├── mlWdotp │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── mlShared.h │ │ │ │ │ ├── mlWdotp.c │ │ │ │ │ └── mlWdotp.h │ │ │ │ └── ml_shared │ │ │ │ │ └── mlShared.h │ │ │ ├── riscv_tests │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── basic │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── basic.c │ │ │ │ ├── includes │ │ │ │ │ └── riscv_test.h │ │ │ │ ├── official │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── riscv_test.h │ │ │ │ │ ├── test_macros.h │ │ │ │ │ ├── test_print.c │ │ │ │ │ ├── tests.S │ │ │ │ │ └── tests │ │ │ │ │ │ ├── NOTE │ │ │ │ │ │ ├── add.S │ │ │ │ │ │ ├── addi.S │ │ │ │ │ │ ├── and.S │ │ │ │ │ │ ├── andi.S │ │ │ │ │ │ ├── auipc.S │ │ │ │ │ │ ├── beq.S │ │ │ │ │ │ ├── bge.S │ │ │ │ │ │ ├── bgeu.S │ │ │ │ │ │ ├── blt.S │ │ │ │ │ │ ├── bltu.S │ │ │ │ │ │ ├── bne.S │ │ │ │ │ │ ├── j.S │ │ │ │ │ │ ├── jal.S │ │ │ │ │ │ ├── jalr.S │ │ │ │ │ │ ├── lui.S │ │ │ │ │ │ ├── mul.S │ │ │ │ │ │ ├── or.S │ │ │ │ │ │ ├── ori.S │ │ │ │ │ │ ├── riscv_test.h │ │ │ │ │ │ ├── simple.S │ │ │ │ │ │ ├── sll.S │ │ │ │ │ │ ├── slli.S │ │ │ │ │ │ ├── slt.S │ │ │ │ │ │ ├── slti.S │ │ │ │ │ │ ├── sra.S │ │ │ │ │ │ ├── srai.S │ │ │ │ │ │ ├── srl.S │ │ │ │ │ │ ├── srli.S │ │ │ │ │ │ ├── sub.S │ │ │ │ │ │ ├── test_macros.h │ │ │ │ │ │ ├── xor.S │ │ │ │ │ │ └── xori.S │ │ │ │ ├── testALU │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── gen_stimuli.py │ │ │ │ │ ├── testALU.c │ │ │ │ │ └── testALU_stimuli.h │ │ │ │ ├── testALUExt │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── gen_stimuli.py │ │ │ │ │ ├── testALUExt.c │ │ │ │ │ └── testALUExt_stimuli.h │ │ │ │ ├── testAddSubNorm │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── gen_stimuli.py │ │ │ │ │ ├── testAddSubNorm.c │ │ │ │ │ └── testAddSubNorm_stimuli.h │ │ │ │ ├── testBitManipulation │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── gen_stimuli.py │ │ │ │ │ ├── testBitManipulation.c │ │ │ │ │ ├── testBitManipulation_stimuli.h │ │ │ │ │ └── testBitManipulation_stimuli_riscv.h │ │ │ │ ├── testCSR │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── gen_stimuli.py │ │ │ │ │ ├── testCSR.c │ │ │ │ │ └── testCSR_stimuli.h │ │ │ │ ├── testClip │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── gen_stimuli.py │ │ │ │ │ ├── testClip.c │ │ │ │ │ └── testClip_stimuli.h │ │ │ │ ├── testCnt │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── testCnt.c │ │ │ │ ├── testDebug │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── main.c │ │ │ │ ├── testDivRem │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── stimuli.h │ │ │ │ │ ├── stimuli │ │ │ │ │ │ ├── Makefile │ │ │ │ │ │ └── stimuli_gen.c │ │ │ │ │ └── testDivRem.c │ │ │ │ ├── testDotMul │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── testDotMul.c │ │ │ │ │ ├── testDotMul_stimuli.h │ │ │ │ │ └── testDotMul_stimuli_riscv.h │ │ │ │ ├── testEvents │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── testEvents.c │ │ │ │ ├── testExceptions │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── main.c │ │ │ │ ├── testFPU │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── mlShared.h │ │ │ │ │ ├── testFPU.c │ │ │ │ │ └── testFPU.h │ │ │ │ ├── testIRQ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── main.c │ │ │ │ ├── testMUL │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── stimuli.h │ │ │ │ │ ├── stimuli │ │ │ │ │ │ └── main.c │ │ │ │ │ └── testMUL.c │ │ │ │ ├── testMacNorm │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── gen_stimuli.py │ │ │ │ │ ├── testMacNorm.c │ │ │ │ │ └── testMacNorm_stimuli.h │ │ │ │ ├── testMisaligned │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── main.c │ │ │ │ ├── testPriv │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── testPriv.c │ │ │ │ ├── testShufflePack │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── gen_stimuli.py │ │ │ │ │ ├── testShufflePack.c │ │ │ │ │ ├── testShufflePack_stimuli.h │ │ │ │ │ └── testShufflePack_stimuli_riscv.h │ │ │ │ ├── testVecArith │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── gen_stimuli.py │ │ │ │ │ ├── testVecArith.c │ │ │ │ │ ├── testVecArith_stimuli.h │ │ │ │ │ └── testVecArith_stimuli_riscv.h │ │ │ │ └── testVecCmp │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── gen_stimuli.py │ │ │ │ │ ├── testVecCmp.c │ │ │ │ │ └── testVecCmp_stimuli_riscv.h │ │ │ └── sequential_tests │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── bitDescriptor │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── bitDescriptor.c │ │ │ │ ├── bubblesort │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ └── bubblesort.c │ │ │ │ ├── cnn_layer │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── cnn_kernels.c │ │ │ │ ├── cnn_kernels_fused.c │ │ │ │ ├── cnn_layer.c │ │ │ │ ├── cnn_layer.h │ │ │ │ ├── config.h │ │ │ │ ├── data_image.h │ │ │ │ └── gen_stimuli.m │ │ │ │ ├── convolution │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── conv_kernels.c │ │ │ │ ├── convolution.c │ │ │ │ ├── convolution.h │ │ │ │ ├── data_image.h │ │ │ │ └── gen_stimuli.m │ │ │ │ ├── crc32 │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ ├── crc.h │ │ │ │ ├── crc_32.c │ │ │ │ └── jrand.c │ │ │ │ ├── dct │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ └── dct.c │ │ │ │ ├── fdct │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ ├── fdct.c │ │ │ │ └── fdct.h │ │ │ │ ├── fdtd-1d │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ └── fdtd-1d.c │ │ │ │ ├── fft │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── _kiss_fft_guts.h │ │ │ │ ├── expresp.h │ │ │ │ ├── fft_precomputed.c │ │ │ │ ├── kiss_fft.c │ │ │ │ ├── kiss_fft.h │ │ │ │ ├── kiss_fftr.c │ │ │ │ ├── kiss_fftr.h │ │ │ │ ├── main.c │ │ │ │ └── stimuli.h │ │ │ │ ├── fibonacci │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ └── fibonacci.c │ │ │ │ ├── gauss-2d │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ └── gauss.c │ │ │ │ ├── jacobi-1d-imper │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ └── jacobi-1d-imper.c │ │ │ │ ├── jacobi-2d-imper │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ ├── jacobi-2d-imper.c │ │ │ │ └── util.h │ │ │ │ ├── matrixAdd │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── gen_stimuli.py │ │ │ │ ├── matrixAdd.c │ │ │ │ ├── matrixAdd16.h │ │ │ │ ├── matrixAdd32.h │ │ │ │ └── matrixAdd8.h │ │ │ │ ├── matrixMul16 │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── gen_stimuli.py │ │ │ │ ├── matrixMul.c │ │ │ │ └── parMatrixMul16_stimuli.h │ │ │ │ ├── matrixMul16_dotp │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── dotMatrixMul16_stimuli.h │ │ │ │ ├── gen_stimuli.py │ │ │ │ ├── matmul_kernels.c │ │ │ │ └── matrixMul.c │ │ │ │ ├── matrixMul32 │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── gen_stimuli.py │ │ │ │ ├── matrixMul.c │ │ │ │ └── parMatrixMul32_stimuli.h │ │ │ │ ├── matrixMul8 │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── gen_stimuli.py │ │ │ │ ├── matrixMul.c │ │ │ │ └── parMatrixMul8_stimuli.h │ │ │ │ ├── matrixMul8_dotp │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── dotMatrixMul8_stimuli.h │ │ │ │ ├── gen_stimuli.py │ │ │ │ ├── matmul_kernels.c │ │ │ │ └── matrixMul.c │ │ │ │ ├── motion_detection │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ ├── conv_fast.c │ │ │ │ ├── golden │ │ │ │ │ ├── background_80_60.h │ │ │ │ │ ├── motion_detection.c │ │ │ │ │ └── test_omino_80_60.h │ │ │ │ ├── img_10_10.h │ │ │ │ ├── img_20_20.h │ │ │ │ ├── img_40_40.h │ │ │ │ ├── motion_detection.c │ │ │ │ ├── motion_detection.h │ │ │ │ ├── test_20_20.h │ │ │ │ └── test_5_5.h │ │ │ │ ├── non_separable_2d_filter │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── non_separable_2d_filter.c │ │ │ │ ├── pooling │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── config.h │ │ │ │ ├── data.h │ │ │ │ ├── gen_stimuli.m │ │ │ │ ├── pool_kernels.c │ │ │ │ ├── pooling.c │ │ │ │ └── pooling.h │ │ │ │ ├── rijndael │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ ├── aes.c │ │ │ │ ├── aes.h │ │ │ │ ├── aestab.h │ │ │ │ └── aesxam.c │ │ │ │ ├── stencil │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ ├── matlab │ │ │ │ │ └── stencil.m │ │ │ │ ├── stencil.c │ │ │ │ └── stencil.h │ │ │ │ ├── stencil_vect │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── stencil_vect.c │ │ │ │ ├── sudokusolver │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ ├── matlab │ │ │ │ │ └── sudokusolver.m │ │ │ │ ├── sudokusolver.c │ │ │ │ └── sudokusolver.h │ │ │ │ ├── towerofhanoi │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Makefile │ │ │ │ ├── matlab │ │ │ │ │ └── towerofhanoi.m │ │ │ │ └── towerofhanoi.c │ │ │ │ └── tracking-seq │ │ │ │ ├── Makefile │ │ │ │ ├── image.h │ │ │ │ ├── result.h │ │ │ │ ├── tracking.c │ │ │ │ ├── tracking.h │ │ │ │ └── tracking_functions.c │ │ ├── cmake_configure.microriscy.gcc.sh │ │ ├── cmake_configure.riscv.gcc.sh │ │ ├── cmake_configure.riscvfloat.gcc.sh │ │ ├── cmake_configure.zeroriscy.gcc.sh │ │ ├── libs │ │ │ ├── Arduino_lib │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── README.md │ │ │ │ ├── core_libs │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── inc │ │ │ │ │ │ ├── Arduino.h │ │ │ │ │ │ ├── Client.h │ │ │ │ │ │ ├── HardwareSerial.h │ │ │ │ │ │ ├── HardwareSerial_private.h │ │ │ │ │ │ ├── IPAddress.h │ │ │ │ │ │ ├── Print.h │ │ │ │ │ │ ├── Printable.h │ │ │ │ │ │ ├── Server.h │ │ │ │ │ │ ├── Stream.h │ │ │ │ │ │ ├── Udp.h │ │ │ │ │ │ ├── WCharacter.h │ │ │ │ │ │ ├── WString.h │ │ │ │ │ │ ├── binary.h │ │ │ │ │ │ ├── main.cpp │ │ │ │ │ │ ├── new.h │ │ │ │ │ │ ├── pins_arduino.h │ │ │ │ │ │ └── wiring_private.h │ │ │ │ │ └── src │ │ │ │ │ │ ├── HardwareSerial.cpp │ │ │ │ │ │ ├── HardwareSerial0.cpp │ │ │ │ │ │ ├── IPAddress.cpp │ │ │ │ │ │ ├── Print.cpp │ │ │ │ │ │ ├── Stream.cpp │ │ │ │ │ │ ├── WInterrupts.c │ │ │ │ │ │ ├── WMath.cpp │ │ │ │ │ │ ├── WString.cpp │ │ │ │ │ │ ├── abi.cpp │ │ │ │ │ │ ├── hooks.c │ │ │ │ │ │ ├── new.cpp │ │ │ │ │ │ ├── wiring.c │ │ │ │ │ │ ├── wiring_analog.c │ │ │ │ │ │ ├── wiring_digital.c │ │ │ │ │ │ ├── wiring_pulse.c │ │ │ │ │ │ └── wiring_shift.c │ │ │ │ └── separate_libs │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── inc │ │ │ │ │ ├── SPI.h │ │ │ │ │ ├── Wire.h │ │ │ │ │ └── twi.h │ │ │ │ │ └── src │ │ │ │ │ ├── SPI.cpp │ │ │ │ │ ├── Wire.cpp │ │ │ │ │ └── twi.c │ │ │ ├── bench_lib │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── inc │ │ │ │ │ └── bench.h │ │ │ │ └── src │ │ │ │ │ └── bench.c │ │ │ ├── math_fns_lib │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── inc │ │ │ │ │ └── math_fns.h │ │ │ │ └── src │ │ │ │ │ └── math_fns.c │ │ │ ├── string_lib │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── inc │ │ │ │ │ └── string_lib.h │ │ │ │ └── src │ │ │ │ │ └── qprintf.c │ │ │ └── sys_lib │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── inc │ │ │ │ ├── bar.h │ │ │ │ ├── cpu_hal.h │ │ │ │ ├── event.h │ │ │ │ ├── gpio.h │ │ │ │ ├── i2c.h │ │ │ │ ├── int.h │ │ │ │ ├── pulpino.h │ │ │ │ ├── spi.h │ │ │ │ ├── spr-defs.h │ │ │ │ ├── timer.h │ │ │ │ ├── uart.h │ │ │ │ └── utils.h │ │ │ │ └── src │ │ │ │ ├── exceptions.c │ │ │ │ ├── gpio.c │ │ │ │ ├── i2c.c │ │ │ │ ├── int.c │ │ │ │ ├── spi.c │ │ │ │ ├── timer.c │ │ │ │ ├── uart.c │ │ │ │ └── utils.c │ │ ├── ref │ │ │ ├── crt0.boot.S │ │ │ ├── crt0.boot_E.S │ │ │ ├── crt0.or1k.S │ │ │ ├── crt0.riscv.S │ │ │ ├── crt0.riscv_E.S │ │ │ ├── link.boot.ld │ │ │ ├── link.common.ld │ │ │ ├── link.or1k.ld │ │ │ └── link.riscv.ld │ │ └── utils │ │ │ ├── annotate.py │ │ │ ├── parse_s19.pl │ │ │ ├── run-on-fpga.sh │ │ │ ├── s19toboot.py │ │ │ └── s19toslm.py │ ├── tb │ │ ├── .gitignore │ │ ├── i2c_eeprom_model.sv │ │ ├── if_spi_master.sv │ │ ├── if_spi_slave.sv │ │ ├── jtag_dpi.sv │ │ ├── jtag_dpi │ │ │ ├── .gitignore │ │ │ └── jtag_dpi.c │ │ ├── mem_dpi.svh │ │ ├── mem_dpi │ │ │ ├── .gitignore │ │ │ └── mem_dpi.c │ │ ├── pkg_spi.sv │ │ ├── spi_debug_test.svh │ │ ├── tb.sv │ │ ├── tb_jtag_pkg.sv │ │ ├── tb_mem_pkg.sv │ │ ├── tb_spi_pkg.sv │ │ └── uart.sv │ ├── update-ips.py │ └── vsim │ │ ├── .gitignore │ │ ├── tcl_files │ │ ├── config │ │ │ ├── vsim.tcl │ │ │ └── vsim_zero.tcl │ │ ├── run.tcl │ │ ├── run_debug.tcl │ │ ├── run_debug_irq.tcl │ │ ├── run_mem_dpi.tcl │ │ ├── run_memdpi.tcl │ │ ├── run_spi.tcl │ │ └── run_zero-riscy_spi.tcl │ │ ├── vcompile │ │ ├── build_rtl_sim.csh │ │ ├── colors.csh │ │ ├── rtl │ │ │ ├── vcompile_pulpino.sh │ │ │ └── vcompile_tb.sh │ │ ├── setup.csh │ │ ├── vcompile_riscv.csh │ │ └── vcompile_zero-riscy.csh │ │ ├── verilator │ │ └── .gitignore │ │ └── waves │ │ ├── .gitingore │ │ ├── micro_riscy_core.tcl │ │ ├── riscy_core.tcl │ │ ├── zero_riscy_core_fastMul.tcl │ │ └── zero_riscy_core_slowMul.tcl ├── Interface │ ├── .DS_Store │ └── interface .pdf ├── LICENSE ├── README.md └── SPI_Slave_Verilog │ ├── Cnt_SPI_diagram.PNG │ ├── Counter.v │ ├── README.md │ ├── SPIMaster_Arduino.ino │ └── SPI_Slave.v ├── PVT_Sensor ├── .DS_Store ├── Images │ ├── CPM_Sch_WhBG.png │ ├── tsensor_comp.png │ ├── uW_TSensor.JPG │ ├── uW_VSensor.JPG │ └── vsensor_comp.png ├── LICENSE ├── README.md ├── SpiceNetlist │ ├── LICENSE │ ├── README.md │ ├── uW_TSensor │ └── uW_VSensor ├── Testbench │ ├── LICENSE │ ├── README.md │ ├── TSesnor_Testbench.sp │ └── VSesnor_Testbench.sp ├── VerilogCode │ ├── CPM_Verilog │ │ ├── CPL.v │ │ ├── CPM.v │ │ ├── LICENSE │ │ ├── README.md │ │ ├── SC.v │ │ └── TDC.v │ ├── LICENSE │ ├── README.md │ └── VT_VerilogAMS │ │ ├── LICENSE │ │ ├── README.md │ │ ├── uW_TSensor.vams │ │ └── uW_VSensor.vams └── pyXyce │ ├── ANALYSIS.inc │ ├── BrownPVT.ipynb │ ├── MODELS.lib │ ├── PVT.py │ ├── README.md │ └── uW_TSensor.netlist ├── README.md └── Software ├── LICENSE ├── PIDNN ├── LICENSE ├── README.md ├── genann.c ├── genann.h └── pidnn.c └── README.md /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scale-lab/PVTsensors/e0111a8b63bb7ceccbb5ea0107a89c9ed80d3bad/.DS_Store -------------------------------------------------------------------------------- /All_Digital_VTSensor/1st_version/Digital_Sensor_Verilog/RO_MUX.v: -------------------------------------------------------------------------------- 1 | `timescale 1ps / 100fs 2 | 3 | module RO_MUX( 4 | input wire [5:0]RO_IN, 5 | input wire [3:1]S, 6 | output wire RO_OUT 7 | ); 8 | 9 | wire [4:0]MUX_Conn; 10 | 11 | /// S1 12 | assign MUX_Conn[0] = S[1] ? RO_IN[0] : RO_IN[1]; 13 | assign MUX_Conn[1] = S[1] ? RO_IN[2] : RO_IN[3]; 14 | assign MUX_Conn[2] = S[1] ? RO_IN[4] : RO_IN[5]; 15 | /// S2 16 | assign MUX_Conn[3] = S[2] ? MUX_Conn[0] : MUX_Conn[1]; 17 | assign MUX_Conn[4] = S[2] ? MUX_Conn[2] : 1'b0; 18 | /// S3 19 | assign RO_OUT = S[3] ? MUX_Conn[3] : MUX_Conn[4]; 20 | 21 | endmodule 22 | -------------------------------------------------------------------------------- /All_Digital_VTSensor/1st_version/Hard_Macro/Brown_PVTSensor.v: -------------------------------------------------------------------------------- 1 | `timescale 10ps / 1ps 2 | 3 | module Brown_PVTSensor( 4 | input i_Clk, 5 | input A_BGR_PS, 6 | input i_CntWin, 7 | input i_Rst_n, 8 | input i_SPI_CS_n, 9 | input i_SPI_Clk, 10 | input i_SPI_MOSI, 11 | 12 | output o_SPI_MISO, 13 | 14 | inout AVDD, 15 | inout DVDD, 16 | inout GND 17 | ); 18 | 19 | endmodule 20 | -------------------------------------------------------------------------------- /All_Digital_VTSensor/1st_version/Spice_Netlist/README.md: -------------------------------------------------------------------------------- 1 | ## General Overview 2 | 3 | This folder contains Netlist files for the following circuits: 4 | 5 | - Bandgap Reference Circuit 6 | 7 | - Analog Voltage Sensor 8 | 9 | - Analog Temeprature Sensor 10 | 11 | 12 | Designs were verified in GF12 technology. 13 | 14 | Model names used are listed below: 15 | 16 | - 'nfet' stands for N-type FinFET 17 | 18 | - 'pfet' stands for P-type FinFET 19 | 20 | - 'egnfet' stands for Extended Gate N-type FinFET 21 | 22 | - 'egpfet' stands for Extended Gate P-type FinFET 23 | 24 | - 'rmres' stands for Metal Resistor 25 | 26 | - 'egtdpdnw' stands for N-well diode 27 | 28 | - 'mimcap' stands for MIM capacitor 29 | -------------------------------------------------------------------------------- /All_Digital_VTSensor/1st_version/Testbench/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # General Overview 4 | 5 | This folder contains testbench SPICE files for the analog sensor and digital sensor seperately. 6 | 7 | # Setup 8 | 9 | There are 2 ways to use the testbench: 10 | - __Copy the spice netlist__: 11 | 12 | The first option is to copy the netlist the corresponding blocks 13 | 14 | 15 | To run the analog sensor testbench, please copy the netlist from 'BGR.sp', 'Tosc.sp' and 'Vosc.sp' into Analog_Sensor_Testbench.sp between 16 | ``` 17 | parameters vdd=0.8 wireopt=9 18 | ``` 19 | and 20 | ``` 21 | I0 (GND IREFT TOsc_TB\<0\> TOsc_TB\<1\> TOsc_TB\<2\> TOsc_TB\<3\> \ 22 | ``` 23 | 24 | 25 | To run the digital sensor testbench, please copy the netlist in DigitalSensor.sp from 26 | ``` 27 | subckt INV_X0P5N_A9PP84TR_C14 A VDD VNW VPW VSS Y 28 | ``` 29 | to 30 | ``` 31 | VDD VSS VTMUX) Module_RippleCnt_A_V2 32 | ``` 33 | and insert the netlist into Digital_Sensor_Testbench.sp between 34 | ``` 35 | parameters DLYD=90n vdd=0.8 wireopt=9 36 | ``` 37 | and 38 | ``` 39 | I0 (RO_EN net016 RO_OUT\<2\> RO_Sel\<2\> VDD VSS) \ 40 | ``` 41 | 42 | 43 | - __Add sensor as sub-circuit__: 44 | 45 | If you are using Virtuoso(or similar simulator), you can import both the sensor and its testbench, and add the sensor block into the testbench as a subcircuit. 46 | -------------------------------------------------------------------------------- /All_Digital_VTSensor/2nd_version/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # General Overview 4 | 5 | This folder contains the following: 6 | 7 | - Verilog_65nm_RTL: RTL netlist and testbench of the all-digital VT sensor. 8 | 9 | # Prerequisites 10 | 11 | These circuits were designed using Cadence® Virtuoso®, Synopsys® Design Compiler®, Cadence® Innovus® and Mentor® Modelsim®. You must also separately obtain the TSMC 65/55nm GP PDK and ARM 65/55nm GP-based standard cell library, through MOSIS or a commercial license. 12 | 13 | 14 | -------------------------------------------------------------------------------- /All_Digital_VTSensor/2nd_version/Verilog_65nm_RTL/Images/spi_miso_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scale-lab/PVTsensors/e0111a8b63bb7ceccbb5ea0107a89c9ed80d3bad/All_Digital_VTSensor/2nd_version/Verilog_65nm_RTL/Images/spi_miso_code.png -------------------------------------------------------------------------------- /All_Digital_VTSensor/2nd_version/Verilog_65nm_RTL/Images/spi_mosi_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scale-lab/PVTsensors/e0111a8b63bb7ceccbb5ea0107a89c9ed80d3bad/All_Digital_VTSensor/2nd_version/Verilog_65nm_RTL/Images/spi_mosi_code.png -------------------------------------------------------------------------------- /All_Digital_VTSensor/2nd_version/Verilog_65nm_RTL/RO_MUX.v: -------------------------------------------------------------------------------- 1 | `timescale 1ps / 100fs 2 | 3 | module RO_MUX( 4 | input wire [15:0]RO_IN, 5 | input wire [4:1]S, 6 | output wire RO_OUT 7 | ); 8 | 9 | ///////////////// 2^3 + 2^2 + 2 = 14 connection wires needed ///////////////// 10 | wire [13:0]MUX_Conn; 11 | 12 | /// S1 13 | assign MUX_Conn[0] = S[1] ? RO_IN[1] : RO_IN[0]; 14 | assign MUX_Conn[1] = S[1] ? RO_IN[3] : RO_IN[2]; 15 | assign MUX_Conn[2] = S[1] ? RO_IN[5] : RO_IN[4]; 16 | assign MUX_Conn[3] = S[1] ? RO_IN[7] : RO_IN[6]; 17 | assign MUX_Conn[4] = S[1] ? RO_IN[9] : RO_IN[8]; 18 | assign MUX_Conn[5] = S[1] ? RO_IN[11] : RO_IN[10]; 19 | assign MUX_Conn[6] = S[1] ? RO_IN[13] : RO_IN[12]; 20 | assign MUX_Conn[7] = S[1] ? RO_IN[15] : RO_IN[14]; 21 | /// S2 22 | assign MUX_Conn[8] = S[2] ? MUX_Conn[1] : MUX_Conn[0]; 23 | assign MUX_Conn[9] = S[2] ? MUX_Conn[3] : MUX_Conn[2]; 24 | assign MUX_Conn[10] = S[2] ? MUX_Conn[5] : MUX_Conn[4]; 25 | assign MUX_Conn[11] = S[2] ? MUX_Conn[7] : MUX_Conn[6]; 26 | /// S3 27 | assign MUX_Conn[12] = S[3] ? MUX_Conn[9] : MUX_Conn[8]; 28 | assign MUX_Conn[13] = S[3] ? MUX_Conn[11] : MUX_Conn[10]; 29 | /// S4 30 | assign RO_OUT = S[4] ? MUX_Conn[13] : MUX_Conn[12]; 31 | 32 | endmodule 33 | -------------------------------------------------------------------------------- /All_Digital_VTSensor/2nd_version/Verilog_65nm_RTL/Scripts/Script_Dummy_RO_Top.py: -------------------------------------------------------------------------------- 1 | ####################################### 2 | # Define variable 3 | ####################################### 4 | # define how many dummy ROs needed, maximum 32*8 5 | dummy_cnt = 512 6 | 7 | ####################################### 8 | # Create file 9 | ####################################### 10 | # Create a new file 11 | f = open("Dummy_RO_Top.v","w") 12 | 13 | # write the top of the module 14 | f.write("`timescale 1ps / 100fs\n\n") 15 | f.write("module Dummy_RO_Top(\n") 16 | f.write("input wire i_Enable,\n") 17 | f.write("input wire [31:0] i_Sel\n") 18 | f.write(");\n\n") 19 | 20 | f.write("//////////////// Dummy ROs ////////////////\n\n") 21 | wire_share = int(dummy_cnt/32) 22 | for i in range(32): 23 | for j in range(wire_share): 24 | f.write("Dummy_RO_cell D" + str(j+i*wire_share) + "(\n") 25 | f.write(".i_Enable(Enable_Dummy_RO),\n") 26 | f.write(".i_Sel(i_Sel[" + str(i) + "])\n") 27 | f.write(");\n\n") 28 | 29 | f.write("endmodule \n\n") 30 | 31 | f.close() -------------------------------------------------------------------------------- /All_Digital_VTSensor/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scale-lab/PVTsensors/e0111a8b63bb7ceccbb5ea0107a89c9ed80d3bad/All_Digital_VTSensor/README.md -------------------------------------------------------------------------------- /Microcontroller/FPGA/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scale-lab/PVTsensors/e0111a8b63bb7ceccbb5ea0107a89c9ed80d3bad/Microcontroller/FPGA/.DS_Store -------------------------------------------------------------------------------- /Microcontroller/FPGA/.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | sw/build/* 3 | imperio 4 | ipstools 5 | -------------------------------------------------------------------------------- /Microcontroller/FPGA/ci/install-verilator.csh: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | 3 | 4 | wget http://www.veripool.org/ftp/verilator-3.884.tgz 5 | tar -xzvf verilator-3.884.tgz && cd verilator-3.884/ && mkdir build 6 | autoconf && ./configure --prefix="${PWD}/build/" && make && make test && make install 7 | 8 | -------------------------------------------------------------------------------- /Microcontroller/FPGA/ci/rtl-basic-rvc.csh: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | 3 | cd ./sw/build-rvc 4 | ctest -L riscv_test -j4 --timeout 3000 --output-on-failure 5 | -------------------------------------------------------------------------------- /Microcontroller/FPGA/ci/rtl-basic.csh: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | 3 | cd ./sw/build 4 | ctest -L riscv_test -j4 --timeout 3000 --output-on-failure 5 | 6 | -------------------------------------------------------------------------------- /Microcontroller/FPGA/ci/rtl-ml-rvc.csh: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | 3 | cd ./sw/build-rvc 4 | ctest -L ml_tests -j4 --timeout 3000 --output-on-failure 5 | -------------------------------------------------------------------------------- /Microcontroller/FPGA/ci/rtl-ml.csh: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | 3 | cd ./sw/build 4 | ctest -L ml_tests -j4 --timeout 3000 --output-on-failure 5 | -------------------------------------------------------------------------------- /Microcontroller/FPGA/ci/rtl-sequential-rvc.csh: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | 3 | cd ./sw/build-rvc 4 | ctest -L sequential_test -j4 --timeout 4000 --output-on-failure 5 | -------------------------------------------------------------------------------- /Microcontroller/FPGA/ci/rtl-sequential.csh: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | 3 | cd ./sw/build 4 | ctest -L sequential_test -j4 --timeout 4000 --output-on-failure 5 | -------------------------------------------------------------------------------- /Microcontroller/FPGA/ci/verilator-rvc.csh: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | 3 | cd ./sw/build-rvc_riscy 4 | ctest -L verilator_tests -j4 --timeout 3000 --output-on-failure 5 | -------------------------------------------------------------------------------- /Microcontroller/FPGA/ci/verilator.csh: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | 3 | cd ./sw/build_riscy 4 | ctest -L verilator_tests -j4 --timeout 3000 --output-on-failure 5 | -------------------------------------------------------------------------------- /Microcontroller/FPGA/doc/api/.gitignore: -------------------------------------------------------------------------------- 1 | html/* 2 | latex/* -------------------------------------------------------------------------------- /Microcontroller/FPGA/doc/api/footer.html: -------------------------------------------------------------------------------- 1 |