我是 systemverilog 和 SVA 的新手,我正在尝试为 prbs 生成器创建一个断言,logic [6:0]
在 127 个时钟周期后将任何给定的数组 ( ) 与相同的数组进行比较。问题是我发现有助于比较数组的运算符不允许并发,而允许并发的运算符仅使用位进行操作。
试图举例说明我想做的事情是这样的:
logic [6:0] seq
assert property (@posedge clock) (seq === #127 seq));
我是 systemverilog 和 SVA 的新手,我正在尝试为 prbs 生成器创建一个断言,logic [6:0]
在 127 个时钟周期后将任何给定的数组 ( ) 与相同的数组进行比较。问题是我发现有助于比较数组的运算符不允许并发,而允许并发的运算符仅使用位进行操作。
试图举例说明我想做的事情是这样的:
logic [6:0] seq
assert property (@posedge clock) (seq === #127 seq));
类似于以下内容:
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节。