問題タブ [system-verilog-dpi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - エラー: 代入で 'bool' を 'svLogic*' に変換できません
システム 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_putScalar
DPI IEEE Std 1800-2012標準に合わせて変更するのは大変です。定義済みの関数ロジックを次のように変更しました。
mem_req_rdy = mm->req_cmd_ready();
ここで、mem_req_rdy は svLogic であり、req_cmd_ready は bool です。
struct - Systemverilog: 構造体をモジュールの入力\出力として渡すとシミュレーション エラーが発生する
ある構造を入力として渡し、別の構造で出力を取得しようとしています。ただし、シミュレーション中にいくつかの問題が発生しています。次のサンプル コードは questasim で正常にコンパイルされますが、シミュレーションで次のエラーが発生します。
接続タイプ 'core_tb_sv_unit.struct ' は、ポート (struct_in) の 'core_sv_unit.struct ' と互換性がありません: 構造体/共用体のタイプが一致する必要があります。
MyStruct.sv
core.sv
core_tb.sv
私は何が欠けていますか?.
ここではインターフェイスが推奨されるワークフローであることは知っていますが、モデルへの入力は DPI を使用して C ルーチンに渡されます。DPI インターフェイスは構造体をサポートしていますが、インターフェイスをサポートしているとは思いません。だからこそ、シンプルな構造にこだわりたい。
c - C 関数を呼び出す Verilog プログラムをコンパイルして実行する方法は?
私は DPI 呼び出しを使用しようとはしていませんが、PLI を内部的に使用して C 言語で記述された関数を呼び出す単純な Verilog プログラムを使用しています。静的リンクについてはわかりません。私はedaplaygroundを使用しています。
Verilog と C の両方をリンクするには、どのシミュレーターを使用し、スイッチを渡す必要があるか教えてもらえますか? C ファイルを Verilog に含める必要がありますか?
サンプルコードは次のとおりです。
現在、pli コール hello が検出されないため、pli を登録する必要があるかどうかを知りたいです。
c - SV-DPIを使用してCからSVに配列を渡す方法は?
私の目的は、C から SV に配列を渡し、配列の内容を SV に出力することです。次の C プログラムを試して、いくつかのテキスト ファイル (data_file.txt) (以下のリンクにある完全なソースを参照) を配列に変換して試してみました。 SystemVeilog(SV) で DPI 呼び出しを使用して配列を読み戻すには、「C」で配列値をメイン関数内にある関数 (mydisplay) に渡しました (ここで間違っている場合は修正してください)。配列の値が SV 環境に読み戻されていないようです。その理由は何でしょうか。SV で配列を効率的に取得する方法はありますか?
cコード:
SVコード:
EDAplaygroundのソース