I have the following SVA property:
$rose(hresetn) |-> (
##[0:$] $rose(signal_a)
##[0:2] ($rose(signal_b));
During a simulation if signal_a
never rose (which is functionally acceptable), will my test finish with an error ? Do simulators qualify ##[0:$]
as an error/violation if it never happened during run-time, or it will be treated as a property never satisfied ?
Thanks.
SystemVerilog has both
weak
andstrong
properties. By default, everything is weak meaning no match is just an incomplete assertion the neither passes or fails. Some tools can report any assertion attempt that has never completed. But there is also astrong
property qualifier that will report an error if there is no match to a sequence by the end of simulation. (Note not all tools have implemented this feature)