I have the following property/assert command:
property check;
@(negedge kill) disable iff (!poreset_b) (use_ratio_x2 == (2 * ratio)) ;
endproperty
assert_check: assert property (check)
else
$display("##### FAILURE: Assertion check failed. #####");
The assertion is failing at time 0, even though poreset_b = 0 at time 0fs.
Please help.
In reply to pRoSpEr :
Is it because poreset_b starts uninitialised at time 0 before transitioning to 0?
If so, then changing to “disable iff (poreset_b !== 1’b1)” may solve your problem.
Richard
ben2
June 12, 2015, 11:24pm
3
In reply to Richard Hamer (EnSilica) :
If the following property
(use_ratio_x2 == (2 * ratio))
is used once at setup, there is no need to check it at every clocking event. In that case, instantiate the assertion within an initial block.
Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us
SystemVerilog Assertions Handbook 3rd Edition, 2013 ISBN 878-0-9705394-3-6
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
Real Chip Design and Verification Using Verilog and VHDL, 2002 isbn 0-9705394-2-8
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