FPGA 靜態(tài)時(shí)序分析(STA)_第1頁
FPGA 靜態(tài)時(shí)序分析(STA)_第2頁
FPGA 靜態(tài)時(shí)序分析(STA)_第3頁
FPGA 靜態(tài)時(shí)序分析(STA)_第4頁
FPGA 靜態(tài)時(shí)序分析(STA)_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、ALTERA靜態(tài)時(shí)序分析(STA)時(shí)序約束的概念n時(shí)序約束:是指在邏輯綜合,布局布線或靜態(tài)時(shí)序分析時(shí),在綜合工具,布局布線工具或sta工具中指定信號(hào)的頻率/周期,占空比,時(shí)延等約束條件,EDA工具根據(jù)給定的約束條件來工作。n在綜合工具中約束:使綜合的生成的電路滿足時(shí)序要求;n在布局布線工具中約束:目標(biāo)是使布局布線的結(jié)果滿足時(shí)序要求;n在靜態(tài)時(shí)序分析工具中約束:目標(biāo)是根據(jù)約束條件來分析設(shè)計(jì)是否滿足要求;時(shí)序收斂的概念n時(shí)序收斂,又稱時(shí)序閉合,是指通過在邏輯綜合工具、布局布線工具中指定時(shí)序約束條件已經(jīng)行綜合和布局布線,然后分局靜態(tài)時(shí)序分析的報(bào)告,經(jīng)過優(yōu)化設(shè)計(jì)或者修改約束條件后,使設(shè)計(jì)滿足時(shí)序約束條

2、件。STA工具n工具: synopsys的PrimeTime運(yùn)行在linux下 Innoveda的Blast 各個(gè)FPGA廠商的工具如ALTETRA的QuartusII中集成了timequest,它是基于標(biāo)準(zhǔn)約束(SDC)文件的約束,比classic工具的功能更強(qiáng)大,可以對(duì)多時(shí)鐘和源同步接口等較難的情況進(jìn)行約束。如何使用STAn時(shí)序分析的約束需要由用戶輸入;n觀察時(shí)序分析報(bào)告,對(duì)不滿足時(shí)序要求的路徑進(jìn)行重新約束或修改設(shè)計(jì),使路徑滿足要求;n時(shí)序分析的約束指導(dǎo)filter進(jìn)行布局布線,使設(shè)計(jì)滿足要求;基本概念n建立/保持關(guān)系n關(guān)鍵路徑nLaunch/latchn數(shù)據(jù)/時(shí)鐘到達(dá)時(shí)間n數(shù)據(jù)需求時(shí)間n

3、建立/保持的slack分析nRecovery/removalnTiming modes建立/保持關(guān)系關(guān)鍵路徑n關(guān)鍵路徑是指同步邏輯電路中,組合邏輯演示最大的路徑,也就是說關(guān)鍵路徑對(duì)設(shè)計(jì)性能起決定性的影響。nSTA能找出邏輯電路中的關(guān)鍵路徑,通過查看時(shí)序分析報(bào)告,可以確定關(guān)鍵路徑。nTimeques的報(bào)告是以slack從小到大的順序排列路徑的,最差的路徑在最前面報(bào)告。Launch/latch數(shù)據(jù)到達(dá)時(shí)間數(shù)據(jù)到達(dá)時(shí)間n數(shù)據(jù)到達(dá)目的寄存器D處的時(shí)間n數(shù)據(jù)到達(dá)時(shí)間=launch edge+Tclk1 + Tco +Tdata時(shí)鐘到達(dá)時(shí)間時(shí)鐘到達(dá)時(shí)間n時(shí)鐘到達(dá)目的寄存器的時(shí)鐘輸入端的時(shí)間;n時(shí)鐘到達(dá)時(shí)間

