9.布局種子
設計者一般不喜歡在他們的設計流程或實現工具中可能有一定程度隨機性的概念。但是,注意到對于帶一組約束的給定設計布局不會整體確定是重要的。換言之,對于任何給定的設計沒有單個最優的布局,至少,沒有可能在布局過程自身之前用當今的技術方便地確定。事實上如圖16-13所示,為布局過程確定最佳的起始點,甚至對于自動布局器,這完全不是一個清楚的問題。
因此,布局工具需要類似于隨機數產生過程被“播種”。一個種子的準確定義是從設計者的觀點抽象的一位,但是為了有用的目的不同的種子本質上提供布局器稍微不同的起始點,布局過程的其余部分由此分支,這在圖16-14中說明。
一些廠商擴展此法超出簡化初始值為布局過程的其他“隨機”參數的范圍,例如各種約束的相對加權、預期的布局距離和估計布線擁擠等,Xilinx把這個稱為“成本表”,它影響各種布局參數,但是抽象為整數(1、2、3等)。每個整數對應一組不同的起始條件和布局參數,但是因為低層次的復雜性,它被抽象為單個數字,實際功能從參數表無法看出。
調整布局種子的好處是用戶可以在滿足時序約束時“取另一個建立”,實際上不改變設計中任何東西。這可以用稱為多行程布局和布線的過程自動化。當這個選項選擇時,布局布線工具將運行實現多次,自動地在每次運行改變種子。當然這將要求大量的時間產生有效的結果,所以一般利用整個夜晚運行目標設計總是不滿足可接受方式的時序約束。
需要注意的是:布局布線算法實際上完全與種子無關,各種參數的任何改變有很小的影響。一些較新的設計者運行的風險是花費大量的時間瞄準這類優化滿足他們的時序約束,代替了他們設計中的真正的問題。調整布局器的種子只應該作為最后的手段,在所有的結構改變已經用完、所有的約束已經添加、時序沖突十分微小(幾百皮秒或更小)的時候使用。
多行程布局和布線的種子變化只應該作為最后的手段使用。
只有當可重復性不是關鍵問題時,這才可以使用。如果時序緊到以致需要種子來滿足時序,則RTL或約束的任何其他的改變很有可能導致設計中新的隨機行為,并要求多次用種子的新變化運行布局器。因此,采用這類方法,在做了小的變化時,設計者在時序閉合中沒有重復性。重復性的問題將在下一節討論。
10.指導布局和布線
對設計者很通常的情況是花費幾天或幾周的時間圍繞一個設計來滿足時序,甚至多半利用上面描述的自動種子變化,只面對可以起伏通過已有布局的小改變和時序特性完全改變。在這一點上,設計者可能必須重新優化設計和可能尋找一個新的種子允許時序閉合。
為了避免小的改變引起邏輯元件布局多米諾效應,接著改變整個性能特性(不考慮由于小的變化重新實現每一件事情有關的運行時間),FPGA布局布線工具常常提供影響前面實現的布局布線的指導選項。
布局的指導將發現所有的元件匹配舊的實現,鎖定相同位置的相同元件。這個策略的好處是運行時間驚人地減少,指導的元件的時序特性維持相同。因此,如上面描述的指導模式可以提供設計者一個手段,用布局布線過程中相應的小變化引起小的改變。
跟隨小變化的布局布線過程應該利用一個指導文件最大化一致性和最小化運行時間。
11.小結
應該在任何優化發生之前產生一組完全的約束。
如果FPGA運行其中的系統設計在確定的溫度和電壓條件內,則FPGA時序分析可以并且應該在相同的條件下執行。
調整電壓和溫度設置不要求FPGA實現任何改變,可以提供一個方便的手段增量地改善最壞條件的性能。
布局努力對性能有主要的影響,而布線努力有相對小的影響。
邏輯復制應該只利用在關鍵路徑網線,它帶有不可能實際放置的多個負載。
在要求門級仿真時跨層次優化不是合乎需要的。
當封裝寄存器進I/O時為高速設計可能要求額外的流水線寄存器。
設置封裝因子可以幫助決定真實的利用率。
當額外的寄存器已經添加來分割布線延時,不應該利用寄存器排序。
用多次通過布局和布線的種子變化只應該利用作為最后的手段。
跟隨小變化的布局布線過程應該利用一個指導文件最大化一致性和最小化運行時間。
?
審核編輯:黃飛
?
評論
查看更多