• SystemVerilog Assertions应用指南 Chapter1.29“ disable iff构造


            在某些设计情况中,如果一些条件为真,则我们不想执行检验。换句话说,这就像是一个异步的复位,使得检验在当前时刻不工作。SVA提供了关键词“ disable iff来实现这种检验器的异步复位。“ disable iff”的基本语法如下。

    disable iff (expression) <property definition>

            属性p34检查在有效开始后,信号“a”重复两次,且1个周期之后,信号“b”重复两次,再过一个时钟周期,信号“ start”为低。在整个序列过程中,如果“ reset”被检测为高,检验器会停止并默认地发出一个空成功的信号。

    1. module disableiff;
    2. logic clk, reset, start;
    3. logic a,b,c;
    4. initial $vcdpluson();
    5. initial
    6. begin
    7. clk=1'b0; reset=1'b0; start = 1'b0;
    8. repeat(2) @(posedge clk);
    9. reset = 1'b1; a=1'b0; b=1'b0; c=1'b0;
    10. repeat(2) @(posedge clk) reset = 1'b0; start = 1'b1;
    11. @(posedge clk) a=1'b1;
    12. @(posedge clk) a=1'b0;
    13. repeat(2) @(posedge clk);
    14. @(posedge clk) a=1'b1;
    15. @(posedge clk) a=1'b0;
    16. repeat(2) @(posedge clk);
    17. @(posedge clk) b=1'b1;
    18. @(posedge clk) b=1'b0;
    19. repeat(2) @(posedge clk);
    20. @(posedge clk) b=1'b1;
    21. @(posedge clk) b=1'b0;
    22. repeat(1) @(posedge clk);
    23. start = 1'b0;
    24. repeat(2) @(posedge clk);start = 1'b1;
    25. @(posedge clk) a=1'b1;
    26. @(posedge clk) a=1'b0;
    27. repeat(2) @(posedge clk);
    28. @(posedge clk) a=1'b1;
    29. @(posedge clk) a=1'b0;
    30. repeat(2) @(posedge clk);
    31. @(posedge clk) b=1'b1; reset = 1'b1;
    32. @(posedge clk) b=1'b0;
    33. repeat(2) @(posedge clk);
    34. @(posedge clk) b=1'b1;
    35. @(posedge clk) b=1'b0;
    36. repeat(1) @(posedge clk);
    37. start = 1'b0;
    38. repeat(2) @(posedge clk);
    39. $finish();
    40. end
    41. property p34;
    42. @(posedge clk) disable iff (reset) $rose(start) |=> a[=2] ##1 b[=2] ##1 !start ;
    43. endproperty
    44. a34: assert property(p34);
    45. initial forever clk = #25 ~clk;
    46. endmodule

            图1-36显示了属性p34在模拟中的响应。标记1标出了一个有效的开始,在有效开始后,信号“a”重复为高两次,接着信号“b”重复为高两次,然后信号“ start”如期望的为低。
            在整个序列的过程中,信号“ reset”如期望的始终不被激活,因此检验在标记1e处成功。第二个有效开始由标记2s标出。在有效开始后,信号“a”重复为高两次,接着复位信号“reet”在信号“b”重复两次之前被激活。这使得检查失效,属性得到一个空成功。

  • 相关阅读:
    Excel·VBA考勤打卡记录统计结果
    外骨骼机器人和人形机器人概览
    字符串单词反转
    前端面试题:基础理论整理(篇2)
    4.1 Windows驱动开发:内核中进程与句柄互转
    JDK1.8新特性---Lambda表达式
    linux启动时发生的那些事(待更)
    Pytorch 从零实现 Transformer
    Eclipse打包Springboot项目
    app毕业设计开题报告基于Uniapp+SSM实现的Android的校园新闻管理系统实现的App校园官网
  • 原文地址:https://blog.csdn.net/qq_33300585/article/details/133932463