デザインに次のような for ループが含まれている場合:
整数i;
for( i = ... ; ... ; ... ) 開始
a = i の式 ;
もし( ......) に関する条件文
ステートメント;
......
終わり
終わり
インテル® Quartus® Prime 開発ソフトウェア・プロ・エディションは、この for ループで非常に多くのロジックレベルを合成する場合があります。
for ループにこれらの条件が含まれている場合、ロジック深度に対して最適化することはできません
- ループ制御変数に依存する代入式
- 代入結果を選択条件として使用するループにネストされたIFステートメント
ループ制御変数に依存する代入ステートメントは、さらなる最適化を可能にするために for ループ・ブロックの外に移動する必要があります。ループの外に出ると、代入ステートメントはベクトルの各ビットへの並列代入に変換できます。次に、各サイクルの割り当て結果を、この新しく作成されたベクトルのループ制御変数によってインデックス化できます。
コードは次のように変更できます。
ベクトル [ N ] = ... ;
......
ベクトル[ 2 ] = ... ;
ベクトル[ 1 ] = ... ;
整数 i ;
for( i = ... ; ... ; ... ) 開始
もし( ......ベクトル[i])に関する条件文
ステートメント;
......
終わり
終わり
最適化は、サイクル数が固定されており、それほど大きくない場合に適しています。この最適化により、ロジックレベル数を減少させながら、ALUT の使用量を増やすことができます。
インテル® Quartus® Prime Pro Edition ソフトウェアの将来のバージョンでは、元のコードを自動的に最適化するようスケジュールされています。