4、=latch edge +tclk2數(shù)據(jù)需求時(shí)間n數(shù)據(jù)需求時(shí)間setup和holdn為了使數(shù)據(jù)能在目的寄存器處被鎖存,需要使數(shù)據(jù)在某個(gè)時(shí)間之前或者之后到達(dá)數(shù)據(jù)需求時(shí)間-setup數(shù)據(jù)需求時(shí)間=時(shí)鐘到達(dá)時(shí)間 tsu - setup uncertainty數(shù)據(jù)需求時(shí)間-setup數(shù)據(jù)需求時(shí)間=時(shí)鐘到達(dá)時(shí)間 + th +hold uncertainty建立slackn建立時(shí)間的裕量 建立slack=數(shù)據(jù)需求時(shí)間-數(shù)據(jù)到達(dá)時(shí)間n即數(shù)據(jù)到達(dá)時(shí)間比建立時(shí)間的要求時(shí)間更早,建立時(shí)間“有多”,數(shù)據(jù)在建立時(shí)間內(nèi)穩(wěn)定不變。n在timequest中,報(bào)告中正的slack表示路徑時(shí)序滿足要求,負(fù)的slack表示路徑時(shí)

5、序不滿足要求。n默認(rèn)的情況下,建立時(shí)間關(guān)系的確定方法是:latch edge之前最近的一個(gè)launch edge被認(rèn)為是發(fā)送沿,這兩個(gè)沿之間的距離就是setup relationship。這個(gè)關(guān)系可以通過設(shè)置多周期來改變。建立slack保持slackn保持時(shí)間的“裕量” 保持slack=數(shù)據(jù)到達(dá)時(shí)間-數(shù)據(jù)需求時(shí)間n即數(shù)據(jù)到達(dá)時(shí)間比保持時(shí)間的要求時(shí)間更晚,保持時(shí)間“有多”,數(shù)據(jù)在保持時(shí)間內(nèi)穩(wěn)定不變。n在timequest中,報(bào)告中正的slack表示路徑時(shí)序滿足要求,負(fù)的slack表示路徑時(shí)序不滿足要求。n默認(rèn)的情況下,建立時(shí)間關(guān)系的確定方法是:launch edge和latch edge之前的一

6、個(gè)鎖存沿之間的距離就是hold relationship。這個(gè)關(guān)系可以通過設(shè)置多周期來改變。保持slack保持slacknTimequest中,保持檢查分兩種: 1. 當(dāng)前l(fā)aunch edge的數(shù)據(jù)不會(huì)被前一個(gè)latch edge鎖存到; 2. 下一個(gè)launch edge的數(shù)據(jù)不會(huì)被當(dāng)前l(fā)atch edge鎖存到;n保持檢查是對(duì)每對(duì)建立關(guān)系進(jìn)行的。報(bào)告的是最差的保持路徑。保持slackRecovery/removalnRecovery :在時(shí)鐘有效沿之前,異步信號(hào)必須穩(wěn)定的最小時(shí)間;nRemoval:在時(shí)鐘有效沿之后,異步信號(hào)必須穩(wěn)定的最小時(shí)間;n兩者都是針對(duì)異步信號(hào)從有效變無效的情況;n

7、分析方法同建立/保持分析; Recovery/removalTiming modeln兩種:slow corner(默認(rèn))和fast cornern建立時(shí)間在slow corner中必須滿足; 保持時(shí)間在fast corner中必須滿足;n用get_available_operating_conditions命令獲得器件支持的時(shí)序模型; Timing model在QuartusII中使用Timequest在QuartusII中使用Timequest在QuartusII中使用Timequest使用timequest的步驟n1.生成網(wǎng)表n2.約束:讀入SDC文件或者寫入約束n3.updata網(wǎng)表n

