Interviews
Equivalence Interview Questions
Practise the question, then the follow-ups an interviewer asks next.
Start with a Question TreeAI Mock Interview
- 2
- Question trees
- 12
- Follow-ups
- 7
- Wrong answers explained
- 3
- Runnable on a simulator
Flagship Questions · With follow-ups
Question Trees
Each question opens into the follow-ups an interviewer asks next, the wrong answers people give, and what a fresher's and a senior's answer sound like.
-
Combinational vs Sequential Equivalence
What is the difference between combinational and sequential equivalence checking, and when do you need each? 6 follow-ups · 3 pitfalls · 1 runnable- Likely at Google
- Likely at Intel
- Likely at Qualcomm
-
Proving a Late Fix Changed Only the Bug
Two weeks before tape-out a designer fixes a WRAP-burst address bug. How do you show the fix changed nothing else? 6 follow-ups · 4 pitfalls · 2 runnable
No question matches these filters.
Quick revision · One flat list
Question Bank
All 11 Equivalence questions, main and follow-up. Open a track, then a topic. Answer out loud first, then open the short answer.
Jump to a Track
11 questions · 2 topicsEquivalence
Combinational vs Sequential Equivalence5
What is the difference between combinational and sequential equivalence checking, and when do you need each? L1L2
Combinational equivalence pairs the flops of the two designs and compares the logic cone in front of each pair, with no unrolling. It suits RTL against a synthesised netlist, because synthesis mostly keeps the flops. Sequential equivalence lets the state differ and asks for equal outputs over time from reset. You need it after retiming, pipelining, state recoding or clock-gating changes.
QuestionPractise Combinational vs Sequential Equivalence →Why does combinational LEC need the flops of both designs matched, and what goes wrong when the match is wrong? L2
Matching flops cuts both designs into small cones between key points, so each comparison is combinational and needs no unrolling. If two flops are paired wrongly, their cones compute different functions. The tool then reports a mismatch that is a mapping error, not a design bug. Debug starts at the smallest failing cone and the key points that feed it.
Follow-upPractise Why LEC Needs Matched Key Points →What if synthesis retimed part of the design, so some flops moved and no longer match by name? L2L3
Then combinational LEC cannot pair those flops, because they now hold different functions. Their cones fail or stay unmapped. The retimed region needs sequential equivalence, which compares outputs over time from reset. That region then gets its own line in the sign-off.
Follow-upPractise Equivalence After Retiming →The equivalence check of two differently built multipliers never finishes. What do you do? L2L3
Expect it. Equivalence of unlike multipliers grows exponentially with width on every solver. BDDs for the middle product bit are exponential for every variable order. Change the question instead of the machine. Compare at register boundaries, or split the proof into partial products and the adder tree, each of which is easy to check.
Follow-upPractise An Equivalence Check on a Multiplier →LEC reports a mismatch whose counterexample sets two internal key points to values that can never occur together. Is it a real bug? L2
Probably not. Treating key points as free inputs throws away the relations between them. So the tool can pick combinations the real design never produces. A real difference has a consistent counterexample that is reachable from the inputs. Check that before calling it a bug. Otherwise, fix the mapping or add a constraint.
Follow-upPractise An LEC Mismatch on Impossible Inputs →Proving a Late Fix Changed Only the Bug6
Two weeks before tape-out a designer fixes a WRAP-burst address bug. How do you show the fix changed nothing else? L3
Build a miter of the old and new RTL and check conditional equivalence. Outputs must match whenever the bug's condition is false. Inside that condition, the new design must meet the spec. Write the condition from the bug report, never from the diff, or a wrong fix defines its own condition. A counterexample on inputs the spec forbids means a missing assumption, not a bad fix.
QuestionPractise Proving a Late Fix Changed Only the Bug →Why is writing the condition of a conditional equivalence check the same job as writing formal assumptions? L3
Both say where the check applies. A condition that is too wide hides real differences, exactly as an over-constraining assumption hides bugs. So it needs the same discipline. It needs a written source in the bug report or the spec. It also needs a review by someone who did not write the fix.
Follow-upPractise The Condition Is a Specification →Break it: the fix touched one opcode, but the condition excludes a whole opcode group. What can escape? L3
Inside the excluded region the old and new designs may differ freely, and the check says nothing. So a second, accidental change to another opcode in that group passes. Write the condition from the bug report, so it covers only the failing case. Then check the new design inside it against the spec.
Follow-upPractise A Condition That Excludes Too Much →Compare a conditional-equivalence miter with a full regression rerun as the check for a late fix. L3
The regression samples the input space at the points its tests reach, and it takes hours or days. The miter covers every input in the region where the old and new designs must agree. For a block-level fix, it usually takes minutes. The regression still matters for what the miter does not state. That is the behaviour inside the bug condition and the system around the block.
Follow-upPractise A Miter vs a Regression Rerun for an ECO →With the correct fix, the check still fails, on a WRAP burst of length 3. The miter's environment is below, with the WRAP-length line still missing. What do you do? L2L3
AXI allows WRAP bursts of only 2, 4, 8 or 16 transfers, so length 3 cannot occur; add that rule as an assumption, citing the spec. Add only what a counterexample demands: in the lesson the alignment assumption turned out unnecessary, because the check passes without it.
Follow-upPractise An ECO Counterexample on an Illegal Burst →How would you make formal ECO checks a standard step in a chip's tape-out flow? L4
Every late RTL change carries a miter against the last signed-off RTL. Its condition comes from its bug report, and a second engineer reviews it. The block's formal regression and RTL-to-netlist LEC rerun on the new netlist. The ECO is closed only when all three are clean and the condition is attached to the change record.
Follow-upPractise Formal ECO Checks in the Tape-Out Flow →Your Review Queue
Saved review reminders are coming soon.