diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 5ac9ab8ce5..fba8fcfd8e 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -181,10 +181,8 @@ configuration file. | LEC_CHECK| Perform a formal equivalence check between before and after netlists. If this fails, report an issue to OpenROAD.| 0| | LIB_FILES| A Liberty file of the standard cell library with PVT characterization, input and output characteristics, timing and power definitions for each cell.| | | LIB_MODEL| Selects between NLDM and CCS timing models for the ASAP7 platform. Valid values: NLDM (default), CCS. Used in flow/platforms/asap7/config.mk to pick the LIB_DIR subdirectory and accumulate the corresponding $(CORNER)_$(LIB_MODEL)_LIB_FILES list, and in flow/scripts/load.tcl to gate CCS-specific Tcl branches.| NLDM| -| MACRO_BLOCKAGE_HALO| Distance beyond the edges of a macro that will also be covered by the blockage generated for that macro. Note that the default macro blockage halo comes from the largest of the specified MACRO_PLACE_HALO x or y values. This variable overrides that calculation.| | | MACRO_EXTENSION| Sets the number of GCells added to the blockages boundaries from macros.| | | MACRO_PLACEMENT_TCL| Specifies the path of a TCL file on how to place macros manually. The user may choose to place just some of the macros in the design. The macro placer will handle the remaining unplaced macros.| | -| MACRO_PLACE_HALO| Horizontal/vertical halo around macros (microns). Used by automatic macro placement.| | | MACRO_ROWS_HALO_X| Horizontal distance between the edge of the macro and the beginning of the rows created by tapcell. Only available for ASAP7 PDK and GF180/uart-blocks design.| | | MACRO_ROWS_HALO_Y| Vertical distance between the edge of the macro and the beginning of the rows created by tapcell. Only available for ASAP7 PDK and GF180/uart-blocks design.| | | MACRO_WRAPPERS| The wrapper file that replaces existing macros with their wrapped version.| | @@ -265,10 +263,12 @@ configuration file. | RTLMP_MAX_LEVEL| Maximum depth of the physical hierarchy tree.| 2| | RTLMP_MAX_MACRO| Maximum number of macros in a cluster. If unset, rtl_macro_placer will calculate a value based on the design attributes.| | | RTLMP_MIN_AR| Specifies the minimum aspect ratio (height/width).| 0.33| +| RTLMP_MIN_CHANNEL_SIZE| Minimum channel width and height between macros (microns), given as one value for both, or two values "width height".| | | RTLMP_MIN_INST| Minimum number of standard cells in a cluster. If unset, rtl_macro_placer will calculate a value based on the design attributes.| | | RTLMP_MIN_MACRO| Minimum number of macros in a cluster. If unset, rtl_macro_placer will calculate a value based on the design attributes.| | | RTLMP_NOTCH_WT| Weight for the notch, or the existence of dead space that cannot be used for placement and routing.| 50.0| | RTLMP_OUTLINE_WT| Weight for violating the fixed outline constraint, meaning that all clusters should be placed within the shape of their parent cluster.| 100.0| +| RTLMP_PIN_AWARE_CHANNELS| Set to 1 to trim macro channels based on the pin locations of macros, instead of using full channels. Requires RTLMP_MIN_CHANNEL_SIZE to also be set. Defaults to 1 whenever RTLMP_MIN_CHANNEL_SIZE is set and this variable is not explicitly set to 0.| 0| | RTLMP_RPT_DIR| Path to the directory where reports are saved.| | | RTLMP_WIRELENGTH_WT| Weight for half-perimiter wirelength.| 100.0| | RULES_JSON| json files with the metrics baseline regression rules. In the ORFS Makefile, this defaults to $DESIGN_DIR/rules-base.json, but ORFS does not mandate the users source directory layout and this can be placed elsewhere when the user sets up an ORFS config.mk or from bazel-orfs.| | @@ -408,9 +408,7 @@ configuration file. - [FOOTPRINT_TCL](#FOOTPRINT_TCL) - [HOLD_SLACK_MARGIN](#HOLD_SLACK_MARGIN) - [IO_CONSTRAINTS](#IO_CONSTRAINTS) -- [MACRO_BLOCKAGE_HALO](#MACRO_BLOCKAGE_HALO) - [MACRO_PLACEMENT_TCL](#MACRO_PLACEMENT_TCL) -- [MACRO_PLACE_HALO](#MACRO_PLACE_HALO) - [MACRO_ROWS_HALO_X](#MACRO_ROWS_HALO_X) - [MACRO_ROWS_HALO_Y](#MACRO_ROWS_HALO_Y) - [MACRO_WRAPPERS](#MACRO_WRAPPERS) @@ -444,10 +442,12 @@ configuration file. - [RTLMP_MAX_LEVEL](#RTLMP_MAX_LEVEL) - [RTLMP_MAX_MACRO](#RTLMP_MAX_MACRO) - [RTLMP_MIN_AR](#RTLMP_MIN_AR) +- [RTLMP_MIN_CHANNEL_SIZE](#RTLMP_MIN_CHANNEL_SIZE) - [RTLMP_MIN_INST](#RTLMP_MIN_INST) - [RTLMP_MIN_MACRO](#RTLMP_MIN_MACRO) - [RTLMP_NOTCH_WT](#RTLMP_NOTCH_WT) - [RTLMP_OUTLINE_WT](#RTLMP_OUTLINE_WT) +- [RTLMP_PIN_AWARE_CHANNELS](#RTLMP_PIN_AWARE_CHANNELS) - [RTLMP_RPT_DIR](#RTLMP_RPT_DIR) - [RTLMP_WIRELENGTH_WT](#RTLMP_WIRELENGTH_WT) - [SETUP_MOVE_SEQUENCE](#SETUP_MOVE_SEQUENCE) diff --git a/flow/designs/asap7/aes-block/config.mk b/flow/designs/asap7/aes-block/config.mk index 8e518b6355..a6574cb03f 100644 --- a/flow/designs/asap7/aes-block/config.mk +++ b/flow/designs/asap7/aes-block/config.mk @@ -26,7 +26,7 @@ export GND_NETS_VOLTAGES = export PWR_NETS_VOLTAGES = # The macros are very small so use a smaller halo -export MACRO_PLACE_HALO ?= 3 3 +export RTLMP_MIN_CHANNEL_SIZE ?= 6 6 export ROUTING_LAYER_ADJUSTMENT = 0.3 export HOLD_SLACK_MARGIN = -30 diff --git a/flow/designs/asap7/coralnpu/config.mk b/flow/designs/asap7/coralnpu/config.mk index b7fd9d9a6f..abf9df8b25 100644 --- a/flow/designs/asap7/coralnpu/config.mk +++ b/flow/designs/asap7/coralnpu/config.mk @@ -24,5 +24,5 @@ export CORE_UTILIZATION = 65 export SYNTH_HIERARCHICAL = 1 export SYNTH_MINIMUM_KEEP_SIZE = 40000 -export MACRO_PLACE_HALO = 2 2 +export RTLMP_MIN_CHANNEL_SIZE = 4 4 diff --git a/flow/designs/asap7/cva6/config.mk b/flow/designs/asap7/cva6/config.mk index 4f628b4fd4..363f55e6ad 100644 --- a/flow/designs/asap7/cva6/config.mk +++ b/flow/designs/asap7/cva6/config.mk @@ -90,7 +90,7 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/constr export CORE_UTILIZATION = 70 export CORE_MARGIN = 2 -export MACRO_PLACE_HALO = 5 5 +export RTLMP_MIN_CHANNEL_SIZE = 10 10 export PLACE_DENSITY = 0.69 # a smoketest for this option, there are a diff --git a/flow/designs/asap7/riscv32i/config.mk b/flow/designs/asap7/riscv32i/config.mk index ebd8fe9f63..cfb6ed6adb 100644 --- a/flow/designs/asap7/riscv32i/config.mk +++ b/flow/designs/asap7/riscv32i/config.mk @@ -20,7 +20,7 @@ export CORE_MARGIN = 5 export PLACE_DENSITY_LB_ADDON = 0.10 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl -export MACRO_PLACE_HALO = 4 4 +export RTLMP_MIN_CHANNEL_SIZE = 8 8 export TNS_END_PERCENT = 100 diff --git a/flow/designs/asap7/tinyRocket/config.mk b/flow/designs/asap7/tinyRocket/config.mk index 1d2ac6962a..d61c1434d7 100644 --- a/flow/designs/asap7/tinyRocket/config.mk +++ b/flow/designs/asap7/tinyRocket/config.mk @@ -25,6 +25,6 @@ export CORE_UTILIZATION = 40 export CORE_MARGIN = 2 export PLACE_DENSITY_LB_ADDON = 0.10 -export MACRO_PLACE_HALO = 2 2 +export RTLMP_MIN_CHANNEL_SIZE = 4 4 export TNS_END_PERCENT = 100 diff --git a/flow/designs/gf12/ariane/config.mk b/flow/designs/gf12/ariane/config.mk index 0a700d0971..30719be1a8 100644 --- a/flow/designs/gf12/ariane/config.mk +++ b/flow/designs/gf12/ariane/config.mk @@ -24,7 +24,7 @@ export PLACE_DENSITY ?= 0.50 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl -export MACRO_PLACE_HALO = 10 10 +export RTLMP_MIN_CHANNEL_SIZE = 20 20 export MACRO_WRAPPERS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/wrappers.tcl ifeq ($(USE_FILL),1) diff --git a/flow/designs/gf12/ariane133/config.mk b/flow/designs/gf12/ariane133/config.mk index a08376a702..eca0992ea1 100644 --- a/flow/designs/gf12/ariane133/config.mk +++ b/flow/designs/gf12/ariane133/config.mk @@ -20,7 +20,7 @@ export CORE_AREA = 5 5 895 745 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl -export MACRO_PLACE_HALO = 10 10 +export RTLMP_MIN_CHANNEL_SIZE = 20 20 export PLACE_DENSITY_LB_ADDON = 0.05 diff --git a/flow/designs/gf12/bp_dual/config.mk b/flow/designs/gf12/bp_dual/config.mk index 682cb17575..3bad901297 100644 --- a/flow/designs/gf12/bp_dual/config.mk +++ b/flow/designs/gf12/bp_dual/config.mk @@ -65,7 +65,7 @@ export MACRO_WRAPPERS = $(PLATFORM_DIR)/bp/wrappers/wrappers.tcl export PDN_TCL = $(PLATFORM_DIR)/cfg/pdn_grid_strategy_13m_9T.top.tcl -export MACRO_PLACE_HALO = 5 5 +export RTLMP_MIN_CHANNEL_SIZE = 10 10 export OPT_POST_GRT_WNS = 0 diff --git a/flow/designs/gf12/bp_quad/config.mk b/flow/designs/gf12/bp_quad/config.mk index 8148cb9fa0..4ac35f779f 100644 --- a/flow/designs/gf12/bp_quad/config.mk +++ b/flow/designs/gf12/bp_quad/config.mk @@ -67,7 +67,7 @@ export MACRO_WRAPPERS = $(PLATFORM_DIR)/bp/wrappers/wrappers.tcl export PDN_TCL = $(PLATFORM_DIR)/cfg/pdn_grid_strategy_13m_9T.top.tcl -export MACRO_PLACE_HALO = 21 21 +export RTLMP_MIN_CHANNEL_SIZE = 42 42 export OPT_POST_GRT_WNS = 0 diff --git a/flow/designs/gf12/bp_single/config.mk b/flow/designs/gf12/bp_single/config.mk index dc529ea4b2..bc678991ab 100644 --- a/flow/designs/gf12/bp_single/config.mk +++ b/flow/designs/gf12/bp_single/config.mk @@ -55,7 +55,7 @@ export RTLMP_FENCE_LX = 850 export RTLMP_FENCE_LY = 850 export RTLMP_FENCE_UX = 2150 export RTLMP_FENCE_UY = 2150 -export MACRO_PLACE_HALO = 29 29 +export RTLMP_MIN_CHANNEL_SIZE = 58 58 export PDN_TCL = $(PLATFORM_DIR)/cfg/pdn_grid_strategy_13m_9T.top.tcl export FASTROUTE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/fastroute.tcl diff --git a/flow/designs/gf12/ca53/config.mk b/flow/designs/gf12/ca53/config.mk index 8137db70d4..ff917e402e 100644 --- a/flow/designs/gf12/ca53/config.mk +++ b/flow/designs/gf12/ca53/config.mk @@ -50,7 +50,7 @@ export PLACE_DENSITY_LB_ADDON = 0.05 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/ca53/io.tcl -export MACRO_PLACE_HALO = 10 10 +export RTLMP_MIN_CHANNEL_SIZE = 20 20 export MACRO_WRAPPERS = $(DESIGN_DIR)/wrappers.tcl diff --git a/flow/designs/gf12/swerv_wrapper/config.mk b/flow/designs/gf12/swerv_wrapper/config.mk index 7ce6add1cb..1639fa96e2 100644 --- a/flow/designs/gf12/swerv_wrapper/config.mk +++ b/flow/designs/gf12/swerv_wrapper/config.mk @@ -28,7 +28,7 @@ export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/io.tcl export PLACE_DENSITY_LB_ADDON = 0.05 export MACRO_WRAPPERS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/wrappers.tcl # -export MACRO_PLACE_HALO = 9 9 +export RTLMP_MIN_CHANNEL_SIZE = 18 18 ifeq ($(USE_FILL),1) export DESIGN_TYPE = CELL diff --git a/flow/designs/gf180/uart-blocks/config.mk b/flow/designs/gf180/uart-blocks/config.mk index b34c398b32..2a6c8f026b 100644 --- a/flow/designs/gf180/uart-blocks/config.mk +++ b/flow/designs/gf180/uart-blocks/config.mk @@ -14,7 +14,7 @@ export CORE_AREA = 10 10 420 420 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl -export MACRO_PLACE_HALO = 20 20 +export RTLMP_MIN_CHANNEL_SIZE = 40 40 export PDN_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/BLOCKS_grid_strategy.tcl export PLACE_DENSITY = 0.60 diff --git a/flow/designs/ihp-sg13g2/i2c-gpio-expander/config.mk b/flow/designs/ihp-sg13g2/i2c-gpio-expander/config.mk index 01ad9edbb8..53f618cb07 100644 --- a/flow/designs/ihp-sg13g2/i2c-gpio-expander/config.mk +++ b/flow/designs/ihp-sg13g2/i2c-gpio-expander/config.mk @@ -24,7 +24,7 @@ export MAX_ROUTING_LAYER = TopMetal2 export TNS_END_PERCENT = 100 export PLACE_DENSITY = 0.75 -export MACRO_PLACE_HALO = 20 20 +export RTLMP_MIN_CHANNEL_SIZE = 40 40 export CORNERS = slow fast export IO_NORTH_PINS = sg13g2_IOPad_io_gpio_3 \ diff --git a/flow/designs/nangate45/ariane133/config.mk b/flow/designs/nangate45/ariane133/config.mk index 741acedfd3..97ae1e77f7 100644 --- a/flow/designs/nangate45/ariane133/config.mk +++ b/flow/designs/nangate45/ariane133/config.mk @@ -18,7 +18,7 @@ export CORE_MARGIN = 5 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl -export MACRO_PLACE_HALO = 8 8 +export RTLMP_MIN_CHANNEL_SIZE = 16 16 export SKIP_GATE_CLONING = 1 diff --git a/flow/designs/nangate45/ariane136/config.mk b/flow/designs/nangate45/ariane136/config.mk index 3ba5ef624e..3954bf78d8 100644 --- a/flow/designs/nangate45/ariane136/config.mk +++ b/flow/designs/nangate45/ariane136/config.mk @@ -18,7 +18,7 @@ export CORE_AREA = 10 12 1448 1448 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl -export MACRO_PLACE_HALO = 12 12 +export RTLMP_MIN_CHANNEL_SIZE = 24 24 export TNS_END_PERCENT = 100 export PLACE_DENSITY = 0.35 diff --git a/flow/designs/nangate45/black_parrot/config.mk b/flow/designs/nangate45/black_parrot/config.mk index 0014d85fb9..204897ae0a 100644 --- a/flow/designs/nangate45/black_parrot/config.mk +++ b/flow/designs/nangate45/black_parrot/config.mk @@ -33,7 +33,7 @@ export PLACE_DENSITY_LB_ADDON = 0.05 export MACRO_PLACEMENT_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/macro_placement.tcl -export MACRO_PLACE_HALO = 15 15 +export RTLMP_MIN_CHANNEL_SIZE = 30 30 export TNS_END_PERCENT = 100 diff --git a/flow/designs/nangate45/bp_be_top/config.mk b/flow/designs/nangate45/bp_be_top/config.mk index 7f88c0f4c3..28e3e2a6ad 100644 --- a/flow/designs/nangate45/bp_be_top/config.mk +++ b/flow/designs/nangate45/bp_be_top/config.mk @@ -20,7 +20,7 @@ export CORE_AREA = 10.07 11.2 790 690 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/io.tcl -export MACRO_PLACE_HALO = 10 10 +export RTLMP_MIN_CHANNEL_SIZE = 20 20 export PLACE_DENSITY_LB_ADDON = 0.10 export TNS_END_PERCENT = 100 diff --git a/flow/designs/nangate45/bp_fe_top/config.mk b/flow/designs/nangate45/bp_fe_top/config.mk index b63012a4ba..1037d1f92e 100644 --- a/flow/designs/nangate45/bp_fe_top/config.mk +++ b/flow/designs/nangate45/bp_fe_top/config.mk @@ -22,7 +22,7 @@ export CORE_AREA = 10 10 790 590 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/io.tcl -export MACRO_PLACE_HALO = 10 10 +export RTLMP_MIN_CHANNEL_SIZE = 20 20 export PLACE_DENSITY_LB_ADDON = 0.11 export TNS_END_PERCENT = 100 diff --git a/flow/designs/nangate45/bp_multi_top/config.mk b/flow/designs/nangate45/bp_multi_top/config.mk index 767b26d48b..f4906828fa 100644 --- a/flow/designs/nangate45/bp_multi_top/config.mk +++ b/flow/designs/nangate45/bp_multi_top/config.mk @@ -28,7 +28,7 @@ export DIE_AREA = 0 0 1100 1100 export CORE_AREA = 10.07 9.8 1090 1090 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/io.tcl -export MACRO_PLACE_HALO = 20 20 +export RTLMP_MIN_CHANNEL_SIZE = 40 40 export PLACE_DENSITY_LB_ADDON = 0.05 export SKIP_GATE_CLONING = 1 diff --git a/flow/designs/nangate45/bp_quad/config.mk b/flow/designs/nangate45/bp_quad/config.mk index fef7ec8e91..5d755c0a68 100644 --- a/flow/designs/nangate45/bp_quad/config.mk +++ b/flow/designs/nangate45/bp_quad/config.mk @@ -34,4 +34,4 @@ export CORE_AREA = 10 12 3590 3590 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl -export MACRO_PLACE_HALO = 10 10 +export RTLMP_MIN_CHANNEL_SIZE = 20 20 diff --git a/flow/designs/nangate45/cva6/config.mk b/flow/designs/nangate45/cva6/config.mk index 8da7f064b5..46216584f0 100644 --- a/flow/designs/nangate45/cva6/config.mk +++ b/flow/designs/nangate45/cva6/config.mk @@ -87,7 +87,7 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/constr export CORE_UTILIZATION = 60 export CORE_MARGIN = 2 -export MACRO_PLACE_HALO = 10 10 +export RTLMP_MIN_CHANNEL_SIZE = 20 20 export PLACE_DENSITY = 0.75 # a smoketest for this option, there are a diff --git a/flow/designs/nangate45/mempool_group/config.mk b/flow/designs/nangate45/mempool_group/config.mk index 115c2012c5..8cca19fda0 100644 --- a/flow/designs/nangate45/mempool_group/config.mk +++ b/flow/designs/nangate45/mempool_group/config.mk @@ -75,6 +75,6 @@ export ADDITIONAL_LIBS = $(PLATFORM_DIR)/lib/fakeram45_256x32.lib \ export DIE_AREA = 0 0 1100 1100 export CORE_AREA = 10 12 1090 1090 -export MACRO_PLACE_HALO = 10 10 +export RTLMP_MIN_CHANNEL_SIZE = 20 20 export SYNTH_HDL_FRONTEND = slang diff --git a/flow/designs/nangate45/swerv_wrapper/config.mk b/flow/designs/nangate45/swerv_wrapper/config.mk index b813b20b2e..861bc792a4 100644 --- a/flow/designs/nangate45/swerv_wrapper/config.mk +++ b/flow/designs/nangate45/swerv_wrapper/config.mk @@ -17,7 +17,7 @@ export CORE_AREA = 10.07 11.2 1090 990 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/io.tcl -export MACRO_PLACE_HALO = 12 12 +export RTLMP_MIN_CHANNEL_SIZE = 24 24 export PLACE_DENSITY_LB_ADDON = 0.08 export TNS_END_PERCENT = 100 diff --git a/flow/designs/sky130hd/chameleon/config.mk b/flow/designs/sky130hd/chameleon/config.mk index 1952391e61..6bbe14781d 100644 --- a/flow/designs/sky130hd/chameleon/config.mk +++ b/flow/designs/sky130hd/chameleon/config.mk @@ -49,4 +49,4 @@ export FP_PDN_RAIL_WIDTH = 0.48 export FP_PDN_RAIL_OFFSET = 0 export TNS_END_PERCENT = 100 -export MACRO_PLACE_HALO = 35 35 +export RTLMP_MIN_CHANNEL_SIZE = 70 70 diff --git a/flow/designs/sky130hd/microwatt/config.mk b/flow/designs/sky130hd/microwatt/config.mk index aeffdeba18..f2da973056 100644 --- a/flow/designs/sky130hd/microwatt/config.mk +++ b/flow/designs/sky130hd/microwatt/config.mk @@ -20,7 +20,7 @@ export SYNTH_HIERARCHICAL = 1 export PLACE_DENSITY = 0.3 -export MACRO_PLACE_HALO = 50 50 +export RTLMP_MIN_CHANNEL_SIZE = 100 100 # CTS tuning export CTS_BUF_DISTANCE = 600 diff --git a/flow/platforms/asap7/config.mk b/flow/platforms/asap7/config.mk index c389b6dc46..f537202bce 100644 --- a/flow/platforms/asap7/config.mk +++ b/flow/platforms/asap7/config.mk @@ -48,7 +48,7 @@ endif export IO_PLACER_H ?= M4 export IO_PLACER_V ?= M5 -export MACRO_PLACE_HALO ?= 10 10 +export RTLMP_MIN_CHANNEL_SIZE ?= 20 20 # the followings create a keep out / halo between # macro and core rows diff --git a/flow/platforms/gf180/config.mk b/flow/platforms/gf180/config.mk index 3fa975a0cf..59d9ed8421 100644 --- a/flow/platforms/gf180/config.mk +++ b/flow/platforms/gf180/config.mk @@ -82,7 +82,7 @@ export PDN_TCL ?= $(PLATFORM_DIR)/openROAD/pdn/pdn export TAPCELL_TCL ?= $(PLATFORM_DIR)/openROAD/tapcell.tcl # macro planning -export MACRO_PLACE_HALO ?= 10 10 +export RTLMP_MIN_CHANNEL_SIZE ?= 20 20 #--------------------------------------------------------- # Place diff --git a/flow/platforms/gt2n/config.mk b/flow/platforms/gt2n/config.mk index 38f3771e34..2fab2a4b46 100644 --- a/flow/platforms/gt2n/config.mk +++ b/flow/platforms/gt2n/config.mk @@ -106,7 +106,7 @@ export TAPCELL_TCL ?= $(PLATFORM_DIR)/tapcell.tcl # (BPR pins only, half-width, no M1 shapes). export TAP_CELL_NAME = gt2_6t_tapbspdn_$(PRIMARY_WVT) -export MACRO_PLACE_HALO ?= 1.0 1.0 +export RTLMP_MIN_CHANNEL_SIZE ?= 2.0 2.0 #--------------------------------------------------------- # Place diff --git a/flow/platforms/ihp-sg13g2/config.mk b/flow/platforms/ihp-sg13g2/config.mk index 1cbb86c560..f13fe44b78 100644 --- a/flow/platforms/ihp-sg13g2/config.mk +++ b/flow/platforms/ihp-sg13g2/config.mk @@ -101,7 +101,7 @@ export CORE_MARGIN ?= 17.5 # `cut_rows` has to be called from the tapcell script. export TAPCELL_TCL ?= $(PLATFORM_DIR)/tapcell.tcl -export MACRO_PLACE_HALO ?= 40 40 +export RTLMP_MIN_CHANNEL_SIZE ?= 80 80 # Will be placed left to right export IO_NORTH_PINS ??= diff --git a/flow/platforms/nangate45/config.mk b/flow/platforms/nangate45/config.mk index 0a69b6642e..6371d09410 100644 --- a/flow/platforms/nangate45/config.mk +++ b/flow/platforms/nangate45/config.mk @@ -60,7 +60,7 @@ export PDN_TCL ?= $(PLATFORM_DIR)/grid_strategy-M1-M4-M7.tcl export TAPCELL_TCL ?= $(PLATFORM_DIR)/tapcell.tcl export TAP_CELL_NAME = TAPCELL_X1 -export MACRO_PLACE_HALO ?= 22.4 15.12 +export RTLMP_MIN_CHANNEL_SIZE ?= 44.8 30.24 #--------------------------------------------------------- # Place diff --git a/flow/platforms/sky130hd/config.mk b/flow/platforms/sky130hd/config.mk index 5a50fa7411..8aaa4ce0b7 100644 --- a/flow/platforms/sky130hd/config.mk +++ b/flow/platforms/sky130hd/config.mk @@ -103,7 +103,7 @@ export PDN_TCL ?= $(PLATFORM_DIR)/pdn.tcl export TAP_CELL_NAME = sky130_fd_sc_hd__tapvpwrvgnd_1 export TAPCELL_TCL ?= $(PLATFORM_DIR)/tapcell.tcl -export MACRO_PLACE_HALO ?= 40 40 +export RTLMP_MIN_CHANNEL_SIZE ?= 80 80 #--------------------------------------------------------- # Place diff --git a/flow/platforms/sky130hs/config.mk b/flow/platforms/sky130hs/config.mk index 7c96533b31..6e73e77a23 100644 --- a/flow/platforms/sky130hs/config.mk +++ b/flow/platforms/sky130hs/config.mk @@ -65,7 +65,7 @@ export PDN_TCL ?= $(PLATFORM_DIR)/pdn.tcl export TAP_CELL_NAME = sky130_fd_sc_hs__tapvpwrvgnd_1 export TAPCELL_TCL ?= $(PLATFORM_DIR)/tapcell.tcl -export MACRO_PLACE_HALO ?= 40 40 +export RTLMP_MIN_CHANNEL_SIZE ?= 80 80 #--------------------------------------------------------- # Place diff --git a/flow/scripts/macro_place_util.tcl b/flow/scripts/macro_place_util.tcl index 9fb06ff989..2a7bfecf3c 100644 --- a/flow/scripts/macro_place_util.tcl +++ b/flow/scripts/macro_place_util.tcl @@ -26,14 +26,6 @@ if { [find_macros] != "" } { } } - lassign $::env(MACRO_PLACE_HALO) halo_x halo_y - set halo_max [expr max($halo_x, $halo_y)] - set blockage_width $halo_max - - if { [env_var_exists_and_non_empty MACRO_BLOCKAGE_HALO] } { - set blockage_width $::env(MACRO_BLOCKAGE_HALO) - } - if { [env_var_exists_and_non_empty MACRO_PLACEMENT_TCL] } { log_cmd source $::env(MACRO_PLACEMENT_TCL) } @@ -44,8 +36,16 @@ if { [find_macros] != "" } { append_env_var additional_rtlmp_args RTLMP_MIN_INST -min_num_inst 1 append_env_var additional_rtlmp_args RTLMP_MAX_MACRO -max_num_macro 1 append_env_var additional_rtlmp_args RTLMP_MIN_MACRO -min_num_macro 1 - append additional_rtlmp_args " -halo_width $halo_x" - append additional_rtlmp_args " -halo_height $halo_y" + + if { + [env_var_exists_and_non_empty RTLMP_MIN_CHANNEL_SIZE] + && ![env_var_exists_and_non_empty RTLMP_PIN_AWARE_CHANNELS] + } { + set ::env(RTLMP_PIN_AWARE_CHANNELS) 1 + } + append_env_var additional_rtlmp_args RTLMP_MIN_CHANNEL_SIZE -min_channel_size 1 + append_env_var additional_rtlmp_args RTLMP_PIN_AWARE_CHANNELS \ + -pin_aware_channels 0 append_env_var additional_rtlmp_args RTLMP_MIN_AR -min_ar 1 append_env_var additional_rtlmp_args RTLMP_AREA_WT -area_weight 1 append_env_var additional_rtlmp_args RTLMP_WIRELENGTH_WT -wirelength_weight 1 diff --git a/flow/scripts/variables.json b/flow/scripts/variables.json index 374f80fe54..ff4d485841 100644 --- a/flow/scripts/variables.json +++ b/flow/scripts/variables.json @@ -532,12 +532,6 @@ "default": "NLDM", "description": "Selects between NLDM and CCS timing models for the ASAP7 platform. Valid values: NLDM (default), CCS. Used in flow/platforms/asap7/config.mk to pick the LIB_DIR subdirectory and accumulate the corresponding $(CORNER)_$(LIB_MODEL)_LIB_FILES list, and in flow/scripts/load.tcl to gate CCS-specific Tcl branches.\n" }, - "MACRO_BLOCKAGE_HALO": { - "description": "Distance beyond the edges of a macro that will also be covered by the blockage generated for that macro. Note that the default macro blockage halo comes from the largest of the specified MACRO_PLACE_HALO x or y values. This variable overrides that calculation.\n", - "stages": [ - "floorplan" - ] - }, "MACRO_EXTENSION": { "description": "Sets the number of GCells added to the blockages boundaries from macros.\n" }, @@ -547,12 +541,6 @@ "floorplan" ] }, - "MACRO_PLACE_HALO": { - "description": "Horizontal/vertical halo around macros (microns). Used by automatic macro placement.\n", - "stages": [ - "floorplan" - ] - }, "MACRO_ROWS_HALO_X": { "description": "Horizontal distance between the edge of the macro and the beginning of the rows created by tapcell. Only available for ASAP7 PDK and GF180/uart-blocks design.\n", "stages": [ @@ -1060,6 +1048,12 @@ "floorplan" ] }, + "RTLMP_MIN_CHANNEL_SIZE": { + "description": "Minimum channel width and height between macros (microns), given as one value for both, or two values \"width height\".\n", + "stages": [ + "floorplan" + ] + }, "RTLMP_MIN_INST": { "description": "Minimum number of standard cells in a cluster. If unset, rtl_macro_placer will calculate a value based on the design attributes.\n", "stages": [ @@ -1086,6 +1080,13 @@ "floorplan" ] }, + "RTLMP_PIN_AWARE_CHANNELS": { + "default": 0, + "description": "Set to 1 to trim macro channels based on the pin locations of macros, instead of using full channels. Requires RTLMP_MIN_CHANNEL_SIZE to also be set. Defaults to 1 whenever RTLMP_MIN_CHANNEL_SIZE is set and this variable is not explicitly set to 0.\n", + "stages": [ + "floorplan" + ] + }, "RTLMP_RPT_DIR": { "description": "Path to the directory where reports are saved.\n", "stages": [ diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 21d603837a..4a703d33b3 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -544,21 +544,6 @@ MACRO_PLACEMENT_TCL: The macro placer will handle the remaining unplaced macros. stages: - floorplan -MACRO_PLACE_HALO: - description: > - Horizontal/vertical halo around macros (microns). Used by automatic macro - placement. - stages: - - floorplan -MACRO_BLOCKAGE_HALO: - description: > - Distance beyond the edges of a macro that will also be covered by the - blockage generated for that macro. - Note that the default macro blockage halo comes from the largest of the - specified MACRO_PLACE_HALO x or y values. This variable overrides that - calculation. - stages: - - floorplan PDN_TCL: description: > File path which has a set of power grid policies used by pdn to be applied @@ -1414,6 +1399,21 @@ RTLMP_MIN_MACRO: calculate a value based on the design attributes. stages: - floorplan +RTLMP_MIN_CHANNEL_SIZE: + description: > + Minimum channel width and height between macros (microns), given as one + value for both, or two values "width height". + stages: + - floorplan +RTLMP_PIN_AWARE_CHANNELS: + description: > + Set to 1 to trim macro channels based on the pin locations of macros, + instead of using full channels. Requires RTLMP_MIN_CHANNEL_SIZE to also be set. + Defaults to 1 whenever RTLMP_MIN_CHANNEL_SIZE is set and + this variable is not explicitly set to 0. + default: 0 + stages: + - floorplan RTLMP_MIN_AR: description: > Specifies the minimum aspect ratio (height/width). diff --git a/tools/OpenROAD b/tools/OpenROAD index 4b704bb693..26d747e70a 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 4b704bb69321203e5bf5db74182bfae9e8721d1e +Subproject commit 26d747e70ad7d266d5544cbff4b08955af296bb9