In reply to OE93:
In reply to UVM_LOVE:
Look, I’m not a SVA expert at all, and it’s so embarrassing to even open my mouth when Ben is also responding to you…
But in general I have two basic recommendations:
- Add prints that describe the situation when the assert fails:
asset () else $error(“expect that a = … but a = %b, b = %b, time = %t”, a,b,$time);
[Ben] You need the $sampled
asset property () else
$error("expect that a = ... but a = %b, b = %b, time = %t",
$sampled(a),$sampled(b),$realtime);
- Write a property with arguments, and send arguments when you assert:
property check(clk,a)…endproperty
assert property (c,x) else $error(…);
here c = clk and x = a.
Unless you see the need for reuse, which is usually rare, I do not use arguments because they make the assertion hard to read. For me, I have to mentally convert the formal arguments to the actual arguments while I am composing or reading an assertion.
Sorry, it gives me mental “fatigue!”
:)
Ben