【发布时间】:2022-08-19 23:52:28
【问题描述】:
我需要在时钟沿发生一定时间后检查信号的值。例如,我想检查信号 b 在 posedge 时钟发生后是否断言为高 1ps。
SVA 是否为此提供语法?
标签: system-verilog system-verilog-assertions
我需要在时钟沿发生一定时间后检查信号的值。例如,我想检查信号 b 在 posedge 时钟发生后是否断言为高 1ps。
SVA 是否为此提供语法?
标签: system-verilog system-verilog-assertions
system-verilog-assertions 不打算用作门级时序检查。 Verilog 已经提供了许多内置和优化的时序检查,例如 $setuphold 和 $skew。见部分31. 时间检查在IEEE 1800-2017 SystemVerilog LRM。
时序检查通常表示为限制——任何一个断言都发生在至少时钟沿后 1ps,或在最多时钟沿后 1ps。还,必须b 在每个时钟沿后被断言?无论这些问题的答案如何,都可以使用 SVA 对时序检查进行建模,但您必须根据实际需求手动创建方程式。例如
property p;
realtime timestamp;
@(posedge c) ($rose(a), timestamp = $realtime) |=>
@(posedge b) $realtime - timestamp < 1ps;
endproperty
【讨论】:
|=> 而不是=>?