《SystemVerilog Assertion 应用指南》学习02

文章目录

    • 1.11、SVA 中的时钟定义
    • 1.12、禁止属性

1.11、SVA 中的时钟定义

一个序列或属性,必须被断言才能发挥作用。
SVA 中时钟定 定义方法:

  • 方法1:将检查和时钟关联起来 ( 时钟定义在序列中)
    示例:
sequence s5;
	@(posedge clk) a ##2 b;
endsequence

property p5;
	s5;
endproperty

a5: assert property(p5);
// 注意: 序列 s5 中定义了时钟 —— 将检查和时钟关联在一起
  • 方法2(推荐):通常,在属性(property)的定义中指定时钟,并保持序列(sequence)独立于时钟 —— 提高序列定义的可重用性
    示例:
sequence s5a;
a ##2 b;
endsequence

property p5a;
	@(posedge clk) s5a;
endproperty

a5a : assert property(p5a);

在断言的语句中可以直接调用被检查的表达式。
示例:

sequence s5b;
a ##2 b;
endsequence

a5b : assert property(@posedge clk) s5b);

若在断言的陈述中已经调用了定义时钟的序列,就不要再次在断言语句中定义时钟
错误示例:

a5c: assert property ( @(posedge clk) p5a);		// not allow

1.12、禁止属性

禁止属性:期望属性永远为假。当属性为真时,断言失败
示例

// 序列s6: 检查当信号 " a " 在给定的时钟上升沿为高电平,那么之后的两个时钟周期之后,信号” b "   不允许  为高电平
// 关键词 " not " 用来表示属性应该永远不为真
sequence s6;
	@(posedge clk) a ##2 b;
endsequence

property p6;
	not s6;
endproperty

a6 : assert property(p6);

关键词 “ not " 用来表示属性应该永远不为真

你可能感兴趣的:(数字IC验证,学习,fpga开发)