How does eco_netlist actually determine what changed, and why is -write_changes a required option rather than optional?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
eco_netlist compares the current design against a golden reference -- either a golden Verilog netlist (-by_verilog_file) or a golden block (-block, assumed in the current design library unless -golden_lib is given). -write_changes <file> is REQUIRED, not optional, and produces Tcl netlist-editing commands representing the diff. By default it ignores differences in physical-only cells, timing ECO changes, and power/ground objects -- -compare_physical_only_cells and -extract_timing_eco_changes opt into including those.
Technical Explanation
- eco_netlist compares the current design against a golden reference: either a golden Verilog netlist (-by_verilog_file) or a golden block (-block).
- For -block comparisons, the golden block is assumed to be in the CURRENT design library unless -golden_lib specifies otherwise; changes apply to the current design unless -working_block/-working_lib redirect that.
- -write_changes <file> is REQUIRED (not optional) and produces Tcl netlist-editing commands representing exactly what the tool determined changed.
- By default, eco_netlist IGNORES differences in physical-only cells, timing ECO changes, and power/ground objects -- -compare_physical_only_cells and -extract_timing_eco_changes exist specifically to opt into including those categories.
What To Check
- Warning sign: an eco_netlist comparison reports fewer changes than expected given known physical-only-cell or timing-ECO modifications made to the design.
- Inspect: confirm whether -compare_physical_only_cells and -extract_timing_eco_changes were passed -- their absence means those categories were silently excluded from the diff by default.
- Correct: re-run with the relevant opt-in flags if a complete picture of all changes (including physical-only cells or timing ECOs) is actually needed.
Command Checks & Actions
eco_netlist -by_verilog_file eco.v -write_changes eco_changes.tclCompares against a golden Verilog netlist and writes the resulting Tcl netlist-editing commands to a required output file.
eco_netlist -block <golden_block> -write_changes <file>Compares against a golden block instead of a Verilog file, with the same required -write_changes output.
Healthy, Suspicious & Hard-stop Results
- Expected: eco_netlist's reported diff matches the full, expected set of intentional changes, with -compare_physical_only_cells/-extract_timing_eco_changes included when those categories are actually relevant.
- Investigate: a smaller-than-expected diff is reported -- check whether physical-only cells or timing ECO changes were silently excluded by the default (non-opt-in) behavior.
- Stop: netlist changes are being applied from an eco_netlist comparison that never checked whether -compare_physical_only_cells or -extract_timing_eco_changes needed to be included for this specific change set.
Common Mistake
The Trap: Assuming eco_netlist's default comparison captures every kind of difference between current and golden -- by default it silently ignores physical-only cells, timing ECO changes, and PG object differences unless you explicitly opt in with the relevant flags.
What The Interviewer Is Testing
Whether you know -write_changes is a required (not optional) argument, and specifically which categories of difference are excluded by default versus require explicit opt-in.
Practical Example
Debug Scenario: eco_netlist -by_verilog_file eco.v -write_changes eco_changes.tcl reports fewer differences than a manual diff of the two netlists suggests -- checking the command, -extract_timing_eco_changes was omitted, so timing-ECO-related differences were silently excluded from the comparison by default.
Physical Design & Planning Handbook
Master ASIC Physical Design Planning & Floorplanning
Dive into 14 comprehensive chapters covering netlist sanity, FinFET grids, macro placement, power grids, CTS, and timing budgeting.
Continue practising