0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解Vivado時(shí)鐘的基礎(chǔ)知識(shí)

FPGA設(shè)計(jì)論壇 ? 來(lái)源:FPGA設(shè)計(jì)論壇 ? 作者:FPGA設(shè)計(jì)論壇 ? 2022-04-20 10:40 ? 次閱讀

時(shí)鐘的基礎(chǔ)知識(shí)

數(shù)字設(shè)計(jì)中,“時(shí)鐘”表示在寄存器間可靠地傳輸數(shù)據(jù)所需的參考時(shí)間。Vivado的時(shí)序引擎通過(guò)時(shí)鐘特征來(lái)計(jì)算時(shí)序路徑需求,通過(guò)計(jì)算裕量(Slack)的方法報(bào)告設(shè)計(jì)時(shí)序空余。時(shí)鐘必須有合適的定義,包含如下特性:

  • 定義時(shí)鐘樹(shù)的驅(qū)動(dòng)管腳或端口,通常稱(chēng)作根或源點(diǎn)。

  • 通過(guò)周期和波形屬性來(lái)描述時(shí)鐘邊沿。

  • 周期(period)以ns為單位進(jìn)行設(shè)定,與波形重復(fù)率相關(guān)。

  • 波形(waveform)以列表的形式給出,表中包含上升沿和下降沿在周期中的絕對(duì)時(shí)間,以ns為單位。

如下圖給出了兩個(gè)時(shí)鐘Clk0: period=10, waveform={0 5}、Clk1: period=8, waveform = {2 8}。

7e9cf86a-c04b-11ec-bce3-dac502259ad0.png

上述給出的只是時(shí)鐘的理想特征。當(dāng)時(shí)鐘進(jìn)入了FPGA器件,通過(guò)時(shí)鐘樹(shù)傳遞時(shí),時(shí)鐘邊沿會(huì)有延時(shí),通常稱(chēng)作時(shí)鐘網(wǎng)絡(luò)延遲;噪聲或硬件表現(xiàn)會(huì)導(dǎo)致時(shí)鐘隨時(shí)可能發(fā)生變化,通常稱(chēng)作時(shí)鐘不確定性,包括時(shí)鐘抖動(dòng)、相位錯(cuò)位等等。Vivado在時(shí)序分析時(shí)會(huì)考慮這些非理想因素以得到精確的時(shí)序裕量。

Xilinx FPGA器件內(nèi)部有專(zhuān)用的硬件資源,支持大量設(shè)計(jì)時(shí)鐘的使用。通常板子上有一個(gè)外部組件(如有源晶振)產(chǎn)生時(shí)鐘信號(hào),通過(guò)輸入端口進(jìn)入器件內(nèi)部。外部時(shí)鐘可以通過(guò)MMCM、PLL、BUFR等特殊原語(yǔ)生成其它時(shí)鐘,也可以由LUT、寄存器等常規(guī)單元進(jìn)行轉(zhuǎn)換(通常稱(chēng)作門(mén)控時(shí)鐘)。本文將講述如何根據(jù)應(yīng)用情況定義時(shí)鐘。

主時(shí)鐘Primary Clock

主時(shí)鐘通常由兩個(gè)來(lái)源:(1).板級(jí)時(shí)鐘通過(guò)輸入端口進(jìn)入設(shè)計(jì);(2).GT收發(fā)器的輸出管腳(如恢復(fù)時(shí)鐘)。主時(shí)鐘必須與一個(gè)網(wǎng)表對(duì)象相連,該對(duì)象代表了所有時(shí)鐘邊沿的開(kāi)始點(diǎn),并且在時(shí)鐘樹(shù)中向下傳遞。也可以說(shuō),主時(shí)鐘的源點(diǎn)定義了0時(shí)刻,Vivado靠此來(lái)計(jì)算時(shí)鐘延遲和不確定性。

主時(shí)鐘只能通過(guò)create_clock命令來(lái)定義,且必須放在約束的開(kāi)始,這是因?yàn)槠渌鼤r(shí)序約束幾乎都要參考主時(shí)鐘。下面給出兩個(gè)主時(shí)鐘的例子。第一個(gè)例子如下圖所示,采用單端時(shí)鐘輸入:

7eb39f84-c04b-11ec-bce3-dac502259ad0.png

