<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 設計應用 > FPGA約束、時(shí)序分析的概念介紹

FPGA約束、時(shí)序分析的概念介紹

作者: 時(shí)間:2024-01-04 來(lái)源: 收藏

的概念和基本策略

本文引用地址:http://dyxdggzs.com/article/202401/454495.htm

主要包括周期(FFS到FFS,即觸發(fā)器到觸發(fā)器)和偏移約束(IPAD到FFS、FFS到OPAD)以及靜態(tài)路徑約束(IPAD到OPAD)等3種。通過(guò)附加約束條件可以使綜合布線(xiàn)工具調整映射和布局布線(xiàn)過(guò)程,使設計達到要求。例如用OFFSET_IN_BEFORE約束可以告訴綜合布線(xiàn)工具輸入信號在時(shí)鐘之前什么時(shí)候準備好,綜合布線(xiàn)工具就可以根據這個(gè)約束調整與IPAD相連的Logic Circuitry的綜合實(shí)現過(guò)程,使結果滿(mǎn)足FFS的建立時(shí)間要求。

附加時(shí)序約束的一般策略是先附加全局約束,然后對快速和慢速例外路徑附加專(zhuān)門(mén)約束。附加全局約束時(shí),首先定義設計的所有時(shí)鐘,對各時(shí)鐘域內的同步元件進(jìn)行分組,對分組附加周期約束,然后對/CPLD輸入輸出PAD附加偏移約束、對全組合邏輯的PAD TO PAD路徑附加約束。附加專(zhuān)門(mén)約束時(shí),首先約束分組之間的路徑,然后約束快、慢速例外路徑和多周期路徑,以及其他特殊路徑。

附加約束的基本作用

提高設計的工作頻率

對很多數字電路設計來(lái)說(shuō),提高工作頻率非常重要,因為高工作頻率意味著(zhù)高處理能力。通過(guò)附加約束可以控制邏輯的綜合、映射、布局和布線(xiàn),以減小邏輯和布線(xiàn)延時(shí),從而提高工作頻率。

獲得正確的時(shí)序分析報告

幾乎所有的設計平臺都包含靜態(tài)時(shí)序分析工具,利用這類(lèi)工具可以獲得映射或布局布線(xiàn)后的時(shí)序分析報告,從而對設計的性能做出評估。靜態(tài)時(shí)序分析工具以約束作為判斷時(shí)序是否滿(mǎn)足設計要求的標準,因此要求設計者正確輸入約束,以便靜態(tài)時(shí)序分析工具輸出正確的時(shí)序分析報告。

指定/CPLD引腳位置與電氣標準

FPGA/CPLD的可編程特性使電路板設計加工和FPGA/CPLD設計可以同時(shí)進(jìn)行,而不必等FPGA/CPLD引腳位置完全確定,從而節省了系統開(kāi)發(fā)時(shí)間。這樣,電路板加工完成后,設計者要根據電路板的走線(xiàn)對FPGA/CPLD加上引腳位置約束,使FPGA/CPLD與電路板正確連接。

另外通過(guò)約束還可以指定IO引腳所支持的接口標準和其他電氣特性。為了滿(mǎn)足日新月異的通信發(fā)展,Xilinx新型FPGA/CPLD可以通過(guò)IO引腳約束設置支持諸如AGP、BLVDS、CTT、GTL、GTLP、HSTL、LDT、LVCMOS、LVDCI、LVDS、LVPECL、LVDSEXT、LVTTL、PCI、PCIX、SSTL、ULVDS等豐富的IO接口標準。另外通過(guò)區域約束還能在FPGA上規劃各個(gè)模塊的實(shí)現區域,通過(guò)物理布局布線(xiàn)約束,完成模塊化設計等。

周期(PERIOD)的含義

周期的含義是時(shí)序中最簡(jiǎn)單也是最重要的含義,其它很多時(shí)序概念會(huì )因為軟件商不同略有差異,而周期的概念確是最通用的,周期的概念是FPGA/ASIC時(shí)序定義的基礎概念。后面要講到的其它時(shí)序約束都是建立在周期約束的基礎上的,很多其它時(shí)序公式,可以用周期公式推導。

周期約束是一個(gè)基本時(shí)序和綜合約束,它附加在時(shí)鐘網(wǎng)線(xiàn)上,時(shí)序分析工具根據PERIOD約束檢查時(shí)鐘域內所有同步元件的時(shí)序是否滿(mǎn)足要求。PERIOD約束會(huì )自動(dòng)處理寄存器時(shí)鐘端的反相問(wèn)題,如果相鄰同步元件時(shí)鐘相位相反,那么它們之間的延遲將被默認限制為PERIOD約束值的一半。如下圖所示,

640-4.jpeg

