如何發(fā)現(xiàn)并解決FPGA設計中的時序問題
用PlanAhead分析時序
在了解實現(xiàn)選項對最佳時序分值的影響之后,現(xiàn)在可以開始有效地分析時序問題了。這時候,PlanAhead是一款非常有價值的工具,可以視覺化顯示布局布線后的設計。利用它,還可以導入時序約束并在已布局窗口交叉探查(cross-probe)時序失敗的路徑。
當工具本身的決策不好時,則可以通過平面布局模塊或通過手工布局部分組件的方式來糾正。這一過程通常需要反復多次,才能夠確定時序優(yōu)化的最佳設計布局方式。PlanAhead軟件的可視化功能確實使這一工作的完成更容易了。
利用PlanAhead軟件,首先創(chuàng)建項目(project),然后將HDL或網表文件導入工具中。一旦創(chuàng)建了一個項目,就可以選擇“File→Import Placement”。選擇時序優(yōu)化效果最佳的布局布線后(ncd)文件,將布局布線信息導入PlanAhead軟件項目。
軟件會將PlanAhead項目組織到幾個不同的窗口。左上窗口是物理分層窗口,描述了設計中的當前區(qū)域組。選定窗口在下面,包含了當前選定的數據詳細信息。中間窗口是網表窗口,給出了整個網表的分層結構。最右側窗口是器件觀察窗(Device view),里面已經充滿了設計實施完成后的邏輯。
然后,將時序分析報告(TWR/TWX)導入到PlanAhead工具中。選擇“File→Import TRCE Report”。這一步將時序報告數據添加到底部窗口。按照時序余量(timing slack)對這一窗口進行排序可以將焦點首先集中于違反時序要求最多的地方。經常的情況是解決了這些時序偏差最大的地方所存在的問題也就解決了整個設計的時序問題。
圖1. PlanAhead 10.1版顯示出已實施的設計,一條時序失敗路徑高亮顯示。
一旦選擇了一條時序失敗的路徑,PlanAhead軟件就會選定時序失敗路徑上的實例和連接。按F9鍵放大顯示選定的部分。
這兒的事情顯得有些復雜。必須進行一定的審查和思考才能夠明顯布局布線工具將基本單元(primitive)放在某個地方,以及為什么對于當前的特定設計來說還有更好的方法。
可以放大顯示任何高亮的基本單元。鼠標點擊一個基本單元并拖動,可以更好地觀察其連接情況。在網表窗口,還可以移動到包含了所選實例的頂層模塊。鼠標右擊模塊名稱并為選定的實例選擇顏色,這樣就可以顯示出這一模塊在芯片中的布局,以及組內單元是靠近還是散開的。
可能發(fā)現(xiàn)有時需要更好地鎖定特定的基本單元。Block RAM和DSP模塊的自動布局是導致時序失敗的常見原因。很容易發(fā)現(xiàn)布局布線工具將Mult18安排的位置很不好。時序失敗路徑中的塊RAM輸出連接到Mult18,后者的輸出又饋送到進位鏈。塊RAM在上部、Mult18在下部,而邏輯部分又位于上部。如果布線不需要上上下下、邊邊角角地來回繞,該路徑應當可以滿足時序要求。
評論