1. 程式人生 > >【Altera部落格大賽】時序優化一例(三)

【Altera部落格大賽】時序優化一例(三)

在使用兩種方法(《時序優化一例(一)》《時序優化一例(二)》)對設計進行時序優化後,設計的建立時間餘量從-1.070優化到-0.240,但是時序還未達到收斂,繼而嘗試了許多其它方法:

    (一)區域性優化

         在《時序優化一例(二)》中的物理綜合優化是全域性的,可能對關鍵路徑的優化還不夠徹底。翻閱了一些資料,發現可以針對一個模組或者節點進行區域性優化,因此可以直接對關鍵路徑進行直接優化。方法是在QuartusII軟體中,開啟Assignments->Assignment Editor,如圖1所示,可以在其中加入需要優化的節點或者模組,優化選項與全域性優化選項類似,如圖2所示,在Assignment Name下拉選單中可選擇不同的優化策略。

 

圖1

 

圖2

         但是遺憾的是採用區域性優化後,時序還是沒有收斂!

 

    (二)LogicLock

         使用Logiclock可以建立一個floorplan,用於將設計中的部分模組邏輯的佈局佈線限制在模組區域中。但是其主要用於增量編譯中,與design parti

tion配合使用,將一個設計分割槽的佈局佈線限定在一個Logiclock區域中,如果分割槽的佈局佈線已達到要求,可以設定保留該分割槽佈局的佈局佈線資訊,那下次編譯時可以跳過對該設計的佈局佈線過程,減少了編譯時間。

         但是使用Logiclock對時序效能並沒有什麼好處,反而可能會起到反效果。因為fitter並不對Logiclock區域之間的佈線進行優化,而如果Logiclock區域劃分不合理,關鍵路徑正好處於跨區域中,那在之前對關鍵路徑所作的時序優化算是白費了。

         在我的設計中,現階段關鍵路徑處於除法器IP內部,也沒別的什麼辦法去優化這個IP了,可能是其它模組的佈局佈線對除法器模組產生了影響,那就“瞎貓碰死耗子”一把,試一試,萬一有小驚喜呢!使用Logiclock將除法器佈局佈線與其它模組的佈局佈線隔離,將此除法器模組單獨建立分割槽和建立Logiclock區域。分割槽如圖3所示,可以看到Div模組因為分割槽被單獨分離出來;Logiclock如圖4所示,div模組的邏輯被限定在單獨的一個Logiclock區域中佈局佈線。

 

圖3

 

圖4

         然後來check一下timing,值得欣慰的是,時序好了一些,如圖5所示,建立時間餘量減小到-0.224ns了,關鍵路徑還在除法器內部。通過分割槽邏輯隔離、建立Logiclock區域進行佈局佈線隔離還是起到了意想不到的效果,儘管這效果很小。

 

圖5