板級(jí)時(shí)鐘通過(guò)sysclk端口進(jìn)入FPGA,通過(guò)一個(gè)輸入緩沖器和一個(gè)時(shí)鐘緩沖器后到達(dá)寄存器。使用如下命令定義:

  • create_clock -period 10 [get_ports sysclk] #10ns周期,50%占空比,無(wú)相移

  • create_clock -name devclk -period 10 -wavefor {2.5 5} [get_ports sysclk] #板級(jí)時(shí)鐘名稱(chēng)devclk,10ns周期,25%占空比,90°相移

第二個(gè)例子如下圖所示,采用差分時(shí)鐘輸入,這也是高速時(shí)鐘的輸入方式:

7ed56fb0-c04b-11ec-bce3-dac502259ad0.png

上圖中差分時(shí)鐘驅(qū)動(dòng)一個(gè)PLL,定義主時(shí)鐘時(shí)必須只創(chuàng)建差分緩沖器的正極輸入。如果同時(shí)創(chuàng)建了正極、負(fù)極輸入,將會(huì)導(dǎo)致錯(cuò)誤的CDC路徑。如“create_clock -name sysclk -period 3.33 [get_ports SYS_CLK_clk_p]”。

虛擬時(shí)鐘Virtual Clock

這種類(lèi)型的時(shí)鐘對(duì)于初學(xué)者來(lái)說(shuō)用的可能很少,虛擬時(shí)鐘通常用于設(shè)定輸入和輸出的延遲約束。之所以稱(chēng)為“虛擬”,是因?yàn)檫@種時(shí)鐘在物理上沒(méi)有與設(shè)計(jì)中的任何網(wǎng)表對(duì)象相連。定義時(shí)使用create_clock命令,但無(wú)需指定源對(duì)象。在下列情況需要用到虛擬時(shí)鐘:

  • 所有設(shè)計(jì)時(shí)鐘都不是外部器件I/O的參考時(shí)鐘。

  • FPGA的I/O路徑與一個(gè)內(nèi)部生成的時(shí)鐘相關(guān),但是該時(shí)鐘不能合適地通過(guò)對(duì)板級(jí)時(shí)鐘計(jì)時(shí)來(lái)生成(如兩個(gè)周期的比不是整數(shù))。

  • 希望為與I/O延遲約束相關(guān)的時(shí)鐘設(shè)定不同的抖動(dòng)和延遲,但是不希望修改內(nèi)部時(shí)鐘的特征。

比如時(shí)鐘clk_virt的周期為10ns,且不與任何網(wǎng)表對(duì)象相連,可以這樣定義“create_clock -name clk_virt –period 10”,沒(méi)有指定objects參數(shù)。注意,虛擬時(shí)鐘必須在使用之前便定義好。

生成時(shí)鐘Generated Clock

生成時(shí)鐘是指在設(shè)計(jì)內(nèi)部由特殊單元(如MMCM、PLL)或用戶(hù)邏輯驅(qū)動(dòng)的時(shí)鐘。生成時(shí)鐘與一個(gè)上級(jí)時(shí)鐘(注:官方稱(chēng)作master clock,為與primary clock作區(qū)分,這里稱(chēng)作上級(jí)時(shí)鐘)相關(guān),其屬性也是直接由上級(jí)時(shí)鐘派生而來(lái)。上級(jí)時(shí)鐘可以是一個(gè)主時(shí)鐘,也可以是另一個(gè)生成時(shí)鐘。

生成時(shí)鐘使用create_generated_clock命令定義,該命令不是設(shè)定周期或波形,而是描述時(shí)鐘電路如何對(duì)上級(jí)時(shí)鐘進(jìn)行轉(zhuǎn)換。這種轉(zhuǎn)換可以是下面的關(guān)系:

  • 簡(jiǎn)單的頻率分頻

  • 簡(jiǎn)單的頻率倍頻

  • 頻率倍頻與分頻的組合,獲得一個(gè)非整數(shù)的比例,通常由MMCM或PLL完成

  • 相移或波形反相

  • 占空比改變

  • 上述所有關(guān)系的組合

Vivado計(jì)算生成時(shí)鐘的延遲時(shí),會(huì)追蹤生成時(shí)鐘的源管腳與上級(jí)時(shí)鐘的源管腳之間的所有組合和時(shí)序路徑。某些情況下可能只希望考慮組合邏輯路徑,在命令行后添加-combinational選項(xiàng)即可。