8、4.report,check timingn5.保存約束(操作說明)SDC術(shù)語SDC術(shù)語SDC約束的類型n三類約束:1. 時(shí)鐘(基本時(shí)鐘,衍生時(shí)鐘和虛擬時(shí)鐘)2. IO延遲(set input/output delay)3. 時(shí)序例外(exception)nTimequest只報(bào)告約束了的路徑建議約束所有的時(shí)鐘和輸入輸出portSDC約束的類型時(shí)鐘約束nTimequest中默認(rèn)所有的時(shí)鐘都相關(guān);n基本時(shí)鐘:create_clock 虛擬時(shí)鐘:create_clock 衍生時(shí)鐘:create_generated_clock 或derive_pll_clocks 時(shí)鐘約束n檢測(cè)系統(tǒng)中的所有時(shí)鐘:

9、derive_clocks period 運(yùn)行該命令后,再運(yùn)行report_clocks 命令,即可觀察系統(tǒng)中都有哪些時(shí)鐘,以便對(duì)所有時(shí)鐘都進(jìn)行約束; 該命令只作為檢測(cè)時(shí)鐘用,最后的約束不能使用這個(gè)命令;時(shí)鐘約束n基本時(shí)鐘和衍生時(shí)鐘時(shí)鐘約束n基本時(shí)鐘和虛擬時(shí)鐘基本時(shí)鐘: create_clock -period 10 name clk1 get_ports clk虛擬時(shí)鐘:create_clock -period 10 name clk1 =虛擬時(shí)鐘在源同步接口中會(huì)使用到。時(shí)鐘約束n虛擬時(shí)鐘:是一個(gè)在設(shè)計(jì)中沒有真正源或者說與設(shè)計(jì)沒有直接關(guān)系的一個(gè)時(shí)鐘。例如,如果一個(gè)時(shí)鐘不是設(shè)計(jì)中的時(shí)鐘,而僅僅

10、作為一個(gè)外部器件的時(shí)鐘源,并且外部器件和該設(shè)計(jì)有輸入或者輸出的管腳,那么就認(rèn)為這個(gè)時(shí)鐘是虛擬時(shí)鐘。時(shí)鐘約束虛擬時(shí)鐘:#create base clock for the designcreate_clock -period 5 get_ports system_clk#create the virtual clock for the external registercreate_clock -period 10 -name virt_clk -waveform 0 5 #set the output delay referencing the virtual clockset_output_

11、delay -clock virt_clk -max 1.5 get_ports dataout時(shí)鐘約束n時(shí)鐘復(fù)用 1.通過多個(gè)時(shí)鐘引腳接入多個(gè)時(shí)鐘; 2.一個(gè)時(shí)鐘輸入引腳上接多個(gè)頻率的時(shí)鐘,時(shí)鐘復(fù)用在器件外部實(shí)現(xiàn); 3.使用pll的switch-over模式ntimequest支持對(duì)復(fù)用時(shí)鐘進(jìn)行約束: 時(shí)鐘約束n時(shí)鐘復(fù)用 create_clock的 add 選項(xiàng) set_clock_group時(shí)鐘約束n#Create the first input clock clkA to the muxncreate_clock -period 10.000 -name clkA get_ports c

12、lkAn#Create the second input clock clkB to the muxncreate_clock -period 20.000 -name clkB get_ports clkBn#Cut paths between clkA and clkBnset_clock_groups exclusive -group clkA -group clkB多個(gè)引腳接入時(shí)鐘約束n# The clk port can be driven at 100MHz (10ns) or# 50MHz (20ns)n# clkA is 10nsncreate_clock -period 10

13、.000 -name clkA get_ports clkn# clkB is 20ns assigned to the same port Requires -add optionncreate_clock -period 20.000 -name clkB get_ports clk -addnset_clock_groups -exclusive -group clkA -group clkB外部復(fù)用時(shí)鐘約束n#create a 10ns clock for clock port clk0ncreate_clock -period 10.000 -name clk0 get_ports

