我是systemverilog和SVA的新手,我试图为prbs生成器创建一个断言,将任何给定的数组(logic [6:0]
)与之后的127个时钟周期的相同数组进行比较。问题是我发现有助于比较数组的运算符不允许并发,允许并发的运算符只能用位运行。
试图举例说明我想做的事情,就像这样:
logic [6:0] seq
assert property (@posedge clock) (seq === #127 seq));
答案 0 :(得分:1)
有些事情:
property DLY;
logic MEM [6:0];
( 1'b1, MEM = seq ) |-> ##127 (seq_OUT == MEM);
endproperty
DLY_CHK : assert property (@(posedge clock) DLY);
应该做的伎俩。这使用局部变量和( , )
构造来分配局部变量(MEM
)。然后在127个时钟周期后检查。
使用( , )
构造,如果逗号的LHS为真(在我的示例中总是如此),则执行逗号的RHS。您可能希望将1'b1
更改为某种控制信号。你可以在逗号的RHS上放三个东西中的一个:
见IEEE 1800-2012的第16.10和16.11节。