Hierarchical Macro Placement#
A hierarchical automatic macro placer for large-scale complex IP blocks, “Hier-RTLMP”.
This tool builds on the existing RTLMP (mpl
) framework, adopting a multilevel physical
planning approach that exploits the hierarchy and data flow inherent in the design RTL.
Commands#
Note
Parameters in square brackets
[-param param]
are optional.Parameters without square brackets
-param2 param2
are required.
RTL Macro Placer#
This command executes the Hier-RTLMP algorithm for macro placement.
rtl_macro_placer
[-max_num_macro max_num_macro]
[-min_num_macro min_num_macro]
[-max_num_macro max_num_macro]
[-max_num_inst max_num_inst]
[-min_num_inst min_num_inst]
[-tolerance tolerance]
[-max_num_level max_num_level]
[-coarsening_ratio coarsening_ratio]
[-num_bundled_ios num_bundled_ios]
[-large_net_threshold large_net_threshold]
[-signature_net_threshold signature_net_threshold]
[-halo_width halo_width]
[-halo_height halo_height]
[-fence_lx fence_lx]
[-fence_ly fence_ly]
[-fence_ux fence_ux]
[-fence_uy fence_uy]
[-area_weight area_weight]
[-outline_weight outline_weight]
[-wirelength_weight wirelength_weight]
[-guidance_weight guidance_weight]
[-fence_weight fence_weight]
[-boundary_weight boundary_weight]
[-notch_weight notch_weight]
[-macro_blockage_weight macro_blockage_weight]
[-pin_access_th pin_access_th]
[-target_util target_util]
[-target_dead_space target_dead_space]
[-min_ar min_ar]
[-snap_layer snap_layer]
[-bus_planning]
[-report_directory report_directory]
[-write_macro_placement file_name]
Options#
Switch Name |
Description |
---|---|
|
Maximum/minimum number of macros in a cluster. The default value is |
|
Maximum/minimum number of standard cells in a cluster. The default value is |
|
Add a margin to the minimum and maximum number of macros/std cells in a cluster. For min, we multiply by (1 - |
|
Maximum depth of physical hierarchical tree. The default value is |
|
The larger the coarsening_ratio, the faster the convergence process. The allowed values are floats, and the default value is |
|
Specifies the number of bundled pins for the left, right, top, and bottom boundaries. The default value is |
|
Ignore nets with many connections during clustering, such as global nets. The default value is |
|
Minimum number of connections between two clusters to be identified as connected. The default value is |
|
Horizontal/vertical halo around macros (microns). The allowed values are floats, and the default value is |
|
Defines the global fence bounding box coordinates. The default values are the core area coordinates). |
|
Specifies the pin access threshold value of macros. The default value is |
|
Specifies the target utilization of |
|
Specifies the target dead space percentage, which influences the utilization of |
|
Specifies the minimum aspect ratio \(a\), or the ratio of its width to height of a |
|
Snap macro origins to this routing layer track. The default value is 4, and the allowed values are integers |
|
Flag to enable bus planning. We recommend to enable bus planning for technologies with very limited routing layers such as SKY130 and GF180. As for technologies such as NanGate45 and ASAP7, we recommend to keep it disabled. |
|
Save reports to this directory. |
|
Generates a file with the placement of the macros placed by HierRTLMP flow in the format of multiple calls for the |
Simulated Annealing Weight parameters#
Do note that while action probabilities are normalized to 1.0, the weights are not necessarily normalized.
Switch Name |
Description |
---|---|
|
Weight for the area of current floorplan. The allowed values are floats, and the default value is |
|
Weight for violating the fixed outline constraint, meaning that all clusters should be placed within the shape of their parent cluster. The allowed values are floats, and the default value is |
|
Weight for half-perimeter wirelength. The allowed values are floats, and the default value is |
|
Weight for guidance cost or clusters being placed near specified regions if users provide such constraints. The allowed values are floats, and the default value is |
|
Weight for fence cost, or how far the macro is from zero fence violation. The allowed values are floats, and the default value is |
|
Weight for the boundary, or how far the hard macro clusters are from boundaries. Note that mixed macro clusters are not pushed, thus not considered in this cost. The allowed values are floats, and the default value is |
|
Weight for the notch, or the existence of dead space that cannot be used for placement & routing. Note that this cost applies only to hard macro clusters. The allowed values are floats, and the default value is |
|
Weight for macro blockage, or the overlapping instances of the macro. The allowed values are floats, and the default value is |
Place Macro#
Command for placement of one specific macro.
place_macro
-macro_name macro_name
-location {x y}
[-orientation orientation]
Options#
Switch Name |
Description |
---|---|
|
The name of a macro of the design. |
|
The lower left corner of the macro in microns. |
|
The orientation according to odb. If nothing is specified, defaults to |
Example scripts#
Example of a script demonstrating how to run mpl2
on a sample design of bp_fe_top
as follows:
./test/bp_fe_top.tcl
Regression tests#
There are a set of regression tests in ./test
. For more information, refer to this section.
Simply run the following script:
./test/regression
Limitations#
References#
A. B. Kahng, R. Varadarajan and Z. Wang, “RTL-MP: Toward Practical, Human-Quality Chip Planning and Macro Placement”, (.pdf), Proc. ACM/IEEE Intl. Symp. on Physical Design, 2022, pp. 3-11.
A. B. Kahng, R. Varadarajan and Z. Wang, “Hier-RTLMP: A hierarchical automatic macro placer for large-scale complex IP blocks.”, (.pdf), arXiv preprint arXiv:2304.11761, 2023.
FAQs#
Check out GitHub discussion about this tool.
License#
BSD 3-Clause License. See LICENSE file.