這里先解釋一下本文甚至本系列大量使用的兩個(gè)詞,端口(Port)和管腳(Pin)。端口通常用get_ports命令獲取,管腳使用get_pins命令獲取。二者的含義是不同的,但管腳的范圍更廣泛,比如設(shè)計(jì)中用到的一個(gè)寄存器都有3個(gè)管腳:clk、D和Q。下面給出幾個(gè)定義生成時(shí)鐘的例子:

1.簡(jiǎn)單的2分頻

下圖中,主時(shí)鐘clkin通過(guò)端口進(jìn)入FPGA,使用一個(gè)寄存器REGA對(duì)其2分頻,得到的生成時(shí)鐘clkdiv2驅(qū)動(dòng)其它的寄存器管腳。

7ef19e06-c04b-11ec-bce3-dac502259ad0.png

可以采用如下兩種方法對(duì)生成時(shí)鐘進(jìn)行約束:

  • #定義主時(shí)鐘,周期10ns,50%占空比

  • create_clock -name clkin -period 10 [get_ports clkin]

  • #約束方法1,主時(shí)鐘作為源點(diǎn)

  • create_generated_clock -name clkdiv2 -source [get_ports clkin] -divide_by 2 [get_pins REGA/Q]

  • #約束方法2,REGA的始終管腳作為源點(diǎn)

  • create_generated_clock -name clkdiv2 -source [get_pins REGA/C] -divide_by 2 [get_pins REGA/Q]

約束命令中使用**-source選項(xiàng)來(lái)設(shè)定上級(jí)時(shí)鐘,但如上所示,該選項(xiàng)只能設(shè)定為一個(gè)端口或管腳類(lèi)型的網(wǎng)表對(duì)象,不能直接設(shè)置為時(shí)鐘類(lèi)型對(duì)象。上面約束使用-divide_by選項(xiàng)設(shè)置分頻系數(shù),此外還可以使用-edges**選項(xiàng),如下所示:

  • 該約束與上面等效

  • create_generated_clock -name clkdiv2 -source [get_pins REGA/C] -eedges {1 3 5} [get_pins REGA/Q]

-edges的參數(shù)為一個(gè)列表,該列表通過(guò)主時(shí)鐘的邊沿來(lái)描述生成時(shí)鐘的波形。列表中的值為主時(shí)鐘邊沿的序號(hào)(注意觀察上圖),由時(shí)鐘上升沿開(kāi)始,定義了生成時(shí)鐘邊沿的時(shí)間點(diǎn)。

2.改變占空比與相移

如果僅需要改變時(shí)鐘的相移,使用**-edge_shift**選項(xiàng)可以正向或反向設(shè)定每一個(gè)生成時(shí)鐘波形的相移量。注意,-edge_shift選項(xiàng)不能與-devide_by、-multiply_by、-invert選項(xiàng)同時(shí)使用。下圖中上級(jí)時(shí)鐘為clkin,進(jìn)入mmcm0單元,產(chǎn)生一個(gè)25%占空比、相移90°的時(shí)鐘:

7f158fd2-c04b-11ec-bce3-dac502259ad0.png

可以采用如下方法對(duì)生成時(shí)鐘進(jìn)行約束。使用上級(jí)時(shí)鐘的1、2、3標(biāo)號(hào)邊沿(即0ns、5ns、10ns)定義生成時(shí)鐘,為了得到預(yù)期波形,1和3標(biāo)號(hào)邊沿要分別移動(dòng)2.5ns,得到2.5ns、5ns、12.5ns的波形。

  • #定義主時(shí)鐘,周期10ns,50%占空比

  • create_clock -name clkin -period 10 [get_ports clkin]

  • #定義生成時(shí)鐘,周期10ns,25%占空比,90°相移

  • create_generated_clock -name clkshifit -source [get_pins mmcm0/CLKIN] -edges {1 2 3} -edge_shift {2.5 0 2.5} [get_pins mmcm0/CLKOUT]

3.同時(shí)倍頻與分頻

這種情況通常用于定義MMCM或PLL的輸出,一般使用這些IP核時(shí)會(huì)自動(dòng)創(chuàng)建相應(yīng)約束。考慮上例中的圖,假設(shè)MMCM將上級(jí)時(shí)鐘倍頻到4/3倍,無(wú)法直接倍頻,需要同時(shí)使用-divede_by和-multiply_by選項(xiàng)來(lái)實(shí)現(xiàn):

  • create_clock -name clkin -period 10 [get_ports clkin] #定義主時(shí)鐘

  • #定義生成時(shí)鐘,4/3倍頻

  • create_generated_clock -name clk43 -source [get_pins mmcm0/CLKIN] -multiply_by 4 -divide_by 3 [get_pins mmcm0/CLKOUT]

4.僅通過(guò)組合路徑追蹤上級(jí)時(shí)鐘

前面簡(jiǎn)單介紹了-combinational選項(xiàng)的使用,為了更好理解,這里舉一個(gè)具體例子。下圖中,上級(jí)時(shí)鐘同時(shí)傳遞到寄存器和多路選擇器中,寄存器對(duì)時(shí)鐘進(jìn)行2分頻。多路選擇器從寄存器的2分頻時(shí)鐘和上級(jí)時(shí)鐘中選擇一個(gè)作為生成時(shí)鐘輸出。

7f3c6f44-c04b-11ec-bce3-dac502259ad0.png

顯而易見(jiàn),從上級(jí)時(shí)鐘到生成時(shí)鐘有兩條路徑,一條為時(shí)序路徑,一條為組合路徑。如果我們只希望考慮組合路徑上的延遲時(shí),定義生成時(shí)鐘時(shí)就需要使用-combinational選項(xiàng)。

自動(dòng)生成時(shí)鐘

這種類(lèi)型時(shí)鐘算是生成時(shí)鐘的一種特例,“自動(dòng)”是指在已經(jīng)定義了上級(jí)時(shí)鐘的情況下,Vivado會(huì)自動(dòng)為時(shí)鐘管理單元CMBs(Clock Modifying Blocks)的輸出管腳創(chuàng)建約束。官方稱(chēng)作Automatically Derived Clocks或Auto-generated Clock。

7系列FPGA的CMB單元包括MMCM、PLL、BUFR、PHASER;UltraScale系列FPGA的CMB單元種類(lèi)與數(shù)量更多,這里不陳列。如果約束中已經(jīng)存在用戶(hù)在某一網(wǎng)表對(duì)象上定義的時(shí)鐘,則不會(huì)創(chuàng)建相同對(duì)象上的自動(dòng)生成時(shí)鐘。

下面給出一個(gè)具體例子。下圖中上級(jí)時(shí)鐘clkin驅(qū)動(dòng)clkip/mmcm0單元的CLKIN輸入,該單元是一個(gè)MMCME2資源的實(shí)例。則自動(dòng)生成時(shí)鐘的定義源點(diǎn)為clkip/mmcm0/CLKOUT,頂層與此源點(diǎn)連接的網(wǎng)絡(luò)名為clkip/cpuClk,自動(dòng)生成時(shí)鐘的名字便是cpuClk。

7f5ec94a-c04b-11ec-bce3-dac502259ad0.png

如上所述,Vivado會(huì)自動(dòng)創(chuàng)建自動(dòng)生成時(shí)鐘的名稱(chēng)(Name),如果兩個(gè)名稱(chēng)發(fā)生沖突也會(huì)自動(dòng)添加后綴,如usrclk、usrclk_1等等。Vivado也支持對(duì)已經(jīng)創(chuàng)建好的自動(dòng)生成時(shí)鐘重新命名,但很少用到,這里不做介紹。

時(shí)鐘組Clock Group

很多初學(xué)者應(yīng)該也沒(méi)有接觸過(guò)時(shí)鐘組這個(gè)概念。默認(rèn)情況下,Vivado會(huì)測(cè)量設(shè)計(jì)中所有時(shí)鐘之間的路徑時(shí)序。添加如下兩種約束可以控制該功能:

  • set_clock_groups:建立時(shí)鐘組,Vivado不會(huì)對(duì)不同時(shí)鐘組的時(shí)鐘之間進(jìn)行時(shí)序分析。

  • set_false_path:將兩個(gè)時(shí)鐘之間的路徑設(shè)置為false path后,不會(huì)對(duì)該路徑進(jìn)行任何時(shí)序分析。

劃分時(shí)鐘組通常有兩個(gè)依據(jù):(1).原理圖或時(shí)鐘網(wǎng)絡(luò)報(bào)告中的時(shí)鐘樹(shù)拓?fù)鋱D,判斷哪些時(shí)鐘不應(yīng)該放在一起做時(shí)序分析;(2).時(shí)鐘交互報(bào)告查看兩個(gè)時(shí)鐘間存在的約束,判斷它們是否有共享的主時(shí)鐘(代表是否有已知的相位關(guān)系)或者是否有公共周期。

但要明白,我們?cè)O(shè)定時(shí)鐘組的目的還是為了保證設(shè)計(jì)在硬件中能正常工作,因此我們必須確保這些忽略了時(shí)序分析的路徑有合適的再同步電路或異步數(shù)據(jù)傳輸協(xié)議。根據(jù)時(shí)鐘間的關(guān)系,可以做如下分類(lèi):

  • 同步時(shí)鐘:即兩個(gè)時(shí)鐘間有可預(yù)知的相對(duì)相位,通常它們的時(shí)鐘樹(shù)源自網(wǎng)表中的同一個(gè)根,且有一個(gè)公共周期。

  • 異步時(shí)鐘:兩個(gè)時(shí)鐘間有無(wú)法預(yù)知的相對(duì)相位。比如兩個(gè)獨(dú)立的晶振信號(hào)通過(guò)兩個(gè)輸入端口進(jìn)入FPGA中,生成兩個(gè)時(shí)鐘。由于兩個(gè)主時(shí)鐘沒(méi)有明確的相位關(guān)系,兩個(gè)生成時(shí)鐘間便是異步的。

  • 不可擴(kuò)展時(shí)鐘:官方稱(chēng)作Unexpandable Clocks,是指時(shí)序引擎在1000個(gè)周期內(nèi)無(wú)法判斷兩個(gè)時(shí)鐘是否有公共周期。這種情況通常發(fā)生在兩個(gè)時(shí)鐘周期比是一個(gè)特殊的分?jǐn)?shù),比如一個(gè)主時(shí)鐘通過(guò)MMCM生成一個(gè)周期為5.125ns的時(shí)鐘clk1和一個(gè)周期為6.666ns的時(shí)鐘clk2,盡管它們?cè)跁r(shí)鐘樹(shù)的根上有一個(gè)確定的相位關(guān)系,但是在1000個(gè)周期內(nèi)時(shí)鐘上升沿?zé)o法再次對(duì)齊。

1.異步時(shí)鐘組

同步時(shí)鐘可以安全地進(jìn)行時(shí)序分析。異步時(shí)鐘和不可擴(kuò)展時(shí)鐘雖然通過(guò)時(shí)序分析也會(huì)得到一個(gè)裕量值,但這個(gè)值不可作為可靠結(jié)果。從這個(gè)角度出發(fā),不可擴(kuò)展時(shí)鐘也可以視作一種特殊的異步時(shí)鐘。這就需要通過(guò)設(shè)置時(shí)鐘組來(lái)忽略異步時(shí)鐘的時(shí)序路徑上的時(shí)序分析。

這里舉個(gè)例子,一個(gè)主時(shí)鐘clk0通過(guò)MMCM生成兩個(gè)時(shí)鐘usrclk和itfclk;另一個(gè)主時(shí)鐘clk1通過(guò)另一個(gè)MMCM生成兩個(gè)時(shí)鐘clkrx和clktx。用如下命令創(chuàng)建異步時(shí)鐘組:

  • set_clock_groups -name async_clk0_clk1 -asynchronous -group {clk0 usrclk itfclk} -group {clk1 clkrx clktx}

  • #如果時(shí)鐘名稱(chēng)事先不知道,可以用如下寫(xiě)法

  • set_clock_groups -name async_clk0_clk1 -asynchronous -group [get_clocks -include_generated_clocks clk0] -group [get_clocks -include_generated_clocks clk1]

2.互斥時(shí)鐘組

下面再介紹另一種會(huì)用到時(shí)鐘組的情況。某些設(shè)計(jì)會(huì)有幾個(gè)操作模式,不同操作模式使用不同的時(shí)鐘。這些時(shí)鐘通常由專(zhuān)用的時(shí)鐘選擇器進(jìn)行選擇,如BUFGMUX和BUFGCTRL,最好不要用LUT作時(shí)鐘選擇器。

