BeginnerQuestion 166 of 187Source: Synopsys IC Validator User Guide: Command-Line Options and Output Files

What does a basic standalone IC Validator DRC and LVS run look like?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

A standalone run is one shell command: icv (ICV), the layout file, its format, the top cell and the runset. For DRC that is icv -i top.gds -f GDSII -c top drc_runset.rs (ICV). For LVS you use the LVS runset and add the reference netlist with -s top.sp -sf SPICE (ICV). The runset, not a command option, decides whether the run is DRC or LVS.

Technical Reference DiagramWhat does a basic standalone IC Validator DRC and LVS run look like?
Three lanes: inputs (GDS, top cell, runset, SPICE reference for LVS), the icv (ICV) command line, and outputs (RESULTS, LAYOUT_ERRORS, LVS_ERRORS, sum and run_details), with the DRC and LVS runs differing only in the runset and the -s/-sf reference options.

Technical Explanation

  • The syntax is icv [command-line-options] runsetfile (ICV). The runset is the last argument and is required, except for netlist-versus-netlist flows.
  • -i (ICV) overrides the library name given in the runset's library() (ICV) function. When you use it, the runset's library name and merge list are completely replaced, so list every file you need.
  • -f (ICV) overrides the library format: GDSII, Milkyway, NDM, OASIS or OpenAccess. -c (ICV) overrides the top cell; -c "*" (ICV) lets the tool find the top cell in a GDSII or OASIS file, but the guide says not to use it with LVS runsets, that is, runsets that call compare() (ICV).
  • -s (ICV) overrides the schematic file for LVS. When you use it you must also give -sf (ICV), which sets the format to SPICE, VERILOG or ICV.
  • DRC versus LVS is decided by the runset. A DRC runset contains rule checks; an LVS runset contains extraction and compare() (ICV). Adding -s (ICV) to a DRC runset does not turn it into LVS.
  • Outputs go to the working directory, with detailed data under run_details (ICV). The main files are cell.RESULTS (ICV), cell.LAYOUT_ERRORS (ICV), cell.LVS_ERRORS (ICV) for LVS and cell.sum (ICV). If the tool itself fails, the exit code is reported in cell.err (ICV).
  • This standalone run needs only the stream file, not the ICC2 design library, so it is the check you run on the exact file going to the foundry.

What To Check

  • The top cell in cell.RESULTS (ICV) run information matches the intended cell.
  • The runset path and version recorded in the call line.
  • For LVS, that -s (ICV) points to the reference netlist from the same database state as the GDS.
  • The header verdict, then rules not executed.

Command Checks & Actions

IC Validator (icv)icv -i top.gds -f GDSII -c top drc_runset.rs

Standalone DRC on the streamed GDS with the foundry DRC runset.

IC Validator (icv)icv -i top.gds -f GDSII -c top -s top.sp -sf SPICE lvs_runset.rs

Standalone LVS: same layout, LVS runset, SPICE reference netlist.

IC Validator (icv)icv -i top.oas -f OASIS -c top drc_runset.rs

DRC on an OASIS stream.

IC Validator (icv)cell.RESULTS

Verdict header and run information for either run.

IC Validator (icv)cell.LVS_ERRORS

LVS debug detail when the compare fails.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): DRC RESULTS: CLEAN (ICV) and LVS LVS Compare Results: PASS (ICV) with extraction CLEAN, top cell and runset versions as expected.
  • Suspicious (illustrative): Clean results but the call line shows a runset path in someone's home directory rather than the project release area.
  • Hard stop: RESULTS: RUN ABORTED (ICV), or a schematic-file-not-found error for LVS.

Common Mistake

The Trap: Adding -s top.sp -sf SPICE (ICV) to the DRC command and expecting an LVS result. The DRC runset has no extraction or compare() (ICV), so the run finishes with a DRC verdict only. The engineer reports "LVS done" in the status meeting, and the real LVS run happens two days later and fails.

What The Interviewer Is Testing

  • The candidate should know the runset decides the check type.
  • Remembering that -s (ICV) needs -sf (ICV).
  • Knowing which files a run produces and which to open first.

Follow-up Question & Model Response

"What happens to the runset's library settings when you pass -i on the command line?"

Candidate Model Response: The -i (ICV) option completely redefines the library name and the merge-libraries list from the runset's library() (ICV) function. None of the original values remain. If the runset merged a separate IO GDS and I pass only my block GDS with -i (ICV), that merge is lost. I either repeat -i (ICV) for every file or keep the merge in the runset.

Practical Example

Tapeout Scenario: A block team runs DRC with icv -i top.gds -f GDSII -c top drc_runset.rs (ICV) in 2 h 40 min on 16 cores (illustrative), result RESULTS: CLEAN (ICV). LVS with icv -i top.gds -f GDSII -c top -s top.sp -sf SPICE lvs_runset.rs (ICV) takes 1 h 55 min and returns PASS with extraction CLEAN. On the first attempt, -c (ICV) was omitted, the runset default top cell was a test wrapper, and LVS failed on 3,000 unmatched ports.

PnR Flow Mentor Guide

Read the complete 8-chapter PnR Flow Mentor Guide free on the web — library setup through placement, clock tree synthesis, routing, chip finishing, hierarchical implementation, and ECO, all the way to stream-out.

PnR Flow Physical Design Mentor Guide — eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out. →