關於QuartusII對ram塊的綜合


  之前在看Altera的官方教程上就有說明,如果我們定義一個reg [`word_w]user_ram[`word_d]  ; QuartusII會自動綜合成為一個ram—— 當然有一些前提:(后續補充)

 

  今天就這個知識點看QuartusII 的反應如何 。因為最近在看《CPU自制入門》 我選定的DE1-SOC只有3w多個lab,我移植了原始的工程編譯居然提示需要10w個lab,所以分析與綜合過了之后place的時候就掛掉了,提示lab不足。所以就在折騰哪里可以節省資源

 

  在gpr.v 里面剛好有一個定義

reg [`WordDataBus]           gpr [`REG_NUM-1:0]; 

可是下面的代碼中卻有了reset過程

            for (i = 0; i < `REG_NUM; i = i + 1) begin
                gpr[i]         <= #1 `WORD_DATA_W'h0;
            end

在綜合成ram的特例中說明了,如果有了reset過程就不能生成ram了。好先來看看有了reset QuartusII 給個什么反應

  i的循環語句QuartusII 給出了警告說發現了latch,這個有點不明白。最后看rtl viewer

                

  12層大概都是張這個樣子而資源使用情況呢

        

  大家看分析與綜合之后的報告,資源使用情況怎么會是這樣呢?(我這么說是想大家一會留意一下屏蔽掉ram的reset功能之后資源占用情況)

  仔細看綜合報告的倒數第二行 : 說最后的資源使用情況有可能不同。

 

好,現在讓我們看看屏蔽掉ram的reset之后分析與綜合之后的情況如何,首先看綜合報告

第二行就說明了,發現了一個沒有被推論RAM實體—— 似乎言外之意是你沒有調用這么一個block,我發現了我來調用。

倒數第二行的說明也是說資源不可以相信上面的—— 和沒有屏蔽reset的時候資源使用情況是一樣的。

結論: 分析與綜合之后的資源使用率是估算的,是不准確的

 

好,我們再看看QuartusII 說發現了ram,那么它是怎么處理的,當然是看rtl viewer

    呵呵,QuarutsII 真的是自己調用了ram。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM