Hi,
I’m currently writing some assertions for some clocks within a design. In an attempt to reduce the amount of code required I was grouping all of the clocks of the same frequency together in arrays and then using a single assertion with a for loop to cover them all. However, I am getting the following error : “On sequence match, assignments to non-local variables and passing non-local variables as actuals to inout/out arguments of a subroutine are not supported”. The problem is the start120[i] = $time bit of the code, but I don’t know why it is giving me this error, is the array start120 local to the loop? Any help would be much appreciated!
//check that the period of the 120kHz clocks is 8.333us
generate
for(genvar i = 0; i < 13; i++)
begin : check_120kHz_period
time start120[];
assert property (@(posedge clocks_120kHz[i]) disable iff(!clock_enables_120kHz[i])(1, start120[i] = $time)
|=> ((($time - start120[i]) >= 8.3us) || ($time - start120[i] <= 8.4us))); //will need to adjust tolerance TBD
end
endgenerate