RTL Review

← 06 Verification and Testbench | Index | 08 Wi-Fi MAC Architecture and Protocol →

Round 07 — Combined answers (Gemini · GPT · Claude)

Contents

0. Resume probe

M7Q1 · "Three post-freeze ECOs: tell me about the one you were least sure of, and how LEC convinced you."

Gemini Answer

GPT Answer

"I implemented three post-freeze gate-level ECOs by hand and validated them using RTL-to-gate and gate-to-gate equivalence. I also own MAC RTL releases and backend coordination. For the specific ECO I was least certain about, I would explain its actual changed cone, counterexample/debug process, and timing/DFT checks; the resume does not document that story. LEC establishes implementation-to-reference equivalence, not whether the reference meets the specification."

Claude Answer

Template: "The one I trusted least touched a cone shared by two flops, so a one-cell
change could alter a second endpoint I hadn't meant to touch. What convinced me was not
the ECO itself but the gate-to-gate run: golden = signed netlist, revised = patched
netlist, and the non-equivalent list contained exactly the one endpoint I intended and
nothing else. Then the RTL-to-gate run against the updated RTL came back fully equivalent,
which closed the loop that the intended change was also the correct one. GLS of the
failing certification test was the third leg; LEC alone never tells you the reference was
right."

Part A — Rapid-fire Q and A (0:05–0:20)

M7Q2 · A1. Functional ECO vs. timing ECO vs. metal-only ECO: who initiates each, and what changes in which files (RTL, netlist, DEF, SDC)?

Gemini Answer

GPT Answer

Functional ECO changes behavior: usually updated RTL, patched netlist, implementation database/DEF, and constraints if needed. Timing ECO changes cells/buffers/routes, usually without changing functional RTL. Metal-only describes a physical restriction: reuse placed cells and change allowed interconnect layers; it can implement either kind. Design, PD, and program stakeholders own different approvals.

Claude Answer

Functional: raised by design/DV/SW/certification; changes RTL (reconciled later),
netlist, DEF, sometimes SDC. Timing: raised by PD/STA; netlist and DEF only (sizing,
buffering), SDC rarely. Metal-only: executed by PD with spare cells after base layers are
frozen; netlist plus routing layers in DEF, no new base-layer cells.

M7Q3 · A2. What are spare cells, how are they typically distributed, and what limits what you can build from them?

Gemini Answer

GPT Answer

Spare cells are preplaced uncommitted gates/flops spread across likely ECO regions. Cell types, drive strengths, location, power domain, legal pin access, and available metal routes limit the patch; a spare flop is not automatically scan/reset compatible.

Claude Answer

Pre-placed, unused cells (NAND/NOR/INV/AOI/OAI/MUX, DFFs with scan) with inputs
tied, sprinkled uniformly at ~1–3% of area or clustered near risky blocks. Limits: drive
strength, distance (wire delay and slew to reach them), cell-type mix, whether spare flops
are pre-stitched into scan with reset connected, and routing congestion around them.

M7Q4 · A3. LEC in one sentence: what does it compare, and what does it not prove?

Gemini Answer

GPT Answer

LEC proves corresponding implementations equivalent under the modeled states/modes/assumptions. It does not prove spec correctness, timing, analog CDC behavior, DFT coverage, or correctness of excluded/black-boxed logic.

Claude Answer

It proves the combinational cones between corresponding key points of two designs
are logically identical. It does not prove either design is functionally correct, nor
timing, nor X or reset behaviour.

M7Q5 · A4. Define key points. Name the five kinds of key points Conformal reports and the typical reasons each ends up unmapped.

Gemini Answer

  1. Primary Inputs (PI) / Primary Outputs (PO): Unmapped if port names changed or buses were flattened/ungrouped.
  2. D Flip-Flops (DFF): Unmapped due to synthesis register replication, constant-0/1 flop removal, merging of duplicate flops, retiming, or hierarchy renaming.
  3. DLAT (Transparent Latches): Unmapped if unintended latch was inferred in RTL or an ICG latch wasn't modeled with -clock_gate.
  4. Black Boxes (BBOX — SRAMs, Analog Macros): Unmapped if instance or wrapper hierarchy names differ or macro library models are missing.
  5. Cut Points / Tie-Z / Error gates (Z): Artificial break-points inserted by Conformal to break combinational loops or partition massive multiplier cones.

