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).