|T. Meissner 00b124e266||4 months ago|
|.github/workflows||3 years ago|
|formal||2 years ago|
|issues||4 months ago|
|sim||2 years ago|
|src||10 months ago|
|.gitignore||2 years ago|
|LICENSE.md||3 years ago|
|README.md||10 months ago|
A collection of examples of using PSL for functional and formal verification of VHDL designs with GHDL (and Yosys / SymbiYosys).
This is a project with the purpose to get a current state of PSL implementation in GHDL. It probably will find unsupported PSL features, incorrect implemented features or simple bugs like GHDL crashs.
It is also intended for experiments with PSL when learning the language. You can play around with the examples, as they are pretty simple. You can comment out failing assertions if you want to have a successful proof or simulation if you want. You can change them to see what happens.
It is recommended to use an up-to-date version of GHDL as potential bugs are fixed very quickly. Especially the synthesis feature of GHDL is very new and still beta. You can build GHDL from source or use one of the Docker images which contain also the SymbiYosys toolchain.
For example the
hdlc/formal:min 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.
The next lists will grow during further development
next_a[i to j]operator
next_e[i to j]operator
next_event_e[i to j]operator
beforeoperator (GHDL crash with a specific invalid property, see PSL before example)
[*i to j])
[=i to j])
[->i to j])
prev()function (Synthesis only)
stable()function (Synthesis only)
rose()function (Synthesis only)
fell()function (Synthesis only)
onehot()function (Synthesis only)
onehot0()function (Synthesis only)
endpoint(simulation only, in PSL comments)
inherit, synthesis only)
anyconstattribute (synthesis only)
anyseqattribute (synthesis only)
eventually!behaviour with liveness proofs, see GHDL issue 1345