FPGA實(shí)戰開(kāi)發(fā)技巧(6)
5.3.3.2 提高時(shí)序性能的手段
時(shí)序性能是FPGA 設計最重要的指標之一。造成時(shí)序性能差的根本原因有很多,但其直接原因可分為三類(lèi):布局較差、邏輯級數過(guò)多以及信號扇出過(guò)高。下面通過(guò)時(shí)序分析實(shí)例來(lái)定位原因并給出相應的解決方案。
本文引用地址:http://dyxdggzs.com/article/201710/365613.htm1.布局太差及解決方案
圖5-13 所示時(shí)序報告,其中附加的周?chē)s束為3ns,實(shí)際周期為3.027ns,邏輯時(shí)間只有0.869ns,而布線(xiàn)延遲竟達到2.203ns,很明顯失敗的原因就是布局太差。
圖5-13 布局太差的時(shí)序報告示意圖
相應的解決方案有:
1) 在ISE 布局工具中調整布局的努力程度(effort level) ;
2) 利用布局布線(xiàn)工具的特別努力程度(extra effort) 或MPPR 選項;
3) 如果用戶(hù)熟悉區域約束,則利用Floorplanner 相對區域約束(RLOC),重新對設計進(jìn)行布局規劃。
2.邏輯級數過(guò)多及解決方案
在FPGA 設計中,邏輯級數越高,意味著(zhù)資源的利用率就越高,但對設計工作頻率的影響也越大。在圖5-5所示的例子中,附加的周?chē)s束為3ns,實(shí)際周期為3.205ns,邏輯時(shí)間為1.307ns,已經(jīng)對設計的實(shí)際性能造成了一定的影響。對于這種情況,ISE 實(shí)現工具是沒(méi)有任何改善的,必須通過(guò)修改代碼來(lái)提高性能,相應的解決方案有:
1) 使用流水線(xiàn)技術(shù),在組合邏輯中插入寄存器,簡(jiǎn)化原有的邏輯結構;
2) 檢查該路徑是否是多周期路徑,如果是,添加相應的多周期約束;
3) 具備良好的編碼習慣,不要嵌套if 語(yǔ)句或if、case 語(yǔ)句,并且盡量用case 語(yǔ)句代替if 語(yǔ)句。
圖5-14 邏輯級數太多的時(shí)序報告示意圖
3.信號扇出過(guò)高及解決方案
高扇出會(huì )造成信號傳輸路徑過(guò)長(cháng),從而降低時(shí)序性能。如圖5-15 所示,附加的周期約束為3ns,而實(shí)際周期為3.927ns,其中網(wǎng)線(xiàn)的扇出已經(jīng)高達187,從而導致布線(xiàn)時(shí)延達到3.003ns,占實(shí)際時(shí)延的77.64%。這種情況是任何設計所不能容忍的。
圖5-15 扇出太高的時(shí)序報告示意圖
相應的解決方案有:
1) 通過(guò)邏輯復制的方法來(lái)降低信號的高扇出,可在HDL 代碼中手動(dòng)復制或通過(guò)在綜合工具中設置達到目的;
2) 可利用區域約束,將相關(guān)邏輯放置在一起,當然本方法僅限于高級用戶(hù)。
評論