Assertion failure at time 0fs

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

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