Formal verification with yosys
  • Verilog 72.7%
  • Makefile 27.3%
Find a file
tampler b34bd23f32 fix: lec equiv error
reviewed, cleaned and fixed lec issues
2026-07-03 00:39:49 +03:00
gen fix: keep gen/ dir on fresh clone 2026-07-02 22:47:37 +02:00
lec refactor: synthesize to generic ($-)cells; drop osu035 std cells 2026-07-02 22:47:30 +02:00
rtl feat: add files 2026-06-28 21:42:52 +03:00
syn refactor: synthesize to generic ($-)cells; drop osu035 std cells 2026-07-02 22:47:30 +02:00
.gitignore chore: tidy up build flow, gitignore, and docs 2026-07-02 22:47:37 +02:00
Makefile fix: keep gen/ dir on fresh clone 2026-07-02 22:47:37 +02:00
README.md chore: tidy up build flow, gitignore, and docs 2026-07-02 22:47:37 +02:00

Yosys formal verification guide

This project contains a cookbook for formal verification methods

App 1: Logic equivalence check

  • Synthesize a simple design under test (DUT) down to Yosys' generic ($-)cells
  • Run Yosys Logic Equivalence check (LEC) to prove functional equivalence of both circuits

Resources

Usage

The flow defaults to the counter design; override it with design=<name> (available designs: counter, lfsr).

  • Running synthesis: make dosyn (writes gen/<design>_mapped.v)
  • Running LEC: make dolec (re-synthesizes the netlist first if it is stale)
  • Running LEC for every design: make test
  • Picking a design: make dolec design=lfsr
  • Listing targets: make help

The generated netlists in gen/ are build artifacts (git-ignored). Because the netlist is built from Yosys' internal ($-)cells, the SAT engine already knows their semantics -- no behavioral cell models are needed to prove equivalence.