将SystemVerilog断言与延迟转换为invarspec

时间:2016-11-22 15:39:44

标签: delay formal-verification model-checking system-verilog-assertions

我想将带有延迟的SystemVerilog断言转换为正式验证器的invarspec。合成器在下面的代码行中为## 1提供了语法错误。

assert property ( ( req1 == 0 ) ##1( req1 == 1 ) ##1 !( req2 == 1 ) || ( gnt1 == 0 ) );

有几个属性需要验证并有延迟。我目前正在尝试使用合成器将它们转换为正式(SMV)模型规范,该合成器适用于不涉及延迟的属性。我可以为这个正式的验证工具建模延迟吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

一种方法是在Verilog中显式建模信号的延迟版本,然后你可以使用一个没有时间依赖性的断言。

对于你的例子:

assert property ( ( req1 == 0 ) ##1( req1 == 1 ) ##1 !( req2 == 1 ) || ( gnt1 == 0 ) );

变为:

reg req1_r,req1_rr;

always @(posedge clk) begin
   req1_rr <= req1_r;
   req1_r <= req1;
end

assert property ( !(( req1_rr == 0 ) && ( req1_r == 1 )) 
               || !( req2 == 1 ) || ( gnt1 == 0 ) );