Does ICC2's DRC checking actually enforce max fanout the same way it enforces max capacitance and max transition?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
No -- this is a specific, important exception: max fanout DRC is NOT honored by ICC2 as a hard design rule constraint. Instead, opt.common.max_fanout is a soft optimization constraint. Min capacitance, max capacitance, and max transition DO have technology-specific defaults in the logic libraries and can be overridden as real DRC -- max fanout is handled differently.
Technical Explanation
- Max fanout DRC is NOT honored by ICC2 the same way max transition/max capacitance are -- this is a specific, documented exception, not an oversight to work around.
- Instead, opt.common.max_fanout is a soft optimization constraint -- the tool tries to respect it during optimization, but it isn't enforced as a hard DRC the way the other electrical constraints are.
- Min capacitance, max capacitance, and max transition all have technology-specific defaults in the logic libraries and can be overridden as real, hard-enforced DRC constraints -- max fanout genuinely works differently.
- The real workaround is
set_app_options -name opt.common.max_fanout -value <n>-- since ICC2 doesn't honor a hard max-fanout DRC, this soft-optimization option (named here, but never shown as a full invocation) is what actually needs to be set.
Common Mistake
The Trap: Assuming a clean report_constraint pass means max fanout was checked and enforced the same way max transition/capacitance were -- it wasn't; max fanout is a soft optimization target via a separate application option, not a hard DRC.
Follow-up Question & Model Response
"Given max fanout isn't hard-enforced DRC, what would actually catch a net with genuinely excessive fanout in signoff?"
Candidate Model Response: The downstream electrical consequences would show up as real max transition or max capacitance violations on that net (or its loads) -- those ARE hard-enforced DRC, so excessive fanout still gets caught indirectly, just not by a fanout check itself.
Practical Example
Debug Scenario: report_constraint shows a clean pass with no fanout violations reported, but a specific net still has significantly more loads than the design's fanout guideline suggests -- because ICC2 never treats max fanout as a hard DRC to report a violation on in the first place.
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