Restructure#
The restructure module in OpenROAD (rmp
) is based on
an interface to ABC for local resynthesis. The package allows
logic restructuring that targets area or timing. It extracts a cloud of logic
using the OpenSTA timing engine, and passes it to ABC through blif
interface.
Multiple recipes for area or timing are run to obtain multiple structures from ABC;
the most desirable among these is used to improve the netlist.
The ABC output is read back by a blif
reader which is integrated to OpenDB.
blif
writer and reader also support constants from and to OpenDB. Reading
back of constants requires insertion of tie cells which should be provided
by the user as per the interface described below.
Commands#
Note
Parameters in square brackets
[-param param]
are optional.Parameters without square brackets
-param2 param2
are required.
Restructure#
Restructuring can be done in two modes: area or delay.
Method 1: Area Mode Example:
restructure -liberty_file ckt.lib -target area -tielo_pin ABC -tiehi_pin DEF
Method 2: Timing Mode Example:
restructure -liberty_file ckt.lib -target delay -tielo_pin ABC -tiehi_pin DEF -slack_threshold 1 -depth_threshold 2
restructure
[-slack_threshold slack_val]
[-depth_threshold depth_threshold]
[-target area|delay]
[-abc_logfile logfile]
[-liberty_file liberty_file]
[-tielo_port tielo_pin_name]
[-tiehi_port tiehi_pin_name]
[-work_dir work_dir]
Options#
Switch Name |
Description |
---|---|
|
Liberty file with description of cells used in design. This is passed to ABC. |
|
Either |
|
Specifies a (setup) timing slack value below which timing paths need to be analyzed for restructuring. The default value is |
|
Specifies the path depth above which a timing path would be considered for restructuring. The default value is |
|
Tie cell pin that can drive constant zero. The format is |
|
Tie cell pin that can drive constant one. The format is |
|
Output file to save abc logs to. |
|
Name of the working directory for temporary files. If not provided, |
Example scripts#
Example scripts on running rmp
for a sample design of gcd
as follows:
./test/gcd_restructure.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.