Macro Placement#
The macro placement module in OpenROAD (mpl
) is based on
TritonMacroPlacer, an open-source ParquetFP-based macro cell placer.
The macro placer places macros/blocks honoring halos, channels
and cell row “snapping”.
Run global_placement
before macro placement.
Approximately \(\Bigl\lceil [{\frac{numMacros}{3}}]^{1.5} \Bigr\rceil\) quadrisections of the initial placed mixed-size layout are explored and packed using ParquetFP-based annealing. The best resulting floorplan according to a heuristic evaluation function is kept.
Commands#
Note
Parameters in square brackets
[-param param]
are optional.Parameters without square brackets
-param2 param2
are required.
Macro Placement#
macro_placement
[-halo {halo_x halo_y}]
[-channel {channel_x channel_y}]
[-fence_region {lx ly ux uy}]
[-snap_layer snap_layer_number]
[-style corner_wax_wl|corner_min_wl]
Options#
Switch Name |
Description |
---|---|
|
Horizontal and vertical halo around macros (microns). |
|
Horizontal and vertical channel width between macros (microns). |
|
Restrict macro placements to a region (microns). Defaults to the core area. |
|
Snap macro origins to this routing layer track. |
|
Placement style, to choose either |
For placement style, corner_max_wl
means that choosing the partitions that maximise the wirelength
of connections between the macros to force them to the corners. Vice versa for corner_min_wl
.
Macros will be placed with \(max(halo * 2, channel)\) spacing between macros, and between macros and the fence/die boundary. If no solutions are found, try reducing the channel/halo.
Useful developer functions#
If you are a developer, you might find these useful. More details can be found in the source file or the swig file.
Command Name |
Description |
---|---|
|
Macro placement debugging. Note that GUI must be present for this command, otherwise a segfault will occur. |
Example scripts#
Example scripts demonstrating how to run TritonMacroPlace on a sample design of east_west
as follows:
./test/east_west.tcl
./test/east_west1.tcl
./test/east_west2.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#
FAQs#
Check out GitHub discussion about this tool.
License#
BSD 3-Clause License. See LICENSE file.