0

Verilog システム関数 $value$plusargs がタスクとして呼び出されました。戻り値は無視されます

基本的に i2c を介して値を読み書きしようとしている verilog テストのコンパイル中に上記のエラーが発生します。以前はこのエラーは発生していませんでした。何が変更され、このエラーが発生したのかわかりません。また、このエラーは、テストベンチ インフラストラクチャを含む tb.v という別のファイルを指しています。それが tb.v で指している行は、「ifdef TEST」とだけ言っています

4

2 に答える 2

3

このエラー メッセージは、戻り値に対して何もせずに値を返す関数を呼び出していることを意味します。Brian が指摘したように、$value$plusargsは値を返すので、それを何かに割り当てるか、SystemVerilog で を使用して無視する必要がありvoid'(..)ます。

// For Verilog
reg result;
result = $value$plusargs(...);

-

// For SystemVerilog
void'($value$plusargs(...));

plusarg が一致したかどうかを知りたい場合もあります。その場合、次のようにコーディングするのが最適です。

if ($value$plusargs(...)) begin
  // do something
end

突然これが表示されるようになった理由の 1 つは、ソースが Verilog ではなく SystemVerilog としてコンパイルされるように何かを変更した場合です。これはツールに依存しますが、特定のコンパイラが SystemVerilog でこれについて文句を言うことがありますが、Verilog ではそうではありません。

于 2013-03-29T21:51:06.400 に答える
0

$value$pluargs は値を返す関数です。この値は、呼び出しが成功したかどうかです。取得しようとしている +arg の値ではありません。結果を何かに割り当てないと、一部のシミュレーターが動揺するのを見てきました。

基本的にこれで修正されます:

reg dummy;
dummy = $value$plusargs(...)
于 2013-03-29T21:38:53.287 に答える