-
Notifications
You must be signed in to change notification settings - Fork 377
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PSL synthesized checker has "constant loopback", which makes symbiyosys k-induction fail #2672
Comments
It seems that the "constant loopback" DFF is result of PSL always.
|
Yes, I am pretty sure that only I will try to optimize away this state. Meanwhile, you have to use the yosys optimization pass. Rq: probably, it is possible to reproduce the issue using user code (ie, something like |
I didn't follow this: assume always is also user code. What is special in never vs always? Both propably shall generate similar constant loopback register... |
I mean, the user can write such de-optimized code by itself for assume/restrict and then sby would violate them. Anyway. |
I am still investigating this issue.
The second one:
cannot happen, as |
I can attest that this also fixed numerous failures of symbiyosys You do the heavens work. |
Thank you. It took me a while to fully understand the issue and to create a reproducer, but I have learnt for this issue. |
Description
prove mode checking with symbiyosys finds violation of asserts, where assume is also violated.
It seems that GHDL synthesized "constant loopback" (see below image with yellow circles) is the root problem.
For symbiyosys k-induction this makes it misbehave.
Expected behaviour
Synthesized netlist which is not having "constant loopbacks".
How to reproduce?
Files and background info here:
YosysHQ/sby#280
synthesizing the vhdl file with
ghdl -a --std=08 prove_01.vhdl; ghdl --synth --std=08 prove_01>file.vhdl
and manually routing a_3 assume and f_test assert to output ports
And then synthesizing with Quartus to get nice schematic:
The yellow marks show loopback without any real function (or is there?).
The problem can be seen here:

c_out has pulse width of one clock cycle (assert failure), even though the assume a_3 prevents it.
Context
Using latest hdlc/formal:all docker image.
version
tarball_url
commit SHA
Additional context
The text was updated successfully, but these errors were encountered: