高位合成

高位合成とは

高位合成は、従来の ASIC 実装や FPGA 実装のワークフローに入力するために、高抽象度の設計記述をレジスタ転送レベル (RTL) の記述に変換するプロセスです。この高位設計の記述は、C、C++、SystemC™、MATLAB® などの高水準言語や、Simulink® などのグラフィカル環境で表現できます。高位合成ツールはこれらを設計エントリーとして使用し、ASIC や FPGA 設計で使用するための論理合成可能な Verilog® または VHDL® を合成、すなわち生成します。

高度に抽象化して作業することで、ハードウェア設計者は、プロジェクトの要件を満たすハードウェア アーキテクチャのコンテキストで機能を開発することに注力できます。高位合成を使用することで、ハードウェア設計者は、実装の詳細を含まない高抽象度の設計に集中できます。これにより、変更に対応しやすくなり、プロジェクト間での再利用や機能検証の生産性向上が可能になります。

ASIC 設計および FPGA 設計の多くは、まず MATLAB と Simulink でアルゴリズムとして設計されるため、これらの環境は高位合成の前に設計と検証を行うのに適しています。

高位合成では、並列性、適切な場合はタイミング概念、通常は固定小数点であるハードウェアデータ型など、ハードウェア アーキテクチャの詳細が指定されます。高位合成ユーザーの多くは、Simulink などのグラフィカル環境を利用して、アーキテクチャとデータフローを可視化しています。HDL Coder™ のような一部の高位合成製品には、固定小数点の自動変換や、ネイティブ浮動小数点演算の RTL 実装などの機能が備わっています。

HDL Coder は、2 種類の高位合成ワークフローをサポートしています。

  • RTL コード生成: HDL Coder は、MATLAB 関数や Simulink サブシステムから論理合成可能な Verilog や VHDL の生成をサポートしています。生成された RTL は、FPGA または ASIC 合成ツールを使用して合成できます。
  • SystemC コード生成: HDL Coder は、MATLAB 関数からの論理合成可能な SystemC の生成をサポートしています。(Simulink サブシステムからの SystemC コード生成はサポートされていません。)生成された SystemC は、ASIC 設計で広く使用されている高位合成ツールである Cadence® Stratus™ HLS への入力として使用できます。Stratus HLS と Genus logic Synthesis Solution および Joules RTL Power Solution との統合により、設計者は実装の消費電力、性能、面積について早期に可視性を得られます。

ASIC および FPGA 設計チームは、高位合成ワークフローで次のような複数の MathWorks 製品を使用できます。

  • ハードウェア設計の実装用に、Simulink と MATLAB から論理合成可能な Verilog または VHDL コードを自動生成する HDL Coder
  • 浮動小数点シミュレーションの解析、シミュレーション中に見られる精度や範囲に対応する固定小数点データ型の推奨、推奨または調整された固定小数点データ型を適用するプロセスの管理を行う Fixed-Point Designer™
  • 高位合成からの HDL 実装 (RTL またはネットリスト) が、アルゴリズムを記述する MATLAB コードまたは Simulink モデルの機能的に正しい実装であることを検証する HDL Verifier™
  • ハードウェアでの実装用に広く利用されている多数のアプリケーション固有の基本ブロックが用意されているディープラーニング信号処理ビジョン無線通信向けの HDL ツールボックス
  • テストスイートの自動化、形式的検証、カバレッジ、要件検証を高位設計と検証に追加する検証、妥当性確認、テストのための Simulink 製品

参考: HDL Coder, HDL Verifier, Fixed-Point Designer, Deep Learning HDL Toolbox, DSP HDL Toolbox, Vision HDL Toolbox, Wireless HDL Toolbox