System Verilog Asserssions应用指南(学习笔记整理)

  • 即使断言

       即使断言与时序无关,在信号变化的时候进入判断、求值。

        ※使用场合比较少,因为一般来说SVA就是用来检查时序关系。

即使断言例:

always_test

        begin

            test:assert ( A && B);

        end

即使断言被命名为test,在A或B发生变化时,进入always块,判断A,B是否同时为1,如果不为1,断言报错。

  • 并发断言(常用)

->基于时钟周期

->在时钟边缘按照信号的采样值计算测试表达式。

Comment:

在时钟边缘采样的是上一个时钟周期的稳定值。信号A在时钟周期1,从0->1,也就是一个上升沿。在时钟周期1采样的值是0,时钟周期2采样的值才是1。当前时钟边沿的变化在下一个时钟边沿才能采到。

(这和Verilog设计中的Latch延时类似。)

【常用语法】

①SVA基本结构

//sequence(序列):用来描述待检测事件
sequence name_of_sequence;
    ;
endsequence

//property(属性):用来调用序列,也可以直接描述待检测事件
property name_of_property;
    ; or
    ;
endproperty

//assert:检查属性,插入断言
assert_name:assert property (property_name);

Comment:
    assert插入的是property,单独写序列是不能插入的,序列必须在属性中调用,然后通过assert
    才能检查属性。

你可能感兴趣的:(Verillog,fpga开发)