このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
MATLABベースの SystemVerilog DPI 生成を開始する
この例では、 MATLAB®で記述されたプログラマブル方形波ジェネレーターの SystemVerilog DPI コンポーネントを生成し、それを HDL シミュレーターにエクスポートする方法を示します。
デモの目的で、この例では 64 ビット Windows® 7 で Modelsim® 10.3c を使用します。ただし、これと同じ手順を他のシステムやシミュレータでも簡単に複製できます。
要件と前提条件
この例に必要な製品:
MATLAB Coder™
シミュレーター:Mentor Graphics® ModelSim®/QuestaSim® または Cadence® Xcelium™
サポートされている C コンパイラの 1 つ:Microsoft® Visual C++、または GNU GCC
MATLAB 設計
この例で使用されるMATLABコードは、単純なプログラム可能な方形波発生器を示しています。この例では、設計を実行するMATLABテスト ベンチも提供します。
デザイン: ProgSWGenerator
テストベンチ: ProgSWGenerator_tb
次の図は、この例で生成される DPI コンポーネントを示しています。
「On_time」と「Off_time」は出力信号のデューティ サイクルを制御します。
たとえば、On_time=1 および Off_time=1 の場合、生成される方形波のデューティ サイクルは 50% になります。
付属のMATLABテストベンチを使用して設計をシミュレーション
実行時エラーがないこと、およびデザインが要件を満たしていることを確認するには、コード生成前に提供されたテストベンチを使用してデザインをシミュレートします。MATLABに次のコマンドを入力します。
ProgSWGenerator_tb
以下の図がプロットされるはずです。
このプロットは、次のように動作するようにプログラムされた出力信号を示していることに注意してください。
クロックサイクル<100: オン=1、オフ=1
100<クロックサイクル<250: オン=2、オフ=1
250<クロックサイクル: on=1、off=2
DPIGEN コマンドを使用して DPI コンポーネントを生成する
DPIGEN を使用して、DPI コンポーネントを生成します。
次のようにMATLABで DPIGEN コマンドを実行します。
dpigen -testbench ProgSWGenerator_tb ProgSWGenerator -args {0,0}
次のディレクトリ構造が生成されます。
dpi_tb:すべてのテストベンチ関連ファイルが格納されるフォルダー。
ProgSWGenerator_dpi.sv:生成された DPI コンポーネント。
ProgSWGenerator_dpi_pkg.sv:生成された SystemVerilog パッケージ。
libProgSWGenerator_dpi.dll:インポートされたすべての関数の定義を含むライブラリ。
メモ: DPIGEN は自動的にライブラリのコンパイルを試みます。コンパイルせずにファイルを生成するだけするには、-c オプションを使用する必要があります。以下に例を示します。
dpigen -c -testbench ProgSWGenerator_tb ProgSWGenerator -args {0,0}
HDL シミュレーターで生成されたテストベンチを実行する
ModelSim/QuestaSim の場合は、次の手順を実行します。
ModelSim/QuestaSim を GUI モードで起動します。
HDL シミュレーターで、現在のディレクトリをコード生成ディレクトリの下の「dpi_tb」に変更します。
次のコマンドを入力してシミュレーションを開始します
do run_tb_mq.do
以下に例を示します。
次の波形が生成されます。
出力波形 (一番下の波形) は、 MATLABテストベンチでプロットされた信号とまったく同じように動作することに注意してください。
Xcelium および VCS シミュレーターの場合:
ターミナルシェルを起動します
カレントディレクトリをコード生成ディレクトリ下の「dpi_tb」に変更します。
Xcelium の場合は、シェルに次のコマンドを入力します。
sh run_tb_xcelium.sh
VCS の場合は、シェルに次のコマンドを入力します。
sh run_tb_vcs.sh
シミュレーションが終了すると、コンソールに次のテキストが表示されるはずです。
**************TEST COMPLETED (PASSED)**************
これで、 MATLABベースの SystemVerilog DPI コンポーネント生成の開始例は終了です。