The Innovus Foundation Flow
Relevant mflowgen step: cadence-innovus-flowsetup
Cadence Innovus comes with its own flow generator called the Innovus Foundation Flow. The mflowgen steps that we provide for Innovus use the foundation flow to generate a base set of scripts that execute each of the major steps in place and route (e.g., init, place, cts, route, postroute, signoff). Each script is connected to a downstream mflowgen step that wraps the script and enhances it for convenience and debuggability.
There is a major benefit to relying on the Cadence Innovus Foundation Flow for the canonical commands. As Cadence updates its version of Innovus year after year, their recommended options to achieve more optimal quality of results changes. Some options are deprecated, other options are newly suggested, and new commands are introduced. Using the foundation flow generator allows us to easily leverage the most up-to-date, Cadence-recommended commands with no maintenance costs of our own.
You can dump the foundation flow yourself by running the writeFlowTemplate
command in an Innovus shell. This is essentially what the
cadence-innovus-flowsetup
node is responsible for (see the step
configuration file).
Feel free to open Innovus and run it yourself:
$ innovus
>>> writeFlowTemplate
The generator will dump files into the current directory. The master script is
SCRIPTS/gen_flow.tcl
. The cadence-innovus-flowsetup
mflowgen node runs
this master script and generates the base scripts for the following steps:
Design initialization |
innovus-foundation-flow/INNOVUS/run_init.tcl |
Placement |
innovus-foundation-flow/INNOVUS/run_place.tcl |
Clock tree synthesis (CTS) |
innovus-foundation-flow/INNOVUS/run_cts.tcl |
Post-CTS hold-fixing |
innovus-foundation-flow/INNOVUS/run_postcts_hold.tcl |
Route |
innovus-foundation-flow/INNOVUS/run_route.tcl |
Postroute |
innovus-foundation-flow/INNOVUS/run_postroute.tcl |
Signoff |
innovus-foundation-flow/INNOVUS/run_signoff.tcl |
The output of this node is the entire innovus-foundation-flow
directory,
which feeds into all downstream Innovus nodes. Feel free to open each of these
scripts to see how the canonical place and route commands are run. Pay
particular attention to the super commands (e.g., placeDesign, optDesign).