I have a strange problem with my simvision (version 11.10.-s66) that i have written 2 assertions
1) with parameterized sequnces and property
2) normal assertion
for some logic which you can find in the below code , but in the simvision the assertions finished at different timings , the one parameterized finished one clock pulse later than expected and the normal assertion finished properly. So can any one tell me whether it is tool issue ???
initialbegin clk = 1'b0; in1 = 4'd0; flag = 1'b0; out1 = 4'd0; repeat(2) @(negedge clk); in1 = 3'd2; flag = 1'b1; repeat(1) @(negedge clk); flag = 1'b0; out1 = 3'd3; repeat(5) @(negedge clk); $finish;endproperty p1; @(posedge clk) ( (in1 == 3'd2) && $rose(flag) ##1 $fell(flag)) |-> (out1 == 3'd3);endproperty chk1 : assert property(p1) $display("Working Good"); else $display("Not Working");sequence s1(a); $rose(a) ##1 $fell(a);endsequenceproperty p2(a1,b,c); @(posedge clk) ( (b == 3'd2) and s1(a1)) |-> ( c == 3'd3 ) ;endproperty chk2 : assert property(p2(flag,in1,out1)) $display("Working Good"); else $display("Not Working");
Find the attachment for the picture containing assertions in the simvision
I could reproduce the exact same behavior here. Based on the documentation I have, your two properties should behave as property p1. But by replacing p2 with the code below, they both behave the same:
(b == 3'd2) && $rose(a) ##1 $fell(a);
s1(a1,b) |-> ( c == 3'd3 ) ;
In reply to whiteriver1:
Thanks for the reply , but i just want to know is anything wrong with my code.
I tried as you suggested it is working same as p1.