因爲我的工程比較大,綜合時間有點長,之後在上面做圖像處理算法的實現,然後發現加上這個模塊之後綜合的時間特別就,達到了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分鐘。那麼帶來了什麼影響呢,很明顯應該是資源增加了,那麼哪些資源增加了,增加了多少呢。我們來看下面的這張表。
從上面的表格中,可以看出不含優化的程序資源消耗只比優化之後的程序多了一點點,至少在我這個工程中是這樣的,而這一點點資源的增加,相較於綜合時間的大幅度提升,優化與否可想而知。
哦,對了,還有最重要的是,對運算結果是否有影響呢。很明顯的,這只是一個優化選項,不影響結果,我們實際測試得到的也是相同的結論。
如何你覺得這個文章對你有幫助,支持一下作者~