關於Quartus II工程綜合時間過長問題的解決

2021-10-05 05:27:56 字數 2745 閱讀 9156

因為我的工程比較大,綜合時間有點長,之後在上面做影象處理演算法的實現,然後發現加上這個模組之後綜合的時間特別就,達到了3個小時,查閱了好多資料也不知道怎麼去解決這個問題,今天聽一位高人指點,終於解決了這個問題,於是就想把這個解決方案記錄下來。

首先說明一下我的工程環境,我用的是quartus ii 64-bit version 15.0.2 build 153 07/15/2015 sj full version。

其實這個問題很容易解決,就是在assignments->settings…->compiler settings…->prevent register merging這個選項勾選上,即阻止這個優化就可以了。

問題是解決了,可是這個選項什麼意思呢。知其然也要知其所以然,對吧。首先說一下這個設定的中文翻譯,也就是阻止暫存器融合,具體是幹什麼的呢,網上的資料也不是很多,我先把官方的一些解釋貼出來。

首先是altera 15.0 help 中關於disable register merging的解釋

下面放的是官方文件16. quartus ii integrated synthesis文件中的內容,主要就是講到了如何在hdl**中新增一些內容防止被優化。

這個優化是預設開啟的,並且對於altera的任意晶元都適用,就是對在不同層次的相同輸入暫存器進行合併。

對於這個選項的理解我現在也很膚淺,之後有更深入的了解也會及時在部落格中進行更新。那麼既然是優化選項,去掉了勢必會有一些影響,那麼來簡單地看一下去掉這個優化選項之後,產生了什麼影響呢。那麼影響分好和壞兩種,首先來說說好的影響,最明顯的好處是綜合時間縮短了,從原先的3個小時縮短到了現在的18分鐘。那麼帶來了什麼影響呢,很明顯應該是資源增加了,那麼哪些資源增加了,增加了多少呢。我們來看下面的這張表。

資源型別

含優化

不含優化

alut

122,720/232,960(53%)

125,135/232,960(54%)

dedicated logic registers

89,260/232,960(38%)

97,887/232,960(42%)

logic utilization

167,373/232,960(72%)

171,678/232,960(74%)

total registers*

89467

98094

m9k blocks

859/936(92%)

865/936(92%)

total block memory bits

9,867,846/13,934,592(71%)

9,869,797/13,934,592(71%)

total block memory implementation bits

13,224,960/13,934,592(95%)

13,280,256/13,934,592(95%)

從上面的**中,可以看出不含優化的程式資源消耗只比優化之後的程式多了一點點,至少在我這個工程中是這樣的,而這一點點資源的增加,相較於綜合時間的大幅度提公升,優化與否可想而知。

哦,對了,還有最重要的是,對運算結果是否有影響呢。很明顯的,這只是乙個優化選項,不影響結果,我們實際測試得到的也是相同的結論。

經過實際同乙個專案的測試,在quartus ii 15.0版本測試,當找上勾後,確定是要快一點,編譯時間為:3分42秒,而沒有打勾的編譯時間為:4分02秒,可能我的專案較為簡易,暫進沒有表現出來。如果是大專案,可能差距就出來。可以考慮前期除錯時,以時間為主,專案完工時,再做優化。

因為我的工程比較大,綜合時間有點長,之後在上面做影象處理演算法的實現,然後發現加上這個模組之後綜合的時間特別就,達到了3個小時,查閱了好多資料也不知道怎麼去解決這個問題,今天聽一位高人指點,終於解決了這個問題,於是就想把這個解決方案記錄下來。

首先說明一下我的工程環境,我用的是quartus ii 64-bit version 15.0.2 build 153 07/15/2015 sj full version。

其實這個問題很容易解決,就是在assignments->settings…->compiler settings…->prevent register merging這個選項勾選上,即阻止這個優化就可以了。

問題是解決了,可是這個選項什麼意思呢。知其然也要知其所以然,對吧。首先說一下這個設定的中文翻譯,也就是阻止暫存器融合,具體是幹什麼的呢,網上的資料也不是很多,我先把官方的一些解釋貼出來。

首先是altera 15.0 help 中關於disable register merging的解釋

下面放的是官方文件16. quartus ii integrated synthesis文件中的內容,主要就是講到了如何在hdl**中新增一些內容防止被優化。

這個優化是預設開啟的,並且對於altera的任意晶元都適用,就是對在不同層次的相同輸入暫存器進行合併。

對於這個選項的理解我現在也很膚淺,之後有更深入的了解也會及時在部落格中進行更新。那麼既然是優化選項,去掉了勢必會有一些影響,那麼來簡單地看一下去掉這個優化選項之後,產生了什麼影響呢。那麼影響分好和壞兩種,首先來說說好的影響,最明顯的好處是綜合時間縮短了,從原先的3個小時縮短到了現在的18分鐘。那麼帶來了什麼影響呢,很明顯應該是資源增加了,那麼哪些資源增加了,增加了多少呢。我們來看下面的這張表。

關於Quartus II的應用

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

quartus ii綜合ram及相關知識備忘

reg 15 0 datamem 7 0 直接綜合,並不會用fpga中的memory資源 需要加上 ramstyle m ram 才會讓quartus將其綜合使用ram資源 ramstyle m ram reg 15 0 datamem 7 0 還可以將m ram換成其他字樣,使系統使用m4k塊之類...

工程中綜合排序的選擇

1 若你需要排序的是基本資料型別,則選擇快速排序。若你需要排序的是自定義資料型別,則選擇歸併排序。基於穩定性考慮 因為基本資料型別之間無差異,不需要考慮排序演算法穩定性,而歸併排序則可以實現演算法的穩定性。2 當你需要排序的樣本數量小於60,直接選擇插入排序,雖然插入排序的時間複雜度為o n 我們是...