MATLAB から HDL コードと合成へ
MATLAB から HDL コードへの変換
HDL ワークフロー アドバイザーの [MATLAB から HDL へのワークフロー] タスクでは、固定小数点の MATLAB® コードから HDL コードを生成し、その HDL をシミュレートして固定小数点アルゴリズムと比較検証します。HDL Coder™ は次に合成を実行し、必要に応じて配置配線を実行して、ASIC または FPGA のプログラミングに適した回路記述を生成します。
コード生成: [ターゲット] タブ
ターゲットのハードウェアと言語および必要な出力を選択します。
入力パラメーター
- ターゲット
ターゲット ハードウェアです。次のリストから選択します。
汎用 ASIC/FPGA Xilinx Altera シミュレーション - 言語
生成されるコードの言語 (VHDL®、Verilog®、または SystemVerilog) を選択します。選択した言語はターゲット言語と呼ばれます。
既定の設定: VHDL
- HDL 適合性をチェック
HDL 適合性のチェックを有効にします。
既定の設定: オフ
- HDL を生成
固定小数点 MATLAB アルゴリズムに対応する HDL コードの生成を有効にします。
既定の設定: オン
- HDL テスト ベンチを生成
固定小数点テスト ベンチの HDL コードの生成を有効にします。
既定の設定: オフ
- EDA スクリプトを生成
サードパーティ製のコンピューターによる設計の自動化 (EDA) ツール向けのスクリプト ファイルの生成を有効にします。これらのスクリプトでは、生成された HDL コードをコンパイルおよびシミュレートしたり、生成した HDL コードを合成したりできます。
既定の設定: オン
コード生成: [コーディング スタイル] タブ
生成されるコードのスタイルに影響を与えるパラメーターです。
入力パラメーター
- MATLAB コードのコメントを保持
生成されるコードに MATLAB コードのコメントを含めます。
既定の設定: オン
- コメントとして MATLAB ソース コードを含める
コメントを示す MATLAB ソース コードを生成コードに含めます。コメントは関連する生成コードの前に置かれます。関数バナー内に関数シグネチャを含めます。
既定の設定: オン
- レポートの生成
コード生成レポートを有効にします。
既定の設定: オフ
- VHDL ファイルの拡張子
生成される VHDL ファイル名の拡張子を指定します。
既定の設定: .vhd
- Verilog ファイルの拡張子
生成される Verilog ファイル名の拡張子を指定します。
既定の設定: .v
- ヘッダーのコメント
生成される HDL ファイルとテスト ベンチ ファイルのヘッダー内のコメント行を指定します。
既定の設定: なし
このフィールドに文字ベクトルとしてテキストを入力すると、生成されたコードのヘッダーにコメント行が生成されます。コード ジェネレーターによって、ターゲット言語に合わせたコメント文字が行の最初に追加されます。テキストに改行やラインフィードがある場合は、改行ごとに 1 行のコメントが生成されます。
- パッケージの接尾辞
設計でパッケージ ファイルが必要な場合にのみ、HDL Coder はこのオプションを適用します。
既定の設定: _pkg
- エンティティ競合の接尾辞
生成されるコードで重複する VHDL エンティティや Verilog または SystemVerilog モジュールの名前を解決する文字ベクトルを指定します。
既定の設定: _block
- 予約語の接尾辞
VHDL、Verilog、または SystemVerilog の予約語である値の名前、接尾辞の値、またはラベルの後に追加する文字ベクトルを指定します。
既定の設定: _rsvd
- クロックの process 文の接尾辞
HDL クロック プロセス名に付加する文字ベクトルを指定します。
_process
- 複素数の実数部の接尾辞
複素信号名の実数部の後に追加する文字ベクトルを指定します。
既定の設定: '_re'
- 複素数の虚数部の接尾辞
複素信号名の虚数部の後に追加する文字ベクトルを指定します。
既定の設定: '_im'
- パイプラインの接尾辞
入力パイプライン レジスタまたは出力パイプライン レジスタの名前の後に追加する文字ベクトルを指定します。
既定の設定: '_pipe'
- イネーブル信号の接頭辞
生成されるコードにおける内部クロック イネーブルやその他のフロー制御信号のベース名を文字ベクトルとして指定します。
既定の設定: 'enb'
コード生成: [クロックと端子] タブ
クロックと端子の設定です。
入力パラメーター
- リセット タイプ
レジスタの HDL コードを生成する際に、同期または非同期のリセット ロジックのどちらを使用するかを指定します。
既定の設定: 非同期
- リセットのアサート レベル
リセット入力信号のアサート (アクティブ) レベルがアクティブ High かアクティブ Low かを指定します。
既定の設定: アクティブ High
- リセットの入力端子
生成される HDL コードにおけるリセットの入力端子の名前を入力します。
既定の設定: リセット
- クロックの入力端子
生成された HDL コードにクロックの入力端子の名前を指定します。
既定の設定: clk
- クロック イネーブルの入力端子
生成される HDL コードにおけるクロック イネーブルの入力端子の名前を指定します。
既定の設定: clk
- オーバーサンプリング係数
グローバル オーバーサンプリング クロック周波数をテスト対象の設計 (DUT) のベース速度 (1) の倍数として指定します。
既定の設定: 1
- 入力データ型
入力端子の HDL データ型を指定します。
VHDL については、以下のオプションがあります。
std_logic_vector
VHDL データ型 STD_LOGIC_VECTOR を指定します。
符号付き/符号なし
VHDL データ型 SIGNED または UNSIGNED を指定します。
既定の設定: std_logic_vector
Verilog については、以下のオプションがあります。
生成される Verilog コードではすべての端子のデータ型は 'wire' です。したがって、ターゲット言語が Verilog の場合は [入力データ型] は無効になります。
既定の設定: wire
- 出力データ型
出力データ型に HDL データ型を指定します。
VHDL については、以下のオプションがあります。
入力データ型と同じ
出力端子が [入力データ型] で指定されたデータ型と同じ型になるように指定します。
std_logic_vector
VHDL データ型 STD_LOGIC_VECTOR を指定します。
符号付き/符号なし
VHDL データ型 SIGNED または UNSIGNED を指定します。
既定の設定: 入力データ型と同じ
Verilog については、以下のオプションがあります。
生成される Verilog コードではすべての端子のデータ型は 'wire' です。したがって、ターゲット言語が Verilog の場合は [出力データ型] は無効になります。
既定の設定: wire
- クロック イネーブルの出力端子
生成される HDL コードにおけるクロック イネーブルの入力端子の名前を指定します。
既定の設定: clk_enable
コード生成: [テスト ベンチ オプション] タブ
テスト ベンチの設定です。
入力パラメーター
- テスト ベンチ名の接尾辞
テスト ベンチ コード内で生成される基準信号の名前に付加される文字ベクトルを指定します。
既定の設定: '_tb’
- クロック信号生成
テスト ベンチでクロック イネーブル入力信号を生成するかどうかを指定します。
既定の設定: オン
- クロック High 時間 (ns)
テスト ベンチがクロック入力信号を High (1) にする期間をナノ秒単位で指定します。
既定の設定: 5
- クロック Low 時間 (ns)
テスト ベンチがクロック入力信号を Low (0) にする期間をナノ秒単位で指定します。
既定の設定: 5
- ホールド時間 (ns)
入力信号とリセット入力信号生成のホールド時間をナノ秒単位で指定します。
既定の設定: 2 (既定のクロック周期が 10 ns の場合)
- セットアップ時間 (ns)
データ入力信号のセットアップ時間を表示します。
既定の設定: 0
- クロック イネーブル信号生成
テスト ベンチでクロック イネーブル入力信号を生成するかどうかを指定します。
既定の設定: オン
- クロック イネーブル信号の遅延時間 (クロック サイクル単位)
リセットのデアサーションとクロック イネーブルのアサーション間の経過時間 (クロック サイクル単位) を定義します。
既定の設定: 1
- リセット信号生成
テスト ベンチがリセット入力信号を生成するかどうかを指定します。
既定の設定: オン
- リセット信号の長さ (クロック サイクル単位)
リセットがアサートされる時間 (クロック サイクル単位) を定義します。
既定の設定: 2
- サンプル間の入力データをホールド
サブレート信号値を有効な状態に保持する時間を指定します。
既定の設定: オン
- テスト ベンチの入力を初期化
データがテスト対象デバイス (DUT) にアサートされる前のテストベンチ入力上で駆動される初期値を指定します。
既定の設定: オフ
- 複数ファイルのテスト ベンチ
生成されたテスト ベンチを補助関数、データ、HDL テスト ベンチ コード ファイルに分割します。
既定の設定: オフ
- テスト ベンチ データ ファイル名の接尾辞
複数ファイルのテスト ベンチを生成するときにテスト ベンチ データ ファイルの名前に追加される接尾辞を指定します。
既定の設定: '_data'
- テスト ベンチ参照の接尾辞
テスト ベンチ コード内で生成される基準信号の名前に付加される文字ベクトルを指定します。
既定の設定: '_ref'
- データのチェックを無視 (サンプル数)
出力データのチェックが抑制されている間のサンプルの数を指定します。
既定の設定: 0
- fiaccel を使用してテスト ベンチのログ機能を加速します
テスト ベンチを生成するために、HDL Coder が元の MATLAB コードをシミュレートします。シミュレーションとテスト ベンチのログ機能を加速するには、Fixed-Point Designer™ の関数
fiaccel
を使用します。既定の設定: オン
コード生成: [最適化] タブ
最適化設定
入力パラメーター
- 永続配列変数を RAM にマッピング
永続配列変数を、シフト レジスタではなく RAM にマッピングするように選択します。
既定の設定: オフ
依存関係:
RAM マッピングのしきい値
RAM マッピングの永続変数名
- RAM マッピングのしきい値
永続配列変数を RAM にマッピングするために必要な最小の RAM サイズを指定します。
既定の設定: 256
- RAM マッピングの永続変数名
RAM にマッピングする永続変数の名前を指定します。
既定の設定: なし
- 入力パイプライン
最上位の入力端子に挿入するパイプライン レジスタ数を指定します。パフォーマンスを向上し、タイミング制約を満たすのに役立ちます。
既定の設定: 0
- 出力パイプライン
最上位レベルの出力ポートに挿入するパイプライン レジスタ数を指定します。パフォーマンスを向上し、タイミング制約を満たすのに役立ちます。
既定の設定: 0
- 分散パイプライン レジスタ
設計内のレジスタの配置を変更することでクリティカル パスを減少させます。[入力パイプライン] および [出力パイプライン] パラメーターを使用して挿入されたレジスタおよび内部設計レジスタを含む、すべてのレジスタに対して機能します。
既定の設定: オフ
- リソース共有係数
乗算器などの単一のリソースを共有できる追加ソースの数。リソースを共有するには、[リソース共有係数] の値を 2 以上に設定します。値を 0 または 1 に設定すると共有が解除されます。
設計に同一の乗算演算が複数ある場合、HDL Coder は係数を共有することで乗算器の数を減少できます。これにより、面積を大幅に減少できます。
既定の設定: 0
シミュレーションと検証
選択されたシミュレーション ツールを使用して、生成された HDL コードのシミュレーションを実行します。
入力パラメーター
- シミュレーション ツール
利用可能なシミュレーション ツールをリストします。
既定の設定: なし
- この手順をスキップ
既定の設定: オフ
結果と推奨アクション
状況 | 推奨アクション |
---|---|
システム パスに利用可能なシミュレーション ツールが存在しない。 | MATLAB システム パスにシミュレーション ツールのパスを追加し、MATLAB を再起動します。詳細は、合成ツールのパスの設定を参照してください。 |
合成と解析
このフォルダーには HDL コードの合成プロジェクトを作成するタスクが含まれています。タスクは合成を実行し、オプションで配置配線を実行して ASIC または FPGA プログラミングに適した回路記述を生成します。
入力パラメーター
- この手順をスキップ
既定の設定: オフ
シミュレーションのみに興味がある場合または合成ツールを保有していない場合は、この手順をスキップします。
プロジェクトを作成
サポートされている合成ツールの合成プロジェクトを作成します。
説明. このタスクは選択された合成ツールに合成プロジェクトを作成し、MATLAB アルゴリズム用に生成された HDL コードと共にプロジェクトを読み込みます。
必要なファミリ、デバイス、パッケージ、速度を選択できます。
プロジェクトの作成が完了すると、HDL ワークフロー アドバイザーによって右側のペインにプロジェクトへのリンクが表示されます。このリンクをクリックして、合成ツールのプロジェクト ウィンドウにプロジェクトを表示します。
入力パラメーター
- 合成ツール
次のリストから選択します。
Altera Quartus II
Altera® Quartus II 用の合成プロジェクトを生成します。このオプションを選択すると、HDL Coder では次のように設定されます。
[チップ ファミリ] を
[Stratix II]
[デバイス名] を
[EP2S60F1020C4]
これらの設定は手動で変更できます。
Xilinx ISE
Xilinx® ISE 用の合成プロジェクトを生成します。このオプションを選択すると、HDL Coder では次の処理が行われます。
[チップ ファミリ] を
[Virtex4]
に設定する[デバイス名] を
[xc4vsx35]
に設定する[パッケージ名] を
[ff6...]
に設定する[速度値] を
[—...]
に設定する
これらの設定は手動で変更できます。
既定の設定:
No Synthesis Tool Specified
[No Synthesis Tool Specified]
を選択した場合、HDL Coder は合成プロジェクトを生成しません。[合成ツールの選択] ペインのフィールドをクリアして無効にします。- チップ ファミリ
ターゲット デバイス ファミリ。
既定の設定: なし
- デバイス名
選択されたファミリ内での特定のターゲット デバイス。
既定の設定: なし
- パッケージ名
利用可能なパッケージの選択肢。これらの選択肢はファミリとデバイスによって決まります。
既定の設定: なし
- 速度値
利用可能な速度の選択肢。ファミリ、デバイス、パッケージによってこれらの選択肢が決まります。
既定の設定: なし
結果と推奨アクション
状況 | 推奨アクション |
---|---|
合成ツールでプロジェクトを作成できない。 | 合成ツールから返されたエラー メッセージを読み、合成ツールのバージョンを確認し、プロジェクト フォルダーに対する書き込み権限があることを確認します。 |
合成ツールがドロップダウン リストに表示されない。 | 合成ツールのパスをMATLAB システム パスに追加し、MATLAB を再起動します。詳細は、合成ツールのパスの設定を参照してください。 |
論理合成を実行
選択された合成ツールを起動し、生成された HDL コードを合成します。
説明. 以下が実行されます。
合成ツールがバックグラウンドで起動されます。
以前に生成した合成プロジェクトが開き、HDL コードがコンパイルされ、設計が合成され、ネットリストと関連ファイルが出力されます。
[結果] サブペインに合成のログが表示されます。
結果と推奨アクション
状況 | 推奨アクション |
---|---|
配置配線の実行時に合成ツールが失敗する。 | 合成ツールから返されたエラー メッセージを確認し、MATLAB コードを変更してから、HDL Coder ワークフローを最初から再実行します。 |
配置および配線を実行
合成ツールがバックグラウンドで起動され、配置配線処理が実行されます。
説明. 以下が実行されます。
合成ツールがバックグラウンドで起動されます。
前のマッピング処理で生成された回路記述を入力とする配置配線処理が実行され、FPGA プログラミングに適した回路記述が出力されます。
[結果] サブペインにログが表示されます。
入力パラメーター
- この手順をスキップ
[この手順をスキップ] を選択すると、HDL ワークフロー アドバイザーによりワークフローが実行されますが、[配置および配線を実行] はスキップされ [パス] としてマークされます。配置配線を手動で行う場合は、[この手順をスキップ] を選択します。
既定の設定: オフ
結果と推奨アクション
状況 | 推奨アクション |
---|---|
配置配線の実行時に合成ツールが失敗する。 | 合成ツールから返されたエラー メッセージを確認し、MATLAB コードを変更してから、HDL Coder ワークフローを最初から再実行します。 |