GPT Answer

Think primary inputs, primary outputs, DFFs, latches, and black-box boundaries. Renaming/elimination can unmap ports; retiming/merging/reset/encoding changes can unmap state; differing macro models or boundary definitions can unmap black boxes. Check the tool version's actual report categories; not every unmapped point is a functional failure.

Claude Answer

Key points: primary inputs, primary outputs, D flip-flops, latches, black boxes
(plus cut points and tie constants). Unmapped because: names changed by ungroup/rename,
constant registers removed, equivalent flops merged, retiming moved flops, phase-inverted
flops, extra scan/test/clock-gating logic, black-box pin mismatch.

M7Q6 · A5. A key point is reported non-equivalent. Walk me through the first three things you do in the tool.

Gemini Answer

  1. Check for Unmapped Key Points in the support cone (report_unmapped_points): 90% of non-equivalences are caused by an upstream unmapped/renamed flop or missing .svf phase inversion/constant-reg mapping, not a real logic bug!
  2. Inspect the Counter-Example Pattern (diagnose / schematic viewer): View the exact input/flop bit values Conformal found where Golden != Revised (e.g., check if scan_en = 1 or test_mode = 1 caused the mismatch because a pin constraint was forgotten!).
  3. Back-trace the schematic cone from the failing D pin to the first diverging internal net using Conformal's automatic fault diagnosis markers.

GPT Answer

Inspect point classification and compare-cone/counterexample; trace to the first differing input/state/control; check reset, scan/test mode, constants, and library modeling before assuming an RTL bug. Reproduce after any setup correction, and never add an assumption solely to hide a mismatch.

Claude Answer

(1) Check the supporting key points of that cone: unmapped or extra support is a
mapping problem, not a bug. (2) Diagnose: compare the two cones' support sets and pull the
failing pattern. (3) Trace that pattern through both cones in the schematic to the first
diverging gate, and check it isn't a missing constraint (scan_en, test mode, undriven pin)
before calling it functional.

M7Q7 · A6. Name four synthesis transformations that make RTL-to-gate LEC fail or need special setup, and the setup for each.

Gemini Answer

  1. DFT Scan Insertion & Test Logic: Add add_pin_constraints 0 scan_en -revised and add_pin_constraints 0 test_mode -revised (and add_ignored_outputs scan_out*).
  2. Clock Gating (ICG insertion): Enable set_flatten_model -gated_clock so Conformal collapses the ICG latch + clock AND gate back into a synchronous D-enable mux on the flip-flops.
  3. Constant & Merged/Inverted Flip-Flops: Enable set_flatten_model -seq_constant -seq_merge and read the synthesis .svf file (read_svf) so inverted-phase flops (Q―) and constant-tied registers map automatically.
  4. Auto-Ungrouping / Datapath Architecture Optimization: Read the .svf file and run analyze_datapath before compare.

GPT Answer

Retiming needs supported sequential/retiming-aware comparison; FSM re-encoding needs state mapping; clock gating needs recognized ICG models and correct test settings; scan insertion needs consistent functional scan-mode constraints and cell models. Flattening, constant propagation, and memory mapping also affect partition/matching setup.

Claude Answer

Retiming → sequential equivalence or disable it. FSM re-encoding → disable or
supply the state mapping. Constant-register removal → enable sequential-constant analysis.
Phase inversion → phase mapping. Datapath re-architecture (Booth, carry-save) → datapath
analysis options. Clock-gating insertion → ICG modelling. Scan insertion → constrain
scan_en = 0.

M7Q8 · A7. Gate-to-gate LEC after a hand ECO: what is the golden, what is the revised, and what do you do about the key points you intentionally changed?

Gemini Answer

GPT Answer

Old-versus-patched gates intentionally differ in the ECO cone. Prove unchanged regions against the old netlist with narrowly documented changed boundaries; prove the entire patched design against corrected RTL. Alternatively construct an independently reviewed corrected golden gate model. Never mark an expected mismatch equivalent or broadly ignore the changed outputs.

Claude Answer

Golden = signed pre-ECO netlist, revised = post-ECO netlist. The cones you changed
are expected non-equivalent: list them before the run, prove them separately against the
new RTL (or a cone-level RTL reference), and require everything else equivalent. "Nothing
else changed" is the main result.

