0

2 つのレジスタが常に同じ値にプログラムされていないことをテストするために、即時アサーションを追加しました。すべての値が初期化されておらず、「x」であるため、時間 0fs でエラーが発生します。

always @(*) begin
  assert_reg_val_cmp:
  assert (reg != 1'b1) else $error("...error msg...");
end

このアサーションを最初だけきれいに無効にする方法はありますか? 「x」も比較する比較を使用できますreg !== 1'b1が、0fs の後の「x」状態をすべてキャッチしたいと考えています。

4

1 に答える 1

0

SystemVerilog を使用している場合は、always_comb代わりにalways @(*)使用してください。後者には、入力の 1 つが定数であることが判明した場合に実行されないという問題があります。

レジスタが時間 0 で初期化されるようにする場合は、遅延アサーションを使用します。

always_comb begin
  assert_reg_val_cmp:
  assert #0 (reg != 1'b1) else $error("...error msg...");
end

しかし、これに並行アサーションを使用したくないのはなぜですか?

于 2015-12-09T23:37:04.030 に答える