《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 用設(shè)計約束實現(xiàn)FPGA性能的最優(yōu)化

用設(shè)計約束實現(xiàn)FPGA性能的最優(yōu)化

2009-06-17
作者:Troy Scott

  摘? 要: 除了硬件描述語言本身的功能之外,設(shè)計約束是影響FPGA性能的重要因素。合理的設(shè)計約束能幫助設(shè)計者在設(shè)計流程的各個相應(yīng)階段通過優(yōu)化來滿足設(shè)計目標。本文以萊迪思公司的FPGA設(shè)計工具為例,論述如何用設(shè)計約束實現(xiàn)FPGA性能最優(yōu)化。
  關(guān)鍵詞: FPGA;設(shè)計約束;綜合約束;后端約束

?

  除了硬件描述語言本身的功能之外,設(shè)計約束是影響FPGA性能的第二大因素。許多設(shè)計者沒有花費足夠的時間進行約束設(shè)計,而是在設(shè)計流程中試圖通過各種各樣的布局布線工具選項和手工布局來實現(xiàn)時序要求。這些方法不僅費時,而且在設(shè)計的下一個版本中存在不能工作的可能。合理的設(shè)計約束能幫助設(shè)計者在設(shè)計流程的各個相應(yīng)階段通過優(yōu)化來滿足設(shè)計目標。
  FPGA設(shè)計約束表達了超越硬件描述語言的設(shè)計意圖。最普通的是目標器件的時序特性,此外還包括針對設(shè)計優(yōu)化的指示、I/O編程,或者物理布局。本文以萊迪思公司的FPGA為例進行說明,所論述的大多數(shù)技術(shù)同樣適用于其他可編程集成電路設(shè)計工具。
數(shù)據(jù)流程的綜合與實現(xiàn)
  圖1為基于Synplicity公司的Synplify和萊迪思半導(dǎo)體公司的ispLEVER FPGA設(shè)計工具的約束數(shù)據(jù)流程,其中特別強調(diào)了約束流程。通過圖形編輯器對SCOPE和 Design Planner進行約束,或者將VHDL屬性和Verilog注釋嵌入到硬件描述語言的源代碼中,還可以將硬件描述語言與約束編輯器組合以指導(dǎo)綜合與布局布線工具。

?


  第一個處理模塊為Synplify編譯器和綜合算法?;谟布枋稣Z言的約束與Synplicity設(shè)計約束(SDC)文件直接用于Synplify優(yōu)化與綜合引擎。時序約束指導(dǎo)嵌入式時序分析、邏輯優(yōu)化算法,同時映射出控制約束指示在目標網(wǎng)表中所使用的庫類型。
  實現(xiàn)綜合之后,得到后端工具所用的設(shè)計約束。ispLEVER Design Planner用來表達時序目標和許多物理實現(xiàn)細節(jié),例如I/O與物理布局。在設(shè)計映射階段使用Lattice LPF約束文檔進行I/O編程與時序優(yōu)化。將硬件描述語言中產(chǎn)生的ispLEVER的約束合并至基于LPF的約束,并寫至PRF文檔。對post-synthesis網(wǎng)表的任何邏輯引用都自動地翻譯成物理單元,如FPGA的Slices、DSP或者EBR塊。物理參考文件用于布局與布線,以及靜態(tài)時序分析工具,這些都是FPGA實現(xiàn)工具的一部分。布局與布線之后,通常會將更加精確的時序反注至綜合階段。黑盒IP時序和布線延時改進了綜合時序分析的精確性。
  Synplicity在指示與屬性約束之間做出了區(qū)分。指示影響了映射優(yōu)化,時序約束用來定義時鐘、I/O時序、時鐘或路徑之間的多周期關(guān)系及例外的時序。為了使代碼盡可能簡潔,在SDC文件中保留了時序約束。嵌入在硬件描述語言中的時序約束通常為黑盒子的IP核所保留,綜合時序分析器不能得到這些細節(jié)。在這些情況下,IP供應(yīng)商經(jīng)常會提供用于分析的時序細節(jié)。
  圖形約束編輯器SCOPE提供了方便的初始化方法,以瀏覽設(shè)計信號、指定時序約束。編輯器輸出以ASCII SDC格式存儲。圖2為Synplify SCOPE約束編輯器的界面。


  時序約束應(yīng)該覆蓋設(shè)計的基本特性,例如clock、I/O延時和異步路徑的點對點延時。如果一個時鐘域傳遞數(shù)據(jù)到另外一個域,則應(yīng)該用多周期類型優(yōu)先選擇定義所需要的周期數(shù)。下面以Synplify SCOPE建立的SDC文檔為例說明這一點。
