Main Content

For-Generate ループの展開

生成された HDL コードから FOR-GENERATE ループを展開して省略する

モデル コンフィギュレーション ペイン: グローバル設定 / コーディング スタイル

説明

FOR-GENERATE ループを展開し、生成された HDL コードから省略するかどうかを指定します。

設定

off (既定値) | on

既定の設定: オフ

on

生成された HDL コードから FOR-GENERATE ループを展開して省略します。

off

生成された HDL コード内に FOR-GENERATE ループを含めます。

ヒント

このプロパティを設定するには、関数 hdlset_param または makehdl を使用します。プロパティの値を表示するには、関数 hdlget_param を使用します。

一部の Simulink® ブロックでは、HDL コードは既定で FOR-GENERATE ループ構造を使用して生成されます。このような Simulink ブロックは以下のとおりです。

FOR-GENERATE ループを使用して生成されたコードは読みやすくなり、コードの行数が削減され、コード生成時間が短縮されます。たとえば、2 次元行列を 1 次元行列に形状変更するために生成された VHDL® コードについて考えます。この例では、FOR-GENERATE ループを使用する場合と使用しない場合の Reshape ブロック用に生成されたコードを示します。

  • FOR-GENERATE ループを使用しない Reshape ブロック ([For-Generate ループの展開] が有効):

Reshape_output : PROCESS (In1_signed)
BEGIN
Reshape_out1(0) <= In1_signed(0, 0);
Reshape_out1(1) <= In1_signed(1, 0);
Reshape_out1(2) <= In1_signed(2, 0);
Reshape_out1(3) <= In1_signed(3, 0);
Reshape_out1(4) <= In1_signed(4, 0);
Reshape_out1(5) <= In1_signed(5, 0);
Reshape_out1(6) <= In1_signed(6, 0);
Reshape_out1(7) <= In1_signed(7, 0);
Reshape_out1(8) <= In1_signed(8, 0);
Reshape_out1(9) <= In1_signed(9, 0);
Reshape_out1(10) <= In1_signed(0, 1);
...

  • FOR-GENERATE ループを使用する Reshape ブロック ([For-Generate ループの展開] が無効):

Reshape_out1GEN_LABEL1: FOR d1 IN 0 TO 1 GENERATE
  Reshape_out1GEN_LABEL: FOR d0 IN 0 TO 9 GENERATE
     Reshape_out1(d0 + (d1*10)) <= In1_signed(d0, d1);
  END GENERATE;
END GENERATE;

  • GENERATE ループをサポートしないコンピューターによる設計の自動化 (EDA) ツールを使用している場合、ループ展開オプションを選択して、生成される HDL コードからループを省略します。

  • ループ展開オプションを設定しても、生成される HDL コードのシミュレーションや合成から取得される結果には影響しません。

推奨設定

推奨設定なし。

プログラムでの使用

パラメーター: LoopUnrolling
型: 文字ベクトル
値: 'on' | 'off'
既定の設定: 'off'

バージョン履歴

R2012a で導入