周期的定義

時(shí)鐘的最小周期為:

TCLK = TCKO +TLOGIC +TNET +TSETUP -TCLK_SKEW

TCLK_SKEW =TCD2 -TCD1

其中TCKO為時(shí)鐘輸出時(shí)間,TLOGIC為同步元件之間的組合邏輯延遲,TNET為網(wǎng)線(xiàn)延遲,TSETUP為同步元件的建立時(shí)間,TCLK_SKEW為時(shí)鐘信號TCD2和TCD1延遲的差別。

數據和時(shí)鐘之間的約束

為了確保芯片數據采樣可靠和下級芯片之間正確地交換數據,需要約束外部時(shí)鐘和數據輸入輸出引腳之間的時(shí)序關(guān)系(或者內部時(shí)鐘和外部輸入/輸出數據之間的關(guān)系,這僅僅是從采用了不同的參照系罷了)。約束的內容為告訴綜合器、布線(xiàn)器輸入數據到達的時(shí)刻,或者輸出數據穩定的時(shí)刻,從而保證與下一級電路的時(shí)序關(guān)系。

這種時(shí)序約束在Xilinx中用Setup to Clock(edge),Clock(edge) to hold等表示。在A(yíng)ltera里常用tsu (Input Setup Times)、th (Input Hold Times)、tco (Clock to Out Delays)來(lái)表示。很多其它時(shí)序工具直接用setup和hold表示。其實(shí)他們所要描述的是同一個(gè)問(wèn)題,僅僅是時(shí)間節點(diǎn)的定義上略有不同。下面依次介紹。

關(guān)于輸入到達時(shí)間

Xilinx的“輸入到達時(shí)間的計算”時(shí)序描述如下圖所示:

640-5.jpeg

輸入到達時(shí)間示意圖

定義的含義是輸入數據在有效時(shí)鐘沿之后的TARRIVAL時(shí)刻到達。則,

TARRIVAL=TCKO+TOUTPUT+TLOGIC 公式1

根據上面介紹的周期(Period)公式,我們可以得到:

Tcko+Toutput+Tlogic+Tinput+Tsetup-Tclk_skew=Tclk 公式2

將公式1代入公式2:Tarrival+Tinput+Tsetup-Tclk_skew=Tclk, 而Tclk_skew滿(mǎn)足時(shí)序關(guān)系后為負,所以

TARRIVAL +TINPUT+TSETUP

這就是Tarrival應該滿(mǎn)足的時(shí)序關(guān)系。其中TINPUT為輸入端的組合邏輯、網(wǎng)線(xiàn)和PAD的延遲之和,TSETUP為輸入同步元件的建立時(shí)間。

數據延時(shí)和數據到達時(shí)間的關(guān)系

640-7.jpeg

數據延時(shí)和數據到達時(shí)間示意圖

TDELAY為要求的芯片內部輸入延遲,其最大值TDELAY_MAX與輸入數據到達時(shí)間TARRIVAL的關(guān)系如上圖所示。也就是說(shuō):TDELAY_MAX+TARRIVAL=TPERIOD 公式4

所以:TDELAY

要求輸出的穩定時(shí)間

從下一級輸入端的延遲可以計算出當前設計輸出的數據必須在何時(shí)穩定下來(lái),根據這個(gè)數據對設計輸出端的邏輯布線(xiàn)進(jìn)行約束,以滿(mǎn)足下一級的建立時(shí)間要求,保證下一級采樣的數據是穩定的。計算要求的輸出穩定時(shí)間如下圖所示:

640-8.jpeg

要求的輸出穩定時(shí)間示意圖

公式的推導如下:

定義:TSTABLE = TLOGIC +TINPUT +TSETUP

從周期(Period)公式,可以得到(其中TCLK_SKEW=TCLK1-TCLK2):

TCLK=TCKO+TOUTPUT+TLOGIC+TINPUT+TSETUP+TCLK_SKEW

將TSTABLE的定義代入到周期公式,可以得到:

TCLK=TCKO+TOUTPUT+TSTABLE+TCLK_SKEW

所以:TCKO +TOUTPUT+TSTABLE

這個(gè)公式就是TSTABLE必須要滿(mǎn)足的基本時(shí)序關(guān)系,即本級的輸出應該保持怎么樣的穩定狀態(tài),才能保證下級芯片的采樣穩定。有時(shí)我們也稱(chēng)這個(gè)約束關(guān)系是輸出數據的保持時(shí)間的時(shí)序約束關(guān)系。只要滿(mǎn)足上述關(guān)系,當前芯片輸出端的數據比時(shí)鐘上升沿提早TSTABLE 時(shí)間穩定下來(lái),下一級就可以正確地采樣數據。其中TOUTPUT為設計中連接同步元件輸出端的組合邏輯、網(wǎng)線(xiàn)和PAD的延遲之和,TCKO為同步元件時(shí)鐘輸出時(shí)間。

