Design import and database sanity
2.1 Stage purpose
In the Legacy UI, a design is loaded by setting a group of Tcl global variables and then calling init_design. The globals name the Verilog netlist (init_verilog), the LEF files (init_lef_file), the MMMC view file (init_mmmc_file), the top cell (init_top_cell), and the power and ground net names (init_pwr_net, init_gnd_net). init_design can only be called when no design or library data is loaded yet, which is one more reason chapter 1 insists on a fresh session.
In the Common UI, the RAK lab loads the same kind of data as a sequence: read_mmmc, read_physical -lefs, elaborate_design -script, then init_design. The lab is a synthesis flow that starts from RTL, so it does not show how a gate-level netlist is read for place and route. That step is still to be confirmed.
init_design also creates a default floorplan: a square box at 70 percent utilisation, default rows and tracks taken from the technology LEF. These are placeholders, not an intended floorplan.
Import can succeed with problems inside it. A cell that has a LEF view but no timing model loads, places and routes, and simply has no delay. A module instantiated twice loads normally, and only fails later when an optimisation step needs to change one instance without the other. Thus, the import gate is about what the tool accepted with a warning, not about whether it stopped.
2.2 Entry prerequisites
| Must already be true | Why |
|---|---|
| Chapter 1 passed in this session | Import results are only comparable within a qualified session. |
| The netlist comes from a known synthesis run, with its cell and port counts | The inventory check compares against these numbers. |
| Technology LEF first in the LEF list, then cell and macro LEFs | Cell LEFs refer to layers and sites the technology LEF defines. If a cell is defined twice, only the first geometry is read. |
| The MMMC file names every library set the views need | Libraries are loaded through the views, not separately. |
| The list of intended exceptions is written down: physical-only cells, logical-only cells and black boxes | Without it, a missing view cannot be told apart from an intended one. |
| The power and ground net names and library PG pin names are known | globalNetConnect needs both. |
2.3 Relevant files and analysis context
The inputs are the gate-level Verilog, technology and cell LEF, macro LEF abstracts, Liberty timing libraries referenced by the MMMC file, and the PG net names. Timing views are created at import, but timing correctness belongs to chapter 3. Here we only need the libraries to be bound.
Figure 3 shows a distinction that causes confusion at import. Logical connectivity is present as soon as the netlist is read: every connection the netlist states exists, and floating pins are what the checks look for. Power and ground pins belong to a net only after globalNetConnect ties them, because a gate-level netlist often leaves them implicit. Physical connectivity does not exist yet. Thus, an unrouted-net count from a physical check at this point is not a failure, while a dangling or multiply driven net in the logical checks is.
2.4 Checks and command cards
2.4.1 Pre-stage checks
Before init_design, the only checks are on the inputs themselves: the files exist, the LEF order is right, and the global variables point at the files the project configuration lists. These are script checks rather than Innovus checks, so they are not carded here. The import itself is a state-changing step and is shown for completeness.
| Question it answers | Did the intended inputs load into a new database? |
|---|---|
| Stage | Import |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Fresh session, no design or library data loaded. |
| Legacy UI | set init_verilog <netlist.v>
set init_lef_file {<tech.lef> <cells.lef> <macros.lef>}
set init_mmmc_file <views.tcl>
set init_top_cell <top>
set init_pwr_net VDD
set init_gnd_net VSS
init_design |
| Common UI | read_mmmc <file>; read_physical -lefs {...}; elaborate_design -script <file>; init_design Verified (Sequence, Synthesis-Flow Context)The CUI sequence shown is from the RAK synthesis flow, where elaborate_design reads the design between read_physical and init_design. For a gate-level PnR import, the CUI netlist read is not verified here. |
|---|---|
| Mapping | multi-command |
| Options used | init_* globals name the netlist, LEFs, MMMC file, top cell and PG nets. init_design reads them. |
| Scope and view | Whole design. |
| Effect on session | changes analysis configuration; updates the design database |
| Output | The design database in memory, and import messages in the log. |
| Fields that matter | Error and warning IDs issued during load (card S-03), including cells with no timing, empty modules, a non-unique netlist, the usable buffer, inverter and delay cell lists, and cells with no function defined. |
| Healthy | No errors. Warnings are known for this library set. |
| Warning | New warning IDs, for example about sites or pins in a cell LEF. |
| Hard stop | Any error, or a warning that a cell has no library or a module could not be resolved. |
| Common misuse | Treating a completed init_design as a qualified import. Completion only means the tool could build a database. |
| Root cause and fix | Correct the input that produced the first new message, then reload in a fresh session. |
| Rerun after a fix | Reload in a fresh session, then every card in this chapter. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
2.4.2 Post-stage checks
| Question it answers | Is every instance bound to a cell that has both a physical and a timing view, except the intended exceptions? |
|---|---|
| Stage | After import |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Design loaded. |
| Legacy UI | check_design -type "library netlist" -out_file <f>
checkDesign -netlist -physicalLibrary -timingLibrary -powerGround \
-noHtml -outfile <f> |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -type "library netlist" runs the library checks (physical-only cells with LEF but no .lib, logical-only cells with .lib but no LEF) and the netlist checks in one call.-out_file writes the complete list; the console is limited by the message display limit.-netlist -physicalLibrary -timingLibrary -powerGround selects the checkDesign categories for netlist, physical library, timing library and PG pins. PG findings before the ties of I-06 are expected.-timingLibrary checks that the cells are defined in a timing library; it does not check for timing arcs, so run checkTimingLibrary for that.-noHtml -outfile writes only a text report to the named file instead of the default HTML plus text pair. |
| Scope and view | Whole design and loaded libraries. |
| Flow behaviour | If check_design finds errors, the reference states that the current script stops. Put it where a stop is the intended outcome, or run it in a separate check script. |
| Effect on session | writes files |
| Output | check_design: a message summary with IDs and counts on the console, and the full result in the out file as a Tcl dictionary. checkDesign: a text report. |
| Fields that matter | check_design: physical-only and logical-only cells, undriven, multiply driven and unloaded nets, empty modules. checkDesign: cells missing from LEF or the timing library, floating inputs, multiple-driver nets, PG pin problems. |
| Healthy | Only the intended exceptions appear, each on the written list. |
| Warning | Physical-only cells that are known fillers or other physical-only cells; review them against the library. |
| Hard stop | A functional cell with no timing model, a cell with no LEF, a multiply driven net, or an undriven input on a functional path. |
| Common misuse | Reading only the console table, which is bound by the message display limit while the out file is not, or assuming a cell with no timing model is harmless because import completed. |
| Root cause and fix | Add the missing library or LEF to the MMMC or LEF list, or fix the netlist at synthesis. |
| Rerun after a fix | Reload, then rerun the cards listed in section 2.7 for the kind of change. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Is the netlist structurally sound, and is every module that later steps will modify instantiated only once? |
|---|---|
| Stage | After import |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Design loaded. |
| Legacy UI | checkNetlist -outfile <f> checkUnique -verbose |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -outfile names the checkNetlist report file. The syntax shows it as required while the parameter text gives a default name, so always pass it.-verbose prints the detail of what checkUnique found. |
| Scope and view | Whole netlist. The reference states that clock tree synthesis and in-place optimisation need each non-leaf module instantiated once. A master and clone partitioning flow sets init_design_uniquify to 0 and follows its own methodology. |
| Effect on session | writes files. Some commands in this card only read or report. |
| Output | checkNetlist writes design summary, design statistics, I/O pad summary and design rule checks; errors carry an asterisk and possible errors a question mark. checkUnique returns 1 if unique, 0 if not. |
| Fields that matter | Design rule section of checkNetlist; checkUnique return value. |
| Healthy | checkNetlist rule section clean; checkUnique returns 1. |
| Warning | Rule findings on test or spare logic that the methodology accepts. |
| Hard stop | checkUnique returns 0 before optimisation in a flat flow. |
| Common misuse | Debugging a failed optimisation or CTS step before checking uniqueness; run checkUnique first. |
| Root cause and fix | Uniquify the netlist at synthesis or in the flow before placement. |
| Rerun after a fix | Reload the uniquified netlist; rerun I-03 and I-04. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Do the instance, net, port and area numbers match what synthesis produced? |
|---|---|
| Stage | After import |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Design loaded. |
| Legacy UI | reportNetStat reportGateCount -stdCellOnly -outfile <f> report_area -detail -out_file <f> dbGet top.numInsts dbGet top.terms.name |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -stdCellOnly counts only standard-cell area in the gate count, excluding blocks and I/O cells.-detail adds the area breakdown by cell type.-outfile, -out_file write the reports to files. |
| Scope and view | Whole design. report_area uses LEF data and excludes physical cells unless -include_physical is given, while synthesis area normally comes from the .lib, so state the basis before comparing. dbGet top.terms.name lists bits, so compare bit counts and take counts with llength. |
| Effect on session | writes files. Some commands in this card only read or report. |
| Output | Counts of cells, nets, pins and I/Os; gate count; area per module; instance and port counts from dbGet. |
| Fields that matter | Instance count, port count, standard-cell area, block count. |
| Healthy | Every count matches the synthesis report, or differs by a known amount such as physical-only cells added by a script. |
| Warning | A small unexplained difference. |
| Hard stop | A large difference in instances or ports, which usually means a wrong netlist file or a different top cell. |
| Common misuse | Comparing gate counts between tools. Gate count is area divided by an assumed gate size, set by the dbgSitesPerGate global (default 3), so it is not comparable unless the definition matches. |
| Root cause and fix | Confirm init_verilog and init_top_cell point at the released netlist. |
| Rerun after a fix | Reload; rerun I-04. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Are the layers the expected ones, and is anything already fixed in place? |
|---|---|
| Stage | After import |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Design loaded. |
| Legacy UI | dbGet head.layers.extName dbGet -p top.insts.pStatus fixed dbGet top.insts.? |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | .? lists the attribute names available on an object. Use it to confirm an attribute exists in your release before using it in a script.-p returns pointers to the objects that match, rather than the attribute values.-e avoids printing 0x0 for an empty result, so that llength gives 0 when nothing matches.report_metal_stack is the command for direction, pitch, width and spacing of each routing layer; see the cheat sheet. |
| Scope and view | Technology and whole design. Rows and tracks created by init_design are defaults, not a floorplan. |
| Effect on session | reads or reports only |
| Output | Tcl lists on the console. |
| Fields that matter | Layer names in stack order, including cut layers and OVERLAP; number of FIXED instances (placement status fixed; cover is a separate status). |
| Healthy | Routing layers match the technology LEF; FIXED count is zero, or equals the macros fixed by an imported floorplan. |
| Warning | Extra layers that the methodology does not route on. |
| Hard stop | Missing layers, or FIXED instances nobody expected. |
| Common misuse | Writing dbGet attribute paths from memory instead of listing them with .? first. |
| Root cause and fix | Fix the LEF list or the floorplan input. A fixed status is not set by the netlist, LEF or MMMC file alone, so look for a floorplan or DEF read or a script command. |
| Rerun after a fix | Reload; rerun I-05 and the cards listed in section 2.7. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Is every PG pin tied to the intended power or ground net? |
|---|---|
| Stage | After import |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Design loaded; PG nets named. |
| Legacy UI | globalNetConnect VDD -type pgpin -pin VDD -all
checkDesign -netlist -physicalLibrary -timingLibrary -powerGround \
-noHtml -outfile <f> |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -type pgpin -pin VDD connects every PG pin named VDD to the global net VDD. Pin names are library-specific.-all applies the connection to all instances.-override replaces earlier global connections, and -netlistOverride also replaces PG connections written in the netlist; without them an existing tie is kept.-powerGround checkDesign category for power and ground pins. |
| Scope and view | Whole design. |
| Effect on session | updates the design database; writes files |
| Output | globalNetConnect updates the logical connections; checkDesign reports what is still unconnected. It cannot tell which of several power nets a pin should be on, so compare with the connection rules. |
| Fields that matter | PG pins with no net, power and ground swaps, and PG pins on signal nets. |
| Healthy | No PG pin left unconnected in the checkDesign report. |
| Warning | Pins on physical-only cells that are tied later in the flow by design. |
| Hard stop | A PG pin of a functional cell or macro left unconnected, swapped between power and ground or on a signal net. |
| Common misuse | Assuming PG is fine because no wires are expected yet. This check is about logical ties, which must be correct before power planning. |
| Root cause and fix | Add or correct the globalNetConnect rules. For multi-supply designs, the power intent drives this and is covered with power planning in Chapter 5. |
| Rerun after a fix | Rerun globalNetConnect and checkDesign -powerGround. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
Notice that I-06 changes the database. That is deliberate: PG ties are part of preparing the design. In a check-only script, run only the checkDesign part and report what is unconnected.
2.5 Required reports, artefacts and how to read them
| Report | When | Fields that support qualification | Evidence class |
|---|---|---|---|
| check_design out file | after import | Tcl dictionary: check type, message ID, severity, count, violations | implementation |
| checkDesign text report | after import and after PG ties | cells missing from LEF or timing library, floating inputs, multiple-driver nets, unconnected PG pins | implementation |
| checkNetlist report | after import | design rule checking section | implementation |
| Inventory snapshot | after import | instances, ports, nets, area, compared with synthesis | preliminary |
| Exception list | after import | cells without a timing or physical view, and black boxes, each with an owner | implementation |
check_design, type library netlist ## illustrative excerpt ## simplified: the tool prints Severity, ID, Count, Summary category check count library physical_only 2 ## cells with LEF, no .lib library logical_only 0 netlist undriven 3 netlist multiple_driver 0 netlist unloaded 41 netlist empty_modules 1
Let us read the excerpt line by line. Two physical-only cells could be fillers or tap cells, which have no timing by design, or two real cells whose .lib was never added. Only the out file with the cell names tells which. Three undriven nets need names: a tie-off left for the flow is acceptable, a floating input on a functional gate is not. Forty-one unloaded nets are often spare outputs and scan-out ends, but they are worth a quick scan. The empty module is a black box: it is acceptable only if it is on the exception list, otherwise a module definition is missing.
2.6 Healthy, suspicious and hard-stop examples
| Finding | Status | Why |
|---|---|---|
| Instance and port counts match synthesis | PASS | The intended netlist is in memory. |
| Physical-only cells are all filler or tap cells | PASS | They have no timing by design. |
| Unloaded nets on spare outputs | WARN / REVIEW | Normal, but name the pattern once in the review. |
| A functional cell has no timing model | HARD STOP | Its paths will be untimed, and timing later looks better than it is. |
| checkUnique returns 0 | HARD STOP | CTS and optimisation need unique modules. |
| Unrouted nets in a physical check | WARN / REVIEW | Expected before routing; not evidence of a logical problem. |
| Power intent checks in a single-supply block | NOT APPLICABLE | No power intent is loaded. |
2.7 Debugging, corrective action and reruns
Import problems have their root cause in an input file, so the fix is always in the input or in the global variables that point at it. It is better to reload than to patch the database, because a patched database cannot be reproduced from its inputs, and chapter 16 requires exactly that reproduction.
| After fixing | Rerun |
|---|---|
| a LEF or library list | reload; I-01 to I-06 |
| the netlist | reload; I-01 to I-04, then chapter 3, because constraints refer to netlist objects |
| PG tie rules | I-06 only |
| the top cell name | reload; everything in this chapter |
2.7.1 Worked example: a macro with no timing model
Suppose check_design lists a cell PLL_TOP as physical-only, and the exception list does not mention it. The cell has a LEF abstract, so floorplanning and placement treat it normally. But with no Liberty model there are no timing arcs through it, so the paths it should carry are broken. checkDesign -timingLibrary does not check arcs; checkTimingLibrary does. In chapter 3, the endpoints it feeds would appear as unconstrained or untested in check_timing and report_analysis_coverage, and a timing summary would not show them at all. The fix is to add the PLL timing model to the library set in the MMMC file, or to add the cell to the exception list with an owner and a reason. Either way, the decision is recorded before the import gate closes.
2.8 Exit criteria and stage checklist
- Load. init_design completed with no errors in a fresh session.
- Binding. Every instance is bound to a cell with physical and timing views, except the written exception list.
- Structure. No multiply driven nets; undriven nets are named and accepted; checkUnique returns 1.
- Inventory. Instance, port and area numbers match synthesis or differ by an explained amount.
- Technology. Layer list as expected; no unexpected FIXED instances.
- PG identity. Every PG pin of functional cells and macros is tied to the intended net.
- Reports kept. check_design out file, checkDesign report and inventory snapshot are stored with the run manifest.
Thus, the import gate makes sure that the database holds the intended design and nothing else. If a binding problem slips through, it does not stop the flow. It removes paths from timing, which makes every later report optimistic. In the next chapter we load the constraints and check that the timing environment covers the design that is now in memory.
2.9 Sanity check cheat sheet: Design import
One row per command card. Read left to right: the check, the command that answers it, then what a healthy result, a result to review and a hard stop look like. Judge every row against your project budgets, because this book sets no universal limits.
| Card | Check and when | Command | Healthy | Review | Hard stop |
|---|---|---|---|---|---|
| I-01 | Load the design Import | set init_verilog <netlist.v>
set init_lef_file {<tech.lef> <cells.lef> <macros.lef>}
set init_mmmc_file <views.tcl>
set init_top_cell <top>
set init_pwr_net VDD
set init_gnd_net VSSinit_design | No errors. Warnings are known for this library set. | New warning IDs, for example about sites or pins in a cell LEF. | Any error, or a warning that a cell has no library or a module could not be resolved. |
| I-02 | Library binding and black boxes After import | check_design -type "library netlist" -out_file <f>checkDesign -netlist -physicalLibrary -timingLibrary -powerGround \
-noHtml -outfile <f> | Only the intended exceptions appear, each on the written list. | Physical-only cells that are known fillers or other physical-only cells; review them against the library. | A functional cell with no timing model, a cell with no LEF, a multiply driven net, or an undriven input on a functional path. |
| I-03 | Netlist structure and uniqueness After import | checkNetlist -outfile <f>checkUnique -verbose | checkNetlist rule section clean; checkUnique returns 1. | Rule findings on test or spare logic that the methodology accepts. | checkUnique returns 0 before optimisation in a flat flow. |
| I-04 | Design inventory against synthesis After import | reportNetStatreportGateCount -stdCellOnly -outfile <f>report_area -detail -out_file <f> | Every count matches the synthesis report, or differs by a known amount such as physical-only cells added by a script. | A small unexplained difference. | A large difference in instances or ports, which usually means a wrong netlist file or a different top cell. |
| I-05 | Technology layers and preplaced objects After import | dbGet head.layers.extNamedbGet -p top.insts.pStatus fixeddbGet top.insts.? | Routing layers match the technology LEF; FIXED count is zero, or equals the macros fixed by an imported floorplan. | Extra layers that the methodology does not route on. | Missing layers, or FIXED instances nobody expected. |
| I-06 | Power and ground identity After import | globalNetConnect VDD -type pgpin -pin VDD -allcheckDesign -netlist -physicalLibrary -timingLibrary -powerGround \
-noHtml -outfile <f> | No PG pin left unconnected in the checkDesign report. | Pins on physical-only cells that are tied later in the flow by design. | A PG pin of a functional cell or macro left unconnected, swapped between power and ground or on a signal net. |
2.10 Command cheat sheet: Design import
Legacy UI commands. Angle brackets are placeholders, and values shown are examples, not project limits.
| Command | What it produces |
|---|
| Load the design | |
|---|---|
set init_verilog <netlist.v> | The gate-level netlist file that init_design will read. |
set init_lef_file {<tech.lef> <cells.lef>} | The LEF list, technology LEF first. |
set init_mmmc_file <views.tcl> | The MMMC view file that defines library sets, corners and views. |
set init_top_cell <top> | The top cell to build the database for. |
set init_pwr_net VDD | The power net name for the design. |
set init_gnd_net VSS | The ground net name for the design. |
init_design | The design database built from the init_* globals. Works only when no design or library is loaded yet. |
set init_design_uniquify 1 | Uniquifies the design during the read and flatten. Default 0. Optimisation is not allowed on a non-unique design. |
set init_verilog_tolerate_port_mismatch 0 | Default. The netlist read stops with an error when instance ports do not match the cell. Keep it at 0 for qualification. |
set init_lef_check_antenna 1 | Default. Warnings for LEF pins with zero antenna gate or diff area. |
getImportMode -treatUndefinedCellAsBbox | Whether undefined cells are read as black boxes. Default false. The provided reference documents the read form only. |
| Library and netlist checks | |
|---|---|
check_design -type library -out_file <f> | Cells with LEF but no .lib (physical-only) and with .lib but no LEF (logical-only). |
check_design -type netlist -out_file <f> | Undriven, multiply driven and unloaded nets, constant-driven pins, feedthrough modules and empty modules. |
check_design -type "library netlist" -out_file <f> | Both of the above in one table, with the full detail in the out file. Stops the script if errors are found. |
check_design -type assign_statements -out_file <f> | Assign statements in the netlist, checked before writing a netlist out. |
checkDesign -netlist -noHtml -outfile <f> | Output pins tied to power or ground, floating inputs and multiple-driver nets, as a text report. Add -danglingNet to list nets with no instance or top-level terminal. |
checkDesign -physicalLibrary -noHtml -outfile <f> | Cells not defined in LEF, plus LEF cells with missing dimensions, pin direction or geometry, sizes that are not a site multiple, or macros without full obstruction. |
checkDesign -timingLibrary -noHtml -outfile <f> | Cells used in the design that are not defined in the timing library. |
checkDesign -powerGround -noHtml -outfile <f> | Power and ground pins that are unconnected or connected to the wrong net. |
checkDesign -tieHiLo -noHtml -outfile <f> | Unconnected tie-high and tie-low terminals, and tie pins on different P/G nets. |
checkDesign -io -noHtml -outfile <f> | Unplaced I/O cells and pins, floating I/O pad pins, I/O pins tied to core cells. |
checkDesign -all -noHtml -outfile <f> | All checkDesign categories in one text report. |
checkNetlist -outfile <f> | Design summary, design statistics, I/O pad summary and design rule checks. |
checkNetlist -outfile <f> -includeSubModule | The same report plus port-definition checks for submodules. |
checkUnique | Returns 1 if every non-leaf module is instantiated once, 0 if not. |
checkUnique -verbose | The same result with the detail of what is not unique. |
checkTimingLibrary -outfile <f> | Inconsistencies in the loaded timing libraries. |
checkTimingLibrary -checkPower -outfile <f> | The same, plus cells without power constructs such as leakage or internal power. |
reportDanglingPort -outfile <f> | Ports disconnected inside and outside a module, or connected inside but not outside. |
reportDanglingNet -outfile <f> | The total net count and the number of dangling nets with zero terminals, including PG nets, and how many are removable. |
| Inventory | |
|---|---|
reportNetStat | Counts of cells, nets, pins and I/Os, nets by number of terminals, and the primitives used. |
reportGateCount -outfile <f> | The design size in gate counts, using the dbgSitesPerGate gate size (default 3). |
reportGateCount -stdCellOnly -outfile <f> | Gate count from standard-cell area only, excluding blocks and I/O cells. |
reportGateCount -level 1 -outfile <f> | Gate counts for the top module and one level of children. Modules of 1000 gates or fewer are ignored unless -limit is given. |
report_area -summary | The area summary for the whole design. |
report_area -detail -out_file <f> | Area per module plus a breakdown by cell type. |
report_area -include_physical -out_file <f> | Area including physical-only cells, which are excluded by default. |
report_gates -out_file <f> | The library cells used and their source libraries, cell area, and the split into timing models, sequentials, clock gates, inverters, buffers and logic. |
report_sequential -out_file <f> | The sequential elements of the design: flops, latches and clock gates. |
report_preserves | Every preserve that affects optimisation: dont_touch, read_only, dont_use and use_cells attributes with non-default values. |
report_preserves -dont_use | Only the dont_use and use_cells settings. |
| Database queries | |
|---|---|
dbGet top.numInsts | The number of instances in the top cell. |
dbGet top.terms.name | The names of all top-level ports, one per bit. Count them with llength. |
dbGet top.nets.name | The names of all nets in the top cell. |
dbGet -u top.insts.cell.name | The unique list of library cells used in the design. |
dbGet head.libCells.name | The names of all loaded library cells. |
dbGet head.layers.extName | All technology layers in stack order: routing layers, cut layers and OVERLAP. |
dbGet -p top.insts.pStatus fixed | Pointers to every instance whose placement status is fixed. An empty result prints 0x0, so add -e before taking llength. |
dbGet top.insts.isDontTouch 1 -p | Pointers to every dont_touch instance. |
dbGet top.insts.? | The attribute names available on instances. Use it before scripting an attribute. |
getDbGetMode | The current setDbGetMode settings, such as the display limit for long lists. |
report_metal_stack | Each routing layer with its preferred direction, track offset and pitch, minimum width and spacing, and default wire width. |
| PG ties | |
|---|---|
globalNetConnect VDD -type pgpin -pin VDD -all | Logical connection of every PG pin named VDD to net VDD. Pin names are library-specific. |
globalNetConnect VSS -type pgpin -pin VSS -all | The same for ground. |
globalNetConnect VDD -type tiehi -all | Connects pins tied to constant 1'b1 to net VDD. |
globalNetConnect VSS -type tielo -all | Connects pins tied to constant 1'b0 to net VSS. |