1

我想将延迟的 SystemVerilog 断言转换为形式验证器的 invarspec。合成器在下面的代码行中给出 ##1 的语法错误。

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

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

4

1 回答 1

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 ) );
于 2017-02-17T21:14:23.650 回答