M7Q9 · A8. How does an ECO interact with scan chains? What must you check if you add a flop? If you remove one?

Gemini Answer

GPT Answer

Added flops require scan membership, reset/clock/test compatibility, chain reconnection, ATPG, and implementation checks; removed flops require chain repair and pattern regeneration as appropriate. Combinational ECOs can preserve chain topology but still affect coverage and patterns.

Claude Answer

Add a flop: it must sit on a chain (pre-stitched spare, or stitch via metal), scan
order file updated, hold checked on the shift path, ATPG regenerated. Remove a flop: bypass
it in the chain, update the order, ATPG again. Both: check clock, reset and the chain length
in the test spec.

M7Q10 · A9. You change a flop's D-input cone with an ECO. What happens to the SDC, the timing sign-off, and DFT ATPG patterns?

Gemini Answer

GPT Answer

Recheck all new and existing timing paths/corners/modes; update SDC only if the actual timing intent changes. Rerun DFT rules and ATPG/fault simulation as required because the functional cone changed even if scan topology did not.

Claude Answer

SDC unchanged unless an exception names a net or pin in that cone. STA re-run at
all corners for the new cone and wires. ATPG patterns regenerated because the fault list
changed, and pattern simulation repeated.

M7Q11 · A10. Hierarchical vs. flat LEC: when is each used, and what is a "black box" in this context?

Gemini Answer

GPT Answer

Hierarchical LEC scales through boundaries but needs sound boundary contracts/matching. Flat LEC sees cross-boundary logic at larger runtime/memory cost. A black box excludes its internal logic from proof and compares only its modeled interface behavior; mismatched or excessive black boxing weakens coverage.

Claude Answer

Hierarchical: sub-blocks verified separately and black-boxed at the parent, when
hierarchy was preserved. Flat: final sign-off, or when ungroup/boundary optimisation crossed
hierarchy. A black box is a module whose internals aren't compared, only its pins mapped,
with equivalence assumed from another run.

M7Q12 · A11. What goes into an RTL release package to SoC integration? List at least eight items and name the consumer of each.

Gemini Answer

  1. Synthesizable RTL filelist (.f) + immutable Git Tag / SHA → SoC Integration / Synthesis / DV
  2. Block-level SDC timing constraints (.sdc) → Synthesis & Physical Design / STA
  3. Power intent file (.upf) → Low-Power Synthesis / PD / Formal UPF
  4. Register description (.rdl / .ipxact / C header files) → Firmware / Driver / SoC DV
  5. Clean Lint + CDC/RDC sign-off reports + approved waiver files → Methodology / SoC Sign-off Lead
  6. Memory macro list + MBIST/wrapper configurations → DFT & Floorplan PD
  7. Integration Guide (clock/reset requirements, strap pins, interrupt list, latency budgets) → SoC Architect & Integrator
  8. Block-level interface SVA bind files → SoC-level Verification (DV)

GPT Answer

Release package: version manifest/hash (everyone), RTL/file list/parameters (integration), interfaces/register map (SoC/SW/DV), SDC and exceptions (STA/PD), UPF (low-power integration), lint/CDC/RDC reports and waivers (signoff), verification plan/results/known bugs (DV), LEC reports/setup (implementation), DFT/test requirements (DFT), macro/library dependencies (PD), and change log/ECO reconciliation (release owners).

Claude Answer

RTL filelist + tag (integration); SDC (PD/STA); UPF (PD/power); lint/CDC/RDC
reports with waivers (methodology); integration guide + register map (SW/FW, integrator);
SVA bind files (DV); DFT spec: scan ports, test modes, MBIST (DFT); synthesis scripts and
constraints (PD); memory/macro list (PD/DFT); verification summary + coverage (DV lead);
release notes / known issues (everyone); LEC report if a netlist ships.

M7Q13 · A12. The same bug is fixed by an ECO in the netlist and "later" in RTL. What process guarantees the RTL fix is equivalent to the ECO, and what happens if someone forgets?

Gemini Answer

GPT Answer

Tie bug, RTL commit, patched-netlist hash, physical ECO, and proof reports in one tracked change. Make corrected-RTL-to-final-gate equivalence a release gate and carry a regression test into the next branch. Otherwise the next synthesis can reintroduce the taped-out bug.

