SVA中的门级时序检查

Gate-level timing checks in SVA

提问人:yildizabdullah 提问时间:4/6/2022 更新时间:8/19/2022 访问量:297

问:

我需要在时钟边沿出现一定时间后检查信号值。例如,我想检查信号 b 是否在正边时钟发生后置位至高 1ps。

SVA 是否为此提供了语法?

系统-verilog 系统-verilog-assertions

评论


答:

1赞 dave_59 4/6/2022 #1

不打算用作门级时序检查。Verilog已经提供了许多内置和优化的时序检查,如$setuphold和$skew。见第31节。 IEEE 1800-2017 SystemVerilog LRM 中的时序检查。

时序检查通常表示为限制,即断言发生在时钟边沿后至少 1ps,或在时钟边沿后最多 1ps 发生。另外,必须在每个时钟边沿之后断言?无论这些问题的答案如何,都可以使用 SVA 对时序检查进行建模,但您必须根据实际要求手动创建方程式。例如b

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

评论

0赞 yildizabdullah 4/6/2022
如果 a 为高电平,则 b 应该在正时钟发生后置位至高 1ps,这实际上是我想检查的。
1赞 dave_59 4/6/2022
@yildizabdullah,我更新了代码以反映您的其他要求。
0赞 yildizabdullah 4/6/2022
隐含运算符不应该是而不是吗?|=>=>