實(shí)施時(shí)序約束的方法和命令

實(shí)施上述約束的基本方法是,根據已知時(shí)序信息,推算需要約束的時(shí)間值,實(shí)施約束。具體地說(shuō)是這樣的,首先對于一般設計,首先掌握的是TCLK,這個(gè)對于設計者來(lái)說(shuō)是個(gè)已知量。前面介紹公式和圖中的TCKO和TSETUP(注:有的工具軟件對TCKO和TSETUP的定義與前面圖形不同,還包含了到達同步器件的一段logic的時(shí)延)是器件內部固有的一個(gè)時(shí)間量,一般我們選取典型值,對于FPGA,這個(gè)量值比較小,一般不大于1~2ns。比較難以確定的是TINPUT和TOUTPUT兩個(gè)時(shí)間量。

約束輸入時(shí)間偏移,需要知道TINPUT,TINPUT為輸入端的組合邏輯、網(wǎng)線(xiàn)和PAD的延遲之和,PAD的延時(shí)也根據器件型號也有典型值可選,但是到達輸入端的組合邏輯電路和網(wǎng)線(xiàn)的延時(shí)就比較難以確定了,只能通過(guò)靜態(tài)時(shí)序分析工具分析,或者通過(guò)底層布局布線(xiàn)工具量取,有很大的經(jīng)驗和試探的成分在里面。

約束輸出時(shí)間偏移,需要知道TOUTPUT,TOUTPUT為設計中連接同步元件輸出端的組合邏輯、網(wǎng)線(xiàn)和PAD的延遲之和,仍然是到達輸出端的組合邏輯電路和網(wǎng)線(xiàn)的延時(shí)就比較難以確定,需要通過(guò)靜態(tài)時(shí)序分析工具分析,或者通過(guò)底層布局布線(xiàn)工具量取,有很大的經(jīng)驗和試探的成分在里面。

約束的具體命令根據約束工具不同而異,首先說(shuō)使用Xilinx器件的情況下,實(shí)施上述約束的命令和方法。Xilinx把上述約束統稱(chēng)為:OFFSET約束(偏移約束),一共有4個(gè)相關(guān)約束屬性:OFFSET_IN_BEFORE、OFFSET_IN_AFTER、OFFSET_OUT_BEFORE和OFFSET_OUT_AFTER。其中前兩個(gè)屬性叫做輸入偏移(OFFSET_IN)約束,基本功能相似,僅僅是約束取的參考對象不同而已。后兩個(gè)屬性叫做輸出偏移(OFFSET_OUT)約束,基本功能相似,也是約束取的參考對象不同而已。為了便于理解,舉例說(shuō)明。

輸入偏移約束:時(shí)鐘周期為20ns,前級寄存器的TCKO選擇1ns,前級輸出邏輯延時(shí)TOUTPUT為3ns,中間邏輯TLOGIC的延時(shí)為10ns,那么TARRIVAL=14ns,于是可以在數據輸入引腳附加NET DATA_IN OFFET=IN 14ns AFTER CLK約束,也可以使用OFFSET_IN_BEFORE對芯片內部的輸入邏輯進(jìn)行約束,其語(yǔ)法如下:

NET DATA_IN OFFET=IN TDELAY BEFORE CLK

其中TDELAY為要求的芯片內部輸入延遲,其最大值與輸入數據到達時(shí)間TARRIVAL的關(guān)系:TDELAY_MAX + TARRIVAL = TPERIOD,所以TDELAY < TPERIOD - TARRIVAL = 20 - 14 =6 ns。

輸出偏移約束:設時(shí)鐘周期為20ns,后級輸入邏輯延時(shí)TINPUT為4ns、建立時(shí)間TSETUP為1ns,中間邏輯TLOGIC的延時(shí)為10ns,那么TSTABLE=15ns,于是可以在數據輸入引腳附加NET DATA_OUT OFFET=OUT 15ns BEFORE CLK約束,也可以直接對芯片內部的輸出邏輯直接進(jìn)行約束,NET DATA_OUT OFFET=OUT TOUTPUT_DELAY AFTER CLK,其中TOUTPUT_DELAY為要求的芯片內部輸出延遲,其最大值與要求的輸出數據穩定時(shí)間TSTABLE的關(guān)系為:

TOUTPUT_DELAY_MAX+TSTABLE= TPERIOD。TOUT_DELAY< TPERIOD - TSTABLE = 20 - 15 = 5ns

