Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

コマンド ライン インターフェイスを使用した MATLAB から SystemC へのワークフロー入門

この例では、HDL Coder™ コマンド ライン インターフェイスを使用して MATLAB® コードから SystemC コードを生成する方法を示します。これには、浮動小数点から固定小数点への変換も含まれます。

概要

コマンド ライン インターフェイスを使用して SystemC コードを生成する基本的な手順は次のとおりです。

  1. 関数hdlsetuphlstoolpathを使用して、SystemC コード生成の高位合成 (HLS) ツール パスを設定します。

  2. fixpt コード生成構成オブジェクトを作成します。

  3. hdl コード生成構成オブジェクトを作成します。

  4. 構成オブジェクトのパラメーターを設定します。

  5. codegen コマンドを実行して SystemC コードを生成します。

HDL Coder のコマンド ライン インターフェイスでは、codegen コマンドで 2 つのコード生成構成オブジェクトを使用できます。fixpt コード生成構成オブジェクトは、MATLAB コードの浮動小数点から固定小数点への変換を構成します。hdl コード生成構成オブジェクトは、SystemC コード生成とプログラミングのオプションを構成します。

サンプル コードは、シンプルで対称な有限インパルス応答 (FIR) フィルターとそのテスト ベンチを実装します。この例を使用して、浮動小数点から固定小数点への変換を構成し、SystemC コードを生成できます。

この例の FIR モデルとテスト ベンチを設定します。

mlhdlc_demo_setup('sfir');

浮動小数点から固定小数点への変換の構成オブジェクトの作成

設計で既に固定小数点のデータ型と関数が使用されている場合は、固定小数点への変換の手順をスキップできます。

浮動小数点から固定小数点への変換を行うには、fixpt 構成オブジェクトが必要です。

fixpt 構成オブジェクトを作成し、テスト ベンチ名を指定します。

fixptcfg = coder.config('fixpt');
fixptcfg.TestBenchName = 'mlhdlc_sfir_tb';

固定小数点への変換における型の推奨に関するオプション

コード ジェネレーターでは、語長または小数部の長さのどちらを選択したかに基づいて固定小数点型が推奨されます。語長と小数部の長さの両方を使用することはできません。

次の例では、語長 24 に基づいてデータ型が推奨されます。

fixptcfg.DefaultWordLength = 24;
fixptcfg.ProposeFractionLengthsForDefaultWordLength = true;

または、小数部の長さに基づいて固定小数点型の推奨を行うこともできます。次のコードは、小数部の長さ 10 に基づいてデータ型を推奨するように設定します。

fixptcfg.DefaultFractionLength = 10;
fixptcfg.ProposeWordLengthsForDefaultFractionLength = true;

安全余裕

固定小数点型の推奨の基準となるシミュレーション データの範囲が、安全余裕の割合だけ広げられます。たとえば、既定の安全余裕が 4 の場合、固定小数点型の推奨に使用されるシミュレーション データの範囲は 4% 拡大します。

SafetyMargin10% に設定します。

fixptcfg.SafetyMargin = 10;

データ ログ

コード ジェネレーターでは、浮動小数点から固定小数点への変換の前後に設計についてのテスト ベンチを実行します。シミュレーション データ ログを有効にして、新しい固定小数点データ型の量子化の影響をプロットできます。

fixpt 構成オブジェクトでデータ ログを有効にします。

fixptcfg.LogIOForComparisonPlotting = true;

数値型推奨レポート

固定小数点型が推奨されたら型推奨レポートを起動するようにコード ジェネレーターを構成します。

fixptcfg.LaunchNumericTypesReport = true;

SystemC コード生成構成オブジェクトの作成

SystemC コードを生成するには、hdl 構成オブジェクトを作成し、テスト ベンチ名を設定する必要があります。

hdlcfg = coder.config('hdl');
hdlcfg.TestBenchName = 'mlhdlc_sfir_tb';

ターゲット言語と合成ツール

SystemC コードを生成するには、ターゲット言語を SystemC、合成ツールを Cadence Stratus と指定します。

hdlcfg.TargetLanguage = 'SystemC';
hdlcfg.SynthesisTool = 'Cadence Stratus';

SystemC テスト ベンチ コードの生成

MATLAB® テスト ベンチから SystemC テスト ベンチを生成するようにコード ジェネレーターを構成します。

hdlcfg.GenerateHDLTestBench = true;

生成された SystemC コードのシミュレーション

生成された SystemC コードをシミュレートする場合は、SystemC テスト ベンチを生成するようにコード ジェネレーターの構成も必要です。

hdlcfg.SimulateGeneratedCode = true;

生成された SystemC コード用の合成ツール

生成された SystemC コードは、合成ツール "Cadence Stratus" を使用して合成できます。このツールを使用するようにコード ジェネレーターを構成します。

hdlcfg.SynthesizeGeneratedCode = true;

SystemC コード生成の実行

fixpt 構成オブジェクトと hdl 構成オブジェクトの設定が完了したら、codegen コマンドを実行して浮動小数点から固定小数点への変換を実行し、SystemC コードを生成します。

codegen -float2fixed fixptcfg -config hdlcfg mlhdlc_sfir -report

SystemC コード生成レポート

MATLAB コマンド ライン ウィンドウで、View Report をクリックしてコード生成レポートを確認できます。

コード生成レポートを使用すると、次を行うことができます。

  • コード生成の問題をデバッグし、MATLAB コードがコード生成に適しているか確認する。

  • 生成された SystemC コードを表示する。

  • 適合性レポートやリソース利用レポートのような追加のレポートにアクセスする。

  • コード ジェネレーターで MATLAB コード内の変数と式の型情報を判断し、伝播する方法を確認する。

コード ペインで MATLAB 関数を表示するには、MATLAB ソース ペインで関数の名前をクリックします。コード ペインでは、変数または式の上で一時停止すると、ツールヒントにそのサイズ、型および実数/複素数に関する情報が表示されます。

詳細については、HLS Code Generation Reportを参照してください。

制限

  • 高位合成ツールとして Cadence Stratus のみがサポートされています。Cadence Stratus は、SystemC コード生成用にポイント ツー ポイント (p2p) 通信のみをサポートします。

  • 複数のスレッドで実行される SystemC コードの生成はサポートされていません。

  • 実数データ型および Systems オブジェクトは SystemC コード生成ではサポートされていません。

  • 構造体と列挙は、SystemC コード生成では、最上位 DUT の端子の入力および出力としてはサポートされていません。

参考