Detailed Routing
Contents
Detailed Routing#
The Detailed Routing (drt
) module in OpenROAD is based on the open-sourcedetailed router, TritonRoute. TritonRoute consists of several mainbuilding blocks, including pin access analysis, track assignment,initial detailed routing, search and repair, and a DRC engine.The initial development of therouteris inspired by theISPD-2018 initial detailed routingcontest. However, the current frameworkdiffers and is built from scratch, aiming for an industrial-oriented scalableand flexible flow.
TritonRoute provides industry-standard LEF/DEF interface withsupport ofISPD-2018 andISPD-2019 contest-compatible routeguide format.
Commands#
Note
Parameters in square brackets
[-paramparam]
are optional.Parameters without square brackets
-param2param2
are required.
Detailed Route#
This command performs detailed routing.
Developer arguments
-or_seed
,-or_k
Distributed arguments
-distributed
,-remote_host
,-remote_port
,-shared_volume
,-cloud_size
Pin Access arguments
-via_in_pin_bottom_layer
,-via_in_pin_top_layer
,-via_access_layer
,-min_access_points
detailed_route[-output_mazefilename][-output_drcfilename][-output_cmapfilename][-output_guide_coveragefilename][-drc_report_iter_stepstep][-db_process_nodename][-disable_via_gen][-droute_end_iteriter][-via_in_pin_bottom_layerlayer][-via_in_pin_top_layerlayer][-via_access_layerlayer][-or_seedseed][-or_kk][-bottom_routing_layerlayer][-top_routing_layerlayer][-verboselevel][-distributed][-remote_hostrhost][-remote_portrport][-shared_volumevol][-cloud_sizesz][-clean_patches][-no_pin_access][-min_access_pointscount][-save_guide_updates][-repair_pdn_viaslayer][-single_step_dr]
Options#
Switch Name | Description |
---|---|
| Path to output maze log file (e.g. |
| Path to output DRC report file (e.g. |
| Path to output congestion map file (e.g. |
| Path to output guide coverage file (e.g. |
| Report DRC on each iteration which is a multiple of this step. The default value is |
| Specify the process node. |
| Option to diable via generation with bottom and top routing layer. The default value is disabled. |
| Number of detailed routing iterations. The default value is |
| Refer to pin access argumentshere. |
| Refer to pin access argumentshere. |
| Refer to pin access argumentshere. |
| Refer to pin access argumentshere. |
| Refer to developer argumentshere. |
| Refer to developer argumentshere. |
| Deprecated. Use the |
| Deprecated. Use the |
| Sets verbose mode if the value is greater than 1, else non-verbose mode (must be integer, or error will be triggered.) |
| Refer to distributed argumentshere. |
| Refer to distributed argumentshere. |
| Refer to distributed argumentshere. |
| Refer to distributed argumentshere. |
| Refer to distributed argumentshere. |
| Clean unneeded patches during detailed routing. |
| Disables pin access for routing. |
| Flag to save guides updates. |
| This option is used for PDKs where M1 and M2 power rails run in parallel. |
Developer arguments#
Some arguments that are helpful for developers are listed here.
Switch Name | Description |
---|---|
| Random seed for the order of nets to reroute. The default value is |
| Number of swaps is given by\(k * sizeof(rerouteNets)\). The default value is |
Detailed Route Debugging#
The following command and arguments are useful when debugging errormessages fromdrt
and to understand its behavior.
detailed_route_debug[-pa][-ta][-dr][-maze][-netname][-pinname][-boxx1y1x2y2][-iteriter][-pa_markers][-dump_dr][-dump_dirdir][-snapshot_dirdir][-dump_last_worker][-pa_edge][-pa_commit][-write_net_tracks]
Options#
Switch Name | Description |
---|---|
| Enable debug for pin access. |
| Enable debug for track assignment. |
| Enable debug for detailed routing. |
| Enable debug for maze routing. |
| Enable debug for net name. |
| Enable debug for pin name. |
| Set the box for debugging given by lower left/upper right coordinates. |
| Debugs routes that pass through the point |
| Specifies the number of debug iterations. The default value is |
| Enable pin access markers. |
| Filename for detailed routing dump. |
| Directory for detailed routing dump. |
| Directory for snapshots produced if the debug level of |
| Enable visibility of pin access edges. |
| Enable visibility of pin access commits. |
| Enable writing of net track assigments. |
Check Pin Access#
This function checks pin access.
pin_access[-db_process_nodename][-bottom_routing_layerlayer][-top_routing_layerlayer][-via_access_layerlayer][-via_in_pin_bottom_layerlayer][-via_in_pin_top_layerlayer][-min_access_pointscount][-verboselevel][-distributed][-remote_hostrhost][-remote_portrport][-shared_volumevol][-cloud_sizesz]
Options#
Switch Name | Description |
---|---|
| Specify process node. |
| Deprecated. Use the |
| Deprecated. Use the |
| Refer to pin access argumentshere. |
| Refer to pin access argumentshere. |
| Refer to pin access argumentshere. |
| Refer to pin access argumentshere. |
| Sets verbose mode if the value is greater than 1, else non-verbose mode (must be integer, or error will be triggered.) |
| Refer to distributed argumentshere. |
| Refer to distributed argumentshere. |
| Refer to distributed argumentshere. |
| Refer to distributed argumentshere. |
| Refer to distributed argumentshere. |
Pin Access Arguments#
We have compiled all pin access related arguments in this section.
Switch Name | Description |
---|---|
| Top via access layer name. Any pin on this layer or below can only be accessed through a via, disallowing planar access. |
| Via-in pin bottom layer name. Used in conjunction with via_in_pin_top_layer to specify the layer range for via-in-pin rules. |
| Via-in pin top layer name. Used in conjunction with via_in_pin_bottom_layer to specify the layer range for via-in-pin rules. For pins within this layer range, any via enclosure must be fully contained within the pin boundary and cannot extend beyond the pin edges. |
| Minimum number of access points per pin. |
Distributed Arguments#
We have compiled all distributed arguments in this section.
Note
Additional setup is required. Please refer to thisguide.
Switch Name | Description |
---|---|
| Enable distributed mode with Kubernetes and Google Cloud. |
| The host IP. |
| The value of the port to access from. |
| The mount path of the nfs shared folder. |
| The number of workers. |
Useful Developer Commands#
If you are a developer, you might find these useful. More details can be found in thesource file or theswig file.
Command Name | Description |
---|---|
| Set default via. |
| Set unidirectional layer. |
| Refer to function |
| Refer to function |
Example scripts#
Example script demonstrating how to run TritonRoute on a sample design ofgcd
in the Nangate45 technology node.
# single machine example./test/gcd_nangate45.tcl# distributed example./test/gcd_nangate45_distributed.tcl
Regression tests#
There are a set of regression tests in./test
. For more information, refer to thissection.
Simply run the following script:
./test/regression
Limitations#
FAQs#
Check outGitHub discussionabout this tool.
References#
Please cite the following paper(s) for publication:
A. B. Kahng, L. Wang and B. Xu, “TritonRoute: The Open Source DetailedRouter”, IEEE Transactions on Computer-Aided Design of Integrated Circuitsand Systems (2020), doi:10.1109/TCAD.2020.3003234.(.pdf)
A. B. Kahng, L. Wang and B. Xu, “The Tao of PAO: Anatomy of a Pin AccessOracle for Detailed Routing”, Proc. ACM/IEEE Design Automation Conf., 2020,pp. 1-6.(.pdf)
Authors#
TritonRoute was developed by graduate students Lutong Wang andBangqi Xu from UC San Diego, and serves as the detailed router in theOpenROAD project.
License#
BSD 3-Clause License. SeeLICENSE file.