Synplify SDC文檔:
//Clock with specific duty cycle and
period goal
define_clock{CLK1}-period 10.0-clock-
group 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提供了豐富的詞表來定義并編譯邏輯相關(guān)的設(shè)計單元,包括I/O端口、時鐘網(wǎng)絡(luò)以及同步RTL結(jié)構(gòu)推出的寄存器單元。在編譯期間,Synplify進行靜態(tài)時序分析,包括針對所有時鐘、時鐘關(guān)系以及接口時序的性能報告。雖然結(jié)果沒有后布局布線結(jié)果那么精確,但是作為性能的重要指示,它提供了針對時序逼近的重要檢測點,是滿足最終速度目標的一個好的指示器。Synplify報告文件如圖3所示。


  對于Synplify,可通過數(shù)個編譯器進行優(yōu)化約束。流行的控制類型有狀態(tài)機編碼、分層保持以及存儲器工藝目標。這里以狀態(tài)機編碼為例說明編譯器約束。Synplify FSM編譯器特性根據(jù)狀態(tài)機的數(shù)目設(shè)定編碼類型:如果狀態(tài)機狀態(tài)多達4個,針對非常緊湊的實現(xiàn),可采用時序編碼;如果狀態(tài)機狀態(tài)多達5~40個,將產(chǎn)生高性能的獨熱編碼(OHE);超過40個狀態(tài)將產(chǎn)生格雷碼。如果有特殊的設(shè)計要求,則根據(jù)不同的情況來控制有限狀態(tài)機編碼,以狀態(tài)寄存器聲明中的syn_encoding為指示。
VHDL實例:
library synplify;
use synplify.attributes.all;
package my_states is
type state_type is(Xstate,st0,st1,st2,
st3,st4,st5,st6,st7,st8,st9,st10,st11,
st12,st13,st14,st15);
signal state:state_type;
attribute syn_encoding of state:signal is ″gray″;
end my_states;
  該包聲明了自定義的數(shù)據(jù)類型“state_type”、state_type類型的信號,syn_encoding屬性設(shè)置促成狀態(tài)寄存器的格雷碼。
  在輸出的log文件中,Synplify給出了每個編碼狀態(tài)機FSM的報告:
Finished RTL optimizations(Time elapsed
0h:00m:00s;Memory used current:50MB
peak:51MB)
Encoding state machine work.fsm(rtl)-_work_my_states_state_1[0:16]
original code -> new code
?00000000000000001 -> 00000
?00000000000000010 -> 00001
?00000000000000100 -> 00011
?00000000000001000 -> 00010
?00000000000010000 -> 00110
?00000000000100000 -> 00111
?00000000001000000 -> 00101
?00000000010000000 -> 00100
?00000000100000000 -> 01100
?00000001000000000 -> 01101
?00000010000000000 -> 01111
?00000100000000000 -> 01110
?00001000000000000 -> 01010
?00010000000000000 -> 01011
?00100000000000000 -> 01001
?01000000000000000 -> 01000
?10000000000000000 -> 11000
  輸出報告證實,基于SDC與HDL的約束改進了綜合的結(jié)果。

FPGA布局布線后端約束
  ispLEVER實現(xiàn)工具的約束覆蓋了時序性能與設(shè)計實現(xiàn)的許多方面。首先約束寫到寄存器傳輸級,或者門、端口以及從RTL推出的網(wǎng)表;然后約束寫到FPGA的物理單元,例如可編程功能單元、針對存儲器的嵌入式ASIC塊,或者DSP與可編程I/O單元。后端約束通常用來定義I/O編程、I/O布局與時序目標。它們可以定義可編程塊的參數(shù),如存儲器或PLL/DLL電路。約束可以指導(dǎo)邏輯布局、器件布局,以及針對模塊設(shè)計流進行設(shè)計分割。與綜合約束相同,后端約束基于硬件描述語言或者ASCII文本文件。
  ispLEVER的Design Planner提供圖形接口以瀏覽post-synthesis網(wǎng)表的內(nèi)容,寫約束根據(jù)端口、網(wǎng)表、寄存器和ASIC塊設(shè)定。
  時序約束應(yīng)該覆蓋基本的約束特性,包括時鐘、I/O延時以及點對點延時。約束時序目標通常作為一種手段來提高綜合與布局布線的等級。實際上可以保留約束文件的多個版本,在約束文件中應(yīng)該針對邏輯優(yōu)化,其余的完全用于靜態(tài)時序分析,使用“real”結(jié)束時序。下面以Design Planner建立的LPF文檔為例說明普通的時序情況。ispLEVER報告文件如圖4所示。

