I am studying SystemVerilog Assertion. I applied SVA to check valid-ack spec. Spec is as below:
When the valid is drived (0 to 1), the valid should be equal to 1 until the ack is drived (1). When the ack is de-asserted (1 to 0), the valid is also de-asserted (1 to 0).
To check this spec, I wrote two property (pr1 and pr2). You can see the SVA code from the below link. https://www.edaplayground.com/x/5gHd
I expected that two property works exactly same. However, pr2 does not work as I expected (I expected that the assertion might fail at 50ns since the valid is equal to 1 but ack is equal to 0 at the 50ns).
Waveform: https://www.edaplayground.com/w/x/u5
What is the wrong at the pr2 (at 50ns)?
Best regards,
pr1appears correct at first glance. The first post-condition inpr2will match as long asvalidis asserted, regardless of whatackis doing. That is probably not what you want. - teadotjay