14、clk0n#create a 20ns clock for clock port clk1ncreate_clock -period 20.000 -name clk1 get_ports clk1n#automatically create clocks for the PLL output clocksnderive_pll_clocksPLL兩個(gè)輸入時(shí)鐘時(shí)鐘約束nset_clock_latencyn兩種:network latency和source latency; network latency:時(shí)鐘(如,一個(gè)clock port)到寄存器pin之間的時(shí)鐘網(wǎng)路延遲; source la

15、tency:時(shí)鐘源到時(shí)鐘之間的時(shí)鐘網(wǎng)絡(luò)延遲;nTimequest自動(dòng)計(jì)算network latency,所以set_clock_latency只設(shè)置source latency(- source 選項(xiàng)不可少)nPLL輸出時(shí)鐘反饋到FPGA時(shí)鐘輸入引腳時(shí)特別有用;這種latency可以通過在chip planner中查看到。時(shí)鐘約束nset_clock_uncertainty n為時(shí)鐘或者時(shí)鐘到時(shí)鐘傳輸指定了時(shí)鐘不確定時(shí)間(uncertainty)或時(shí)鐘偏斜(skew)??梢詾閭€(gè)別的建立和保持時(shí)間指定不確定時(shí)間,也可以為個(gè)別時(shí)鐘傳輸指定上升沿或下降沿。 nTimequest為每個(gè)合適路徑data

16、 required time里扣除建立不確定時(shí)間,為每個(gè)合適路徑的data required time加上保持不確定時(shí)間。時(shí)鐘約束nclock uncertainty = clock jitter + clock skew. jitter 是 由時(shí)鐘源產(chǎn)生的抖動(dòng)。skew是時(shí)鐘樹不平衡引起的到達(dá)兩個(gè)寄存器的延遲差。在cts之后,skew由工具算出,因此sta的時(shí)候clock uncertainty 可以設(shè)一個(gè)比較小的值。另外做hold check的時(shí)候因?yàn)闄z查的是同一個(gè)時(shí)鐘沿,因此沒有jitter只有skew.時(shí)鐘約束nset_clock_groupsn設(shè)計(jì)中有很多時(shí)鐘,并不是每個(gè)時(shí)鐘之間都有

17、關(guān)系nset_clock_groups -asynchronous |-exclusive -group -group -group .n-asynchronous:兩個(gè)時(shí)鐘之間沒有相位關(guān)系,并且同時(shí)有效;n-exclusive:兩個(gè)時(shí)鐘是互斥的,如復(fù)用到一個(gè)時(shí)鐘引腳的兩個(gè)時(shí)鐘;n-group:group之內(nèi)的時(shí)鐘之間相關(guān), group之間的時(shí)鐘互不相關(guān);時(shí)鐘約束n時(shí)鐘之間沒有整數(shù)倍關(guān)系,時(shí)鐘的周期也不是ns的整數(shù)倍時(shí),可能會(huì)出現(xiàn)latch和launch沿之間只有幾個(gè)ps的建立時(shí)間,這時(shí)候,需要對(duì)時(shí)鐘進(jìn)行約束;nSet_max_delay和set_min_delay時(shí)鐘約束set_max_de

18、lay -from get_clocks clk_a -to get_clocks clk_b 3.333set_min_delay -from get_clocks clk_a -to get_clocks clk_b 0IO約束n純組合IO接口n同步IO接口n源同步IO接口IO約束n純組合IO接口nset_max_delay 和 set_min_delayIO約束nset_max_delay from get_ports in1 to get_ports out* 5.0nset_max_delay from get_ports in2 to get_ports out* 7.5nset_

19、max_delay from get_ports in3 to get_ports out* 9.0nset_min_delay from get_ports in1 to get_ports out* 1.0nset_min_delay from get_ports in2 to get_ports out* 2.0nset_min_delay from get_ports in3 to get_ports out* 3.0純組合IO接口IO約束n同步輸入接口:保證fpga滿足建立保持時(shí)間IO約束n輸入最大延遲:包含了FPGA之外的所有延遲,數(shù)據(jù)從外部器件經(jīng)過最長的時(shí)間到達(dá)FPGA后,仍然要

