equivalence-check

Runs logic equivalence checking between RTL and gate-level netlists to prove functional identity.

26|8|Updated Jun 13, 2026
One-click install
npx skills add https://github.com/vibeic/vibe-ic --skill equivalence-check-vibeic
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: equivalence-check
Source: https://github.com/vibeic/vibe-ic/tree/main/vibe-ic-marketplace/plugins/vibe-ic/skills/equivalence-check
Command: npx skills add https://github.com/vibeic/vibe-ic --skill equivalence-check-vibeic

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? After every netlist transformation — synthesis, DFT insertion, clock gating, or ECO — you must prove the result is functionally identical to the golden RTL. This Skill drives Logic Equivalence Checking (LEC) through MCP-EDA's Yosys equiv mode and enforces the verdict with a deterministic gate program, so a PASS can never be claimed from log inspection alone. ## Core Features & Use Cases - Deterministic LEC execution: Invokes eda_lvs in yosys_equiv mode to compare golden vs revised netlists, returning proven/unproven equiv-cell counts and writing reports/lec.json. - Anti-vacuous verdict gate: programs/lec_equivalence_check.py independently re-parses the report and returns rc=0 only when equivalence is true, compared points are non-zero, and no unproven or non-equivalent points remain. - Mismatch triage workflow: Maps key points, reports unmapped registers, and classifies mismatches as real functional changes, benign reset differences, or X-propagation issues. - Use Case: After inserting scan chains into a synthesized design, run LEC between the pre-DFT and post-DFT netlists with test pins constrained, then gate the sign-off on the deterministic checker before proceeding to place-and-route. ## Quick Start Ask the AI to run an equivalence check between your golden RTL netlist and the post-synthesis netlist for your top module using the sky130 PDK, then confirm the gate program returns PASS.

Frequently Asked Questions about equivalence-check

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run logic equivalence checking on a synthesized netlist?▼

Invoke the eda_lvs tool in yosys_equiv mode with the golden netlist, the post-transformation netlist, the top module, and the PDK. Then run the lec_equivalence_check.py gate program on the generated reports/lec.json; rc=0 is the only valid PASS verdict.

Yosys equiv vs Netgen LVS for equivalence checking?▼

Yosys equiv compares RTL against gate-level netlists but often leaves unproven cells on production-sized designs after technology mapping. Netgen LVS compares gate-level netlists at the same abstraction level and reliably reports circuits match uniquely for standard-cell designs.

Why does Yosys equiv_simple leave unproven $equiv cells?▼

Yosys equiv_simple cannot prove equivalence across technology mapping, where behavioral RTL constructs are replaced by mapped standard cells. A workaround uses design -stash/-import plus read_liberty -ignore_miss_func to expand PDK cells into Yosys native logic for same-level comparison.

Can LEC pass with zero compared points?▼

No. The gate program treats a bare equivalent:true over zero compared points as a vacuous claim and returns an honest FAIL. PASS requires equivalence true, compared points greater than zero, and no non-equivalent, unproven, or aborted points.

When should equivalence checking run in an ASIC flow?▼

Run LEC after every transformation that touches the netlist: post-synthesis, post-DFT insertion with test pins held at functional values, post-ECO, and after manual RTL edits. Each run re-proves functional identity against the golden reference.