-1

私はこのSVコードを持っています:

module m1 (input int a);
    always begin #1; force a=a+1; end
endmodule

module m ();
    int a;  
    m1 m1(a);
endmodule

上記のコードのこのステートメントは有効ですforce a=a+1;か?

4

2 に答える 2

1

シミュレーターで動作する可能性がありますが、お勧めしません。

IEEE std 1800-2009 セクション 10.6 では、force ステートメントを「手続き型の連続代入」と定義しています。LRM には、式の右側の値が変更されると、新しい値が右側の変数に強制的に適用されるという例があります。この場合a=a+1、技術的には無限ループが発生するはずですが、スケジュール ルールにより発生しない可能性があります。

一般forceに、控えめに使用し、テスト ベンチおよびビヘイビア モデリングで使用する必要があります。関数式は強制的に使用できますが、循環依存は避ける必要があります。定数式を割り当てるのが最善forceです。

于 2013-02-05T19:10:29.077 に答える
0

はい、この場合の動作は明確に定義されていると思います。モジュール m1 には強制された値が表示されますが、囲んでいるモジュールには表示されません。

于 2013-02-05T17:12:39.863 に答える