In reply to Tobi:
Each attempt is separate from others.
What I see wrong is that from time 0, $past(d, n) where n < 161 is the default value of d.
2 solutions:
// better
always @(posedge clk count <= count + 1'b1;
assert property (@(posedge clk) disable iff(rst)
count > 160 ##0 ($rose(data_rd) && (data[3:0] !=7)) |-> $past((data[3:0]==7),160));
// Too many nonvacuous attempts
assert property (@(posedge clk) disable iff(rst)
##161 ($rose(data_rd) && (data[3:0] !=7)) |-> $past((data[3:0]==7),160));
Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us
For training, consulting, services: contact Home - My cvcblr
- SVA Handbook 4th Edition, 2016 ISBN 978-1518681448
- Real Chip Design and Verification Using Verilog and VHDL, 2002 isbn 978-1539769712
- A Pragmatic Approach to VMM Adoption 2006 ISBN 0-9705394-9-5
- Using PSL/SUGAR for Formal and Dynamic Verification 2nd Edition, 2004, ISBN 0-9705394-6-0
- Component Design by Example ", 2001 ISBN 0-9705394-0-1
- VHDL Coding Styles and Methodologies, 2nd Edition, 1999 ISBN 0-7923-8474-1
- VHDL Answers to Frequently Asked Questions, 2nd Edition ISBN 0-7923-8115
See Paper: 1) VF Horizons:PAPER: SVA Alternative for Complex Assertions | Verification Academy
2) http://systemverilog.us/vf/SolvingComplexUsersAssertions.pdf