?

ispLEVER LPF 文檔:
# Clock with specific duty cycle and
period goal PERIOD PORT “CLK1”
10.0 ns;
# I/O delays of top-level ports
INPUT_SETUP“porta[7:0]”7.8 ns CLKPORT“clk1”;
CLOCK_TO_OUT“portb[7:0]”10 ns CLKPORT“clk1”;
# Point-to-point delay
MAXDELAY FROM CELL“dmux”TO CELL“regs”0.800 ns;
# Multi-clock cycle conditions
MULTICYCLE“M1”FROM CELL“regs”TO CELL special_regs 2X;
# Ignore during timing analysis,lower
priority BLOCK NET FROM CELL“myInst1_reg”TO CELL “myInst3_reg”;
  硬件描述語言中的一些屬性可用于指導(dǎo)FPGA實現(xiàn)。常用的控制類型有I/O位置、邏輯“don′t touch”類型指示與邏輯組合。為了說明基于硬件描述語言的后端約束,考慮邏輯組合屬性-分層組合(HGROUP)指導(dǎo)布局算法,將組的成員在器件中接近放置,這種類型的屬性有助于改進時序,使得并行運行的結(jié)果更加一致。
VHDL實例:
attribute HGROUP:? string;
attribute BBOX:??? string;
attribute HGROUP of struct: architecture
is ″pgroup1″;
attribute BBOX?? of struct: architecture
is ″5,15″;
  這個屬性定義了一個與結(jié)構(gòu)相關(guān)的標志“pgroup1”。結(jié)構(gòu)體的所有邏輯約束行高為5,列寬為15的邊界框,此區(qū)域用目標器件的行和列單元表示。
  進一步考慮LPF中的布局。例如:
  # Anchor pgroup1
  LOCATE HGROUP″pgroup1″
  SITE R11C2D;
  這個優(yōu)選指示放置器錨定以5×15邊界的NW角,位于目標器件的第11行、第2列。如何組合硬件描述語言與基于LPF的后端約束是指導(dǎo)布局的非常有效的辦法。確保組的內(nèi)容,根據(jù)源代碼的內(nèi)容自動地更新,使硬件描述語言更加簡捷。
用設(shè)計約束起步
  為了在設(shè)計之初定義可實現(xiàn)的參數(shù),綜合與實現(xiàn)后端產(chǎn)生的分析報告顯得尤為重要。下面的報告將幫助加速關(guān)鍵的后端約束定義。
時序約束
  根據(jù)Synplify綜合報告,針對時鐘與I/O時序的約束取決于布線擁堵情況。從綜合估計中可以發(fā)現(xiàn)變化的程度,期望目標速度為綜合報告的±20%。
I/O Plan
  初始狀態(tài)下,為I/O定義信號標準,并盡可能對包作浮動指定??紤]信號標準支持,根據(jù)器件組的變化,采用自動布局法尋找合適的布局。引腳接口穩(wěn)定時,反注指定LPF優(yōu)選文件。
  圖5展示了在Design Planner Floorplan View中如何實現(xiàn)時序和I/O約束。

Floor Plan
  用基于初始、low-effort的“flat”布局來指導(dǎo)floor plan。突出層次分支以決定使用的分支?;跀?shù)據(jù)流確定PIO的位置和區(qū)域的相對位置。圖6展示了Design Planner Floorplan View中突出層次分支的情況。

?


  FPGA設(shè)計約束表達了超越硬件描述語言的設(shè)計目的,對優(yōu)化器件的性能發(fā)揮了主要作用。約束規(guī)劃應(yīng)覆蓋針對時鐘與I/O的關(guān)鍵時序目標,以及多周期關(guān)系與設(shè)計的時序期望。約束可以以設(shè)計單元表示,通過提取改變級數(shù),從RTL到post-synthesis塊以及網(wǎng)表,使用混合的基于HDL與SDC、或者LPF的約束是最有效的約束設(shè)計方法。

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。