問題タブ [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.

0 投票する
4 に答える
2226 参照

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_putScalarDPI IEEE Std 1800-2012標準に合わせて変更するのは大変です。定義済みの関数ロジックを次のように変更しました。 mem_req_rdy = mm->req_cmd_ready();ここで、mem_req_rdy は svLogic であり、req_cmd_ready は bool です。

0 投票する
1 に答える
1656 参照

struct - Systemverilog: 構造体をモジュールの入力\出力として渡すとシミュレーション エラーが発生する

ある構造を入力として渡し、別の構造で出力を取得しようとしています。ただし、シミュレーション中にいくつかの問題が発生しています。次のサンプル コードは questasim で正常にコンパイルされますが、シミュレーションで次のエラーが発生します。

接続タイプ 'core_tb_sv_unit.struct ' は、ポート (struct_in) の 'core_sv_unit.struct ' と互換性がありません: 構造体/共用体のタイプが一致する必要があります。

MyStruct.sv

core.sv

core_tb.sv

私は何が欠けていますか?.

ここではインターフェイスが推奨されるワークフローであることは知っていますが、モデルへの入力は DPI を使用して C ルーチンに渡されます。DPI インターフェイスは構造体をサポートしていますが、インターフェイスをサポートしているとは思いません。だからこそ、シンプルな構造にこだわりたい。

0 投票する
1 に答える
2335 参照

c - C 関数を呼び出す Verilog プログラムをコンパイルして実行する方法は?

私は DPI 呼び出しを使用しようとはしていませんが、PLI を内部的に使用して C 言語で記述された関数を呼び出す単純な Verilog プログラムを使用しています。静的リンクについてはわかりません。私はedaplaygroundを使用しています。

Verilog と C の両方をリンクするには、どのシミュレーターを使用し、スイッチを渡す必要があるか教えてもらえますか? C ファイルを Verilog に含める必要がありますか?

サンプルコードは次のとおりです。

現在、pli コール hello が検出されないため、pli を登録する必要があるかどうかを知りたいです。

0 投票する
1 に答える
3306 参照

c - SV-DPIを使用してCからSVに配列を渡す方法は?

私の目的は、C から SV に配列を渡し、配列の内容を SV に出力することです。次の C プログラムを試して、いくつかのテキスト ファイル (data_file.txt) (以下のリンクにある完全なソースを参照) を配列に変換して試してみました。 SystemVeilog(SV) で DPI 呼び出しを使用して配列を読み戻すには、「C」で配列値をメイン関数内にある関数 (mydisplay) に渡しました (ここで間違っている場合は修正してください)。配列の値が SV 環境に読み戻されていないようです。その理由は何でしょうか。SV で配列を効率的に取得する方法はありますか?

cコード:

SVコード:

EDAplaygroundのソース