Metrics#
The OpenROAD-flow-scripts
repository contains source files (e.g., LEF/DEF, Verilog, SDC, Liberty,
RC extraction) and configuration files (e.g. config.mk
) that enable the user to run
a small set of example designs through our complete RTL-to-GDS flow.
To keep track of the quality of the results, we maintain inside each design folder two files:
metadata-base-ok.json
which contains all the relevant information extracted from the “golden” execution of the flow (i.e., last known good result).rules.json
which holds a set of rules that we use to evaluate new executions when a change is made.
Checking against golden#
The evaluation checks for key metrics (e.g., worst slack, number of DRCs) to ensure that changes do not degrade too much with respect to the “golden” values.
After you make a significant change, e.g., fixing a bug in a piece of
code, or changing some configuration variable
(PLACE_DENSITY
), you should review the results and compare
them with the “golden”. To perform the check, you will need to run the
following command:
cd OpenROAD-flow-scripts/flow
# the clean_metadata is only required if you need to re-run
make [clean_metadata] metadata
If the command above yields any error message, please review to make sure the change in metrics is expected and justifiable. If so, proceed to the next section to update the “golden” reference.
Update process#
Update of the reference files is mandatory if any metrics became worse
than the values limited by the rules.json
(see previous
section on how to perform the check). Also, it is a good idea to update
the “golden” files if your changes have improved a metric, to ensure that
the improvement will not be lost in the future.
To update all the reference files:
cd OpenROAD-flow-scripts/flow
make update_ok
In case you have a special reason to only update one of the files, you can do so with the following commands:
# update metadata-base-ok.json file for the design
make update_metadata
# update rules.json file for the design
# this will use the current (+ a padding) metadata-base-ok.json
# the padding ensures that small changes do not break the flow
make update_rules