SVA 中的门级时序检查

Gate-level timing checks in SVA

我需要在时钟边沿出现一定时间后检查信号值。例如,我想检查信号 b 在 posedge 时钟出现后是否断言为高 1ps。

SVA 是否为此提供语法?

were not intended for use as gate-level timing checks. Verilog already provides a number of built-in and optimized timing checks like $setuphold and $skew. See section 31. Timing checks in the IEEE 1800-2017 SystemVerilog LRM.

时序检查通常表示为限制——断言发生在时钟边沿后 least 1ps,或发生在时钟边沿后 most 1ps时钟边沿。此外, 必须 b 在每个时钟边沿之后被断言?不管这些问题的答案如何,都可以使用 SVA 对时序检查进行建模,但您必须根据实际需求手动创建方程式。例如

property p;
  realtime timestamp;
  @(posedge c) ($rose(a), timestamp = $realtime) => 
       @(posedge b) $realtime - timestamp < 1ps;
endproperty