這些單元都是組合邏輯單元,Vivado會(huì)將所有輸入傳遞到輸出。在Vivado IDE中,幾個(gè)時(shí)序時(shí)鐘可以同時(shí)存在時(shí)鐘樹(shù)上,方便地同時(shí)報(bào)告所有操作模式。但是在硬件中這是不可能的,它們之間是互斥的,這些時(shí)鐘便稱(chēng)作互斥時(shí)鐘。

舉個(gè)例子,一個(gè)MMCM實(shí)例生成的兩個(gè)時(shí)鐘clk0和clk1,與一BUFGMUX實(shí)例clkmux相連,clkmux的輸出驅(qū)動(dòng)設(shè)計(jì)時(shí)鐘樹(shù)。默認(rèn)情況下,雖然clk0和clk1共享同一時(shí)鐘樹(shù),且不能同時(shí)存在,Vivado還是會(huì)分析clk0和clk1之間的路徑。這個(gè)問(wèn)題要通過(guò)設(shè)置互斥時(shí)鐘組來(lái)解決,達(dá)到禁止分析這兩個(gè)時(shí)鐘間路徑 的目的。約束如下:

set_clock_groups -name exclusive_clk0_clk1 -physically_exclusive -group clk0 -group clk1

ASIC工藝中使用-physically_exclusive和-logically_exclusive代表不同的信號(hào)完整性分析模式,但對(duì)于Xilinx FPGA而言,二者是等價(jià)的,都可以使用。

時(shí)鐘延遲、抖動(dòng)與不確定性

本文的上述約束可以說(shuō)都是對(duì)時(shí)鐘的理想特征進(jìn)行約束,為了更精確地進(jìn)行時(shí)序分析,設(shè)計(jì)者還必須設(shè)定一些與運(yùn)行環(huán)境相關(guān)的可預(yù)測(cè)變量和隨機(jī)變量。這部分也稱(chēng)作時(shí)鐘的不確定性特征。

1.時(shí)鐘延遲latency

經(jīng)過(guò)板子上和FPGA器件內(nèi)部的傳輸,時(shí)鐘邊沿到達(dá)目的地后會(huì)有一個(gè)確定的延遲。這個(gè)延遲可以分為兩個(gè)部分看待:

網(wǎng)絡(luò)延遲:也稱(chēng)作插入延遲,指再FPGA內(nèi)部傳輸帶來(lái)的延遲。Vivado會(huì)自動(dòng)分析計(jì)算該延遲,布線(xiàn)過(guò)程前只是一個(gè)粗略的估計(jì),布線(xiàn)后便可以得到一個(gè)精確的值。對(duì)于生成時(shí)鐘,包含其本身的網(wǎng)絡(luò)延遲和上級(jí)時(shí)鐘的網(wǎng)絡(luò)延遲兩部分。

源端延遲:通常指FPGA器件外,時(shí)鐘進(jìn)入源點(diǎn)前的傳輸延遲,這部分延遲與PCB設(shè)計(jì)相關(guān),需要用set_clock_latency命令進(jìn)行約束。

下面給出一個(gè)約束源端時(shí)鐘延遲的例子:

#設(shè)定最小源端延遲值

set_clock_latency -source -early 0.2 [get_clocks sysclk]

#設(shè)定最大源端延遲值

set_clock_latency -source -late 0.5 [get_clocks sysclk]

2.時(shí)鐘抖動(dòng)jitter

對(duì)于ASIC器件來(lái)說(shuō),時(shí)鐘抖動(dòng)通常代表了時(shí)鐘不確定性特征;但對(duì)于Xilinx FPGA而言,抖動(dòng)屬性被當(dāng)作可預(yù)測(cè)變量看待。抖動(dòng)有的需要單獨(dú)設(shè)置,有的在時(shí)序分析過(guò)程中自動(dòng)計(jì)算。抖動(dòng)分為兩種:

