I would like to write a coverpoint to capture a sequence of edge events: two toggles of A followed by two toggles of B. There is no predictability in terms of when the second A comes wrt to first A. Similarly, there is no predictability on the two B’s. They can also each stay high for any number of cycles.
But it looks like this won’t work since it does not guarantee that B stays low throughout the first two $rose of A and similarly, A stays low during the two $rose of B. How can I enforce this?
cover property (@(posedge clk) $rose(a) ##0 !b throughout a[->2] |=> !a throughout b[->2] );
Hi Dave,
Thank you. I tested this as an assertion and I think for the most part it did the trick. I fixed a minor syntax issue:
cover property (@(posedge clk) $rose(a) ##0 (!b throughout a[->2]) |=> !a throughout b[->2] )
However, I think
[->2]
will include the cases where A is high for two consecutive clocks followed by B high for two consecutive clocks. Is there any way to ensure that both A and B each have two $rose?