In reply to ssureshgverifier@gmail.com:
From 1800'2017 16.12.11 Always property
//Implicit form:
implicit_always: assert property(p);
//Explicit form:
initial explicit_always: assert property(always p);
/*This is not shown as a practical example, but only for illustration of the meaning of always. Examples:*/
initial a1: assume property( @(posedge clk) reset[*5] #=# always !reset);
/*The assertion a1 says that reset shall be true for the first 5 clock ticks and then remain 0 for the rest of the computation. */
Thus, in the above solution you would need the
initial, Otherwise, you have a new attempt at every clock edge. You might argue that since there is no rose of pulse, the new attempts are vacuous, you are correct. However, why putting more stress on the simulator. In addition, it does not read correctly since the
always takes care of future clocks; it is the the explicit form of the
always. initial ap_pulse: assert property(@(posedge clk)
$rose(pulse) |=> always !pulse);
Ben Cohen
http://www.systemverilog.us/
For training, consulting, services: contact
http://cvcblr.com/home
** SVA Handbook 4th Edition, 2016 ISBN 978-1518681448
...
1) SVA Package: Dynamic and range delays and repeats https://rb.gy/a89jlh
2) Free books: Component Design by Example https://rb.gy/9tcbhl
Real Chip Design and Verification Using Verilog and VHDL($3) https://rb.gy/cwy7nb
3) Papers:
- SVA Alternative for Complex Assertions
https://verificationacademy.com/news/verification-horizons-march-2018-issue
- SVA in a UVM Class-based Environment
https://verificationacademy.com/verification-horizons/february-2013-volume-9-issue-1/SVA-in-a-UVM-Class-based-Environment
- Understanding the SVA Engine,
https://verificationacademy.com/verification-horizons/july-2020-volume-16-issue-2