| # Process node | |
| set ::env(PROCESS) 180 | |
| set ::env(DEF_UNITS_PER_MICRON) 2000 | |
| set ::env(VDD_PIN) "VDD" | |
| set ::env(GND_PIN) "VSS" | |
| set ::env(VDD_PIN_VOLTAGE) "5.00" | |
| set ::env(GND_PIN_VOLTAGE) "0.00" | |
| set ::env(STD_CELL_POWER_PINS) "VDD VNW" | |
| set ::env(STD_CELL_GROUND_PINS) "VSS VPW" | |
| if { ![info exist ::env(STD_CELL_LIBRARY)] } { | |
| set ::env(STD_CELL_LIBRARY) gf180mcu_fd_sc_mcu7t5v0 | |
| } | |
| if { ![info exist ::env(STD_CELL_LIBRARY_OPT)] } { | |
| set ::env(STD_CELL_LIBRARY_OPT) gf180mcu_fd_sc_mcu7t5v0 | |
| } | |
| # Lib Files | |
| set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/$::env(STD_CELL_LIBRARY)__tt_025C_5v00.lib" | |
| set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/$::env(STD_CELL_LIBRARY)__ff_n40C_5v50.lib" | |
| set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/$::env(STD_CELL_LIBRARY)__ss_125C_4v50.lib" | |
| set ::env(LIB_TYPICAL) $::env(LIB_SYNTH) | |
| # Technology LEF | |
| set ::env(TECH_LEF) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/techlef/*__nom.tlef"] | |
| set ::env(TECH_LEF_MIN) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/techlef/*__min.tlef"] | |
| set ::env(TECH_LEF_MAX) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/techlef/*__max.tlef"] | |
| set ::env(CELLS_LEF) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lef/*.lef"] | |
| set ::env(GDS_FILES) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/gds/*.gds"] | |
| set ::env(STD_CELL_LIBRARY_CDL) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/cdl/$::env(STD_CELL_LIBRARY).cdl" | |
| set ::env(GPIO_PADS_LEF) "\ | |
| $::env(PDK_ROOT)/$::env(PDK)/libs.ref/gf180mcu_io/lef/GF018green_ipio_5p0c_75_5lm.lef | |
| " | |
| set ::env(GPIO_PADS_VERILOG) "\ | |
| $::env(PDK_ROOT)/$::env(PDK)/libs.ref/gf180mcu_io/verilog/GF018green_ipio_5p0c_75_5lm.v | |
| " | |
| # Latch mapping | |
| set ::env(SYNTH_LATCH_MAP) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/$::env(STD_CELL_LIBRARY)/latch_map.v" | |
| # Tri-state buffer mapping | |
| set ::env(TRISTATE_BUFFER_MAP) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/$::env(STD_CELL_LIBRARY)/tribuff_map.v" | |
| # Full adder mapping | |
| set ::env(FULL_ADDER_MAP) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/$::env(STD_CELL_LIBRARY)/fa_map.v" | |
| # Ripple carry adder mapping | |
| set ::env(RIPPLE_CARRY_ADDER_MAP) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/$::env(STD_CELL_LIBRARY)/rca_map.v" | |
| # Carry select adder mapping | |
| set ::env(CARRY_SELECT_ADDER_MAP) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/$::env(STD_CELL_LIBRARY)/csa_map.v" | |
| # Default No Synth List | |
| set ::env(NO_SYNTH_CELL_LIST) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/$::env(STD_CELL_LIBRARY)/no_synth.cells" | |
| # Default DRC Exclude List | |
| set ::env(DRC_EXCLUDE_CELL_LIST) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/$::env(STD_CELL_LIBRARY)/drc_exclude.cells" | |
| # DRC Exclude List for Optimization library | |
| set ::env(DRC_EXCLUDE_CELL_LIST_OPT) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/$::env(STD_CELL_LIBRARY_OPT)/drc_exclude.cells" | |
| # Open-RCX Rules File | |
| set ::env(RCX_RULES) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/rcx_rules.info" | |
| # Floorplanning | |
| ## Layer Info | |
| set ::env(FP_IO_HLAYER) "Metal3" | |
| set ::env(FP_IO_VLAYER) "Metal2" | |
| set ::env(FP_PDN_RAIL_LAYER) "Metal1" | |
| set ::env(FP_PDN_VERTICAL_LAYER) "Metal4" | |
| set ::env(FP_PDN_HORIZONTAL_LAYER) "Metal5" | |
| set ::env(MACRO_BLOCKAGES_LAYER) "Metal1 Metal2 Metal3 Metal4 Metal5" | |
| set ::env(DATA_WIRE_RC_LAYER) "Metal2" | |
| set ::env(CLOCK_WIRE_RC_LAYER) "Metal4" | |
| ## Tap Cell Dist | |
| set ::env(FP_TAPCELL_DIST) 20 | |
| ## Extra PDN configs | |
| set ::env(FP_PDN_RAIL_OFFSET) 0 | |
| set ::env(FP_PDN_VWIDTH) 1.6 | |
| set ::env(FP_PDN_HWIDTH) 1.6 | |
| set ::env(FP_PDN_VSPACING) 1.7 | |
| set ::env(FP_PDN_HSPACING) 1.7 | |
| set ::env(FP_PDN_VOFFSET) 16.32 | |
| set ::env(FP_PDN_VPITCH) 153.6 | |
| set ::env(FP_PDN_HOFFSET) 16.65 | |
| set ::env(FP_PDN_HPITCH) 153.18 | |
| ## Core Ring PDN defaults | |
| set ::env(FP_PDN_CORE_RING_VWIDTH) 1.6 | |
| set ::env(FP_PDN_CORE_RING_HWIDTH) 1.6 | |
| set ::env(FP_PDN_CORE_RING_VSPACING) 1.7 | |
| set ::env(FP_PDN_CORE_RING_HSPACING) 1.7 | |
| set ::env(FP_PDN_CORE_RING_VOFFSET) 6 | |
| set ::env(FP_PDN_CORE_RING_HOFFSET) 6 | |
| # Timing | |
| set ::env(RCX_RULES) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/rules.openrcx.$::env(PDK).nom" | |
| set ::env(RCX_RULES_MIN) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/rules.openrcx.$::env(PDK).min" | |
| set ::env(RCX_RULES_MAX) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/rules.openrcx.$::env(PDK).max" | |
| # Routing | |
| set ::env(METAL_LAYER_NAMES) "Metal1 Metal2 Metal3 Metal4 Metal5" | |
| set ::env(RT_MIN_LAYER) "Metal2" ;# stdcells heavily use Metal1 - setting it to Metal1 will cause congestions | |
| set ::env(RT_MAX_LAYER) "Metal5" | |
| set ::env(DRT_MIN_LAYER) "Metal1" | |
| set ::env(GRT_LAYER_ADJUSTMENTS) "0,0,0,0,0" | |
| ## Tracks info | |
| set ::env(TRACKS_INFO_FILE) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/librelane/$::env(STD_CELL_LIBRARY)/tracks.info" | |
| # Signoff | |
| ## Magic | |
| set ::env(MAGIC_MAGICRC) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/magic/$::env(PDK).magicrc" | |
| set ::env(MAGIC_TECH_FILE) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/magic/$::env(PDK).tech" | |
| ## Klayout | |
| set ::env(KLAYOUT_TECH) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/klayout/tech/gf180mcu.lyt" | |
| set ::env(KLAYOUT_PROPERTIES) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/klayout/tech/gf180mcu.lyp" | |
| set ::env(KLAYOUT_DRC_TECH_SCRIPT) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/klayout/drc/gf180mcu.drc" | |
| set ::env(KLAYOUT_DEF_LAYER_MAP) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/klayout/tech/gf180mcu.map" | |
| ## Netgen | |
| set ::env(NETGEN_SETUP_FILE) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/netgen/$::env(PDK)_setup.tcl" | |
| # # Temporary Override(s) Because OpenROAD can't read techlefs properly | |
| # # Layer RC Values | |
| # set ::env(LAYERS_RC) "\ | |
| # Metal1 0.090000 0.0000394,\ | |
| # Metal2 0.090000 0.0000394,\ | |
| # Metal3 0.090000 0.0000394,\ | |
| # Metal4 0.090000 0.0000394,\ | |
| # Metal5 0.090000 0.0000394" | |
| # set ::env(VIAS_RC) "\ | |
| # Via1 4.500,\ | |
| # Via2 4.500,\ | |
| # Via3 4.500,\ | |
| # Via4 4.500" |