如果您的設計包含這樣的 for 迴圈:
整數 i;
for ( i = ... ; ... ; ... ) 開始
a = i 的運算式 ;
if( ...關於 ) 開始的條件陳述式
聲明;
......
結束
結束
Intel® Quartus® Prime Pro Edition 軟體可能會在此 for 回路中合成大量邏輯電平。
如果 for 回路包含這些條件,則無法針對邏輯深度對其進行優化
- 依賴于迴圈控制變數的賦值運算式
- 嵌套在迴圈中的 if 語句,該語句使用賦值結果作為選擇條件
依賴于迴圈控制變數的設定陳述式應移出 for 迴圈塊以實現進一步優化。一旦在迴圈之外,設定陳述式就可以轉換為對向量每個位的並行賦值。然後,每個迴圈的賦值結果可以通過這個新創建的向量中的迴圈控制變數進行索引。
代碼可以修改為:
向量 [ N ] = ... ;
......
向量 [ 2 ] = ... ;
向量[ 1 ] = ... ;
整數 i ;
for ( i = ... ; ... ; ... ) 開始
if( ...關於向量[i])的條件陳述式開始
聲明;
......
結束
結束
該優化適用于週期數固定且不是很大的情況。優化可能會增加 ALUT 的使用,同時減少邏輯電平的數量。
Intel® Quartus® Prime Pro Edition 軟體的未來版本計畫自動優化原始代碼。