Claude Answer

The ECO log carries the RTL diff, and merging the RTL fix requires an LEC run of
RTL vs the taped-out netlist tag, enforced in CI. If someone forgets, the next generation
inherits RTL that doesn't match silicon: the bug returns, or sim/FPGA stop representing the
chip and nobody notices until certification.

M7Q14 · A13. Constant-propagated or dangling logic: why can an ECO that touches "dead" logic break LEC in a confusing way?

Gemini Answer

GPT Answer

A supposedly dead signal may be constrained constant or optimized away in one model but reactivated by the patch. Review observability, mode assumptions, tie-offs, and constant propagation before deciding that an unmapped/mismatching cone is harmless.

Claude Answer

Synthesis already removed or merged that "dead" logic, so the golden cone lacks
it; the ECO reintroduces or modifies it, and the revised cone now has different support.
LEC reports unmapped or non-equivalent points that look like a functional bug but are
really the tool having proved that logic constant before you touched it.

M7Q15 · A14. How do you size an ECO before committing: what three numbers do you give the PD lead?

Gemini Answer

  1. Spare cell count & types needed, plus their bounding-box coordinates/hierarchy (e.g., "1 AOI21 + 0 flops within 30 μm of U_ff_txabort").
  2. Total number of modified/new nets and whether any cross hierarchy or long distances (e.g., "3 local nets + 1 tap from U_ff_mumode.Q 180 μm away").
  3. Estimated logic depth / timing slack impact on the affected path (e.g., "0 gates added to critical cca_busy leg; 1 AOI21 delay added to quasi-static mu_mode leg").

GPT Answer

Give incremental cell/spare usage, estimated worst added delay/slack impact, and physical footprint/routing reach. Include wire distance/fanout and schedule confidence; use extracted timing before committing final closure.

Claude Answer

Cells (spares consumed by type), nets cut/added and routes touched (with layers),
and the worst-case timing impact (added depth on which path, estimated slack). Plus the
re-run time for sign-off.

Part B — Deep dive: a hand gate-level ECO (0:20–0:55)

Post-RTL-freeze bug: the Tx abort logic in a MAC block asserts tx_abort when
cca_busy && !tx_active, but the spec change (post-freeze, certification blocker) requires
that in MU mode (mu_mode == 1) the abort also be suppressed while a trigger-based
response is pending (tb_pending == 1).

Current RTL (frozen):

assign tx_abort_d = cca_busy & ~tx_active;
always_ff @(posedge clk or negedge rst_n)
  if (!rst_n) tx_abort_q <= 1'b0;
  else        tx_abort_q <= tx_abort_d;

Required RTL:

assign tx_abort_d = cca_busy & ~tx_active & ~(mu_mode & tb_pending);

Netlist excerpt (post-synthesis, post-DFT, placed):

INVX1   U_inv_txact   (.A(tx_active),  .Y(n_txact_b));
AND2X2  U_and_abort   (.A(cca_busy),   .B(n_txact_b), .Y(tx_abort_d));
SDFFRX1 U_ff_txabort  (.D(tx_abort_d), .SI(scan_in_7), .SE(scan_en), .CK(clk),
                       .RN(rst_n), .Q(tx_abort_q), .QN());
// mu_mode and tb_pending exist as nets: mu_mode is the Q of U_ff_mumode (register
// block, 180 um away); tb_pending is the Q of U_ff_tbpend (same hierarchy, 20 um away).

Spare cells available within 30 µm: SPARE_NAND2X1 ×2, SPARE_INVX1 ×3,
SPARE_AOI21X1 ×1, SPARE_NOR2X1 ×1, SPARE_DFF ×1. Metal-only ECO is required (no
new base-layer cells).

M7Q16 · B1. Design the patch.

  1. (10 min) Design the patch. Using only the spare cells listed, implement the new
    function with the minimum number of cells and the minimum impact on the existing timing
    path from cca_busy. Write the new netlist lines and state which existing connections
    you cut. (Hint: AOI21 gives you ~((A·B) + C) in one cell — think about what you can
    fold.)

Gemini Answer

Task 1: Minimum-Cell Patch Design (Protecting Critical cca_busy Timing)

GPT Answer

Required function is cca_busy & ~(tx_active | (mu_mode & tb_pending)).

