【问题标题】:Gate-level timing checks in SVASVA 中的门级时序检查
【发布时间】:2022-08-19 23:52:28
【问题描述】:

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

SVA 是否为此提供语法?

    标签: system-verilog system-verilog-assertions


    【解决方案1】:

    不打算用作门级时序检查。 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
    

    【讨论】:

    • 如果 a 为高,则 b 应在 posedge 时钟发生后断言为高 1ps,这实际上是我要检查的。
    • @yildizabdullah,我更新了代码以反映您的其他要求。
    • 隐含运算符不应该是|=&gt; 而不是=&gt;
    猜你喜欢
    • 1970-01-01
    • 2013-05-15
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多