In reply to S.P.Rajkumar.V:
If I understand you correctly, your test scenario looks as follows:
let k=5; // an example
let n=2000; // another supposition
// $fell(reset_en) ##[1:n] reset_en ##[1:k] $fell(reset_en) ##[1:$] end_of_simulation
// In that case the assertion ap_reset is fired twice.
// It succeeds at the first firing with the sequence $fell(reset_en) ##[1:n] reset_en ##[1:k]
// However the second firing never completes since there is no reset_n==1.
// That second sequence is $fell(reset_en) ##[1:$] end_of_simulation
ap_reset: assert property(@(posedge ref_clk)
$fell(reset_en) |-> (reset_n[*1:$] ##1 reset_en) within reset_en [->1]);
// So the tool gave you the correct response.
// If you want to test this assertion once, you could put the assertion in an initial statement
initial begin
// Maybe some wait cycles ??
ap_reset: assert property(@(posedge ref_clk)
$fell(reset_en) |-> (reset_n[*1:$] ##1 reset_en) within reset_en [->1]);
end
Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us
- SVA Handbook 4th Edition, 2016 ISBN 978-1518681448
- 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 978-1539769712
- 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