Global Sources
電子工程專輯
 
電子工程專輯 > FPGA/PLD
 
 
FPGA/PLD  

用設計約束最佳化FPGA性能

上網時間: 2009年07月07日     打印版  Bookmark and Share  字型大小:  

關鍵字:FPGA  佈局  時序 

除了硬體描述語言本身的功能之外,設計約束也許是影響FPGA性能的第二大因素。不幸的是,許多設計者並沒有足夠的時間進行約束設計,他們通常在設計流程中嘗試各式各樣的佈局佈線工具選項和手工佈局來接近時序。這些方法通常相當費時,而且,很可能在設計的下一個版本就無法運作了。合適定義的約束能協助用戶運用工具最佳化設計以滿足其目標,這種做法同時適用於設計流程的各個相應階段。

FPGA設計約束表達了超越硬體描述語言的設計意圖。最普通的是目標元件的時序特性,還包括針對設計最佳化的指示、I/O編程或實體佈局規劃(floor plan)。本文使用萊迪思公司的FPGA作為實例,然而,此處討論的大多數技術也同時適用於其他可編程積體電路設計工具。

合成和實現資料流程

附圖是採用Synplicity公司Synplify工具和萊迪思半導體ispLEVER FPGA設計工具的FPGA資料流程,此處用SCOPE和Design Planner圖形編輯器進行約束,或可將VHDL屬性和Verilog注釋嵌入到硬體描述語言的原始碼中。用組合硬體描述語言和約束編輯器來指導合成和佈局佈線工具也是可行的。

第一個處理區塊是Synplify編譯器與合成演算法。基於硬體描述語言的約束和Synplicity設計約束(SDC)文件直接用於Synplify最佳化和合成引擎。時序約束指導嵌入式時序分析和邏輯最佳化演算法,同時映射控制約束指示在目標網表中使用的庫類型。

合成之後,找到後端工具所用的設計約束。ispLEVER Design Planner用來表達時序目標和許多實體設計細節,如I/O和底層規劃(floor plan)。在映射(Map Design)階段使用Lattice LPF約束檔案,並進行I/O編程和時序最佳化。在硬體描述語言中產生的ispLEVER約束合併至基於LPF的約束,並寫入至physical preference file (PRF)。post-synthesis網表對任何邏輯的參考都自動翻譯成實體單元,如FPGA的Slices、DSP者EBR區塊。然後,實體參考文件用於佈局和佈線,以及靜態時序分析工具,這些都是FPGA建置工具部分。佈局和佈線之後,通常會進行更加精確的時序反注至合成階段。黑盒IP時序和佈線延遲改進了合成時序分析的精確性。

Synplicity在指示和屬性約束之間做出了區分。指示影響了映射最佳化;而時序約束用來定義時脈、I/O時序、時脈或路徑之間的多週期關係,以及例外的時序。為了使程式碼盡可能簡潔,在SDC文件中保留了時序約束。嵌入在硬體描述語言中的時序約束通常為黑盒IP核心所保留,合成時序分析器無法獲得這些細節。在這些情況下,IP供應商經常會提供用於分析的時序細節。

圖:Symplify至ispLEVER約束資料流程。
圖:Symplify至ispLEVER約束資料流程。

而圖形約束編輯器SCOPE提供了一種簡易的初始化方法,以瀏覽設計訊號和指定時序約束。其輸出以ASCII SDC格式儲存。

時序約束應該覆蓋設計的基本特性。如果有一個時脈域傳遞資料到另外一個域的情況,應該用多週期類型優先選擇定義所需的週期數。以下為Synplify SCOPE建立的SDC示例:(可放Online)

--------------------------------------------------------------------------------

Synplify SDC檔案

// Clock with specific duty cycle and period goal

define_clock {CLK1} -period 10.0 -clockgroup default_clkgroup

// I/O delays of top-level ports

define_input_delay {porta[7:0]} 7.8 -ref clk1:r

define_output_delay {portb[7:0]} 10 -ref clk1:r

// Point-to-point delay

define_path_delay -from {i:dmux.alua[5]} -to {i:regs.mem_regfile_15[0]} -max 0.800

// Multi-clock cycle conditions

define_multicycle_path -from{i:regs.addr[4:0]} -to {i:special_regs.w[7:0]} 2

--------------------------------------------------------------------------------

Synplify SDC提供了豐富的詞表來定義與編譯邏輯相關的設計單元,包括I/O埠、時脈網路和從源於同步RTL結構推出的暫存器單元。

在編譯期間,Synplify進行靜態時序分析,包括針對所有時脈、時脈關係和介面時序的性能報告。

對Synplify來說,目前有幾個編譯器最佳化約束。流行的控制類型為:狀態機編碼、分層保持和記憶體製程目標。為說明編譯器約束,此處考慮狀態機編碼。Synplify FSM編譯器特性假設了定義的狀態機數目的編碼類型。如果狀態機多達4個狀態,針對非常緊湊的設計可採用時序編碼;5-40個狀態將產生高性能的獨熱編碼(OHE)。超過40個狀態將產生格雷碼。如果有特殊的設計要求,則根據不同的情況來控制有限狀態機編碼,並使用加到狀態暫存器聲明的syn_encoding指示。

FPGA佈局佈線後端約束

ispLEVER實現工具的約束覆蓋了時序性能和設計實現的許多方面。透過設計流程的約束,用戶可以自然地把觀點從抽象的高層移到低層。起初約束寫入暫存器傳輸級,或是閘、埠以及來自RTL的網表;稍後約束寫入FPGA的實體單元,如可編程功能單元、針對記憶體的嵌入式ASIC區塊或是DSP和可編程I/O單元。後端約束通常用來定義I/O編程、I/O佈局和時序目標。它們可以定義可編程區塊的參數,如記憶體或PLL/DLL電路。約束可指導邏輯佈局至元件的底層規劃,以及針對模組設計流的設計分割。如同合成約束,後端約束也基於硬體描述語言或者ASCII文字檔案。

如同邏輯合成,時序約束也應該覆蓋基本特性,包括時脈、I/O延遲和點對點延遲。通常過約束時序目標可作為提高合成和佈局佈線等級的一種方法。用戶可實際上保留多個版本的約束文件,在約束文件中應該針對邏輯最佳化進行設定,其餘的完全用於靜態時序分析,並使用‘real’結束時序。

在硬體描述語言中,有幾個屬性可用於指導FPGA設計。通常使用的控制類型為:I/O位置、邏輯‘don'touch’類型指示和邏輯組合。為說明基於硬體描述語言的後端約束,此處考慮邏輯組合屬性-分層組合(HGROUP)。這種類型的屬性可協助改進時序,使並行運作結果更加一致。

FPGA的設計約束展現了超越硬體描述語言的設計目的,對元件的性能有著關鍵性作用。在一個完整的設計中,約束規劃應覆蓋時脈以及I/O的關鍵時序目標,如果可能,還應包含多週期關係和設計的時序期望。用戶將發現可運用設計單元來表示約束,並透過擷取來改變級數;從RTL到後合成區塊及網表,使用基於HDL和SDC的混合式方法,或是基於LPF約束的方式,將是最有效的約束設計途徑。

作者:Troy Scott

萊迪思半導體公司





投票數:   加入我的最愛
我來評論 - 用設計約束最佳化FPGA性能
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首