輸入抖動(dòng):指實(shí)際時(shí)鐘邊沿與理想時(shí)鐘邊沿到達(dá)時(shí)刻之間的差值,使用set_iput_jitter命令為每個(gè)主時(shí)鐘單獨(dú)設(shè)置輸入抖動(dòng)。但是不能直接為生成時(shí)鐘設(shè)置輸入抖動(dòng),這部分由工具自動(dòng)計(jì)算,如果(1).生成時(shí)鐘由一個(gè)組合或時(shí)序單元?jiǎng)?chuàng)建,生成時(shí)鐘的抖動(dòng)與上級(jí)時(shí)鐘相同;(2).生成時(shí)鐘由 MMCM或PLL驅(qū)動(dòng),生成時(shí)鐘的抖動(dòng)為一個(gè)自動(dòng)計(jì)算的值。

系統(tǒng)抖動(dòng):指電源噪聲、板級(jí)噪聲或其它原因引起的整體的抖動(dòng),對(duì)于整個(gè)設(shè)計(jì),使用set_system_jitter命令設(shè)置一個(gè)值即可,會(huì)應(yīng)用到所有時(shí)鐘。

下面給出一個(gè)約束輸入抖動(dòng)的例子:

#主時(shí)鐘傳輸過(guò)程中有±100ps的抖動(dòng)

set_input_jitter [get_clocks -of_objects [get_clocks sysclk]] 0.1

不過(guò),時(shí)鐘抖動(dòng)對(duì)整個(gè)時(shí)鐘不確定性計(jì)算的影響不是太大。計(jì)算時(shí)鐘不確定性時(shí)對(duì)每條路徑都是獨(dú)立的,且主要依賴(lài)于時(shí)鐘拓?fù)浣Y(jié)構(gòu)、路徑上的時(shí)鐘對(duì)、時(shí)鐘樹(shù)上是否存在MMCM/PLL單元等其它因素。

3.附加的時(shí)鐘不確定性

使用set_clock_uncertainty命令可以根據(jù)需要為特定的時(shí)鐘關(guān)系定義附加的時(shí)鐘不確定性,這樣在時(shí)序分析時(shí),可以為設(shè)計(jì)中的某些部分增加額外裕量。

前面文章說(shuō)過(guò)XDC約束帶有順序性,后面的約束會(huì)重寫(xiě)前面的約束。但在這里,時(shí)鐘間的不確定性總是優(yōu)先于單個(gè)時(shí)鐘的不確定性,不管約束順序如何??聪旅娴睦樱?/span>

set_clock_uncertainty 2.0 -from [get_clocks clk1] -to [get_clocks clk2]

set_clock_uncertainty 1.0 [get_clocks clk1]

這里首先約束從clk1到clk2有一個(gè)2ns的時(shí)鐘不確定性,接著又約束clk1有1ns的時(shí)鐘不確定性,但是后面這條約束不會(huì)改動(dòng)從clk1到clk2之間的關(guān)系。

原文標(biāo)題:FPGA學(xué)習(xí)-Vivado時(shí)鐘的約束方法

文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21736

    瀏覽量

    603419
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1733

    瀏覽量

    131483
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    812

    瀏覽量

    66539

