Hi,
I have below assertion:
//////////////////////////////////////////////////////////////////////////
// Assertion 3: There should be a pulse of match_dv for each sot
property MatchDvPulseAfterSot;
@(posedge clock) disable iff(!reset || DisableMatchDvPulseAfterSot_Flag)
// When we get a valid sot
$rose(sot & valid & ready) |->
// Within 1 to 100 cycles we should see match_dv pulse
##[1:100] ($rose(MatchDv) ##1 !MatchDv);
endproperty : MatchDvPulseAfterSot
assert property (MatchDvPulseAfterSot);
//////////////////////////////////////////////////////////////////////////
Problem I am facing is that the assertion launches on two separate sot posedges (a , b), but both finish at the same event (c) instead of older one finishing on the current event and the next one should finish at the next event, so at the end of test i have one less pulse and the assertion fails.
packet sizes can be low or high and the range has to be 1-100 and if there are two small packets back to back there is a chance that two dv come together. maybe i am going about this in a wrong direction, please help me fix this assertion.
the wave looks like this:
Thanks