《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業界動態 > 用設計約束實現FPGA性能的最優化

用設計約束實現FPGA性能的最優化

2009-06-17
作者:Troy Scott

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

?

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

?


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


  時序約束應該覆蓋設計的基本特性,例如clock、I/O延時和異步路徑的點對點延時。如果一個時鐘域傳遞數據到另外一個域,則應該用多周期類型優先選擇定義所需要的周期數。下面以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提供了豐富的詞表來定義并編譯邏輯相關的設計單元,包括I/O端口、時鐘網絡以及同步RTL結構推出的寄存器單元。在編譯期間,Synplify進行靜態時序分析,包括針對所有時鐘、時鐘關系以及接口時序的性能報告。雖然結果沒有后布局布線結果那么精確,但是作為性能的重要指示,它提供了針對時序逼近的重要檢測點,是滿足最終速度目標的一個好的指示器。Synplify報告文件如圖3所示。


  對于Synplify,可通過數個編譯器進行優化約束。流行的控制類型有狀態機編碼、分層保持以及存儲器工藝目標。這里以狀態機編碼為例說明編譯器約束。Synplify FSM編譯器特性根據狀態機的數目設定編碼類型:如果狀態機狀態多達4個,針對非常緊湊的實現,可采用時序編碼;如果狀態機狀態多達5~40個,將產生高性能的獨熱編碼(OHE);超過40個狀態將產生格雷碼。如果有特殊的設計要求,則根據不同的情況來控制有限狀態機編碼,以狀態寄存器聲明中的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;
  該包聲明了自定義的數據類型“state_type”、state_type類型的信號,syn_encoding屬性設置促成狀態寄存器的格雷碼。
  在輸出的log文件中,Synplify給出了每個編碼狀態機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的約束改進了綜合的結果。

FPGA布局布線后端約束
  ispLEVER實現工具的約束覆蓋了時序性能與設計實現的許多方面。首先約束寫到寄存器傳輸級,或者門、端口以及從RTL推出的網表;然后約束寫到FPGA的物理單元,例如可編程功能單元、針對存儲器的嵌入式ASIC塊,或者DSP與可編程I/O單元。后端約束通常用來定義I/O編程、I/O布局與時序目標。它們可以定義可編程塊的參數,如存儲器或PLL/DLL電路。約束可以指導邏輯布局、器件布局,以及針對模塊設計流進行設計分割。與綜合約束相同,后端約束基于硬件描述語言或者ASCII文本文件。
  ispLEVER的Design Planner提供圖形接口以瀏覽post-synthesis網表的內容,寫約束根據端口、網表、寄存器和ASIC塊設定。
  時序約束應該覆蓋基本的約束特性,包括時鐘、I/O延時以及點對點延時。約束時序目標通常作為一種手段來提高綜合與布局布線的等級。實際上可以保留約束文件的多個版本,在約束文件中應該針對邏輯優化,其余的完全用于靜態時序分析,使用“real”結束時序。下面以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”;
  硬件描述語言中的一些屬性可用于指導FPGA實現。常用的控制類型有I/O位置、邏輯“don′t touch”類型指示與邏輯組合。為了說明基于硬件描述語言的后端約束,考慮邏輯組合屬性-分層組合(HGROUP)指導布局算法,將組的成員在器件中接近放置,這種類型的屬性有助于改進時序,使得并行運行的結果更加一致。
VHDL實例:
attribute HGROUP:? string;
attribute BBOX:??? string;
attribute HGROUP of struct: architecture
is ″pgroup1″;
attribute BBOX?? of struct: architecture
is ″5,15″;
  這個屬性定義了一個與結構相關的標志“pgroup1”。結構體的所有邏輯約束行高為5,列寬為15的邊界框,此區域用目標器件的行和列單元表示。
  進一步考慮LPF中的布局。例如:
  # Anchor pgroup1
  LOCATE HGROUP″pgroup1″
  SITE R11C2D;
  這個優選指示放置器錨定以5×15邊界的NW角,位于目標器件的第11行、第2列。如何組合硬件描述語言與基于LPF的后端約束是指導布局的非常有效的辦法。確保組的內容,根據源代碼的內容自動地更新,使硬件描述語言更加簡捷。
