3

私は、System Verilog で記述された一部のハードウェア用に C++ で記述された高レベルのシミュレーターに取り組んでいます。

System Verilog コードには、ロジックのみを含む (つまり、時間のかかるものやフリップフロップを含まない) 多数の関数が含まれています。このコードを C++ シミュレーターで再利用したいと考えています。

これらの関数を C++ (または C++ に簡単にリンクできる C) で再利用する方法はありますか?

  • コンパイル前に System Verilog を C/C++ に変換しますか?
  • System Verilog を C/C++ で呼び出し可能な関数にコンパイルしますか?
  • その他の方法で?
4

5 に答える 5

3

通常、この種の統合は逆方向、つまり Verilog から C/C++ ルーチンを呼び出すことで行われます。もちろん、それは検証コンポーネントに対してのみ意味があり、合成できないことは明らかです。あなたが望むことを行うための最も可能性の高い環境は SystemC/Verilog コシミュレーションですが、これは Verilog シミュレーター (明示的に望まない) と SystemC を使用する C モデルの両方を使用することを意味します。

高性能を求めるシミュレーターは、多くの場合、C またはネイティブ コードを生成します。VCS (私が最もよく知っているシミュレーター) で生成されたコードから特定の関数を抽出する方法は知りませんが、オープン ソース シミュレーターの 1 つを使用すると可能かもしれません。商用 (つまり、ライセンス供与された) シミュレータは、ライセンスなしで実行できるコードの生成をサポートしていない可能性があります。Verilog 関数をシミュレータから独立して使用したいというあなたの欲求が、ライセンス、実行時のオーバーヘッド、ツールのインストールの負担、またはまったく別の理由によるものかどうかはわかりません。

SystemVerilog ルーチンを維持していないと仮定しているので、それらの実装方法を変更することはできないかもしれません。ただし、可能であれば、C と Verilog の両方で機能が必要な場合の一般的な戦略の 1 つは、単一の定義を C と Verilog の実装に変換できるコード ジェネレーターを作成することです。

もう 1 つの難解な可能性は、SystemC 合成です。これは比較的新しいものであり、経験はありませんが、ツールにアクセスでき、関数で機能する場合は、C モデル、ハードウェア シミュレーション、および合成に C 実装を再利用できます。

于 2011-05-11T18:20:47.967 に答える
2

クイック検索でVerilog2C++Verilatorが見つかりました。私はこれらのプログラムを使用していません。自分で試す必要があります。

于 2011-05-11T10:47:45.810 に答える
1

基礎となる SV/Verilog シミュレーター (Icarus/CVC の無料のものなど) がある場合は、DPI を使用できます。それ以外の場合は、Verilator を試すことができます。SV よりも Verilog/V2K の方が多いと思います。SV コードを Verilog にマップできますか?

于 2011-05-11T13:06:40.947 に答える
0

Verilator は、あなたの目的に最適なツールです。基本的に、Verilator は設計を最上位モジュールの表現である C++ クラスにコンパイルできます。次に、カスタム C++ コードで C++ クラスを駆動および刺激することにより、デザインをシミュレートできます。

Verilator は DPI インターフェイスもサポートしています。つまり、Verilog 関数/タスクを C++ 関数にエクスポートし、C++ 関数をインポートして Verilog コードで使用できます。

于 2014-09-05T10:52:27.367 に答える
0

Verilator と DPI については、私がどのように評価したかをご覧ください。

「... cpp (c++) 検証ベンチ、システム Verilog DPI、Verilog DUT を使用して練習するために、ベリレーターをダウンロードして自習演習を行うことにしました。

まず、ソフトウェアをインストールしました。これは、debian マシンではかなり単純です: apt-get install verilator..." http://bknpk.ddns.net/my_web/SystemC_MyFirst/veilator_my_first.html

于 2014-12-27T15:52:08.863 に答える