解決時序限制問題
對於IC設計工程師來說,發現與修正時序限制,是一項常見但相當棘手的問題。研發時間常耗費數月,有時最後卻無法達成時序限制的目標。如何妥善地限制設計,確保設計符合時序目標,這項作業相當繁重且耗神。
時序問題令人頭疼之處,是沒有單一方法能解決每種時序問題。不過我們可藉由推升軟體的極限、最佳化RTL程式碼、或同時合用兩種方法,解決大多數的時序問題。
由於客戶對於與FAE分享原始碼都抱持謹慎態度,因此我們建議可藉由推升其工具的極限,協助解決其時序問題。
在此之前,我們要先對時序問題進行基本分析,目標是找出所有明顯問題的根源,例如元件上方的時脈針腳、驅動元件底部的數位時脈管理器(DCM),進而驅動元件頂層的全域緩衝器(BUFG)。
有時設計工程師以配置針腳的方式,是不可能達成時序的目標。通常研發人員可檢查時序報告中的延遲,藉此找出許多顯而易見的時序問題。在此情況下,工程師都會需要配置工具,將有問題的元件鎖定在適當位置,藉以解決各種明顯問題。元件配置工具亦可透過圖形幫助瞭解時序問題。
運用現有的軟體工具
如果問題無法一眼可以看出,設計工程師必須瞭解目前使用的系列元件與軟體版本。一般而言,每個系列元件通常會有一個最佳化軟體版本。
合成工具的版本也很重要,因此在使用最新元件架構時,研發人員務必得下載並使用最新版本的軟體。軟體開發的步調幾乎都落後於硬體功能的開發腳步,因此不建議工程師把舊版軟體拿來和新系列元件搭配使用。
不過有些顧客因為害怕處理新的或未知的bug,而不願意升級軟體。但若工程師希望在使用最新系列元件時,能妥善克服時序方面問題,我們仍建議下載使用最新版本的軟體。
當工程師取得目標系列元件的軟體最佳版本後,再找出最佳的建置選項。不過這些建置選項總共有數千種不同的組合可應用到建置工具。以picosecond為單位的時序評分為例,亦即所有失效時序通道的加總時間,其最大的影響因素就是工程師所選用的建置選項。
SmartXplorer軟體
FPGA設計公司有多款可協助工程師找出設計最佳選項組合的工具。例如Xilinx的ISE軟體目前含有兩種工具:Xplorer與最近推出的SmartXplorer。
SmartXplorer能運用多重處理器,執行多個具備不同選項的建置方案。SmartXplorer是Linux平台的軟體,使用起來相當簡單,僅須使用以下指令即可:smartxplorer designname.edn -p xc5vlx110t-1ff1136。只要使用者限制檔案(UCF)以及硬體連線表(netlist)限制檔案(NCF)的名稱相同,SmartXplorer就會自動使用正確的選項。工程師唯一需要的就是管理表單檔案。
SmartXplorer能藉由安全的shell/遠端shell(SSH/rsh)來登入至其他主機,只要在smartxplorer.hostlist檔案中,另外加入一行主機名稱即可。若主機裝有兩顆處理器,則加入兩行主機名稱。表1便列出SmartXplorer輸出的結果。
(表一) 在Virtex-5 FPGA設計方案中的SmartXplorer 10.1範例
Option |
Timing Score |
Run Time |
Map:-timing –ol high –xe n –global_opt on –retiming on |
651262 |
6h 26m |
Par:-ol high |
|
|
Map: -timing –ol high –xe n |
0 |
4h 25m |
Par:-ol high |
|
|
Map: -cm area |
380834 |
5h 19m |
Par:-ol high –xe n |
|
|
Map: -timing –ol high –xe n –register_duplication –logic_opt on |
0 |
5h 46m |
Par:-ol high –xe n |
|
|
Map: -timing –ol high –xe n –global_opt on –retiming on –ignore_keep_hierarchy |
666567 |
12h 34m |
Par:-ol high –xe n |
|
|
Map: -cm balanced |
172171 |
4h 4m |
Par:-ol high |
|
|
Map: -timing –ol high –xe n –pr b –cm balanced |
7235 |
6h 33m |
Par:-ol high |
|
|
PlanAhead亦有一個類似SmartXplorer的功能,名為ExploreAhead,能同時在多部Linux主機上分散處理邏輯配置作業。這些工具的目的都相似:在建置工具中找出一組選項,以得到最佳的時序成績。
工程師應注意觀察各種選項對時序成績以及執行時間產生的顯著影響。配合各種合成選項一起執行也很重要。例如,關閉合成的階層選項,通常會大幅提升效能。合成時設定良好的限制,亦有助於達成時序目標。
使用PlanAhead軟體步驟
當工程師分析各種建置選項達到最佳的時序成績後,則可開始著手有效地分析時序問題。在這方面PlanAhead軟體是極有效的工具,因為其可讓工程師看到邏輯配置的內容。研發人員亦可匯入時序限制,並交叉偵測有問題的通道,把它們放在配置元件視窗內。
當工具作出不良的決定時,工程師可透過配置模組或手動置放元件來校正之。這通常是重複的作業,需要多次流程才能找出最佳的配置方式,讓設計案達到最佳化的時序。PlanAhead軟體的視覺化功能讓這項工作變得更加容易。
內建軟體專案
使用PlanAhead軟體,工程師首先需要建立一個專案,將HDL或硬體連線表(netlist)檔案匯入到工具軟體。當工程師建好一個專案後,再點選File選單下的Import Placement。從最佳流程中選取PAR(ncd)檔案,把配置內容匯入到PlanAhead軟體專案。
工具將把PlanAhead軟體專案安排到數個視窗內。左上方視窗是實體階層結構,顯示設計方案中目前的區域群組。下方的選取視窗顯示工程師目前選取資料的細節。中間的視窗則是硬體連線表視窗,顯示完整的硬體連線表結構。最右邊的視窗是元件檢視圖,顯示工程師在設計方案中建置的邏輯結構。這時應該要注意:
- ●各種時序問題差異大,在PlanAhead軟體中採用的解決方法也有所不同。要在PlanAhead中解決各種時序問題,需要實際操作經驗。
匯入時序分析報告
接著再把時序分析器報告(TWR/TWX)匯入到工具中。點選File選單中的Import TRCE Report。這個步驟會把時序報告資料加入到下方視窗。研發人員應根據最壞時序情況來排序視窗顯示內容,並先專注處理最壞情況的來源。修正最壞狀況來源,通常能解決整個設計案的許多時序問題。
選取故障通道
當工程師選取一個故障通道,PlanAhead軟體會選取該故障通道的組件與連結。按F9鍵,放大選取範圍的內容,如圖一所示。這裡的操作步驟有點複雜。工程師必須進行一些檢視分析,瞭解邏輯配置工具為何要把原型設計(primitives)如此配置,其目的是什麼,以及是否有更好的方法來完成研發人員的設計方案。
《圖一 PlanAhead軟體顯示一個建置方案,標示出一個錯誤時序通道》 |
|
操作原型設計結果
工程師可放大顯示任何選取的原型設計。用滑鼠左鍵點選一個原型設計,拖曳之以瞭解其連結設定。在硬體連線表視窗中,工程師也可移至最上層的模塊,其中有選取的元件。用滑鼠右鍵點選模塊名稱,為選取的元件設定一種顏色。這樣就能顯示出這個模塊在晶片上的配置方式,以及群組是相互靠近或是分散的狀況。
有時研發人員會發現必須更加鎖定特定設計原型。在時序問題方面,常見問題都是源自Block RAM與DSP自動模塊配置。如圖一顯示,很容易看出PAR把Mult18放在一個非最佳化的位置。故障通道中有一個Block RAM,將結果送至Mult18,Mult18再把結果送到一個進位鏈。
Block RAM是高位,Mult18是低位,而邏輯則是高位。若繞線沒有往上、往下、或往側面,就能達成時序目標。
解決各類時序問題方案
各種時序問題差異大,在PlanAhead軟體中解決它們的方法也不盡相同。在PlanAhead設計工具中要解決時序問題,需要實際操作的經驗。我們以解決圖一所描述的時序問題作為例子。依循下列的步驟,引導工程師完成一個解決方案:
- ●選出錯的時序通道,標示出關鍵通道;
- ●在一個元件上按滑鼠右鍵,然後選取Highlight With選單中的color of choice;
- ●在左邊的窗格中,取消位於底部第二層Mult18的配置。在Unplace上按滑鼠右鍵,開啟時序錯誤的Block RAM空間;
- ●透過點選與拖曳的方式,把Mult18從底部向上拉一層;
- ●點選並拖曳右邊的Block RAM,空出左下方Block RAM的位置;
- ●選取錯誤時序通道,並檢查通道是否為最佳選擇,如圖二所示。
《圖二 PlanAhead軟體顯示在鎖定DSP48與Block RAM後的一個校正後通道》 |
|
- ●點選Tools選單下的Clear Placement Constraints。在第一個選項點選Next;
- ●點選Unplace All But Selected Instances。在引導精靈的後續步驟點選Next;
- ●若工程師想在PlanAhead軟體以外進行建置,請點選File選單下的Export Floorplan;
- ●工具會寫出一個新的UCF檔案,名為top.ucf。工程師可使用該檔,或使用檔案中的限制設定,將這些設定加入到原始UCF;
- ●另一個選項是在PlanAhead軟體中執行建置。
透過ExploreAhead,點選Tool選單下的Run ISE Place & Route。ExploreAhead有許多很好的功能,包括:
- ●自動將Device視窗中的限制設定匯入到UCF;
- ●在ExploreAhead中執行建置,簡化匯入配置與時序結果。
建立區域群組
若工程師發現配置結果中有許多時序錯誤,人工配置通常無法解決這些時序問題,正確的作法是建立區域群組(Pblock)。
其中一種建立區域群組的方法是在硬體連線表視窗中,在模塊名稱上按滑鼠右鍵,然後點選Draw Pblock。之後在Device視窗中畫一個四方形,工程師可以在此擺放區域群組。
工具會建立一個Pblock,工程師會看到許多相關資訊。屬性視窗會顯示Pblock需要的邏輯資源,以及繪出群組的資源。
這種相當互動化的流程,可規劃出一個設計方案。研發人員可能需要分多個批次來調校區域群組,之後才能順暢運作。不過請注意不要貪多。工程師不一定得把整個模塊納入區域群組。建議專心處理錯誤的原型元件,可以單獨把它們加入群組,再進行配置規劃。
工程師應運用Pblocks的標準進一步瞭解運作功能,像是充分運用區域群組中的可組態的邏輯區塊(CLB)。這能協助工程師研判特定區域的擁塞是否會對繞線產生限制。若有許多擁塞發生,工程師則需要把邏輯分散至各處。
當研發人員使用PlanAhead軟體得到最佳的時序成績後,剩下的工作就是最佳化程式碼。PlanAhead設計工具現已支援HDL原始碼。依照人員匯入的來源,就可用交叉偵測的方式,追回至網路表或HDL。
在示意圖視窗中,我們可看到整個時序通道。在時序結果中選取時序通道,然後再按F4。注意看其他模組扇入與扇出的邏輯。這些工具必須經常把模組分散至晶片各處,以配合外部界面的需求。若發生這樣的情況,工程師可能必須採用管線設計。
Block RAM或DSP輸出時序通常會造成時序錯誤的問題。通常藉由暫存這些模塊的輸出結果,即可回復1毫微秒(nanosecond)的偏差。
良心建議
若工程師有時序收斂的問題,但沒有PlanAhead軟體,我們建議可採用PlanAhead。這個工具在解決時序問題時,能提供許多層面的協助。運用PlanAhead設計工具,工程師可執行ExploreAhead,找出最佳的選項組合。由於PlanAhead軟體並沒有受限於特定版本的ISE,若研發人員工作站裝有多個版本,可以嘗試使用不同版本的ISE。PlanAhead軟體的交叉偵測功能,可讓工程師充分了解設計中的原始碼與實際建置結果。
時序收斂可能是相當棘手的問題,但若運用正確工具與版本,配合一套完善的時序收斂計畫,工程師便可快速找出設計中的時序問題,並完成設計工作。
(作者為美商Xilinx賽靈思業務工程師)