文章 ID: 000091832 內容類型: 疑難排解 最近查看日期: 2023 年 08 月 23 日

當 if 語句嵌套在迴圈中時,為什麼軟體會為我的設計中的 for 迴圈合成大量邏輯電平?

環境

    Intel® Quartus® Prime Pro Edition 軟體
BUILT IN - ARTICLE INTRO SECOND COMPONENT
描述

如果您的設計包含這樣的 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 軟體的未來版本計畫自動優化原始代碼。

相關產品

本文章適用於 1 產品

Intel® 可程式裝置

1

此頁面上的內容是原始英文內容的人工和電腦翻譯的組合。此內容僅供您方便,僅供一般參考,不應被視為完整或準確。如果本頁面的英文版本與翻譯之間存在任何矛盾,則以英文版本為準。 查看此頁面的英文版本。