Use one spare AOI21 to produce the combined suppression term, then reuse the existing AND. This adds one cell and no extra logic level on the cca_busy input compared with the old path. Confirm actual library pin names, polarity, drive, and metal-only routing legality.

// Reconnect one placed SPARE_AOI21X1; schematic pin names are illustrative.
AOI21X1 U_spare_suppress (
  .A(mu_mode), .B(tb_pending), .C(tx_active), .Y(abort_allowed)
);
// Cut U_and_abort.B from n_txact_b and reconnect to abort_allowed.
AND2X2 U_and_abort (
  .A(cca_busy), .B(abort_allowed), .Y(tx_abort_d)
);
// U_ff_txabort, including SI/SE/CK/RN, is unchanged.
// Leave the old inverter disconnected from this cone; handle its unused output
// and all unused spare pins according to physical tie-off rules.

One additional spare is minimal when retaining the existing AND: the original suppression term must now depend on two more inputs, and AOI21 implements exactly that three-input term. This is a logical mapping claim; placement/extraction still decide feasibility.

Claude Answer

Target: tx_abort_d = cca_busy & ~tx_active & ~(mu_mode & tb_pending).
Fold the two inverted terms: ~tx_active & ~(mu_mode & tb_pending) = ~((mu_mode & tb_pending) | tx_active)
= AOI21(A=mu_mode, B=tb_pending, C=tx_active). One cell.

// cut: U_and_abort.B  <--  n_txact_b
SPARE_AOI21X1 U_eco_aoi   (.A(mu_mode), .B(tb_pending), .C(tx_active), .Y(n_eco_gate));
AND2X2        U_and_abort (.A(cca_busy), .B(n_eco_gate), .Y(tx_abort_d));

U_inv_txact is left as is if n_txact_b has other loads; otherwise its output dangles
(no base-layer change, lint note in the ECO log). cca_busy keeps its single-AND2 depth.

M7Q17 · B2. Alternatives.

  1. (5 min) Alternatives. Give at least one other mapping and explain why yours is better
    (cell count, logic depth on the critical input, wire length to mu_mode).

Gemini Answer

Task 2: Alternative Mapping & Why AOI21 Wins

GPT Answer

Generate allow=~(mu_mode & tb_pending) with NAND2, NAND it with old tx_abort_d, then invert into the flop D. Three spare cells, and two additional gate levels on the old critical abort path. It may help placement in a different spare layout, but the AOI21 solution is smaller and preserves the cca_busy logic depth. Keep the same output net naming unambiguous when editing.

Claude Answer

M7Q18 · B3. LEC.

  1. (10 min) LEC. Set up the gate-to-gate LEC: what are golden and revised, which key
    points do you expect to map automatically, what do you do about the new key point(s),
    and what report proves the ECO did only what you intended? Then set up RTL-to-gate LEC
    against the updated RTL: what, if anything, is different about this run versus the
    original synthesis sign-off?

Gemini Answer

Task 3: Gate-to-Gate & RTL-to-Gate LEC Setup
  1. Gate-to-Gate LEC (pre_eco.v vs. post_eco.v):
    • Conformal maps 100% of flops by exact instance name (U_ff_txabort, etc.).
    • Run compare: confirm U_ff_txabort is the ONLY Non-Equivalent key point in the entire netlist.
    • Run diagnose U_ff_txabort: confirm the counter-example is strictly cca_busy=1, tx_active=0, mu_mode=1, tb_pending=1 (Golden=1, Revised=0).
  2. RTL-to-Gate LEC (updated_rtl.sv vs. post_eco.v):
    • Apply standard sign-off constraints (add_pin_constraints 0 scan_en -revised, read_svf, set_flatten_model -gated_clock).
    • What is different from original synthesis sign-off: If mu_mode came from another hierarchy module (u_reg_blk.U_ff_mumode.Q) and was wired across hierarchy by an ECO script, hierarchical LEC on the sub-block alone would see a new port; running LEC at the parent/MAC level (where both u_reg_blk and the Tx abort block reside) resolves the key point U_ff_mumode seamlessly and yields 100% Equivalent.

GPT Answer

Claude Answer

M7Q19 · B4. Timing and DFT.

  1. (5 min) Timing and DFT. mu_mode comes from 180 µm away: what is the risk, and how
    would you make it a non-issue in your mapping? Does your ECO change the scan chain? What
    about if you had needed the SPARE_DFF?

