Convert user_project_wrapper to json, and add GF180 support
diff --git a/openlane/user_project_wrapper/config.json b/openlane/user_project_wrapper/config.json
index 22a00ee..a7b6152 100644
--- a/openlane/user_project_wrapper/config.json
+++ b/openlane/user_project_wrapper/config.json
@@ -1,32 +1,19 @@
{
"DESIGN_NAME": "user_project_wrapper",
- "VERILOG_FILES": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_project_wrapper.v"],
- "CLOCK_PERIOD": 10,
+
+ "CLOCK_PERIOD": 20,
"CLOCK_PORT": "user_clock2",
- "CLOCK_NET": "mprj.clk",
- "FP_PDN_MACRO_HOOKS": "mprj 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,
+ "CLOCK_NET": "user_clock2",
+ "BASE_SDC_FILE": "dir::base.sdc",
+
"FP_PDN_VPITCH": 180,
"FP_PDN_HPITCH": 180,
- "CLOCK_TREE_SYNTH": 0,
"FP_PDN_VOFFSET": 5,
"FP_PDN_HOFFSET": 5,
+
"MAGIC_ZEROIZE_ORIGIN": 0,
"FP_SIZING": "absolute",
- "RUN_CVC": 0,
+
"UNIT": "2.4",
"FP_IO_VEXTEND": "expr::2 * $UNIT",
"FP_IO_HEXTEND": "expr::2 * $UNIT",
@@ -34,6 +21,7 @@
"FP_IO_HLENGTH": "ref::$UNIT",
"FP_IO_VTHICKNESS_MULT": 4,
"FP_IO_HTHICKNESS_MULT": 4,
+
"FP_PDN_CORE_RING": 1,
"FP_PDN_CORE_RING_VWIDTH": 3.1,
"FP_PDN_CORE_RING_HWIDTH": 3.1,
@@ -45,41 +33,163 @@
"FP_PDN_HWIDTH": 3.1,
"FP_PDN_VSPACING": "expr::(5 * $FP_PDN_CORE_RING_VWIDTH)",
"FP_PDN_HSPACING": "expr::(5 * $FP_PDN_CORE_RING_HWIDTH)",
- "VDD_NETS": ["vccd1", "vccd2","vdda1","vdda2"],
- "GND_NETS": ["vssd1", "vssd2","vssa1","vssa2"],
+
"SYNTH_USE_PG_PINS_DEFINES": "USE_POWER_PINS",
+
+ "SYNTH_MAX_FANOUT": "10",
+ "SYNTH_STRATEGY": "DELAY 4",
+
+ "FP_TAP_HORIZONTAL_HALO": "40",
+ "FP_PDN_HORIZONTAL_HALO": "40",
+ "FP_TAP_VERTICAL_HALO": "10",
+ "FP_PDN_VERTICAL_HALO": "10",
+
+ "GPL_CELL_PADDING": "2",
+ "DPL_CELL_PADDING": "0",
+ "DIODE_PADDING": "0",
+
+ "ROUTING_CORES": "24",
+
+ "RUN_KLAYOUT": "0",
+
+ "SYNTH_NO_FLAT": "0",
+
"pdk::sky130*": {
- "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
- }
+
+ "MACRO_PLACEMENT_CFG": "dir::macro.cfg",
+
+ "FP_PDN_MACRO_HOOKS": "microwatt_0.soc0.bram.bram0.ram_0.memory_0 vccd1 vssd1 VPWR VGND, microwatt_0.soc0.processor.dcache_0.rams:1.way.cache_ram_0 vccd1 vssd1 VPWR VGND, microwatt_0.soc0.processor.icache_0.rams:1.way.cache_ram_0 vccd1 vssd1 VPWR VGND, microwatt_0.soc0.processor.execute1_0.multiply_0.multiplier vccd1 vssd1 VPWR VGND, microwatt_0.soc0.processor.with_fpu.fpu_0.fpu_multiply_0.multiplier vccd1 vssd1 VPWR VGND, microwatt_0.soc0.processor.register_file_0.register_file_0 vccd1 vssd1 VPWR VGND",
+
+ "VERILOG_FILES": [
+ "dir::../../verilog/rtl/defines.v",
+ "dir::../../verilog/rtl/tap_top.v",
+ "dir::../../verilog/rtl/raminfr.v",
+ "dir::../../verilog/rtl/uart_defines.v",
+ "dir::../../verilog/rtl/uart_receiver.v",
+ "dir::../../verilog/rtl/uart_regs.v",
+ "dir::../../verilog/rtl/uart_rfifo.v",
+ "dir::../../verilog/rtl/uart_sync_flops.v",
+ "dir::../../verilog/rtl/uart_tfifo.v",
+ "dir::../../verilog/rtl/uart_top.v",
+ "dir::../../verilog/rtl/uart_transmitter.v",
+ "dir::../../verilog/rtl/uart_wb.v",
+ "dir::../../verilog/rtl/simplebus_host.v",
+ "dir::../../verilog/rtl/microwatt.v",
+ "dir::../../verilog/rtl/user_project_wrapper.v"
+ ],
+
+ "VERILOG_FILES_BLACKBOX": [
+ "dir::../../verilog/rtl/wrapper/RAM512.v",
+ "dir::../../verilog/rtl/wrapper/RAM32_1RW1R.v",
+ "dir::../../verilog/rtl/wrapper/Microwatt_FP_DFFRFile.v",
+ "dir::../../verilog/rtl/wrapper/multiply_add_64x64.v"
+ ],
+
+ "EXTRA_LEFS": [
+ "dir::../../lef/RAM512.lef",
+ "dir::../../lef/RAM32_1RW1R.lef",
+ "dir::../../lef/Microwatt_FP_DFFRFile.lef",
+ "dir::../../lef/multiply_add_64x64.lef"
+ ],
+
+ "EXTRA_GDS_FILES": [
+ "dir::../../gds/RAM512.gds",
+ "dir::../../gds/RAM32_1RW1R.gds",
+ "dir::../../gds/Microwatt_FP_DFFRFile.gds",
+ "dir::../../gds/multiply_add_64x64.gds"
+ ],
+
+ "EXTRA_LIBS": [
+ "dir::../../lib/RAM512.lib",
+ "dir::../../lib/RAM32_1RW1R.lib",
+ "dir::../../lib/Microwatt_FP_DFFRFile.lib",
+ "dir::../../lib/multiply_add_64x64.lib"
+ ],
+
+ "VDD_NETS": ["vccd1", "vccd2", "vdda1", "vdda2"],
+ "GND_NETS": ["vssd1", "vssd2", "vssa1", "vssa2"],
+
+ "PL_TARGET_DENSITY": "0.25",
+ "PL_RESIZER_HOLD_SLACK_MARGIN": "0.2",
+ "GRT_ADJUSTMENT": "0.2",
+
+ "GRT_ANT_ITERS": "1",
+
+ "CTS_CLK_BUFFER_LIST": ["sky130_fd_sc_hd__clkbuf_8", "sky130_fd_sc_hd__clkbuf_4", "sky130_fd_sc_hd__clkbuf_2"],
+ "CTS_DISABLE_POST_PROCESSING": "1",
+ "CTS_SINK_CLUSTERING_MAX_DIAMETER": "200",
+ "CTS_DISTANCE_BETWEEN_BUFFERS": "1000"
},
"pdk::gf180mcuC": {
"STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
- "FP_PDN_CHECK_NODES": 0,
- "FP_PDN_ENABLE_RAILS": 0,
- "RT_MAX_LAYER": "Metal4",
+
"DIE_AREA": "0 0 3000 3000",
"FP_DEF_TEMPLATE": "dir::fixed_dont_change/user_project_wrapper_gf180mcu.def",
- "PL_OPENPHYSYN_OPTIMIZATIONS": 0,
- "DIODE_INSERTION_STRATEGY": 0,
- "FP_PDN_CHECK_NODES": 0,
- "MAGIC_WRITE_FULL_LEF": 0,
- "FP_PDN_ENABLE_RAILS": 0
+
+ "MACRO_PLACEMENT_CFG": "dir::macro-gf180mcu.cfg",
+
+ "FP_PDN_MACRO_HOOKS": "microwatt_0.soc0.bram.bram0.ram_0.ram0 vccd1 vssd1 VDD VSS, microwatt_0.soc0.bram.bram0.ram_0.ram1 vccd1 vssd1 VDD VSS, microwatt_0.soc0.bram.bram0.ram_0.ram2 vccd1 vssd1 VDD VSS, microwatt_0.soc0.bram.bram0.ram_0.ram3 vccd1 vssd1 VDD VSS, microwatt_0.soc0.bram.bram0.ram_0.ram4 vccd1 vssd1 VDD VSS, microwatt_0.soc0.bram.bram0.ram_0.ram5 vccd1 vssd1 VDD VSS, microwatt_0.soc0.bram.bram0.ram_0.ram6 vccd1 vssd1 VDD VSS, microwatt_0.soc0.bram.bram0.ram_0.ram7 vccd1 vssd1 VDD VSS, microwatt_0.soc0.processor.dcache_0.rams:1.way.cache_ram_0 vccd1 vssd1 VDD VSS, microwatt_0.soc0.processor.icache_0.rams:1.way.cache_ram_0 vccd1 vssd1 VDD VSS, microwatt_0.soc0.processor.execute1_0.multiply_0.multiplier vccd1 vssd1 VDD VSS, microwatt_0.soc0.processor.register_file_0.register_file_0 vccd1 vssd1 VDD VSS",
+
+ "VERILOG_FILES": [
+ "dir::../../verilog/rtl/defines.v",
+ "dir::../../verilog/rtl/RAM512-gf180.v",
+ "dir::../../verilog/rtl/tap_top.v",
+ "dir::../../verilog/rtl/raminfr.v",
+ "dir::../../verilog/rtl/uart_defines.v",
+ "dir::../../verilog/rtl/uart_receiver.v",
+ "dir::../../verilog/rtl/uart_regs.v",
+ "dir::../../verilog/rtl/uart_rfifo.v",
+ "dir::../../verilog/rtl/uart_sync_flops.v",
+ "dir::../../verilog/rtl/uart_tfifo.v",
+ "dir::../../verilog/rtl/uart_top.v",
+ "dir::../../verilog/rtl/uart_transmitter.v",
+ "dir::../../verilog/rtl/uart_wb.v",
+ "dir::../../verilog/rtl/simplebus_host.v",
+ "dir::../../verilog/rtl/microwatt.v",
+ "dir::../../verilog/rtl/user_project_wrapper.v"
+ ],
+
+ "VERILOG_FILES_BLACKBOX": [
+ "pdk_dir::libs.ref/gf180mcu_fd_ip_sram/verilog/gf180mcu_fd_ip_sram__sram512x8m8wm1.v",
+ "dir::../../verilog/rtl/wrapper/RAM32_1RW1R.v",
+ "dir::../../verilog/rtl/wrapper/Microwatt_FP_DFFRFile.v",
+ "dir::../../verilog/rtl/wrapper/multiply_add_64x64.v"
+ ],
+
+ "EXTRA_LEFS": [
+ "pdk_dir::libs.ref/gf180mcu_fd_ip_sram/lef/gf180mcu_fd_ip_sram__sram512x8m8wm1.lef",
+ "dir::../../lef/RAM32_1RW1R.lef",
+ "dir::../../lef/Microwatt_FP_DFFRFile.lef",
+ "dir::../../lef/multiply_add_64x64.lef"
+ ],
+
+ "EXTRA_GDS_FILES": [
+ "pdk_dir::libs.ref/gf180mcu_fd_ip_sram/gds/gf180mcu_fd_ip_sram__sram512x8m8wm1.gds",
+ "dir::../../gds/RAM32_1RW1R.gds",
+ "dir::../../gds/Microwatt_FP_DFFRFile.gds",
+ "dir::../../gds/multiply_add_64x64.gds"
+ ],
+
+ "EXTRA_LIBS": [
+ "pdk_dir::libs.ref/gf180mcu_fd_ip_sram/liberty/gf180mcu_fd_ip_sram__sram512x8m8wm1__tt_025C_5v00.lib",
+ "dir::../../lib/RAM32_1RW1R.lib",
+ "dir::../../lib/Microwatt_FP_DFFRFile.lib",
+ "dir::../../lib/multiply_add_64x64.lib"
+ ],
+
+ "VDD_NETS": ["vccd1"],
+ "GND_NETS": ["vssd1"],
+
+ "PL_TARGET_DENSITY": "0.65",
+
+ "CTS_DISABLE_POST_PROCESSING": "1",
+ "CTS_SINK_CLUSTERING_MAX_DIAMETER": "200",
+ "CTS_DISTANCE_BETWEEN_BUFFERS": "1000",
+
+ "GRT_ADJUSTMENT": "0.1",
+
+ "DIODE_INSERTION_STRATEGY": "0"
}
}