T. Meissner 3d57fff226 | 4 years ago | |
---|---|---|
.github | 4 years ago | |
alu | 4 years ago | |
counter | 4 years ago | |
fifo | 4 years ago | |
fwft_fifo | 4 years ago | |
vai_fifo | 4 years ago | |
vai_reg | 4 years ago | |
.gitignore | 6 years ago | |
LICENSE.md | 6 years ago | |
Makefile | 4 years ago | |
README.md | 4 years ago | |
tests.txt | 4 years ago |
The original repository is located on my own git-server at https://git.goodcleanfun.de/tmeissner/formal_hw_verification
It is mirrored to github with every push, so both should be in sync.
Tests and examples of using formal verification to check correctness of digital hardware designs. All tests are done with SymbiYosys, a front-end for formal verification flows based on Yosys.
All stuff in the master branch uses ghdl-yosys-plugin and GHDL as VHDL front-end plugin for (Symbi)Yosys. Using GHDL as synthesis frontend allows using PSL as verification language.
Some examples in the verific branch use the commercial VHDL/SystemVerilog frontend plugin by Verific which isn't free SW and not included in the free Yosys version. See on the Symbiotic EDA website for more information.
You can use the hdlc/formal:all
docker image provided by the hdl containers project (recommended). Or you build a docker image on your own machine using my Dockerfiles for SymbiYosys & GHDL. With both you have the latest tool versions available.
A simple ALU design in VHDL. The formal checks contain various simple properties used by assert & cover directives which are proved with the SymbiYosys tool.
A simple counter design in VHDL. The testbench contains various simple properties used by assert & cover directives which are proved with the SymbiYosys tool.
A simple synchronous FIFO with various checks for write/read pointers, data and flags.
A simple synchronous FIFO with first-word fall-through behaviour. Uses fifo as sub-unit. This design serves as an example how to verify designs with sub-units containing formal checks.
A simple FIFO with valid-accept interface. Consists of fwft_fifo as sub-unit and some glue logic doing fifo<->vai interface conversion. This design serves as an example how to verify designs with sub-units containing formal checks.
A simple register file with VAI (valid-accept interface) which serves as test design to try formal verification of FSMs.