Gemini Answer

Task 4: Timing Risk on the 180 μm mu_mode Wire & DFT Scan Impact

GPT Answer

The 180 um mu_mode connection introduces routing capacitance, slew, and a new timed path through AOI21/AND. Place/use the existing spare near the endpoint, choose the appropriate gate pin arc, and check extracted timing; buffer with remaining compatible spares if necessary. No Boolean mapping makes wire delay irrelevant. Treat mode as false/multicycle only with a real protocol proof, never to ease closure.

No flop changes means scan chain topology stays unchanged, but rerun affected DFT/ATPG checks. Using SPARE_DFF would require verifying its scan/reset/power compatibility, inserting it into a legal chain or an approved alternative test structure, and regenerating test collateral.

Claude Answer

M7Q20 · B5. Process.

  1. (5 min) Process. List the sign-off artefacts for this ECO: what gets re-run, who
    approves, what gets written into the ECO log, and how you ensure the RTL fix lands in the
    next generation with LEC proving the RTL matches the taped-out netlist.

Gemini Answer

Task 5: Sign-Off Artefacts & Process Discipline
  1. Artefacts & Re-runs:
    • Gate-to-Gate LEC report (1 expected diff) + Updated-RTL-to-Gate LEC report (100% pass).
    • Incremental P&R + Metal DRC / LVS / Antenna clean report.
    • Incremental SPEF extraction + Multi-Corner Multi-Mode (MCMM) PrimeTime STA report (setup, hold, max_tran, max_cap).
    • Incremental ATPG fault coverage check + Gate-Level Simulation (GLS) of the failing MU-trigger abort test.
  2. Close-Out: Commit the 1-line RTL change to the trunk branch tagged with the ECO ID, and lock in a CI LEC check comparing trunk RTL == taped_out_post_eco.v.

GPT Answer

Track bug/spec, approved truth table, RTL commit, old/new netlist hashes, spare instance/pin rewires, ECO script/physical database, LEC setup/results, targeted regression, STA across modes/corners, extraction, DRC/LVS/connectivity, power-intent checks, and DFT/ATPG disposition. Design/DV/PD/STA/DFT and release owners sign their areas. Re-prove the final routed netlist against corrected RTL and merge/backport the RTL fix with a regression so the next generation inherits it.

Claude Answer

ECO log: bug/cert ID, spec reference, RTL diff, netlist diff/ECO script, spare cells
consumed by type, nets cut/added, timing estimate. Re-run: gate-to-gate LEC, RTL-to-gate
LEC with the updated RTL, STA all corners (new mu_mode path), DRC/LVS on metal layers, GLS
with SDF of the failing certification test, ATPG if scan was touched, lint on the RTL.
Approvals: design owner, DV lead, PD lead, DFT if scan, release manager. RTL fix merged
with the ECO ID in the commit, and a CI LEC job of RTL vs the tapeout netlist tag that
must pass before the next-generation branch is cut.

Part C — Your questions (0:55–1:00)

M7Q21 · Questions for the interviewer

Gemini Answer

  1. "Do you use automated functional ECO tools (like Conformal ECO Designer or Fusion Compiler ECO) to generate spare-cell patches first, or do designers craft small patches by hand?"
  2. "How are spare cells structured here—are spare flip-flops pre-stitched into the scan chains during initial DFT insertion?"
  3. "What is the process after tapeout to guarantee every late netlist ECO is reconciled back into the main RTL branch?"

GPT Answer

How are spare resources tracked? Who owns the final routed-netlist proof? What prevents an unreconciled ECO from entering the next RTL release?

Claude Answer

  1. How are spare cells budgeted and placed, and who decides the mix per block?
  2. Is there an automated functional-ECO flow (Conformal ECO) or is it all manual?
  3. Who signs the RTL–netlist reconciliation after tapeout, and is it gated in CI?

Additional notes

Notes. Material not tied to a question

Gemini Answer

No answer in gemini_answer.md.

GPT Answer

Reference

Cadence Conformal ECO Designer describes the role of equivalence checking during ECO analysis and final implementation signoff. Exact commands and report categories must match the installed version.

Claude Answer

No answer in claude_answer.md.