Add configurations
diff --git a/openlane/leorv32/config.json b/openlane/leorv32/config.json
new file mode 100644
index 0000000..0fd5a13
--- /dev/null
+++ b/openlane/leorv32/config.json
@@ -0,0 +1,33 @@
+{
+ "DESIGN_NAME": "leorv32",
+ "DESIGN_IS_CORE": 0,
+ "VERILOG_FILES": [
+ "dir::../../verilog/rtl/defines.v",
+ "dir::../../verilog/rtl/leorv-fpga/leorv32/rtl/leorv32_pkg.sv",
+ "dir::../../verilog/rtl/leorv-fpga/leorv32/rtl/leorv32.sv"
+ ],
+ "CLOCK_PORT": "clk",
+ "CLOCK_NET": "clk",
+ "FP_SIZING": "absolute",
+ "DIE_AREA": "0 0 500 500",
+ "FP_PIN_ORDER_CFG": "dir::pin_order.cfg",
+ "PL_BASIC_PLACEMENT": 0,
+ "PL_TARGET_DENSITY": 0.55,
+ "VDD_NETS": ["vccd1"],
+ "GND_NETS": ["vssd1"],
+ "DIODE_INSERTION_STRATEGY": 4,
+ "RUN_CVC": 1,
+ "pdk::sky130*": {
+ "FP_CORE_UTIL": 45,
+ "RT_MAX_LAYER": "met4",
+ "CLOCK_PERIOD": 20
+ },
+ "pdk::gf180mcuC": {
+ "STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
+ "CLOCK_PERIOD": 24.0,
+ "FP_CORE_UTIL": 40,
+ "RT_MAX_LAYER": "Metal4",
+ "SYNTH_MAX_FANOUT": 4,
+ "PL_TARGET_DENSITY": 0.45
+ }
+}
diff --git a/openlane/leorv32/pin_order.cfg b/openlane/leorv32/pin_order.cfg
new file mode 100644
index 0000000..dcad451
--- /dev/null
+++ b/openlane/leorv32/pin_order.cfg
@@ -0,0 +1,24 @@
+#BUS_SORT
+
+#N
+
+mem_addr.*
+
+#E
+
+mem_wdata.*
+mem_wmask.*
+
+#S
+
+clk
+reset
+mhartid_0
+
+mem_rstrb
+mem_rbusy
+mem_wbusy
+
+#W
+
+mem_rdata.*
diff --git a/openlane/soc/config.json b/openlane/soc/config.json
new file mode 100644
index 0000000..ac808c1
--- /dev/null
+++ b/openlane/soc/config.json
@@ -0,0 +1,71 @@
+{
+ "DESIGN_NAME": "soc",
+ "DESIGN_IS_CORE": false,
+ "FP_PDN_CORE_RING": false,
+ "VERILOG_FILES": [
+ "dir::../../verilog/rtl/defines.v",
+ "dir::../../verilog/rtl/leorv-fpga/soc/rtl/dual_soc_svga.sv",
+ "dir::../../verilog/rtl/leorv-fpga/sram/rtl/sram.sv",
+ "dir::../../verilog/rtl/leorv-fpga/svga/rtl/svga_gen.sv",
+ "dir::../../verilog/rtl/leorv-fpga/svga/rtl/svga_gen_top.sv",
+ "dir::../../verilog/rtl/leorv-fpga/uart/rtl/my_uart_rx.sv",
+ "dir::../../verilog/rtl/leorv-fpga/uart/rtl/my_uart_tx.sv",
+ "dir::../../verilog/rtl/leorv-fpga/util/rtl/synchronizer.sv"
+ ],
+ "CLOCK_PORT": "clk",
+ "FP_PDN_MACRO_HOOKS": [
+ "leorv32_core0 vccd1 vssd1 vccd1 vssd1,",
+ "leorv32_core1 vccd1 vssd1 vccd1 vssd1"
+ ],
+ "MACRO_PLACEMENT_CFG": "dir::macro.cfg",
+ "VERILOG_FILES_BLACKBOX": [
+ "dir::../../verilog/rtl/defines.v",
+ "dir::../../verilog/gl/leorv32.v",
+ "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v"
+ ],
+ "EXTRA_LEFS": [
+ "dir::../../lef/leorv32.lef",
+ "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef"
+ ],
+ "EXTRA_GDS_FILES": [
+ "dir::../../gds/leorv32.gds",
+ "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_2kbyte_1rw1r_32x512_8.gds"
+ ],
+ "FP_SIZING": "absolute",
+ "DIE_AREA": "0 0 2350 1400",
+ "FP_PIN_ORDER_CFG": "dir::pin_order.cfg",
+ "PL_BASIC_PLACEMENT": 0,
+ "PL_TARGET_DENSITY": 0.55,
+ "VDD_NETS": ["vccd1"],
+ "GND_NETS": ["vssd1"],
+ "DIODE_INSERTION_STRATEGY": 4,
+ "RUN_CVC": 1,
+ "pdk::sky130*": {
+ "FP_CORE_UTIL": 45,
+ "RT_MAX_LAYER": "met4",
+ "CLOCK_PERIOD": 20
+ },
+ "pdk::gf180mcuC": {
+ "STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
+ "CLOCK_PERIOD": 24.0,
+ "FP_CORE_UTIL": 40,
+ "RT_MAX_LAYER": "Metal4",
+ "SYNTH_MAX_FANOUT": 4,
+ "PL_TARGET_DENSITY": 0.45
+ },
+
+ "LVS_CONNECT_BY_LABEL": 1,
+ "MAGIC_DRC_USE_GDS": 0,
+ "RUN_MAGIC_DRC": 0,
+ "QUIT_ON_MAGIC_DRC": 0,
+ "RUN_KLAYOUT_XOR": 0,
+ "ROUTING_CORES": 6,
+ "FP_PDN_VWIDTH": 3.1,
+ "FP_PDN_HWIDTH": 3.1,
+ "FP_PDN_VOFFSET": 5,
+ "FP_PDN_HOFFSET": 5,
+ "FP_PDN_VPITCH": 180,
+ "FP_PDN_HPITCH": 180,
+ "FP_PDN_VSPACING": "expr::(5 * $FP_PDN_VWIDTH)",
+ "FP_PDN_HSPACING": "expr::(5 * $FP_PDN_HWIDTH)"
+}
diff --git a/openlane/soc/macro.cfg b/openlane/soc/macro.cfg
new file mode 100644
index 0000000..32c0461
--- /dev/null
+++ b/openlane/soc/macro.cfg
@@ -0,0 +1,6 @@
+#wram.memory\[0\].sky130_sram_2kbyte_1rw1r_32x512_8 100 100 E
+#wram.memory\[1\].sky130_sram_2kbyte_1rw1r_32x512_8 650 100 E
+leorv32_core0 300 500 N
+leorv32_core1 1400 500 N
+#svga_gen_top.vram.memory\[0\].sky130_sram_2kbyte_1rw1r_32x512_8 100 1700 E
+#svga_gen_top.vram.memory\[1\].sky130_sram_2kbyte_1rw1r_32x512_8 650 1700 E
diff --git a/openlane/soc/pin_order.cfg b/openlane/soc/pin_order.cfg
new file mode 100644
index 0000000..35d29b3
--- /dev/null
+++ b/openlane/soc/pin_order.cfg
@@ -0,0 +1,53 @@
+#BUS_SORT
+
+#N
+
+vram_select_instance_0.*
+vram_select_instance_1.*
+
+vram_web0
+vram_wmask0.*
+
+vram_addr0.*
+vram_addr1.*
+
+vram_din0.*
+
+vram_select_dout0.*
+vram_select_dout1.*
+
+#E
+
+blink
+clk
+
+reset
+uart_rx
+uart_tx
+
+#S
+
+wram_select_instance_0.*
+wram_select_instance_1.*
+
+wram_web0
+wram_wmask0.*
+
+wram_addr0.*
+wram_addr1.*
+
+wram_din0.*
+
+wram_select_dout0.*
+wram_select_dout1.*
+
+#W
+
+dvi_clk
+dvi_de
+dvi_hsync
+dvi_vsync
+
+dvi_b.*
+dvi_g.*
+dvi_r.*
diff --git a/openlane/user_proj_example/config.json b/openlane/user_proj_example/config.json
deleted file mode 100644
index 370d74c..0000000
--- a/openlane/user_proj_example/config.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "DESIGN_NAME": "user_proj_example",
- "DESIGN_IS_CORE": 0,
- "VERILOG_FILES": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_proj_example.v"],
- "CLOCK_PERIOD": 10,
- "CLOCK_PORT": "wb_clk_i",
- "CLOCK_NET": "counter.clk",
- "FP_SIZING": "absolute",
- "DIE_AREA": "0 0 900 600",
- "FP_PIN_ORDER_CFG": "dir::pin_order.cfg",
- "PL_BASIC_PLACEMENT": 0,
- "PL_TARGET_DENSITY": 0.55,
- "VDD_NETS": ["vccd1"],
- "GND_NETS": ["vssd1"],
- "DIODE_INSERTION_STRATEGY": 4,
- "RUN_CVC": 1,
- "pdk::sky130*": {
- "FP_CORE_UTIL": 45,
- "RT_MAX_LAYER": "met4",
- "scl::sky130_fd_sc_hd": {
- "CLOCK_PERIOD": 10
- },
- "scl::sky130_fd_sc_hdll": {
- "CLOCK_PERIOD": 10
- },
- "scl::sky130_fd_sc_hs": {
- "CLOCK_PERIOD": 8
- },
- "scl::sky130_fd_sc_ls": {
- "CLOCK_PERIOD": 10,
- "SYNTH_MAX_FANOUT": 5
- },
- "scl::sky130_fd_sc_ms": {
- "CLOCK_PERIOD": 10
- }
- },
- "pdk::gf180mcuC": {
- "STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
- "CLOCK_PERIOD": 24.0,
- "FP_CORE_UTIL": 40,
- "RT_MAX_LAYER": "Metal4",
- "SYNTH_MAX_FANOUT": 4,
- "PL_TARGET_DENSITY": 0.45
- }
-}
\ No newline at end of file
diff --git a/openlane/user_proj_example/pin_order.cfg b/openlane/user_proj_example/pin_order.cfg
deleted file mode 100644
index 2fda806..0000000
--- a/openlane/user_proj_example/pin_order.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
-#BUS_SORT
-
-#S
-wb_.*
-wbs_.*
-la_.*
-irq.*
-
-#N
-io_.*
diff --git a/openlane/user_project_wrapper/config.json b/openlane/user_project_wrapper/config.json
index 22a00ee..c24df5e 100644
--- a/openlane/user_project_wrapper/config.json
+++ b/openlane/user_project_wrapper/config.json
@@ -1,27 +1,59 @@
{
"DESIGN_NAME": "user_project_wrapper",
- "VERILOG_FILES": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_project_wrapper.v"],
- "CLOCK_PERIOD": 10,
- "CLOCK_PORT": "user_clock2",
- "CLOCK_NET": "mprj.clk",
- "FP_PDN_MACRO_HOOKS": "mprj vccd1 vssd1 vccd1 vssd1",
+ "VERILOG_FILES": [
+ "dir::../../verilog/rtl/defines.v",
+ "dir::../../verilog/rtl/user_project_wrapper.v",
+ "dir::../../verilog/rtl/leorv-fpga/soc/rtl/dual_soc_svga.sv",
+ "dir::../../verilog/rtl/leorv-fpga/sram/rtl/sram.sv",
+ "dir::../../verilog/rtl/leorv-fpga/svga/rtl/svga_gen.sv",
+ "dir::../../verilog/rtl/leorv-fpga/svga/rtl/svga_gen_top.sv",
+ "dir::../../verilog/rtl/leorv-fpga/uart/rtl/my_uart_rx.sv",
+ "dir::../../verilog/rtl/leorv-fpga/uart/rtl/my_uart_tx.sv",
+ "dir::../../verilog/rtl/leorv-fpga/util/rtl/synchronizer.sv",
+ "dir::../../verilog/rtl/leorv-fpga/wb_memory/rtl/wb_memory.sv",
+ "dir::../../verilog/rtl/leorv-fpga/mem_port_switch/rtl/mem_port_switch.sv"
+ ],
+
+ "CLOCK_PORT": "wb_clk_i",
+ "FP_PDN_MACRO_HOOKS": [
+ "soc_inst.leorv32_core0 vccd1 vssd1 vccd1 vssd1,",
+ "soc_inst.leorv32_core1 vccd1 vssd1 vccd1 vssd1,",
+ "soc_inst.wram.mem0 vccd1 vssd1 vccd1 vssd1,",
+ "soc_inst.wram.mem1 vccd1 vssd1 vccd1 vssd1,",
+ "soc_inst.wram.mem2 vccd1 vssd1 vccd1 vssd1,",
+ "soc_inst.wram.mem3 vccd1 vssd1 vccd1 vssd1,",
+ "soc_inst.svga_gen_top.vram.mem0 vccd1 vssd1 vccd1 vssd1,",
+ "soc_inst.svga_gen_top.vram.mem1 vccd1 vssd1 vccd1 vssd1,",
+ "soc_inst.svga_gen_top.vram.mem2 vccd1 vssd1 vccd1 vssd1,",
+ "soc_inst.svga_gen_top.vram.mem3 vccd1 vssd1 vccd1 vssd1"
+ ],
"MACRO_PLACEMENT_CFG": "dir::macro.cfg",
- "VERILOG_FILES_BLACKBOX": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_proj_example.v"],
- "EXTRA_LEFS": "dir::../../lef/user_proj_example.lef",
- "EXTRA_GDS_FILES": "dir::../../gds/user_proj_example.gds",
- "FP_PDN_CHECK_NODES": 0,
- "SYNTH_ELABORATE_ONLY": 1,
- "PL_RANDOM_GLB_PLACEMENT": 1,
- "PL_RESIZER_DESIGN_OPTIMIZATIONS": 0,
- "PL_RESIZER_TIMING_OPTIMIZATIONS": 0,
- "PL_RESIZER_BUFFER_INPUT_PORTS": 0,
- "FP_PDN_ENABLE_RAILS": 0,
- "DIODE_INSERTION_STRATEGY": 0,
- "RUN_FILL_INSERTION": 0,
- "RUN_TAP_DECAP_INSERTION": 0,
+ "VERILOG_FILES_BLACKBOX": [
+ "dir::../../verilog/rtl/defines.v",
+ "dir::../../verilog/gl/leorv32.v",
+ "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v"
+ ],
+ "EXTRA_LEFS": [
+ "dir::../../lef/leorv32.lef",
+ "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef"
+ ],
+ "EXTRA_GDS_FILES": [
+ "dir::../../gds/leorv32.gds",
+ "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_2kbyte_1rw1r_32x512_8.gds"
+ ],
+ "EXTRA_LIBS": [
+ "dir::../../lib/leorv32.lib",
+ "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/lib/sky130_sram_2kbyte_1rw1r_32x512_8_TT_1p8V_25C.lib"
+ ],
+ "FP_PDN_CHECK_NODES": 1,
+ "CLOCK_TREE_SYNTH": 1,
+ "DIODE_INSERTION_STRATEGY": 4,
+ "RUN_FILL_INSERTION": 1,
+ "RUN_TAP_DECAP_INSERTION": 1,
+ "PL_TARGET_DENSITY": 0.6,
+
"FP_PDN_VPITCH": 180,
"FP_PDN_HPITCH": 180,
- "CLOCK_TREE_SYNTH": 0,
"FP_PDN_VOFFSET": 5,
"FP_PDN_HOFFSET": 5,
"MAGIC_ZEROIZE_ORIGIN": 0,
@@ -52,22 +84,7 @@
"RT_MAX_LAYER": "met4",
"DIE_AREA": "0 0 2920 3520",
"FP_DEF_TEMPLATE": "dir::fixed_dont_change/user_project_wrapper.def",
- "scl::sky130_fd_sc_hd": {
- "CLOCK_PERIOD": 10
- },
- "scl::sky130_fd_sc_hdll": {
- "CLOCK_PERIOD": 10
- },
- "scl::sky130_fd_sc_hs": {
- "CLOCK_PERIOD": 8
- },
- "scl::sky130_fd_sc_ls": {
- "CLOCK_PERIOD": 10,
- "SYNTH_MAX_FANOUT": 5
- },
- "scl::sky130_fd_sc_ms": {
- "CLOCK_PERIOD": 10
- }
+ "CLOCK_PERIOD": 25
},
"pdk::gf180mcuC": {
"STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
@@ -81,5 +98,12 @@
"FP_PDN_CHECK_NODES": 0,
"MAGIC_WRITE_FULL_LEF": 0,
"FP_PDN_ENABLE_RAILS": 0
- }
+ },
+ "MAGIC_DRC_USE_GDS": 0,
+ "RUN_MAGIC_DRC": 0,
+ "QUIT_ON_MAGIC_DRC": 0,
+ "RUN_KLAYOUT_XOR": 0,
+ "ROUTING_CORES": 12,
+ "PL_ESTIMATE_PARASITICS": 0,
+ "MAGIC_WRITE_FULL_LEF": 0
}
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg
index a7365ab..d9c373d 100644
--- a/openlane/user_project_wrapper/macro.cfg
+++ b/openlane/user_project_wrapper/macro.cfg
@@ -1 +1,27 @@
-mprj 1175 1690 N
+# LeoRV Cores
+soc_inst.leorv32_core0 500 1510 N
+soc_inst.leorv32_core1 1900 1510 N
+
+# WRAM
+#soc_inst.wram.memory\[0\].sky130_sram_2kbyte_1rw1r_32x512_8 300 300 N
+#soc_inst.wram.memory\[1\].sky130_sram_2kbyte_1rw1r_32x512_8 300 950 N
+#soc_inst.wram.memory\[2\].sky130_sram_2kbyte_1rw1r_32x512_8 1900 300 N
+#soc_inst.wram.memory\[3\].sky130_sram_2kbyte_1rw1r_32x512_8 1900 950 N
+
+# VRAM
+#soc_inst.svga_gen_top.vram.memory\[0\].sky130_sram_2kbyte_1rw1r_32x512_8 300 2250 N
+#soc_inst.svga_gen_top.vram.memory\[1\].sky130_sram_2kbyte_1rw1r_32x512_8 300 2900 N
+#soc_inst.svga_gen_top.vram.memory\[2\].sky130_sram_2kbyte_1rw1r_32x512_8 1900 2250 N
+#soc_inst.svga_gen_top.vram.memory\[3\].sky130_sram_2kbyte_1rw1r_32x512_8 1900 2900 N
+
+# WRAM
+soc_inst.wram.mem0 300 300 N
+soc_inst.wram.mem1 300 950 N
+soc_inst.wram.mem2 1900 300 N
+soc_inst.wram.mem3 1900 950 N
+
+# VRAM
+soc_inst.svga_gen_top.vram.mem0 300 2250 N
+soc_inst.svga_gen_top.vram.mem1 300 2900 N
+soc_inst.svga_gen_top.vram.mem2 1900 2250 N
+soc_inst.svga_gen_top.vram.mem3 1900 2900 N