Skip to content
Formal Engine · ADAPTER-FIRST

iFormal · Formal verification

Formal verification adapter. Agents can submit CEC tasks and get equivalence proofs or counterexamples—currently via external formal tool adapter; in-house local proof capability planned.

D1 shadow / D4 productADAPTER-FIRSTWave 1/4In-house proof planned
agent — iformal
# Formal verification adapter
$ agent call iFormal.check_equivalence
[cec  ] design_a vs design_b     ok
[proof] 1523/1523 points eq      ok
→ equivalence confirmed
iMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout modeliMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout model

Core capabilities

  • Combinational equivalence checking (CEC): Compare combinational logic equivalence—common after synthesis and optimization.
  • Sequential equivalence checking (SEC): Sequential timing equivalence for post-ECO or local modification verification.
  • Counterexample generation: When not equivalent, output counterexamples (input vector + difference point) for debug.
  • External adapter layer: Currently calls external commercial formal engines; D1 shadow interface definition complete.
  • Agent-ready: Python API wraps CEC/SEC submission and returns structured equivalence results.

Agent calling patterns

cec = client.call("iFormal.check_equivalence",
    design_ref="snap_a",
    reference_ref="snap_b"
)

# cec.equivalent          → bool
# cec.counter_example     → dict | None (counterexample when not equivalent)
# cec.proof_log           → str (proof summary)

Input / output contract

DirectionParameterTypeDescription
Inputdesign_refstrDesign snapshot to verify (e.g. post-synthesis netlist)
Inputreference_refstrReference snapshot (e.g. original RTL or golden netlist)
Inputmodestr (optional)Verification mode: cec | sec, default cec
OutputequivalentboolWhether the two designs are logically equivalent
Outputcounter_exampledict (optional)Counterexample when not equivalent (input vector, differing signals)
Outputproof_logstrProof log with checkpoint count and runtime

Role in the flow

01 Synth

iMap

Logic synthesis & tech mapping

02 Verify

iFormal

Post-synthesis CEC equivalence check

03 Physical design

iFP · iPL · iCTS · iRT

Full place & route flow

04 ECO verify

iFormal · iLVS

Post-change equivalence and LVS

iFormal runs after synthesis and after ECO: verify pre/post-synthesis netlist equivalence and that local changes preserve function. Pairs with iLVS for a complete verification loop.

Keep building with open intermediate state

Every page links back to executable tools and AI-ready design data.