避免RP和RP之間的直接路徑
假定設計中存在兩個RP,分別為RP1和RP2,那么就要避免出現RP1輸出直接連接到RP2或者相反從RP2輸出直接連接到RP1的路徑。因為這時RP邊界信號(連接RP1和RP2的net)的負載都在動態區,從而必然形成Partition Pin,由于邊界信號沒有經過靜態區邏輯單元,這些PartitionPin最終會有相應的PPLOC,這其實就增加了后續的布線壓力。這種情況下,最好將其優化為RP1->FF -> RP2。其中FF在靜態區。
避免多個RP輸出連接到同一個靜態區的負載邏輯單元上
只有當與邊界信號連接的靜態區負載落在擴展的布線區域時才會觸發PPLOC縮減。如果一個靜態區的負載連接多個RP,那么顯然這個靜態區負載只可能落在其中一個RP的擴展布線區域,那么另一個RP就會形成PPLOC,如下圖所示,兩個RP的輸出分別連接到靜態區負載LUT4的I0和I1端口,這樣就會形成PPLOC。
可將其優化為如下圖所示方式,這樣每個RP的輸出都有獨立的靜態區負載,從而可能觸發PPLOC縮減。
復制靜態區寄存器驅動多個RP
為了保證靜態區邊界負載對每個RP而言是獨立的,那么就要避免同一個靜態區觸發器驅動多個RP。這種情況命令report_methodology會給報告出來。如下圖所示,靜態區觸發器扇出為4,同時驅動了RP1和RP2。
可對該觸發器進行復制,如下圖所示,這樣就保證了每個RP有自己獨立的靜態區邊界負載。
對RM的輸入/輸出進行寄存
AMD建議確保所有RM的輸入是寄存器輸入,而輸出也都是寄存器輸出。這樣,時序路徑就被隔離開來,即靜態區到RP邊界、RP內部、RP邊界到靜態區。對布局布線是有利的,自然對時序收斂也是有益的。同時,如果使用AbstractShell流程,這樣還可以有效減少Abstract Shell的大小,從而可進一步縮短編譯時間。
避免靜態區的走線跑到動態區
默認情況下,DFX設計中靜態區的net是可以使用整個芯片的布線資源,自然也包括動態區的布線資源,正因此,就可能出現靜態區布線跑到了動態區。盡管從功能角度而言是允許的,但這會給動態區布線帶來壓力。因此,如果出現動態區布線擁塞時,可以檢查一下是否存在上述情況。對于上述情況,我們可以對靜態區設置相應的Pblock,將其屬性CONTAIN_ROUTING設置為true。下圖顯示了靜態區布線跑到動態區的情形,圖中黃色走線即為靜態區走線,有部分跑到了動態區。設置CONTAIN_ROUTING為true之后,可以看到這種情況就被消除了。
盡可能使Pblock形狀為矩形
一旦將Pblock屬性CONTAIN_ROUTING設置為true時,對于Pblock的拐角處工具布線難度就會顯著增大,如下圖左側所示。Pblock形狀不是標準的矩形,在拐角處形成布線擁塞,圖中白色高亮部分,擁塞等級為6。將其修正為標準矩形,如下圖右側部分所示,此時擁塞程度降低(圖中白色高亮部分),降至5。
審核編輯:湯梓紅
-
寄存器
+關注
關注
31文章
5336瀏覽量
120232 -
端口
+關注
關注
4文章
964瀏覽量
32052 -
觸發器
+關注
關注
14文章
2000瀏覽量
61132 -
DFx
+關注
關注
0文章
35瀏覽量
10539
原文標題:優化DFX設計
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論