系统verilog断言禁用条件

问题描述 投票:0回答:1

我有这个断言来检查clk freq:

assert property clk_freq;
int cnt;
@(posedge fast_clk, clk_1MHz) disable_iff(!enable_check)
($rose(clk_1MHz), cnt=0) |=> (!$rose(clk_1MHz),cnt++) [*0:$] ##1 $rose(clk_1MHz), cnt==fast_clk_freq;
endproperty

在断言disable_check之后,fast_clk开始在模拟期间(而不是从开始)切换。问题是,似乎断言忽略了disable_iff问题:即使断言被禁用(或者我错过了其他什么?),$ rose(clk_1Mhz)事件“已注册”

system-verilog system-verilog-assertions
1个回答
0
投票

没有disable_iff关键字,它是disable iff(没有下划线)。属性可以有局部变量,但局部变量不能与assert内联定义。分离属性定义和断言实例化。

时钟采样似乎不正确。 @(posedge fast_clk, clk_1MHz)意味着上升fast_clk或任何clk_1MHz的变化。 clk_1MHz是采样数据值,因此它不应该是时钟。

qazxsw poi是非法语法,建议:qazxsw poi

建议的属性定义和断言实例化:

$rose(clk_1MHz), cnt==fast_clk_freq

有关断言的更多信息,请参阅$rose(clk_1MHz) ##0 cnt==fast_clk_freq的第16节。

© www.soinside.com 2019 - 2024. All rights reserved.