20、滿足FPGA的建立時(shí)間。ninput delay max = Board Delay (max) - Board clock skew (min) + Tco(max) = (Tdata_PCB(max)+ TCL) - (Tclk2ext(min)-Tclk1(max) + Tco(max)IO約束n輸入最小延遲:包含了FPGA之外的所有延遲,數(shù)據(jù)從外部器件經(jīng)過最段的時(shí)間到達(dá)FPGA后,仍然要滿足FPGA的保持時(shí)間。ninput delay min = Board Delay (min) - Board clock skew (max) + Tco(min) = (Tdata_PCB(min

21、)+ TCL) - (Tclk2ext(max)-Tclk1(min) + Tco(min)IO約束n最大延遲和最小延遲都要定義,如果只定義了一種,會(huì)有warning,并且另外一種類型的延遲會(huì)默認(rèn)的等于已定義的類型的延遲的值。IO約束n同步輸出接口:保證fpga的tco滿足要求IO約束n輸出最大延遲:包含了FPGA之外的所有延遲,數(shù)據(jù)經(jīng)過最長的時(shí)間到達(dá)外部器件,仍然滿足外部器件的建立時(shí)間noutput delay max = Board Delay (max) - Board clock skew (min) + Tsu = (Tdata_PCB(max)+ TCL) - (Tclk2(min

22、) -Tclk1ext(max) + TsuIO約束n輸出最大延遲:包含了FPGA之外的所有延遲,數(shù)據(jù)經(jīng)過最短的時(shí)間到達(dá)外部器件,仍然滿足外部器件的保持時(shí)間noutput delay min = Board Delay (min) - Board clock skew (max) - Th = (Tdata_PCB(min)+ TCL) - (Tclk2(max) Tclk1ext(min) - ThIO約束n源同步接口:時(shí)鐘和數(shù)據(jù)一起從源器件發(fā)送到接收器件nSystem_approach的計(jì)算方式,考慮板上的延遲IO約束源同步輸出IO約束IO約束n源同步輸出noutput delay max

23、 = Board Delay (max) - Board clock skew (min) + Tsu =2-1.4+2=2.6noutput delay min = Board Delay (min) - Board clock skew (max) - Th =1.5-1.7-0.5=-0.7IO約束IO約束IO約束n源同步輸入IO約束IO約束ninput delay max = Board Delay (max) - Board clock skew (min) + Tco(max) =2-1.4+3=3.6ninput delay min = Board Delay (min) - B

24、oard clock skew (max) + Tco(min) =1.5-1.7+1=0.8IO約束IO約束IO約束n對(duì)輸出,Delay的value是指在fpga的端口上,數(shù)據(jù)在時(shí)鐘的有效沿多久之前穩(wěn)定,這樣,到達(dá)外部器件的寄存器后,才能滿足建立時(shí)間和保持時(shí)間。類似于在fpga端口上數(shù)據(jù)的建立時(shí)間和保持時(shí)間要求。n對(duì)輸入,Delay的value是指當(dāng)?shù)竭_(dá)fpga的寄存器時(shí),數(shù)據(jù)會(huì)在時(shí)鐘有效沿多久之后穩(wěn)定;n不論是輸入延遲還是輸出延遲,都是data 在 fpga port處相對(duì)于與時(shí)鐘的延遲。 時(shí)序例外n包括三項(xiàng)(按優(yōu)先級(jí)由高到低排列): 1. set_false_path 2. set_min_delay 和set_max_delay 3.設(shè)置多周期(multicycle)時(shí)序例外nset_false_path:將與設(shè)計(jì)功能無關(guān)的路徑設(shè)置為錯(cuò)誤路徑,例如,測(cè)試功能模塊等,這樣,filter在布局布線時(shí)將釋放出資源優(yōu)先給有用路徑,使時(shí)序

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論