很多人詢(xún)問(wèn)關(guān)于約束、時(shí)序分析的問(wèn)題,比如:如何設置setup,hold時(shí)間?如何使用全局時(shí)鐘和第二全局時(shí)鐘(長(cháng)線(xiàn)資源)?如何進(jìn)行分組約束?如何約束某部分組合邏輯?如何通過(guò)約束保證異步時(shí)鐘域之間的數據交換可靠?如何使用I/O邏輯單元內部的寄存器資源?如何進(jìn)行物理區域約束,完成物理綜合和物理實(shí)現?為了解決大家的疑難,我們將逐一討論這些問(wèn)題。(注:以下主要設計時(shí)序約束)

Altera對應的時(shí)序概念

下面主要介紹Altera對應的這些時(shí)序概念和約束方法。前面首先介紹的第一個(gè)時(shí)序概念是周期(Period),這個(gè)概念是FPGA/ASIC通用的一個(gè)概念,各方的定義相當統一,至多是描述方式不同罷了,所有的FPGA設計都首先要進(jìn)行周期約束,這樣做的好處除了在綜合與布局布線(xiàn)時(shí)給出規定目標外,還能讓時(shí)序分析工具考察整個(gè)設計的Fmax等。

Altera的周期定義如下圖所示,公式描述如下:

640-10.jpeg

Altera的Period示意圖

Clock Period = Clk-to-out + Data Delay + Setup Time - Clk Skew

即,Tclk= Tco+ B + Tsu-(E-C) Fmax =1/Tclk

對比一下前面的介紹,只要理解了B包含了兩級寄存器之間的所有logic和net的延時(shí)就會(huì )發(fā)現與前面公式完全一致。

Altera的其他基本時(shí)序概念

Clock Setup Time (tsu) 要想正確采樣數據,就必須使數據和使能信號在有效時(shí)鐘沿到達前就準備好,所謂時(shí)鐘建立時(shí)間就是指時(shí)鐘到達前,數據和使能已經(jīng)準備好的最小時(shí)間間隔。如下圖所示:

640-11.jpeg

tsu示意圖

(注:這里定義Setup時(shí)間是站在同步時(shí)序整個(gè)路徑上的,需要區別的是另一個(gè)概念Micro tsu。Micro tsu指的是一個(gè)觸發(fā)器內部的建立時(shí)間,它是觸發(fā)器的固有屬性,一般典型值小于1~2ns。在Xilinx等的時(shí)序概念中,稱(chēng)Altera的Micro tsu為setup時(shí)間,用Tsetup表示,請大家區分一下?;氐紸ltera的時(shí)序概念,Altera的tsu定義如下:tsu = Data Delay – Clock Delay + Micro tsu)

Clock Hold Time (tH) 時(shí)鐘保持時(shí)間是只能保證有效時(shí)鐘沿正確采用的數據和使能信號的最小穩定時(shí)間。其定義如下圖所示:

640-12.jpeg

tH示意圖

定義的公式為:tH= Clock Delay – Data Delay + Micro tH

注:其中Micro tH是指寄存器內部的固有保持時(shí)間,同樣是寄存器的一個(gè)固有參數,典型值小于1~2ns。

Clock-to-Output Delay(tco) 這個(gè)時(shí)間指的是當時(shí)鐘有效沿變化后,將數據推倒同步時(shí)序路徑的輸出端的最小時(shí)間間隔。如下圖所示:

640-14.jpeg

tco示意圖

tco = Clock Delay + Micro tco + Data Delay

(注:其中 Micor tco也是一個(gè)寄存器的固有屬性,指的是寄存器相應時(shí)鐘有效沿,將數據送到輸出端口的內部時(shí)間參數。它與Xilinx的時(shí)序定義中,有一個(gè)概念叫Tcko是同一個(gè)概念。)

Pin to Pin Delay (tpd) tpd指輸入管腳通過(guò)純組合邏輯到達輸出管腳這段路徑的延時(shí),特別需要說(shuō)明的是,要求輸入到輸出之間只有組合邏輯,才是tpd延時(shí)。

Slack是表示設計是否滿(mǎn)足時(shí)序的一個(gè)稱(chēng)謂,正的slack表示滿(mǎn)足時(shí)序(時(shí)序的余量),負的slack表示不滿(mǎn)足時(shí)序(時(shí)序的欠缺量)。slack的定義和圖形如下圖所示。

640-15.jpeg

slack示意圖

Slack = Required clock period – Actual clock period

Slack = Slack clock period – (Micro tCO+ Data Delay + Micro tSU)

Clock Skew指一個(gè)同源時(shí)鐘到達兩個(gè)不同的寄存器時(shí)鐘端的時(shí)間偏移,如下圖所示。

640-16.jpeg

clock skew示意圖



關(guān)鍵詞: FPGA 約束 時(shí)序

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>