In reply to Balerion:
Looking at your definition of the assertion // if data changes time x before clk_gated Final Error should rise after clk_gated rose I see the following method of construction for the assertion. SVA is not going to work here because of the samplings and clocks.
realtime t1, diff=2ns;
always @(data) begin
@(posedge clk_gated) if (($realtime-t1) > diff)
#1 am_ferror: assert(final_err); // The #1 is to account for a delay till final_err rises
Basically, you'need to build your own model.
Instead of the always
I started with a task
that is fork-join_none with a trigger, as I explain in my paper Understanding the SVA Engine
(see link below).
However, I could not think of an appropriate trigger since the @(data)
Anyway, this may provide you with some possible approaches, particularly since you understand the problem better than me.
For training, consulting, services: contact http://cvcblr.com/home
** SVA Handbook 4th Edition, 2016 ISBN 978-1518681448
1) SVA Package: Dynamic and range delays and repeats https://rb.gy/a89jlh
2) Free books: Component Design by Example https://rb.gy/9tcbhl
Real Chip Design and Verification Using Verilog and VHDL($3) https://rb.gy/cwy7nb
- SVA Alternative for Complex Assertions
- SVA in a UVM Class-based Environment
- Understanding the SVA Engine,