Detailed Routing#
The Detailed Routing (drt
) module in OpenROAD is based on the open-source
detailed router, TritonRoute. TritonRoute consists of several main
building blocks, including pin access analysis, track assignment,
initial detailed routing, search and repair, and a DRC engine.
The initial development of the
router
is inspired by the ISPD-2018 initial detailed routing
contest. However, the current framework
differs and is built from scratch, aiming for an industrial-oriented scalable
and flexible flow.
TritonRoute provides industry-standard LEF/DEF interface with support of ISPD-2018 and ISPD-2019 contest-compatible route guide format.
Commands#
Note
Parameters in square brackets
[-param param]
are optional.Parameters without square brackets
-param2 param2
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
detailed_route
[-output_maze filename]
[-output_drc filename]
[-output_cmap filename]
[-output_guide_coverage filename]
[-drc_report_iter_step step]
[-db_process_node name]
[-disable_via_gen]
[-droute_end_iter iter]
[-via_in_pin_bottom_layer layer]
[-via_in_pin_top_layer layer]
[-or_seed seed]
[-or_k k]
[-bottom_routing_layer layer]
[-top_routing_layer layer]
[-verbose level]
[-distributed]
[-remote_host rhost]
[-remote_port rport]
[-shared_volume vol]
[-cloud_size sz]
[-clean_patches]
[-no_pin_access]
[-min_access_points count]
[-save_guide_updates]
[-repair_pdn_vias layer]
[-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 |
|
Via-in pin bottom layer name. |
|
Via-in pin top layer name. |
|
Refer to developer arguments here. |
|
Refer to developer arguments here. |
|
Bottommost routing layer name. |
|
Topmost routing layer name. |
|
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 arguments here. |
|
Clean unneeded patches during detailed routing. |
|
Disables pin access for routing. |
|
Minimum access points for standard cell and macro cell pins. |
|
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 error
messages from drt
and to understand its behavior.
detailed_route_debug
[-pa]
[-ta]
[-dr]
[-maze]
[-net name]
[-pin name]
[-box x1 y1 x2 y2]
[-iter iter]
[-pa_markers]
[-dump_dr]
[-dump_dir dir]
[-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. |
|
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_node name]
[-bottom_routing_layer layer]
[-top_routing_layer layer]
[-min_access_points count]
[-verbose level]
[-distributed]
[-remote_host rhost]
[-remote_port rport]
[-shared_volume vol]
[-cloud_size sz]
Options#
Switch Name |
Description |
---|---|
|
Specify process node. |
|
Bottommost routing layer. |
|
Topmost routing layer. |
|
Minimum number of access points per pin. |
|
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 arguments here. |
Distributed Arguments#
We have compiled all distributed arguments in this section.
Note
Additional setup is required. Please refer to this guide.
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 the source file or the swig 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 of gcd
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 this section.
Simply run the following script:
./test/regression
Limitations#
FAQs#
Check out GitHub discussion about this tool.
References#
Please cite the following paper(s) for publication:
A. B. Kahng, L. Wang and B. Xu, “TritonRoute: The Open Source Detailed Router”, IEEE Transactions on Computer-Aided Design of Integrated Circuits and 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 Access Oracle for Detailed Routing”, Proc. ACM/IEEE Design Automation Conf., 2020, pp. 1-6. (.pdf)
License#
BSD 3-Clause License. See LICENSE file.