篇2-【IMP】assertion的作用与分类


1.什么是断言?

断言是设计的属性的描述;

如果一个在模拟中被检查的属性不像我们期望的那样表现,那么这个断言失败;

如果一个被禁止在设计中出现的属性在模拟过程中发生,那么这个断言失败;

2.为什么使用断言?

(1) verilog是一种过程语言,不能很好地控制时序; verilog语言的过程性这一本质使得测试同一时间段内发生的并行时间比较困难; verilog语言没有提供内嵌的机制来提供功能覆盖的数据,用户需要自己实现该部分代码;

(2) sva是一种描述性语言,可以完美地描述时序相关的状况;此外,sva提供若干内嵌函数来测试特定的设计情况,并且提供一些构造来自动收集功能覆盖数据;

3.断言的分类

3.1 并发断言

(1) 基于时钟周期(属性在每一个时钟的上升沿被检验)

(2) 在时钟边缘根调用的变量的采样值计算测试表达式。

(3) 变量的采样在预备阶段完后,而表达式的计算在调度器的观察阶段完成。

(4) 可以被放到过程块(procedural block)、模块(module)、接口(interface),或者一个程序(program)的定义中。------并行断言的位置

(5) 可以在静态(形式的)验证和动态验证(模拟)工具中使用。

3.2 即时断言

(1) 基于模拟事件的语言(当信号发生变化时,执行检测)

(2) 测试表达式的求值就像在过程块中的其他Verilog的表达式一样。它们的本质不是时序相关的,而且立即被求值。

(3) 必须放在过程块的定义中。------即时断言的位置

3.3 并行断言与即时断言形式上的差异

(1) 关键词property;