Boolean Property vs Boolean Expression

Hi all,

I am reading SVA: The Power of Assertions in SystemVerilog.
At page 102,
Example 5.5. For a Boolean expression e , always e is true iff e is true in every clock tick.
Example 5.6. What is the meaning of nexttime always p ?
Solution: According to the definition of nexttime property, always p should hold
in clock tick 1. Therefore, property p should hold in every clock tick starting from
clock tick 1.

Here in Ex 5.5 ‘e’ is considered as boolean expression and in Ex 5.6 p is considered as boolean property. why?

Also i didn’t fully understood the need of always operator.

initial assert property(@(posedge clk) always a);

only checks at first posedge clk. Then writing always property to ‘a’ redundant?

assert property(@(posedge clk) always a);

will check a at every posedge clk. i.e an implicit always is present. here also writing always to ‘a’ is redundant. one can write simply ‘a’ am i right?

Thank you.

In reply to sasi_8985:


// 1800'2017 syntax defines a property as one of the following
property_expr ::=
   sequence_expr
| ( property_expr )
| ... // see 1800 
| sequence_expr #-# property_expr
| sequence_expr #=# property_expr
| nexttime property_expr
| nexttime [ constant _expression ] property_expr
| s_nexttime property_expr
| s_nexttime [ constant_expression ] property_expr
| always property_expr
| always [ cycle_delay_const_range_expression ] property_expr
| s_always [ constant_range] property_expr
| ... // see 1800 

property p;
 nexttime [k] property_expr;  // k is a constant_expression
endproperty 
// Is equivalent to
property p_eqiv;
 ##k 1'b1 #-# property_expression); 
endproperty 
//  'e' is considered as boolean expression and in Ex 5.6 p is considered as boolean property. 
a |-> always e;  // e is a sequence of 1 term that is interpreted as a property 
         // The always requires a property 
         // The syntax option for a property is a sequence 
a |-> nexttime always p; // nextime (property_expr)
                         // always(property_expr) 
// nexttime property, always p should hold
// in clock tick 1. 
// Therefore, property p should hold in every clock tick starting from  
// [Ben] the next clock tick 
// Thus, 
nexttime always p;  // same as the property 
 ##1 1'b1 #_# always(p); // p is a property or a sequence interpreted as a property 
                         // A boolean is a sequence of length ONE. 

Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us
** SVA Handbook 4th Edition, 2016 ISBN 978-1518681448

  1. SVA Package: Dynamic and range delays and repeats SVA: Package for dynamic and range delays and repeats | Verification Academy
  2. Free books: Component Design by Example FREE BOOK: Component Design by Example … A Step-by-Step Process Using VHDL with UART as Vehicle | Verification Academy
    Real Chip Design and Verification Using Verilog and VHDL($3) https://rb.gy/cwy7nb
  3. Papers:

Udemy courses by Srinivasan Venkataramanan (http://cvcblr.com/home.html)
https://www.udemy.com/course/sva-basic/
https://www.udemy.com/course/sv-pre-uvm/