SVA并发数组比较

时间:2016-08-25 08:30:05

标签: system-verilog system-verilog-assertions

我是systemverilog和SVA的新手,我试图为prbs生成器创建一个断言,将任何给定的数组(logic [6:0])与之后的127个时钟周期的相同数组进行比较。问题是我发现有助于比较数组的运算符不允许并发,允许并发的运算符只能用位运行。

试图举例说明我想做的事情,就像这样:

logic [6:0] seq
assert property (@posedge clock) (seq === #127 seq));

1 个答案:

答案 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上放三个东西中的一个:

  • 对本地变量的分配
  • 局部变量的增量或减量
  • 对任务,任务方法,void函数,void函数方法或系统任务的调用

IEEE 1800-2012的第16.10和16.11节。