YosysHQ / sby

SymbiYosys (sby) -- Front-end for Yosys-based formal verification flows
Other
403 stars 75 forks source link

pono only checks first property in a design #137

Closed nakengelhardt closed 2 years ago

nakengelhardt commented 2 years ago

When using the pono solver, it only checks one property. It will mention this at the beginning, e.g. Solving property: both_ex.v:19.25-20.30.

We don't have a testcase that exposes this problem yet.

nakengelhardt commented 2 years ago

Testcase:

[tasks]
btormc
pono

[options]
mode bmc
depth 5
expect fail

[engines]
btormc: btor btormc
pono: btor pono

[script]
read_verilog -sv multi_assert.v
prep -top test

[file multi_assert.v]
module test();
always @* begin
assert (1);
assert (0);
end
endmodule
tmeissner commented 2 years ago

I also have stumbled over this behavior some time ago, but was not sure, if that is by intention. pono has an option to set the index of the property to check, but I didn't found any option to solve all properties.

nakengelhardt commented 2 years ago

Yes, looking at the options code for pono the intention seems to be not to check more than one property at a time. Yosys' write_btor does have an option for creating a single bad that is an and of all the assertions. It'll do as a workaround until I can figure out a better solution, but it removes the ability to find out which property failed so that's not great either.