HDL Coder


主な機能

  • ターゲットに依存しない合成可能な VHDL コードと Verilog コード
  • MATLAB 関数、System object、Simulink ブロックに対するコード生成サポート
  • Stateflow による Mealy と Moore の有限ステート マシンおよび制御ロジックの実装
  • Xilinx、 Microsemi、および Intel 開発 ボードのプログラミング用ワークフロー アドバイザー
  • 速度と面積のトレードオフのためのリソースの共有とリタイミング機能
  • DO-254 に準拠したモデルからコードおよびコードからモデルのトレーサビリティ
  • レガシ コードとの統合
HDL Coder を使用して MATLAB または Simulink から HDL コードを生成。合成可能な VHDL コードおよび Verilog コードを MATLAB 関数、Simulink モデル、またはこの 2 つの組み合わせから生成することができます。

HDL コードの生成

HDL Coder を使用すると、FPGA および ASIC 実装用の合成可能な HDL コードを次の手順で生成することができます。

  • MATLAB コード、Simulink ブロック、Stateflow チャートを組み合わせて設計をモデル化
  • 速度と面積の設計目標を満たすようモデルを最適化
  • MATLAB および Simulink 用の統合型 HDL ワークフロー アドバイザーを使用して HDL コードを生成
  • HDL Verifier™ を使用して生成されたコードを検証

HDL Coder は可読性の良い、トレース可能、合成可能な VHDL または Verilog HDL を生成します。


HDL コードのドキュメント化とトレース

HDL Coder は、MATLAB および Simulink の関数およびブロックの命名規則を再利用して、可読性の良い VHDL および Verilog コードを作成します。HDL コードを生成する時に、トレーサビリティ レポートを作成できます。これは、生成された HDL コードから生成元の MATLAB または Simulink にリンクする HTML レポートです。

DO-254 のような信頼性の高いワークフローの場合、HDL Coder トレーサビリティ レポートと Simulink Requirementsを組み合わせることにより、HDL コードからベースとなったシステム要求へとトレースすることができます。

HDL Coder は、RMM や STARC などの一般的な産業コーディングガイドラインを満たす VHDL および Verilog を生成します。サード パーティ製の lint ツールを使用して出力を解析するためのスクリプトを生成します。設計フェーズ中に Simulink Model Advisor を使用して、HDL コードを生成する際にデザイン内の不適切な構文を特定するレポートを作成することで、これらのガイドラインにモデルを適応させることができます。


HDL コード生成の設計

アルゴリズムの実装先がハードウェアの場合、データ ブロックではなく、ビット ストリームを処理するようにアルゴリズムを変更する必要があります。一般的な手順として、データ ストリームの管理、操作の並列化、並列パスのタイミングの管理、およびデバイスの利用可能なリソース範囲内での実装が可能かの確認作業などがあります。


HDL 向けに最適化されたブロックおよび System Object

HDL Coder は 200 を超える Simulink ブロックをサポートしており、HDL 固有の実装プロパティを設定できます。次のものを含め、特定アプリケーションのための、HDL 向けに最適化されたブロックも合わせて使用できます。


浮動小数点データおよび固定小数点データ

FPGA および ASIC ハードウェアは固定リソースで構成されているため、パフォーマンス要件を満たしながら効率的にリソースを使用するために、データの語長を管理する必要があります。ただし、倍精度浮動小数点演算を使用して作成されたアルゴリズムを、計算精度を十分に維持しながら固定小数点の実装に変換する必要がある場合、これは困難となります。

HDL Coder のネイティブ浮動小数点を使用すると、単精度 Simulink モデルから、合成可能な VHDL または Verilog を直接生成できます。これにより、FPGA への実装が短時間で開始できます。より効率的な実装のために、設計の大部分を固定小数点に変更するような場合でも、ネイティブ浮動小数点として実装する必要がある演算を分離することができます。これは一般的に、流束方程式、累積分布関数、および状態空間方程式などのハイダイナミック レンジを必要とする数学方程式において最も効率的なアプローチとなります。

Fixed-Point Designer は、固定小数点変換プロセスを自動化し、管理します。設計内の各演算に対して推奨される語長と精度要件を提示するために、シミュレーション データが使用されます。これらの設定は推奨通りに適用することも、推奨よりも独自の設定を優先させることもできます。

HDL Coder は必要なデータ型に最適なオプションを提供します。Fixed-Point Designer は固定小数点への変換プロセスを自動化します。HDL Coder はベンダーに依存しないネイティブ浮動小数点の HDL コードを生成し、ベンダー固有の浮動小数点のハード IP ブロックまたはソフト IP ブロックに実装できます。


入門リソース

HDL コード生成用にアルゴリズムを調整するには、まず『HDL Coder Evaluation Reference Guide (HDL Coder 評価リファレンス ガイド)』をダウンロードしてください。

FPGA 設計の経験が浅い方のために、FPGA 向け DSP のトレーニング コースでは、さまざまな信号処理アルゴリズムを FPGA デバイスに実装する際に発生するハードウェア実装のトレードオフについて説明しています。また、HDL 対応の設計から方法論に関するサポートまで、多岐にわたるコンサルティング サービス をご用意しています。


HDL コードの最適化

プロトタイピング用ハードウェアまたは製品ハードウェアのいずれに実装する場合でも、HDL Coder はコードの最適化に役立ちます。一連の最適化オプションは、自動的に、または指示に従って動作します。設計のクロック周波数を増やして機能を維持するために、HDL Coder は並列パスのバランスを取りながらパイプライン レジスタの挿入および分散を行います。設計の面積の縮小や電力の削減のために、並列構造をシリアル構造に変換してリソースを共有できます。フィルターや数学演算などのHDL 対応ブロック、および System object の大半は、カスタマイズ オプションが用意されています。

