How are double-patterning odd-cycle violations fixed at signoff?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
An odd cycle is a loop of an odd number of shapes, each too close to the next to share a mask, so no two-colour assignment works. At signoff you fix all other routing rules first with the double-patterning rules unselected, then run a separate fix pass on only the double-patterning rules with signoff.fix_drc.custom_guidance (ICC2) set to dpt. A final full signoff check confirms both.
Technical Explanation
- Two masks mean every pair of shapes closer than the same-mask spacing must be on different masks. Three shapes each too close to the other two form a triangle, and a triangle cannot be two-coloured.
- The fix is geometric: increase one spacing in the loop, or move or reroute one segment so the loop becomes even or opens.
- The ICC2 guide requires separate fixing runs for non-double-patterning and double-patterning rules when the block uses double patterning.
- Step one: run the normal auto-fix flow with
-unselect_rules(ICC2) on bothsignoff_check_drc(ICC2) andsignoff_fix_drc(ICC2), listing the double-patterning rules. Take the rule names from the foundry design rule manual; the commands below hold them in a Tcl list,$dpt_rules. - Step two: set
signoff.fix_drc.custom_guidance(ICC2) to dpt, which makes the fixing run target odd-cycle violations, and use-select_rules(ICC2) with only the double-patterning rules. - Step three: run full signoff DRC to verify both sets.
- The order matters because fixing spacing, width or via rules moves shapes and can create or remove cycles. Fixing coloring last works on geometry that is already settled.
What To Check
- The double-patterning rule list from the design rule manual, matched to the rule comments in the runset.
- Odd-cycle counts after step one, before any coloring fix.
- That step two only targets the double-patterning rules.
- Full signoff DRC after step three, with coloring and all other rules.
Command Checks & Actions
save_blockSaves the block before each pass, since IC Validator reads it from disk.
signoff_check_drc -unselect_rules $dpt_rulesChecks all rules except the double-patterning ones for the first fixing pass.
signoff_fix_drc -unselect_rules $dpt_rulesFixes non-double-patterning violations first.
set_app_options -name signoff.fix_drc.custom_guidance -value dptMakes the next fixing run target double-patterning odd cycles.
signoff_check_drc -select_rules $dpt_rulesChecks only the double-patterning rules before the coloring fix.
signoff_fix_drc -select_rules $dpt_rulesFixes only the odd-cycle violations.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Other rules reach 0 in pass one, odd cycles fall from 63 to 0 in pass two, and the final full check is clean.
- Suspicious (illustrative): Odd cycles return in the final check after an unrelated late edit, or cluster around one macro edge.
- Hard stop: A pass fixing spacing rules and odd cycles together keeps trading one for the other with no convergence.
Common Mistake
The Trap: Running one combined auto-fix with all rules selected. Spacing fixes shift shapes that break cycles in one place and create them in another, and after four loops the count bounces between 40 and 55. Splitting into the two documented passes clears it in one loop each.
What The Interviewer Is Testing
- Can the candidate explain why an odd cycle cannot be two-coloured?
- Knowledge of the two-pass order and the dpt guidance setting.
- Awareness that rule names come from the foundry manual.
Follow-up Question & Model Response
"Why not just swap the mask colour of one shape?"
Candidate Model Response: In an odd cycle every colouring leaves at least one close pair on the same mask, so swapping a colour only moves the conflict around the loop. The cycle has to be broken by geometry, by opening a spacing or moving a segment. Swapping colours does help when the conflict is between shapes whose colours were fixed badly but the graph itself is even. That case is a coloring problem, not an odd cycle.
Practical Example
Tapeout Scenario: A block has 140 non-DP signoff errors and 58 odd cycles on M2 and M3 (illustrative). Pass one with the DP rules unselected fixes all 140; the odd-cycle count moves to 63 because a few spacing fixes created new triangles. Pass two with dpt guidance and only the DP rules selected fixes all 63. The final full check is clean.
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