Hey guys! I’m new in SVA and also in Formal Verification.
I want to write an assertion like the description bellow:
GCK1 need 1cycle CLOCK1 to update value of A
GCK2 need 1cycle CLOCK2 to update value of !A
and, OUT= GCK1 OR GCK2
So, I have one test item is: when A HIGH, OUT also HIGH at second posedge of slower clock
(a==1) |-> seq(clock1,out,1) OR seq(clock2,out,1); // WILL NOT compile!
The issue here is that every assertion needs a leading clocking event.
A leading clocking event of an assertion directive is the clocking event that starts the property of the assertion directive. An assertion may have more than one clocking event, such as those in multiclocked properties; however, there is only one leading clocking event in any assertion statement. Here is your fix. You need to assess the need for 2 separate assertion directives, each with a different leading clocking event.