Hello All,
I have a query in assertion understanding. Generally we say that Signal “a” is asserted. What does that mean? Does it mean the rising edge of signal “a” or it’s just the true case of signal “a”?
Hello All,
I have a query in assertion understanding. Generally we say that Signal “a” is asserted. What does that mean? Does it mean the rising edge of signal “a” or it’s just the true case of signal “a”?
In reply to janudeep3:
I have a query in assertion understanding. Generally we say that Signal “a” is asserted. What does that mean? Does it mean the rising edge of signal “a” or it’s just the true case of signal “a”?
Every language has its own lingo.
As you may know, in an concurrent assertion statement, all variables (or signals) are sampled in the Preponed region, just before the clocking event. SystemVerilog assertions have 4 layers of definition: Boolean, sequence, property, and directive (e.g., assertm cover, etc). Thus, when you have an assertion like:
ap_ab: assert property(@(posedge clk) a |=> b==1'b0);
If “a” evaluates to 1, it is an accepted lingo to say " ‘a’ is asserted", or “‘a’ is active”.
Since “a” is considered an expression, if a==1, it is considered “true”.
The rising edge (e.g., $rose(a)) is exaplined in 1800.
$rose returns true when the sampled value of a Boolean signal argument transition is true at the current cycle (i.e., least significant bit of the expression==1’b1) and FALSE in the previous cycle (i.e., was 0, X, or Z), with respect to the clock of its context, otherwise it returns FALSE. From my book, “The $rose function is useful to ensure that a triggering condition is edge sensitive (i.e., a new positive edge) rather than level sensitive, as sampled with a clocking event. Not using the $rose function in antecedents is a very common mistake because of potential assertion errors caused by overlapping. Assertion overlapping was briefly discussed in Section 1.3.3. With an asserted property, the verification tool will attempt the evaluation of the assertion at every leading clocking event of the assertion. This can create overlapping assertions that are monitoring the same set of signals during the same bus cycles. For example, the thread started in attempt n is concurrent with the thread started in attempt n+1. While such overlapping is very powerful, these overlapping assertions can lead to unexpected assertion failures.”
Other things that may be confusing about assertions: