1

以下のようにプロパティをチェックするSVアサーションがあります

propert my_property;
@(posedge clk) disable iff(reset) $rose(halt) ##0 ((rx_prio) > (expec_prio)) ##[0:$] $rose(rdy) |-> ##[1:100] (my_prio[rx_prio]==1'b1);
endproperty:my_property

以下のような主張があります。

MY_PROPERTY_CHECK:assert property (my_propert)
else
$error;

ここでのシナリオは、前件が真であり、後件が 1 ~ 100 クロック サイクルの間でチェックされるというものです。前例の後、クロック ゲーティングによりクロックがしばらく停止し、その後、クロックは再びカチカチと動き始めます。信号my_prio[rx_prio]は、クロック ゲーティングの後、100 クロック サイクル以内に再びアサートされます。しかし、私はまだアサーションの失敗を取得します。

失敗の問題を理解することができません。アサーション チェック間のクロック ゲーティングに問題はありますか? または他の理由の失敗?ありがとう。

4

2 に答える 2

0

あなたのセットアップがわからないので、ゲートされていない階層のさらに上のクロックでトリガーしている可能性があると推測できますが、クロックがゲートされている正確な階層でウェーブをデバッグします。

アサーションを後付けできない RTL ブロック (VHDL/Verilog であるか、ファイルに触れることが許可されていない) のアサーションを記述している場合は、bind を使用してそのブロック内でアサーションをインスタンス化します: http://www.asic- world.com/systemverilog/assertions22.html

于 2014-03-04T11:16:20.453 に答える