Fix gate level sim make gpio_defaults writes a modified caravel.v to the caravel_user_project verilog/gl directory so we need to use that and not the version in the caravel repo. We also need the gate level implementations of the various gpio_defaults_block modules (only a few are created and referenced in the caravel repo).
diff --git a/verilog/dv/microwatt/make.rules b/verilog/dv/microwatt/make.rules index ec00c93..1f52e2a 100644 --- a/verilog/dv/microwatt/make.rules +++ b/verilog/dv/microwatt/make.rules
@@ -29,7 +29,7 @@ else iverilog $(SIM_DEFINES) -DGL \ -l$(USER_PROJECT_VERILOG)/rtl/user_defines.v \ - -f$(VERILOG_PATH)/includes/includes.gl.caravel \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.caravel \ -f$(USER_PROJECT_VERILOG)/includes/includes.gl.caravel_user_project \ $< -o $@ endif
diff --git a/verilog/includes/includes.gl.caravel b/verilog/includes/includes.gl.caravel new file mode 100644 index 0000000..343456e --- /dev/null +++ b/verilog/includes/includes.gl.caravel
@@ -0,0 +1,100 @@ +########################################################### +## DFFRAM - either behavioral or GL +########################################################### + +## DFFRAM Full GL +#-v $(VERILOG_PATH)/gl/DFFRAM.v +-v $(VERILOG_PATH)/gl/RAM128.v +-v $(VERILOG_PATH)/gl/RAM256.v + +########################################################### +# Mgmt Core Wrapper +########################################################### +-v $(VERILOG_PATH)/rtl/defines.v +#-v $(VERILOG_PATH)/gl/mgmt_core.v +-v $(VERILOG_PATH)/gl/mgmt_core_wrapper.v + +# Caravel + +########################################################### +## Must stay in RTL regardless of the type of simulation +########################################################### +-v $(CARAVEL_PATH)/rtl/pads.v +-v $(CARAVEL_PATH)/rtl/defines.v +-v $(CARAVEL_PATH)/rtl/user_defines.v +-v $(CARAVEL_PATH)/rtl/mprj_io.v +-v $(CARAVEL_PATH)/rtl/simple_por.v + +########################################################### +## These blocks only needed for RTL sims +## Not needed for GL and will be a part of another block +########################################################### +-v $(CARAVEL_PATH)/rtl/digital_pll_controller.v +-v $(CARAVEL_PATH)/rtl/ring_osc2x13.v +-v $(CARAVEL_PATH)/rtl/clock_div.v +-v $(CARAVEL_PATH)/rtl/housekeeping_spi.v + +########################################################### +## These blocks are either synthesized or STD cell based +## Manually designed blocks +########################################################### +-v $(CARAVEL_PATH)/gl/mprj_logic_high.v +-v $(CARAVEL_PATH)/gl/mprj2_logic_high.v +-v $(CARAVEL_PATH)/gl/gpio_control_block.v +-v $(CARAVEL_PATH)/gl/gpio_defaults_block.v +-v $(CARAVEL_PATH)/gl/gpio_logic_high.v +-v $(CARAVEL_PATH)/gl/xres_buf.v +-v $(CARAVEL_PATH)/gl/spare_logic_block.v +-v $(CARAVEL_PATH)/gl/housekeeping.v +-v $(CARAVEL_PATH)/gl/caravel_clocking.v +-v $(CARAVEL_PATH)/rtl/digital_pll.v +-v $(CARAVEL_PATH)/rtl/debug_regs.v +#-v $(CARAVEL_PATH)/gl/__user_project_wrapper.v +-v $(CARAVEL_PATH)/gl/user_id_programming.v +-v $(CARAVEL_PATH)/gl/buff_flash_clkrst.v +-v $(CARAVEL_PATH)/gl/gpio_signal_buffering_alt.v +-v $(CARAVEL_PATH)/gl/gpio_signal_buffering.v +#-v $(CARAVEL_PATH)/gl/caravel.v +-v $(USER_PROJECT_VERILOG)/gl/caravel.v +-v $(CARAVEL_PATH)/gl/caravan.v + +########################################################### +## These blocks are manually designed +########################################################### +-v $(CARAVEL_PATH)/gl/constant_block.v +-v $(CARAVEL_PATH)/gl/chip_io_alt.v +-v $(CARAVEL_PATH)/gl/chip_io.v +-v $(CARAVEL_PATH)/gl/mgmt_protect.v +-v $(CARAVEL_PATH)/gl/mgmt_protect_hv.v +-v $(CARAVEL_PATH)/gl/gpio_defaults_block_0403.v +-v $(CARAVEL_PATH)/gl/gpio_defaults_block_0801.v +-v $(CARAVEL_PATH)/gl/gpio_defaults_block_1803.v +-v $(CARAVEL_PATH)/gl/gpio_defaults_block_0402.v +-v $(CARAVEL_PATH)/gl/gpio_defaults_block_0800.v +-v $(CARAVEL_PATH)/gl/gpio_defaults_block_0c00.v +-v $(CARAVEL_PATH)/gl/gpio_defaults_block_1800.v +-v $(CARAVEL_PATH)/gl/gpio_defaults_block_1808.v + +########################################################### +# STD CELLS - they need to be below the defines.v files +########################################################### + -v $(PDK_ROOT)/$(PDK)/libs.ref/sky130_fd_io/verilog/sky130_fd_io.v + -v $(PDK_ROOT)/$(PDK)/libs.ref/sky130_fd_io/verilog/sky130_ef_io.v + -v $(PDK_ROOT)/$(PDK)/libs.ref/sky130_fd_sc_hd/verilog/primitives.v + -v $(PDK_ROOT)/$(PDK)/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd.v + -v $(PDK_ROOT)/$(PDK)/libs.ref/sky130_fd_sc_hvl/verilog/primitives.v + -v $(PDK_ROOT)/$(PDK)/libs.ref/sky130_fd_sc_hvl/verilog/sky130_fd_sc_hvl.v +#-v $(PDK_ROOT)/$(PDK)/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v + + +## STD CELLS - they need to be below the defines.v files +##v $(VERILOG_PATH)/cvc-pdk/sky130_ef_io.v +#-v $(VERILOG_PATH)/cvc-pdk/sky130_fd_io.v +#-v $(VERILOG_PATH)/cvc-pdk/primitives_hd.v +#-v $(VERILOG_PATH)/cvc-pdk/sky130_fd_sc_hd.v +#-v $(VERILOG_PATH)/cvc-pdk/primitives_hvl.v +#-v $(VERILOG_PATH)/cvc-pdk/sky130_fd_sc_hvl.v + -v $(VERILOG_PATH)/cvc-pdk/sky130_sram_2kbyte_1rw1r_32x512_8.v + + +