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