sva断言,就是system
verilog assertion。在设计中插入断言,当被验证的单元的属性不符合预期,则断言失败;如果被禁止的属性被触发,则断言失败。
断言在仿真器执行时会被不断监控,当监控断言失败就会打印错误信息。
断言分两种,一种是并发断言,一种是即时断言,前者基于时钟周期,边沿采样,与时序有关;后者模拟事件,类似组合电路。
断言模块中包含:1、建立属性property;2、序列表达式;3、布尔表达式;4、断言。属性中包含:变量定义,时钟制定,不执行属性检验的内容,该属性需要检验的内容。
例:
property a1; //定义属性a1
logic var; //局部 变量定义
@posedge clk //并发时钟
disale iff (rst) //不执行该属性检验的内容
($rose(a)|->b) //该属性检验的内容
序列:有简单序列形式,边沿定义序列,逻辑关系序列,序列使用形参,时序关系序列。
SVA内定义的时钟,在序列,属性,断言中均可加入时钟,但只允许使用一个时钟。一般建议在属性中指定时钟。
蕴含:交叠蕴含与不交叠蕴含。前者表示在同一时钟周期,计算后续因子,后者表示在下一时钟周期计算后续因子。
时序窗口:可以控制在条件触发后几拍内判断表达式结果。