Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • Logic Synthesis Glossary
  • Logic Synthesis Cheatsheet
  • Synthesis Foundations14
  • Logic Optimisation and Mapping20
  • Constraints and Timing15
  • Sequential, FSM and Memory19
  • Datapath Synthesis14
  • Area, Power and Test14
  • Verification, ECO and Handoff15
    • Equivalence Checking
      • Combinational Equivalence of RTL and Netlist
      • Key Points and Black Boxes
      • Retiming and FSM Recoding
      • Reading an Equivalence Failure
      • Constants and Brute Force
    • Incremental Compile and ECO
    • Physical-Aware Synthesis and Handoff
  • Flows and Debugging15
  • Interview and Judgment11
Loading lesson

‹Equivalence Checking
  1. Topics
  2. Logic Synthesis
  3. Verification, ECO and Handoff
  4. Equivalence Checking
  5. Combinational Equivalence of RTL and Netlist

Part 7 · Verification, ECO and Handoff · Intermediate

Combinational Equivalence of RTL and Netlist

Matched registers, combinational cones, and a miter proof on a small design.

On this page

    Matched registers

    Sequential equivalence reduces to combinational checks between matched storage. Each RTL register is paired with its netlist counterpart by name or by hierarchy.

    The pairing must be exact before any pass means anything. An unmatched or mispaired register voids the comparison of its cones.

    RTL side

    Netlist side

    Match rule

    Primary input

    Primary input

    Same port name and width.

    Register output

    Register output

    Same hierarchical name after synthesis.

    Primary output

    Primary output

    Same port name and width.

    Cones between key points

    Between two key points sits a combinational cone: all gates that influence the endpoint. The check proves each cone pair equal on every input vector.

    A three-input cone needs eight exhaustive vectors. The calc block states the count the proof below covers.

    Diagram
    cone inputs: a, b, c (3 inputs)
    exhaustive vectors = 2^3 = 8
    vectors: 000, 001, 010, 011, 100, 101, 110, 111
    the miter proof covers all 8 vectors, not a sample

    A miter proof

    The script below synthesizes a small RTL block to generic gates, then builds a miter against the RTL. In Yosys the library cells carry no logic model for the SAT solver, so this lesson proves equivalence before mapping to the teaching library, and mapping is a separate later step.

    yosys
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    read_verilog <<EOV
    module t(input wire a, b, c, output wire y);
    assign y = (a & b) | (~a & c);
    endmodule
    EOV
    hierarchy -top t
    proc
    opt
    design -save pre
    synth -top t -flatten
    rename t gate
    design -stash netlist
    design -load pre
    rename t gold
    design -copy-from netlist -as gate gate
    miter -equiv -flatten -make_outputs gold gate m
    hierarchy -top m
    sat -prove trigger 0 -verify m
    log PASS: synthesized netlist equals RTL on all input vectors

    No area number is asserted here. The asserted property is equality on all eight vectors.

    Common mistakes

    Common pitfall

    Proving the wrong pairing is worse than no proof. A renamed register that silently mismatches turns a real bug into a clean report.

    Interview

    Likely probes: what a miter proves, and what must match first.

    • The miter flags any input where the two outputs differ.

    • Registers pair by name or hierarchy before cones are compared.

    • A pass covers all vectors on the matched points only.

    Check yourself Two cones agree on 100 random vectors but no miter proof ran. Is that equivalence?

    No. Sampling can miss the one vector that differs. Only the solver proof over all vectors is equivalence.

    Check yourself Synthesis renamed a register and the pairing was skipped. What is the status of a passing report?

    Void. The cones were never aligned, so the pass compares the wrong logic.

    Related topics

    • Reading a failure

    • Muxes, decoders and encoders

    Previous

    99 / 139

    Next: Key Points and Black Boxes

    Up next

    Up nextKey Points and Black Boxes

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Retiming and FSM Recoding
    • Reading an Equivalence Failure
    • Constants and Brute Force