0

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

试图举例说明我想做的事情是这样的:

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

1 回答 1

1

类似于以下内容:

property DLY;
  logic MEM [6:0];
  ( 1'b1, MEM = seq ) |-> ##127 (seq_OUT == MEM);
endproperty

DLY_CHK : assert property (@(posedge clock) DLY);

应该做的伎俩。这使用 a局部变量( , )构造来分配局部变量 ( MEM)。然后在 127 个时钟周期后对其进行检查。

使用该( , )构造,如果逗号的 LHS 为真(在我的示例中始终为真),则执行逗号的 RHS。您可能希望将 更改1'b1为某种控制信号。您可以在逗号的 RHS 上放置以下三项之一:

  • 对局部变量的赋值
  • 局部变量的递增或递减
  • 对任务、任务方法、无效函数、无效函数方法或系统任务的调用

请参阅IEEE 1800-2012的第 16.10 和 16.11节。

于 2016-08-25T15:01:27.667 回答