用設計約束起步
  為了在設計之初定義可實現的參數,綜合與實現后端產生的分析報告顯得尤為重要。下面的報告將幫助加速關鍵的后端約束定義。
時序約束
  根據Synplify綜合報告,針對時鐘與I/O時序的約束取決于布線擁堵情況。從綜合估計中可以發現變化的程度,期望目標速度為綜合報告的±20%。
I/O Plan
  初始狀態下,為I/O定義信號標準,并盡可能對包作浮動指定。考慮信號標準支持,根據器件組的變化,采用自動布局法尋找合適的布局。引腳接口穩定時,反注指定LPF優選文件。
  圖5展示了在Design Planner Floorplan View中如何實現時序和I/O約束。

Floor Plan
  用基于初始、low-effort的“flat”布局來指導floor plan。突出層次分支以決定使用的分支。基于數據流確定PIO的位置和區域的相對位置。圖6展示了Design Planner Floorplan View中突出層次分支的情況。

?


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

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲男人的天堂在线aⅴ视频| 亚洲欧美日韩天堂一区二区| 国产精品人人做人人爽人人添| 蜜臀久久久99精品久久久久久| 欧美在线观看视频一区二区| 亚洲一区二区黄色| 日韩一级片网址| 亚洲精品在线观看免费| 亚洲国产精选| 欧美资源在线| 久久精品国产999大香线蕉| 午夜精品在线视频| 亚洲一区二区三区四区五区黄| 日韩视频一区二区| 亚洲精品精选| 99精品99久久久久久宅男| 亚洲精品少妇网址| 亚洲精品在线看| 亚洲国产综合在线| 亚洲精品国产日韩| 99亚洲精品| 亚洲无亚洲人成网站77777| 一区二区三区免费看| 日韩视频免费| 一个人看的www久久| 国产精品99久久久久久久久久久久| 亚洲美女啪啪| 一区二区精品在线| 亚洲线精品一区二区三区八戒| 亚洲新中文字幕| 午夜精品成人在线视频| 午夜在线成人av| 久久成人18免费网站| 久久精品视频免费播放| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美xx69| 欧美日韩国产一区二区| 国产精品极品美女粉嫩高清在线 | 欧美日韩国产123| 国产精品高潮呻吟久久| 国产欧美综合一区二区三区| 国产真实久久| 亚洲国产婷婷| 中文亚洲欧美| 欧美一区二区三区在线看| 亚洲国产欧美一区| 亚洲视频免费在线| 欧美一区亚洲| 免费视频最近日韩| 欧美日韩亚洲在线| 国产欧美日韩在线观看| 国产精品一区二区三区免费观看| 亚洲综合导航| 国产精品美女久久久免费| 亚洲欧洲综合| 欧美成人日本| 亚洲欧美日韩一区二区三区在线观看 | 欧美日一区二区三区在线观看国产免| 欧美网站在线观看| 国产婷婷97碰碰久久人人蜜臀| 亚洲电影网站| 亚洲资源av| 最新中文字幕亚洲| 亚洲欧美日本伦理| 男女精品视频| 国产精品老牛| 亚洲国产精品va在线看黑人| 亚洲视频欧美在线| 性欧美大战久久久久久久免费观看 | 狠狠干综合网| 在线观看欧美一区| 亚洲午夜激情网页| 亚洲国产天堂久久国产91| 亚洲一区中文字幕在线观看| 久久免费高清视频| 欧美精品一区二区三区在线播放| 国产精品日韩欧美| 亚洲国产高清高潮精品美女| 亚洲永久免费av| 9人人澡人人爽人人精品| 欧美中文字幕精品| 欧美日韩黄视频| 激情亚洲网站| 亚洲欧美成aⅴ人在线观看| 日韩天堂在线视频| 久久精品成人欧美大片古装| 欧美日韩免费观看一区二区三区| 国模 一区 二区 三区| 一区二区三区黄色| 亚洲日本成人| 久久精品亚洲一区二区三区浴池| 欧美日韩一二三区| 亚洲第一黄色网| 亚洲欧美日韩国产综合在线| 一本大道av伊人久久综合| 老司机一区二区| 国产日韩精品久久久| 一本久道久久综合婷婷鲸鱼| 亚洲激情图片小说视频| 欧美在线视频免费观看| 国产精品成人一区二区网站软件 | 亚洲欧美激情诱惑| 欧美日韩激情小视频| 亚洲电影第三页| 欧美一级视频| 午夜激情一区| 国产精品av免费在线观看| 亚洲人成免费| 亚洲人成人99网站| 另类欧美日韩国产在线| 国产一区二区福利| 亚洲精品国产精品国自产观看浪潮| 久久精品99国产精品日本 | 久久国产66| 国产精品视频yy9099| 99精品国产热久久91蜜凸| 99日韩精品| 欧美日韩国产精品自在自线| 亚洲大片免费看| 最新国产成人在线观看| 看片网站欧美日韩| 在线成人av网站| 久久精品一区二区三区不卡牛牛| 久久精品首页| 国产一区二区中文字幕免费看| 亚洲欧美中文另类| 亚洲精品网站在线播放gif| 欧美黄色片免费观看| 亚洲人成网站在线播| 中日韩美女免费视频网址在线观看 | 亚洲激情在线观看视频免费| 亚洲精品视频啊美女在线直播| 欧美成人性网| 最近中文字幕日韩精品| 日韩视频永久免费观看| 欧美日韩一区二区三区在线| 99视频精品全部免费在线| 亚洲综合二区| 国产毛片一区二区| 欧美一区二区三区四区在线观看| 久久精品成人| 亚洲高清电影| 一区二区免费在线观看| 国产精品久久久久高潮| 亚洲欧美视频一区二区三区| 欧美伊人久久久久久久久影院| 国产视频亚洲精品| 亚洲国产精品成人| 欧美风情在线观看| 最新高清无码专区| 午夜视频在线观看一区二区| 国产精品99一区| 亚洲一区二区在线播放| 久久精品国产999大香线蕉| 国产偷国产偷精品高清尤物| 亚洲一区二区视频在线| 久久乐国产精品| 在线观看欧美激情| 日韩午夜在线视频| 国产精品视频999| 欧美一区二区三区免费视频| 久久久伊人欧美| 国产自产2019最新不卡| 99国内精品久久| 国产精品电影网站| 亚洲欧美亚洲| 欧美韩日一区| 一片黄亚洲嫩模| 欧美一级成年大片在线观看| 精品91在线| 99在线|亚洲一区二区| 国产精品狠色婷| 亚洲国产综合视频在线观看| 欧美精品www在线观看| 亚洲视频精品在线| 欧美在线亚洲| 亚洲精品欧美专区| 亚洲自拍偷拍网址| 国产视频精品免费播放| 欧美影院精品一区| 欧美午夜精品伦理| 久久国产精品网站| 欧美日本一区| 欧美在线日韩在线| 欧美日韩国产在线看| 亚洲综合视频在线| 欧美精品激情blacked18| 亚洲一级免费视频| 久久一区二区精品| 日韩亚洲精品在线| 久久精品欧洲| 亚洲精品日韩在线| 久久se精品一区二区| 伊人色综合久久天天| 亚洲影音先锋| 伊人色综合久久天天| 亚洲午夜精品在线| 国产在线不卡精品| 一区二区三区视频在线 | 国产嫩草一区二区三区在线观看|