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 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'slibrary()(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 callcompare()(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 arecell.RESULTS(ICV),cell.LAYOUT_ERRORS(ICV),cell.LVS_ERRORS(ICV) for LVS andcell.sum(ICV). If the tool itself fails, the exit code is reported incell.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
icv -i top.gds -f GDSII -c top drc_runset.rsStandalone DRC on the streamed GDS with the foundry DRC runset.
icv -i top.gds -f GDSII -c top -s top.sp -sf SPICE lvs_runset.rsStandalone LVS: same layout, LVS runset, SPICE reference netlist.
icv -i top.oas -f OASIS -c top drc_runset.rsDRC on an OASIS stream.
cell.RESULTSVerdict header and run information for either run.
cell.LVS_ERRORSLVS debug detail when the compare fails.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): DRC
RESULTS: CLEAN(ICV) and LVSLVS 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
Master the Physical Design Implementation Flow
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.

Continue practising