一 断言简介
断言是对设计行为属性的描述。它使用描述性语言来描述了设计必须满足的属性。
使用断言的原因:
1.Verilog语言是一种过程性设计语言,在硬件设计过程中不能很好的描述时序行为。
2.SVA是一种描述性语言,可以很好的描述和控制复杂设计的时序的相关问题。
基于断言的验证方法(ABV)是对验证的增补,断言还可以对总线协议进行定义和验证(AHB/APB)。
二 断言分类
1. 立即断言:是非事件性的,类似if语句中的条件表达式,用于检查表达式的值是否为真。如:
assert_info:assert(expression)
$display("passed"); //expression为真时,执行语句
else
$display("failed"); //expression为假时,执行语句
2. 并发断言:基于时钟周期,用于描述一个跨时钟周期的行为,使用关键字property...endproperty描述事件。如:
//当行为属性p_shakehand中的条件request为真时,结果序列必须为真,否者序列失败
property p_shakehand;
@(posedge clk)
//符号“|=>”左侧的为原因序列,右侧为结果序列
request |=> acknowledge ##1 data_enable