Implication

Last modified 2014-03-11

Sini

Table of content
  1. Overlapped Implication
  2. Non-overlapped Implication

The implication construct (|->) allows a us to monitor sequences based on satisfying some criteria, i.e. for a sequence to occur, a preceding sequence must have occurred. The implication consists of left-hand-side called antecedent, an implication operator and right-hand-side called consequence. The implication is a construct located between antecedent and consequence and if there is a successful match of antecedent, the consequence will be evaluated. The implication will return TRUE if the evaluation of the consequent succeeds and returns TRUE.If there is no match of the antecedent, the evaluation of the implication succeeds vacuously and returns TRUE. The implication can be used only inside property and not inside sequence.

Implication syntax.

propertyexpr ::= ... | sequenceexpr |-> propertyexpr | sequenceexpr |=> propertyexpr

There are two types of implication called overlapped and non-overlapped.

Overlapped Implication

property nandprop; nandsigo |-> !(nandai && nandbi); endproperty; assertnand: assert property(nandprop);
impl1

In the overlapped (|->) implication, from a given start point antecedent will be evaluated. If there is:- No match: The evaluation of the implication from that start point succeeds and returns true. [Vacuous success]

Non-overlapped Implication

property dprop; $changed(dout) |=> (dout == $past(din)); endproperty; assertdprop: assert property(dprop);
impl2

More about properties can be found in other sections of “SVA Properties” series