アーキテクチャ レベルで設計することにより、ベクトル処理、オーバーサンプリング、関心領域処理などの手法がデザインに与える速度およびサイズへの影響をより広範囲に探索できます。これにより、広範囲なソリューションの選択が可能になるため、HDL を手動でコーディングした場合よりも高品質のコードを生成できます。

Nokia では、このような探索と最適化を通じて FPGA および ASIC の品質を改善させることができました。

Nokia による本講演では、ラピッドプロトタイピングと SoC 検証をターゲットとした、Simulink HDL ツールの使用法とメリットについて取り上げます。

FPGA プロトタイピング

多くのエンジニアは HDL Coder を使用して FPGA ハードウェア上でアプリケーションのプロトタイプを作成し、高速に動作する実ハードウェアでの検証を行っています。ボード上の FPGA または SoC デバイスに実装するには、モデルの入力と出力が、デバイス固有のおよびボード固有のインターフェイスにマッピングされている必要があります。HDL Coder は、一般的な FPGA プロトタイピング システムを自動的に設定する組み込みターゲットを提供しています。


ハードウェア サポート パッケージ

Xilinx® および Intel® (旧名 Althera) の一般的な開発キットのセットアップおよび実装を自動化するには、お使いのデバイス ファミリー用の HDL Coder ハードウェア サポート パッケージをダウンロードできます。

ソフトウェア無線 (SDR)モーター制御、およびビジョン処理用の FPGA への実装をサポートする、特定アプリケーションのためのハードウェア サポート パッケージをダウンロードすることもできます。


Simulink Real-Time および Speedgoat FPGA テクノロジーを使用したリアルタイム シミュレーションおよびテスト

制御、DSP、ビジョン、およびプラント シミュレーションの各プロジェクトにおいて、HIL (Hardware-in-the-loop) を使用して高速なプロトタイピングを行うには、低レイテンシで高速計算が可能な FPGA がしばしば必要となります。Simulink Real-Time™Speedgoat Programmable FPGA I/O modulesを組み合わせて使用することで、I/O 行が数百行にまでなるような用途向けの低レイテンシ プラットフォームを実現できます。HDL Workflow Advisor に備わった設定を使用することで、FPGA I/O モジュールの実装を自動化できます。ネイティブ浮動小数点による HDL コード生成により、特にハイダイナミック レンジ演算において、FPGA への実装が簡単になります。統合されたデータのログ記録、モニタリング、およびリアルタイム調整により、デザインの反復およびデバッグが迅速に行えます。


量産用 FPGA、SoC、または ASIC への展開

デザインを量産用のデバイスに展開する準備が整ったら、チップレベルの入力および出力 (I/O) にマッピングするための、HDL Coder が提供する強力なオプションを使用できます。ハードウェア-ソフトウェア実装によく使用されるシステムオンチップ (SoC) インターフェイスにマッピングすることもできます。

ボードレベルのインターフェイスでカスタム リファレンス設計を定義し、HDL Coder に登録することができます。HDL コード生成時にこれをターゲットとして選択し、ボード上、ボード外の他のコンポーネント、またはメモリ コントローラーやシステム バスなどの AXI インターフェイスに設計内の I/O がどのようにマッピングされるかを定義できます。

FPGA または ASIC SoC のサブシステム生成において、IP コア生成のワークフロー ターゲットによって、チップレベルの I/O または、AXI4、AXI4-Lite、AXI4-Master、および AXI4-Stream Video を含む多様な AXI 相互接続用プロトコルとポートのマッピングが可能となります。

HDL Corder は、さまざまな用途の運用環境への展開に使用できます。以下はその例です。


HDL コードの検証

HDL Coder は生成された HDL コードの迅速な検証のためVHDL および Verilog テスト ベンチを生成します。HDL コードに変更をもたらすさまざまなオプションを使用して、HDL テスト ベンチのカスタマイズがです。また、スクリプト ファイルを作成すると、HDL シミュレーターでのコードのコンパイルとシミュレーションのプロセスを自動化できます。

HDL Coder は HDL Verifier と連携して、以下のような 2 種類のコシミュレーション モデルを自動的に生成します。

  • Simulink と、Cadence Incisive または Mentor Graphics ModelSim および Questa などの HDL シミュレーターによる HDL コシミュレーションを実行するための HDL コシミュレーション モデル
  • Simulink および FPGA ボードにより設計を検証するための FPGA インザループ (FIL) コシミュレーション モデル

テストベンチの生成、あるいは EDA シミュレーターまたは FPGA 開発キットとの協調シミュレーション。


HDL コード生成のモデルベース デザインへの取り込み

モデルベース デザインは、要件、システムデザイン、実装、およびテストにリンクします。これにより、設計チームのメンバーは共同作業が可能になります。ハードウェアをターゲットにする設計の一部を分割する際に、システム レベルの検証インフラおよびテストを再利用することができます。ハードウェア実装の詳細化および固定小数点化のために、モデルをリファインすることができます。モデルベース デザインは、リビジョン コントロールおよびトレーサビリティを完全にサポートします。

Allegro Microsystems では、ミックスドシグナル ASIC の設計および実装にモデルベース デザインを導入しています。

Allegro Microsystems は、MATLAB と Simulink を活用して、ミックスドシグナルセンサー IC 向けのラピッドプロトタイピング、効率的な UVM ベースの検証、自動 RTC コード生成を行う方法を解説します。

アルゴリズム設計を固定小数点ハードウェアへの実装用にリファインするためのモデルベース デザインのワークフロー。この実装からモデルを生成し、下流のワークフローに使用することができます。