このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
生成された SystemVerilog コードのカスタマイズの開始
この例では、SystemVerilog DPI コンポーネント生成プロセスで生成された SystemVerilog コードをカスタマイズする方法を示します。
要件と前提条件
この例に必要な製品:
MATLAB®
Simulink®
Simulink Coder™
Mentor Graphics® ModelSim®/QuestaSim®
サポートされている C コンパイラの 1 つ:Microsoft® Visual C++、または GNU GCC
背景
デフォルトで生成された SystemVerilog コードが要件を満たさない場合は、生成されたコードをカスタマイズするオプションがあります。この例では、生成されたコードをカスタマイズする方法を示します。
次のSimulinkモデルでは、サブシステム F0、F2、F3、および F4 に対応する生成コードが SystemVerilog モジュールとして個別にエクスポートされます。デフォルトでは、各モジュールにはクロック、クロック イネーブル、リセットという 3 つの制御信号が含まれています。HDL シミュレーションでは、サブシステムの更新および出力関数がクロック信号の立ち上がりエッジで呼び出されます。イベント スケジューラは、 Simulinkモデルと同じシーケンスで、HDL シミュレータでこれらの更新および出力関数をトリガーします。
例を開く
次のコードを実行してデザインを開きます
open_system('svdpi_SimpleFeedBack');
コード生成用のモデルをセットアップする
svpid_SimpleFeedBack モデルから[Simulinkモデル コンフィギュレーションパラメーター]パネルを開きます。次のパラメーターを設定します。
[コード生成] -> [システム ターゲット ファイル] を選択します。「参照」ボタンをクリックし、「systemverilog_dpi_grt.tlc」を選択します。
[ツールチェーン] 設定で、Windows を使用している場合は Visual Studio バージョンのいずれかを選択し、Linux を使用している場合は GCC ツールチェーンのいずれかを選択します。「コードのみを生成する」オプションがオフになっていることを確認してください。
[コード生成] -> [SystemVerilog DPI] を選択し、[生成された SystemVerilog コードをカスタマイズする] オプションをオンにします。「ソースファイルテンプレート」がデフォルトのテンプレート「svdpi_event.vgt」に設定されていることを確認してください。
「編集」ボタンをクリックして、デフォルトの SystemVerilog テンプレートを表示することもできます。
これで、[コンフィギュレーションパラメーター]パネルの作業は完了です。「OK」ボタンをクリックして閉じます。
SystemVerilog DPI コンポーネントの生成
「svdpi_SimpleFeedBack」モデルで、サブシステム F0、F2、F3、および F4 の C コードを生成します。MATLABで次のコマンドを実行すると、コマンド ラインから C コードを生成できます。
slbuild('svdpi_SimpleFeedBack/F0') slbuild('svdpi_SimpleFeedBack/F2') slbuild('svdpi_SimpleFeedBack/F3') slbuild('svdpi_SimpleFeedBack/F4')
これらのサブシステムの C コードは、それぞれサブディレクトリ "F0_build"、"F2_build"、"F3_build"、および "F4_build" に生成されます。
テストベンチファイル
テストベンチ "SimpleFeedback_tb.sv" では、制御信号がSimulinkの実行順序の高いモジュールからSimulinkの実行順序の低いモジュールに流れるように接続されています。
生成されたテストベンチを実行する
ModelSim/QuestaSim を GUI モードで起動し、ディレクトリをMATLABの現在のディレクトリに変更します。ModelSim/QuestaSim で次のコマンドを入力してデザインをコンパイルします。
do build.do
ModelSim/QuestaSim で次のコマンドを入力して設計をシミュレーションします。
do sim.do
シミュレーションが終了したら、ModelSim の波形ウィンドウで各サブシステムの出力とキャプチャされた信号の違いを調べることができます。