HDL ワークフロー アドバイザーを使用したコードの生成と FPGA での合成
HDL ワークフロー アドバイザーは、次のような Simulink® サブシステムの HDL コードを生成する各段階と、FPGA 設計プロセスをサポートします。
モデルに HDL コード生成との互換性があるか確認し、非互換設定を自動的に修正。
HDL コード、テスト ベンチ、コードとテスト ベンチをビルドして実行するスクリプトの生成。
コシミュレーションまたは SystemVerilog DPI テスト ベンチ、コード カバレッジの生成 (HDL Verifier™ が必要)。
サードパーティ製の合成ツールとの統合による合成とタイミング解析。
合成時に取得したクリティカル パスなどの情報によるモデルのバックアノテーション。
FPGA インザループ シミュレーション (HDL Verifier が必要) を含む、選択した FPGA 開発ターゲット デバイスと Simulink Real-Time™ FPGA I/O ワークフローに対する完全な自動ワークフロー。
FIR フィルター モデル
この例は、FIR フィルター モデルの HDL コードを生成し、FPGA デバイスで設計を合成する方法を示します。HDL コードを生成する前に、モデルは HDL コード生成と互換性がなければなりません。HDL 互換性についてモデルのチェックと更新を行うには、HDL コード アドバイザーを使用した Simulink モデルの HDL 互換性のチェックを参照してください。HDL ワークフロー アドバイザーは Simulink Online™ では使用できません。
この例では、HDL コード生成と互換性のある対称 FIR フィルター モデルを使用します。このモデルをコマンド ラインで開くには、次を入力します。
sfir_fixed

モデルは、HDL 設計に適した作業分担を使用します。
フィルターのアルゴリズムを実装する
symmetric_fir
サブシステムがテスト対象デバイス (DUT) です。HDL エンティティはこのサブシステムから生成されます。サブシステムを駆動する最上位のモデル コンポーネントはテスト ベンチとして機能します。
最上位モデルは symmetric_fir
サブシステムに対して 16 ビットの固定小数点入力信号を生成します。Signal From Workspace ブロックはフィルターに対するテスト入力 (スティミュラス) 信号を生成します。4 つの Constant ブロックがフィルター係数を示しています。Scope ブロックはシミュレーションに使用され、HDL コード生成には使用されません。
symmetric_fir
サブシステムに移動するには、次を入力します。
open_system('sfir_fixed/symmetric_fir')
フォルダーの作成と関連ファイルのコピー
MATLAB® で、以下を実行します。
sl_hdlcoder_work
という名前のフォルダーを作成します。たとえば、次のようにします。mkdir C:\work\sl_hdlcoder_work
sl_hdlcoder_work
は、モデル例とフォルダーのローカル コピーおよび生成された HDL コードを保存します。MATLAB フォルダー ツリー内ではないフォルダーの場所を使用します。sl_hdlcoder_work
を作業フォルダーにします。たとえば、次のようにします。cd C:\work\sl_hdlcoder_work
sfir_fixed
モデルのローカル コピーを現在の作業フォルダーに保存します。モデルを開いたままにしておきます。
ツール パスの設定
設計を合成せずに HDL コードを生成する場合、ツール パスを設定する必要はありません。HDL ワークフロー アドバイザーの [ターゲットを設定] 、 [ターゲット デバイスおよび合成ツールを設定] の手順で、[合成ツール] 設定を既定の [No Synthesis Tool Specified]
のままにして、ワークフローを実行します。
ターゲット プラットフォームで設計を合成する場合、HDL ワークフロー アドバイザーを開いてワークフローを実行する前に、合成ツールへのパスを設定します。この例では Xilinx®Vivado® を使用するため、XilinxVivado が既にインストールされていなければなりません。ツール パスを設定するには、インストールされている Xilinx Vivado 2019.2 の実行可能ファイルを指し示すように関数 hdlsetuptoolpath
を使用します。必要に応じて、任意の別の合成ツールを使用して、この例を実行することができます。合成ツールへのパスを設定するには、hdlsetuptoolpath
を使用します。サポートされている最新のツールについては、HDL の言語サポートおよびサポートされるサードパーティ製ツールとハードウェアを参照してください。
hdlsetuptoolpath('ToolName','Xilinx Vivado','ToolPath',... 'C:\Xilinx\Vivado\2019.1\bin\vivado.bat');
HDL ワークフロー アドバイザーを開く
Simulink モデルから HDL ワークフロー アドバイザーを開くには、次の手順に従います。
[アプリ] タブで、[HDL Coder] を選択します。[HDL コード] タブが表示されます。
モデルの DUT サブシステムを選択し、その Subsystem 名が [次のコード] オプションに表示されることを確認します。選択内容を記憶しておくために、このオプションは固定できます。[ワークフロー アドバイザー] をクリックします。
HDL ワークフロー アドバイザーを開くときに、プロジェクト フォルダーに互換性がないという警告がコード ジェネレーターで発生することがあります。アドバイザーを開くには、[slprj を削除して続ける] を選択します。
HDL ワークフロー アドバイザーの左側のペインに階層内のフォルダーのリストが表示されます。各フォルダーは、関連するタスクのグループまたはカテゴリを表しています。左側のペインから、フォルダーまたは個々のタスクを選択できます。HDL ワークフロー アドバイザーは選択されたフォルダーまたはタスクに関する情報を右側のペインに表示します。
個々のタスクの詳細については、そのタスクを右クリックし、[これはなに?] を選択します。
[HDL ワークフロー アドバイザー] ウィンドウの詳細については、HDL ワークフロー アドバイザーのご利用の前にを参照してください。
HDL コードの生成と FPGA での合成
[ターゲットを設定] 、 [ターゲット デバイスおよび合成ツールを設定] 手順で、[合成ツール] に
[Xilinx Vivado]
を選択して [このタスクを実行] を選択します。コードを生成するには、[RTL コードとテスト ベンチを生成] タスクを右クリックし、[選択したタスクまで実行する] を選択します。
[FPGA 合成および分析] 、 [合成および P/R を実行] 、 [実装を実行] のタスクで、[このタスクをスキップ] の選択を解除し、[適用] をクリックします。
[合成結果をもつモデルに注釈を付ける] を右クリックし、[選択したタスクまで実行] を選択します。
スクリプトを使用したコマンド ラインでのワークフローの実行
コマンド ラインで HDL ワークフローを実行するには、ワークフロー アドバイザー設定をスクリプトにエクスポートします。スクリプトにエクスポートするには、[HDL ワークフロー アドバイザー] ウィンドウで、[ファイル] 、 [スクリプトへのエクスポート] を選択します。[Export Workflow Configuration] ダイアログ ボックスで、ファイル名を入力してスクリプトを保存します。
スクリプトは、コマンド ラインから実行できる MATLAB ファイルです。スクリプトを直接変更するか、スクリプトを HDL ワークフロー アドバイザーにインポートし、タスクを変更して、更新したスクリプトをエクスポートします。詳細については、スクリプトを使用した HDL ワークフローの実行を参照してください。