-2

システム Verilog DPI 呼び出しに取り組んでいます。ファイルのコンパイル中C++に、次のようなエラーが発生します。

エラー: 代入で 'bool' を 'svLogic*' に変換できません

ここsvLogicに 4 状態変数があります。

VCS シミュレーターには、DirectC メソッドvc_putScalarで事前定義された関数があり、vc_putScalar は「スカラー reg またはビットの値を参照によって vc_handle に渡します」です。vc_handle は、関数の入力変数または出力変数です。VCS では、以下を使用できます。vc_putScalar(mem_req_rdy, mm->req_cmd_ready());

私たちは、Modelsim questa シミュレーターに取り組んでいるため、DirectC は機能しません。vc_putScalarDPI IEEE Std 1800-2012標準に合わせて変更するのは大変です。定義済みの関数ロジックを次のように変更しました。 mem_req_rdy = mm->req_cmd_ready();ここで、mem_req_rdy は svLogic であり、req_cmd_ready は bool です。

4

4 に答える 4

0

あなたが持っていたことを考えると:

vc_putScalar(mem_req_rdy, mm->req_cmd_ready());

mem_req_rdyはポインター型svLogic*であると推測しています (関数vc_putScalarの名前から、mem_req_rdyに保持されている値を変更するつもりのようです)。したがって、次のステートメントのようにポインターを逆参照する必要があります。

*mem_req_rdy = mm->req_cmd_ready();
于 2015-06-02T07:44:14.873 に答える