原文標(biāo)題:FPGA學(xué)習(xí)-Vivado時(shí)鐘的約束方法

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    射極耦合邏輯(ECL)基礎(chǔ)知識(shí)詳解

    本帖最后由 gk320830 于 2015-3-9 21:49 編輯 射極耦合邏輯(ECL)基礎(chǔ)知識(shí)詳解ECL(Emitter Coupled Logic),中文譯名“射極耦合邏輯”,是一種
    發(fā)表于 08-07 11:48

    阻抗匹配基礎(chǔ)知識(shí)詳解 簡(jiǎn)直新手的好老師超級(jí)詳細(xì)

    阻抗匹配基礎(chǔ)知識(shí)詳解簡(jiǎn)直新手的好老師超級(jí)詳細(xì)
    發(fā)表于 04-08 13:48

    【轉(zhuǎn)】變壓器基礎(chǔ)知識(shí)_制作流程_詳解

    變壓器基礎(chǔ)知識(shí)_制作流程_詳解
    發(fā)表于 08-05 21:35

    Vivado軟件菜單基礎(chǔ)知識(shí)的Xilinx PDF?

    我在Digilent論壇上看到有關(guān)于學(xué)習(xí)Vivado軟件菜單基礎(chǔ)知識(shí)的Xilinx PDF,我在哪里可以找到PDF?此外,當(dāng)我安裝Vivado時(shí),我安裝了所有內(nèi)容,我是初學(xué)者,如果我只是安裝一個(gè)簡(jiǎn)單的
    發(fā)表于 04-30 09:32

    PLC入門(mén)必看基礎(chǔ)知識(shí)

    PLC基礎(chǔ)知識(shí)(PLC入門(mén)必看)與C語(yǔ)言有什么關(guān)系_plc可以用c語(yǔ)言編程嗎_plc的C語(yǔ)言編程詳解
    發(fā)表于 09-09 08:39

    嵌入式基礎(chǔ)知識(shí)

    嵌入式嵌入式嵌入式基礎(chǔ)知識(shí)ceeding(UT嵌入式自動(dòng)化測(cè)試工具),使用過(guò)程詳解(保姆級(jí))Modbus認(rèn)識(shí),Modbus使用STM32F7基礎(chǔ)認(rèn)識(shí)時(shí)鐘中斷EXTI串口相關(guān),串口的所有寄存器詳講
    發(fā)表于 11-30 06:58

    電子元器件基礎(chǔ)知識(shí)詳解

    電子元器件基礎(chǔ)知識(shí)詳解
    發(fā)表于 10-08 20:13 ?371次下載

    安防技術(shù)基礎(chǔ)知識(shí)名詞詳解大全

    安防技術(shù)基礎(chǔ)知識(shí)名詞詳解大全 垂直同步、彩色視頻復(fù)合信號(hào)同步、外同步、直流線(xiàn)鎖定和完
    發(fā)表于 12-29 12:19 ?822次閱讀

    Vivado時(shí)鐘的兩大特性

    Vivado時(shí)鐘的兩大特性--時(shí)鐘延遲和時(shí)鐘的不確定性。
    發(fā)表于 11-17 11:38 ?5717次閱讀
    <b class='flag-5'>Vivado</b><b class='flag-5'>時(shí)鐘</b>的兩大特性

    FreeRTOS基礎(chǔ)知識(shí)詳解pdf下載

    FreeRTOS基礎(chǔ)知識(shí)詳解
    發(fā)表于 03-29 14:36 ?45次下載

    PCW的基礎(chǔ)知識(shí)概述

    了解如何從針對(duì)Xilinx新Zynq Ultrascale + MPSoC的Vivado設(shè)計(jì)套件訪(fǎng)問(wèn)處理系統(tǒng)配置向?qū)В≒CW),以及如何熟悉PCW的基礎(chǔ)知識(shí)。 在這個(gè)Vivado Quick Take Video中,您還將學(xué)習(xí)
    的頭像 發(fā)表于 11-29 06:27 ?8832次閱讀
    PCW的<b class='flag-5'>基礎(chǔ)知識(shí)</b>概述

    機(jī)器視覺(jué)基礎(chǔ)知識(shí)詳解模板

    機(jī)器視覺(jué)基礎(chǔ)知識(shí)詳解模板下載。
    發(fā)表于 05-28 14:48 ?13次下載

    時(shí)鐘抖動(dòng)解秘—高速鏈路時(shí)鐘抖動(dòng)規(guī)范基礎(chǔ)知識(shí)

    時(shí)鐘抖動(dòng)解秘—高速鏈路時(shí)鐘抖動(dòng)規(guī)范基礎(chǔ)知識(shí)
    發(fā)表于 11-07 08:07 ?2次下載
    <b class='flag-5'>時(shí)鐘</b>抖動(dòng)解秘—高速鏈路<b class='flag-5'>時(shí)鐘</b>抖動(dòng)規(guī)范<b class='flag-5'>基礎(chǔ)知識(shí)</b>

    詳解射頻微波基礎(chǔ)知識(shí)點(diǎn)

    詳解射頻微波基礎(chǔ)知識(shí)點(diǎn)
    的頭像 發(fā)表于 01-29 10:28 ?2377次閱讀

    無(wú)功補(bǔ)償原理基礎(chǔ)知識(shí)詳解

    無(wú)功補(bǔ)償原理基礎(chǔ)知識(shí)詳解
    的頭像 發(fā)表于 08-11 09:48 ?854次閱讀
    無(wú)功補(bǔ)償原理<b class='flag-5'>基礎(chǔ)知識(shí)</b><b class='flag-5'>詳解</b>