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

  因爲我的工程比較大,綜合時間有點長,之後在上面做圖像處理算法的實現,然後發現加上這個模塊之後綜合的時間特別就,達到了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%)

  從上面的表格中,可以看出不含優化的程序資源消耗只比優化之後的程序多了一點點,至少在我這個工程中是這樣的,而這一點點資源的增加,相較於綜合時間的大幅度提升,優化與否可想而知。
  哦,對了,還有最重要的是,對運算結果是否有影響呢。很明顯的,這只是一個優化選項,不影響結果,我們實際測試得到的也是相同的結論。


如何你覺得這個文章對你有幫助,支持一下作者~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章