時(shí)序約束實(shí)例_第1頁(yè)
時(shí)序約束實(shí)例_第2頁(yè)
時(shí)序約束實(shí)例_第3頁(yè)
時(shí)序約束實(shí)例_第4頁(yè)
時(shí)序約束實(shí)例_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、用Quartus II Timequest Timing Analyzer進(jìn)行時(shí)序分析 :實(shí)例講解 (一) (2012-06-21 10:25:54)轉(zhuǎn)載標(biāo)簽: 雜談一,概述用Altera的話來(lái)講,timequest timing analyzer是一個(gè)功能強(qiáng)大的,ASIC-style的時(shí)序分析工具。采用工業(yè)標(biāo)準(zhǔn)-SDC(synopsys design contraints)-的約束、分析和報(bào)告方法來(lái)驗(yàn)證你的設(shè)計(jì)是否滿(mǎn)足時(shí)序設(shè)計(jì)的要求。在用戶(hù)的角度,從我使用TimeQuest的經(jīng)驗(yàn)看,它與IC設(shè)計(jì)中經(jīng)常用到的比如p

2、rime time,time craft等STA軟件是比較類(lèi)似的。用過(guò)prime time或time craft的朋友是非常容易上手的。在這一系列的文章里,我將會(huì)拿一個(gè)DAC7512控制器的verilog設(shè)計(jì)作為例子,詳細(xì)講解如何使用TimeQuest進(jìn)行時(shí)序設(shè)計(jì)和分析。二,TimeQuest的基本操作流程做為altera FPGA開(kāi)發(fā)流程中的一個(gè)組成部分,TimeQuest執(zhí)行從驗(yàn)證約束到時(shí)序仿真的所有工作。Altera推薦使用下面的流程來(lái)完成TimeQuest的操作。1. 建立項(xiàng)目并加入相關(guān)設(shè)計(jì)文件    不管做什么事情,都需要有一個(gè)目標(biāo)或者說(shuō)對(duì)象。

3、我們用TimeQuest做時(shí)序分析,當(dāng)然也需要一個(gè)對(duì)象,這個(gè)對(duì)象實(shí)際上就是我們的設(shè)計(jì)。所以首先是要建立一個(gè)Quartus II的項(xiàng)目,并把所有需要的設(shè)計(jì)文件都加入到項(xiàng)目中去。需要注意的一點(diǎn)是,這里的設(shè)計(jì)文件,不僅僅包含邏輯設(shè)計(jì)相關(guān)的文件,也包含已經(jīng)存在的時(shí)序約束文件,當(dāng)然,需要以synopsys Design Constraints(.sdc)的格式存在的。2. 對(duì)項(xiàng)目進(jìn)行預(yù)編譯(initial compilation)    項(xiàng)目建立以后,如果從來(lái)沒(méi)有對(duì)項(xiàng)目進(jìn)行過(guò)編譯的話,就需要對(duì)項(xiàng)目進(jìn)行預(yù)編譯。這里的預(yù)編譯是對(duì)應(yīng)于全編譯(full compilation)來(lái)講

4、的,我們可以理解為預(yù)編譯是對(duì)項(xiàng)目進(jìn)行部分的編譯,而全編譯是對(duì)項(xiàng)目進(jìn)行完整的編譯。做預(yù)編譯的目的是為了生成一個(gè)initial design database,然后我們可以根據(jù)這個(gè)database用Timequest采用交互的模式生成時(shí)序約束。實(shí)際上,對(duì)于小的設(shè)計(jì),編譯時(shí)間并不是很長(zhǎng)的話,完全可以不去區(qū)分預(yù)編譯和全編譯,需要編譯的時(shí)候,直接做全編譯就可以了,做全編譯的話,可以生成一個(gè)post-fit的database,完全可以給TimeQuest使用。3. 向設(shè)計(jì)中添加時(shí)序約束     在用TimeQuest做時(shí)序分析之前,必須要指定出對(duì)時(shí)序的要求,也就是我

5、們通常所說(shuō)的時(shí)序約束。這些約束包括時(shí)鐘,時(shí)序例外(timing exceptions)和輸入/輸出延時(shí)等。    默認(rèn)情況下,Quartus II 軟件會(huì)給所有沒(méi)有被下約束的時(shí)鐘都設(shè)定為1GHz。沒(méi)有任何的時(shí)序例外,也就是說(shuō)所有的timing path都按1T去check。所有的輸入/輸出的延遲都按0來(lái)計(jì)算。這顯然不符合絕大多數(shù)設(shè)計(jì)的時(shí)序要求,所以有必要根據(jù)設(shè)計(jì)的特性,添加必要的時(shí)序約束。    如上所述,時(shí)序約束主要包括三類(lèi):時(shí)鐘,時(shí)序例外和輸入/輸出延遲。其中時(shí)鐘和輸入/輸出延遲可以認(rèn)為是在某種程度上增強(qiáng)時(shí)序設(shè)計(jì)的要求。而時(shí)序例外

6、可以認(rèn)為是在某種程度上降低時(shí)序設(shè)計(jì)的要求。比如說(shuō),僅僅設(shè)定一個(gè)時(shí)鐘的頻率為100MHz的話,這個(gè)時(shí)鐘域里所有timing path都需要能工作在100MHz下。這顯然是增強(qiáng)了時(shí)序設(shè)計(jì)的要求??墒侨绻谶@個(gè)時(shí)鐘域下面,有部分timing path是不需要做1T的check的,那么就可以通過(guò)添加時(shí)序例外來(lái)避免對(duì)這些timing path做1T的check,即降低了時(shí)序設(shè)計(jì)的要求。    在用TimeQuest做時(shí)序分析時(shí),如果非常熟悉設(shè)計(jì)的構(gòu)架和對(duì)時(shí)序的要求,又比較熟悉sdc的相關(guān)命令,那么可以直接在sdc文件里輸入時(shí)序約束的命令。而通常情況下,可以利用TimeQue

7、st GUI提供的設(shè)定時(shí)序約束的向?qū)砑訒r(shí)序約束。不過(guò)要注意的是,用向?qū)傻臅r(shí)序約束,并不會(huì)被直接寫(xiě)到sdc文件里,所以如果要保存這些時(shí)序約束,必須在TimeQuest用write sdc的命令來(lái)保存所生成的時(shí)序約束。4. 執(zhí)行完整的編譯    在設(shè)定好時(shí)序約束以后,就需要對(duì)整個(gè)設(shè)計(jì)進(jìn)行完整的編譯。在編譯過(guò)程中,軟件會(huì)優(yōu)化設(shè)計(jì)的邏輯、布局布線等來(lái)盡可能滿(mǎn)足所有的時(shí)序約束。    如果沒(méi)有添加時(shí)序約束,那么軟件在編譯的時(shí)候,會(huì)按照默認(rèn)的時(shí)序約束對(duì)設(shè)計(jì)進(jìn)行優(yōu)化,對(duì)于絕大多數(shù)的設(shè)計(jì),都會(huì)報(bào)出來(lái)時(shí)序的問(wèn)題,但因?yàn)槟J(rèn)的時(shí)序約束與設(shè)計(jì)本身的要

8、求在絕大多數(shù)情況下,都是不同的,所以這些時(shí)序的問(wèn)題也并不是設(shè)計(jì)本身的問(wèn)題,并沒(méi)有太多的參考價(jià)值,而且很多初學(xué)者也不會(huì)注意到這個(gè)問(wèn)題。這樣就把設(shè)計(jì)中很多潛在的時(shí)序問(wèn)題給隱藏起來(lái)了,最終帶來(lái)的可能就是系統(tǒng)運(yùn)行的不穩(wěn)定,甚至是完全不能運(yùn)行。5. 驗(yàn)證時(shí)序    當(dāng)完成編譯以后,我們就可以用TimeQuest來(lái)驗(yàn)證時(shí)序了。在時(shí)序分析的過(guò)程中,TimeQuest會(huì)分析設(shè)計(jì)中所有的timing path,計(jì)算每一條timing path的延時(shí),檢查每一條timing path是否滿(mǎn)足時(shí)序約束,最后按照positive slack或negative slack來(lái)報(bào)告時(shí)序分析的結(jié)

9、果。其中negative slack就表示對(duì)應(yīng)的timing path不滿(mǎn)足時(shí)序約束的要求(timing violation)。    如果遇到有不滿(mǎn)足時(shí)序要求的情況,則可以根據(jù)對(duì)應(yīng)的時(shí)序報(bào)告分析設(shè)計(jì),確定如何優(yōu)化設(shè)計(jì)使之滿(mǎn)足時(shí)序約束。時(shí)序約束有任何變化的話,都需要重新編譯設(shè)計(jì)。這個(gè)反復(fù)的過(guò)程可以讓我們解決設(shè)計(jì)中的時(shí)序問(wèn)題。三,DAC7512控制器    DAC7512是一個(gè)具有三線串行接口的DAC。我們基于FPGA用Verilog語(yǔ)言實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的DAC7512的控制器。下面是控制器的結(jié)構(gòu)圖:   

10、DAC7512控制器由三個(gè)模塊組成,PLL用來(lái)生成控制器所要的時(shí)鐘C0(25MHz)和C1(50MHz),其lock信號(hào)用來(lái)做為控制器的異步reset。da_data模塊生成要送往DAC7512的數(shù)據(jù),其中DA_DATA為數(shù)據(jù),DA_DATA_EN為數(shù)據(jù)有效信號(hào),該模塊使用C0時(shí)鐘,整個(gè)屬于C0時(shí)鐘域。DAC7512模塊用于將DA_DATA轉(zhuǎn)換成符合DAC7512接口標(biāo)準(zhǔn)的串行數(shù)據(jù)并送給DAC7512,要用到C1(50MHz)和DA_SCLK(C1二分頻,25MHz)兩個(gè)時(shí)鐘。    DAC7512控制器一共有四個(gè)輸入輸出端口。CLK_IN為PLL的基準(zhǔn)時(shí)鐘,為2

11、5MHz。DA_DIN,DA_SCLK和DA_SYNC為三線串口,都為輸出端口。    由于C0,C1是由同一個(gè)PLL輸出的,DA_SCLK是由C1經(jīng)二分頻得到的,三者之間是同步的,處于同一個(gè)clock group中。    DAC7512模塊的詳細(xì)設(shè)計(jì)資料可參照本博客中 “FPGA設(shè)計(jì)中DAC7512控制的Verilog實(shí)現(xiàn)” 的文章。不過(guò)要注意一點(diǎn)的是,在串行總線上,DA_DIN是在DA_SCLK的下降沿有效的。把DA_DIN設(shè)計(jì)為C1時(shí)鐘域的信號(hào),并控制其值只在DA_SCLK為高電平的時(shí)候發(fā)生變化。這樣可以把DA_DIN與DA_

12、SCLK之間的時(shí)序要求轉(zhuǎn)換為DA_DIN在C1時(shí)鐘域的時(shí)序要求,細(xì)節(jié)我們會(huì)在下面介紹。四,用TimeQuest對(duì)DAC7512控制器進(jìn)行時(shí)序分析    在對(duì)某個(gè)對(duì)象下時(shí)序約束的時(shí)候,首先要能正確識(shí)別它,TimeQuest會(huì)對(duì)設(shè)計(jì)中各組成部分根據(jù)屬性進(jìn)行歸類(lèi),我們?cè)谙聲r(shí)序約束的時(shí)候,可以通過(guò)命令查找對(duì)應(yīng)類(lèi)別的某個(gè)對(duì)象。     TimeQuest對(duì)設(shè)計(jì)中各組成部分的歸類(lèi)主要有cells,pins,nets和ports幾種。寄存器,門(mén)電路等為cells;設(shè)計(jì)的輸入輸出端口為ports;寄存器,門(mén)電路等的輸入輸出引腳為p

13、ins;ports和pins之間的連線為nets。具體可以參照下圖(此圖出自Altera Time Quest的使用說(shuō)明)。      下面我們按照本文第二部分用TimeQuest做時(shí)序分析的基本操作流程所描述的流程對(duì)DAC7512控制器進(jìn)行時(shí)序分析。       建立和預(yù)編譯項(xiàng)目的部分相對(duì)簡(jiǎn)單,涉及到的也只是QuartusII的一些基本操作,這里我們就不再做具體的敘述。主要介紹如何向項(xiàng)目中添加時(shí)序約束和如何進(jìn)行時(shí)序驗(yàn)證。首先建立一個(gè)名稱(chēng)與項(xiàng)目top層名字一致的sdc文件,然后按照下面

14、的步驟添加時(shí)序約束。1. 創(chuàng)建時(shí)鐘     添加時(shí)序約束的第一步就是創(chuàng)建時(shí)鐘。為了確保STA結(jié)果的準(zhǔn)確性,必須定義設(shè)計(jì)中所有的時(shí)鐘,并指定時(shí)鐘所有相關(guān)參數(shù)。TimeQuest支持下面的時(shí)鐘類(lèi)型:a) 基準(zhǔn)時(shí)鐘(Base clocks)b) 虛擬時(shí)鐘(Virtual clocks)c) 多頻率時(shí)鐘(Multifrequency clocks)d) 生成時(shí)鐘(Generated clocks)我們?cè)谔砑訒r(shí)序約束的時(shí)候,首先創(chuàng)建時(shí)鐘的原因是后面其它的時(shí)序約束都要參考相關(guān)的時(shí)鐘的。基準(zhǔn)時(shí)鐘:     基準(zhǔn)時(shí)鐘是輸入到FPG

15、A中的原始輸入時(shí)鐘。與PLLs輸出的時(shí)鐘不同,基準(zhǔn)時(shí)鐘一般是由片外晶振產(chǎn)生的。定義基準(zhǔn)時(shí)鐘的原因是其他生成時(shí)鐘和時(shí)序約束通常都以基準(zhǔn)時(shí)鐘為參照。    很明顯,在DAC7512控制器中,CLK_IN是基準(zhǔn)時(shí)鐘。我們用下面的命令來(lái)創(chuàng)建這個(gè)基準(zhǔn)時(shí)鐘:create_clock -name CLK_IN -period 40 -waveform 0 20 get_ports CLK_IN    其中,create_clock是創(chuàng)建時(shí)鐘的命令,后面是命令的各種選項(xiàng)。其中-name CLK_IN選項(xiàng)給出了時(shí)鐘的名字,即CLK_IN。-period

16、 40給出了時(shí)鐘的周期,即40ns。-waveform 0 20給出了時(shí)鐘的占空比,即50/50。最后的get_ports CLK_IN 是嵌套的tcl命令,給出了CLK_IN對(duì)應(yīng)的port,實(shí)際上也就是CLK_IN的輸入引腳。    在sdc文件里添加上述命令后,在quartusII里編譯設(shè)計(jì),然后通過(guò)tools > TimeQuest Time Aanlyzer命令打開(kāi)TimeQuest。在TimeQuest的Tasks窗口,找到Report Clocks,雙擊之,TimeQuest就會(huì)在右邊主窗口給出設(shè)計(jì)中已成功添加的時(shí)鐘信息。如下圖所示,可以看到CL

17、K_IN,其類(lèi)型為基準(zhǔn)時(shí)鐘,周期為40ns,頻率為25MHz,targets項(xiàng)為CLK_IN,即表示這個(gè)時(shí)鐘是連接在CLK_IN端口上的。這說(shuō)明上面create_clock的命令已經(jīng)在設(shè)計(jì)中正確創(chuàng)建了時(shí)鐘CLK_IN。       實(shí)際上對(duì)于create_clock命令,我們可以通過(guò)quartus II的幫助系統(tǒng)(Syntaxcreate_clock -h | -help -long_help -add -name<clock_name> -period <value> -wave

18、form <edge_list> <targets>    另外,幫助系統(tǒng)里有很詳盡的關(guān)于該命令的描述,并且給出了各種使用的范例。不僅僅是這一個(gè)命令,所有的命令都可以在幫助系統(tǒng)里找到。如果看到一個(gè)陌生的命令,或者不知道命令該如何使用,那么最好的辦法就是在幫助系統(tǒng)里查找該命令。PLL時(shí)鐘:     上面我們創(chuàng)建了基準(zhǔn)時(shí)鐘。下面我們創(chuàng)建PLL輸出的時(shí)鐘。     在Altera的FPGA中,PLL電路是通過(guò)ALTPLL的IP庫(kù)被添加到設(shè)計(jì)中的。下圖是一個(gè)典

19、型的ALTPLL的結(jié)構(gòu)圖。        從圖上可以看到,當(dāng)我們選定了基準(zhǔn)時(shí)鐘和PLL的參數(shù)以后,PLL的輸出c0和c1的參數(shù)就隨之確定了。所以在QuartusII環(huán)境下,可以通過(guò)一個(gè)簡(jiǎn)單的命令讓軟件自動(dòng)生成PLL輸出的時(shí)鐘的時(shí)序約束。derive_pll_clocks     這個(gè)命令會(huì)自動(dòng)創(chuàng)建PLL輸出的C0和C1的相關(guān)時(shí)序約束。同樣的,在sdc文件里添加該命令,然后編譯,在TimeQuest里查看時(shí)鐘信息。如下圖所示,derive_pll_clocks在系統(tǒng)里添加了兩個(gè)時(shí)鐘,PL

20、L1|altpll_component|auto_generated|pll1|clk0和PLL1|altpll_component|auto_generated|pll1|clk1??梢钥闯?,時(shí)鐘是按“PLL層次結(jié)構(gòu)+時(shí)鐘端口名字”的規(guī)則命名的。時(shí)鐘的類(lèi)型為created clock,周期頻率是在PLL里設(shè)定好的。duty_cycle為50/50。Clock source為PLL1|altpll_component|auto_generated|pll1|inclk0,實(shí)際上就是我們之前定義的CLK_IN。       用deriv

21、e_pll_clocks命令創(chuàng)建PLL相關(guān)的時(shí)鐘很是方便,但不好的地方就是,時(shí)鐘的命名太過(guò)復(fù)雜,我們?cè)谔砑优c此時(shí)鐘相關(guān)的時(shí)序約束時(shí),就必須用這種名字很長(zhǎng)的時(shí)鐘,容易出錯(cuò),且可讀性也差。所以建議還是采用create_generated_clock命令來(lái)創(chuàng)建PLL的時(shí)鐘。       create_generated_clock命令的語(yǔ)法如下,可以從quartusII的幫助系統(tǒng)里找到每個(gè)參數(shù)的詳細(xì)解釋。Syntaxcreate_generated_clock -h | -help -long_help -add -divide_

22、by <factor> -duty_cycle <percent> -edge_shift<shift_list> -edges <edge_list> -invert -master_clock<clock> -multiply_by <factor> -name <clock_name> -offset<time> -phase <degrees> -source <clock_source> 

23、;<targets>      可以用下面的命令來(lái)創(chuàng)建PLL的兩個(gè)時(shí)鐘C0和C1。我們把時(shí)鐘命名為CLK25M和CLK50M,source clock為CLK_IN。create_generated_clock -name CLK25M -source CLK_IN -duty_cycle 50.000 -multiply_by 1 -master_clock CLK_IN get_pins PLL1|altpll_component|auto_generated|pll1|clk0create_generated_clock -n

24、ame CLK50M -source CLK_IN -duty_cycle 50.000 -multiply_by 2 -master_clock CLK_IN get_pins PLL1|altpll_component|auto_generated|pll1|clk1      用這兩個(gè)命令創(chuàng)建的時(shí)鐘與derive_pll_clocks命令創(chuàng)建的時(shí)鐘的本質(zhì)是一樣的,只是給時(shí)鐘定義了不同的名字。當(dāng)然我們也可以用derive_pll_clocks中對(duì)時(shí)鐘的命名方式來(lái)使用create_generated_clock命令。  &

25、#160; 同樣的,可以按照上面的方法,在TimeQuest里查看創(chuàng)建時(shí)鐘的結(jié)果,如下圖所示。       到此為止,我們創(chuàng)建了PLL的基準(zhǔn)時(shí)鐘以及PLL輸出的兩個(gè)時(shí)鐘CLK25M和CLK50M。DA_SCLK時(shí)鐘:       在TimeQuest的Tasks窗口里,選擇Report Unconstrained Paths命令,TimeQuest會(huì)報(bào)告出所有需要下約束但實(shí)際并沒(méi)有約束的情況。在Report里的Unconstrained Path列表下,我們可以查看這個(gè)報(bào)告。

26、雙擊Clock Status Summary,就可以在主窗口看到所有時(shí)鐘的情況。見(jiàn)下圖,很明顯,軟件辨識(shí)出DAC7512模塊下的DA_SCLK為時(shí)鐘信號(hào),但是我們并沒(méi)有對(duì)該時(shí)鐘添加約束,所以用紅色將這個(gè)時(shí)鐘顯示了出來(lái)。下一步我們就來(lái)創(chuàng)建這個(gè)時(shí)鐘。        DA_SCLK是用CLK50M通過(guò)二分頻電路得到的。所以其source clock為CLK50M。但是,我們?cè)谑褂胏reate_generated_clock命令創(chuàng)建該時(shí)鐘的時(shí)候,在-source的參數(shù)里,卻不能直接使用CLK50M,而必須使用CLK50M所對(duì)應(yīng)的pi

27、n,即PLL1|altpll_component|auto_generated|pll1|clk1。 這主要是因?yàn)?source參數(shù)只支持pins,ports和registers。       DA_SCLK是由CLK50M通過(guò)二分頻電路生成的,其代碼如下:reg DA_SCLK;always (posedge CLK50M or negedge RESET)beginif(RESET)DA_SCLK <= 1'b0;elseDA_SCLK <= DA_SCLK;end    

28、; 可以看到,本質(zhì)上DA_SCLK為一個(gè)寄存器的輸出,所以使用get_registers命令獲取DA_SCLK。DA_SCLK是由CLK50M經(jīng)二分頻電路生成的,所以-divide_by的參數(shù)應(yīng)該是2。      綜上所述,用下面的命令創(chuàng)建DA_SCLK:create_generated_clock -name DA_SCLK -divide_by 2 -source get_pins PLL1|altpll_component|auto_generated|pll1|clk1 get_registers DAC7512:DAC7512|DA_

29、SCLK      到此為止,DAC7512控制器中所有4個(gè)時(shí)鐘都創(chuàng)建好了。如下圖所示:      我們?cè)倏碩imeQuest中Unconstrained Paths中clock Status Summary,就會(huì)發(fā)現(xiàn),所有的時(shí)鐘都已經(jīng)被添加了約束。用Quartus II Timequest Timing Analyzer進(jìn)行時(shí)序分析 :實(shí)例講解 (三) (2012-06-26 10:28:46)轉(zhuǎn)載標(biāo)簽: 雜談 &

30、#160; 上面已經(jīng)把DAC7512控制器中所有的時(shí)鐘都創(chuàng)建好了。下面我們?cè)兕~外討論一下關(guān)于時(shí)鐘屬性方面的一些問(wèn)題和在做時(shí)序分析時(shí)的處理方法。     對(duì)于具有單一時(shí)鐘的系統(tǒng),設(shè)計(jì)和時(shí)序分析都相對(duì)簡(jiǎn)單。但是現(xiàn)在很多設(shè)計(jì)都有多個(gè)甚至幾十個(gè)時(shí)鐘乃至更多的時(shí)鐘。比如說(shuō)DAC7512控制器,在設(shè)計(jì)中用到的時(shí)鐘實(shí)際上是有3個(gè),CLK25M,CLK50M和DA_SCLK。在對(duì)多時(shí)鐘設(shè)計(jì)進(jìn)行時(shí)序分析的時(shí)候,我們首先要搞清楚各時(shí)鐘之間的關(guān)系。     當(dāng)設(shè)計(jì)中有多個(gè)時(shí)鐘時(shí),時(shí)鐘之間可能存在三種關(guān)系,分別是同步,異步和互斥。

31、0;    如果兩個(gè)或者多個(gè)時(shí)鐘具有相同的source和固定的相位差,那么這些時(shí)鐘是同步時(shí)鐘。在DAC7512的控制器里,CLK25M,CLK50M和DA_SCLK的source都是CLK_IN,所以可以認(rèn)為他們?nèi)齻€(gè)是同步的。     如果兩個(gè)或者多個(gè)時(shí)鐘之間沒(méi)有任何關(guān)系,則稱(chēng)之為異步時(shí)鐘。比如說(shuō)CLKA來(lái)源于晶振A,而CLKB來(lái)源于其他系統(tǒng)的輸入,CLKA和CLKB就為異步時(shí)鐘。對(duì)于異步時(shí)鐘來(lái)講,兩個(gè)時(shí)鐘域的時(shí)鐘沿有可能在任意時(shí)刻出現(xiàn),相互之間不會(huì)有任何關(guān)系。如果一條timing path的起始點(diǎn)是在CLKA,而終點(diǎn)在CL

32、KB,即這條timing path跨越了CLKA和CLKB兩個(gè)時(shí)鐘域,那么STA軟件是不會(huì)對(duì)該timing path做分析的。實(shí)際上這等同于在這兩個(gè)時(shí)鐘之間設(shè)定了一條false path。     如果兩個(gè)時(shí)鐘不會(huì)相互作用,那么稱(chēng)這兩個(gè)時(shí)鐘為互斥的。舉個(gè)例子來(lái)講,PCIE GEN2可以工作在GEN1和GEN2兩種模式,在GEN1模式下,時(shí)鐘為125MHz,在GEN2的模式下,時(shí)鐘為250MHz,但在某一個(gè)特定時(shí)間里,時(shí)鐘只可能為125MHz或者250MHz,這兩個(gè)頻率的時(shí)鐘不會(huì)共存,相互之間也不會(huì)有相互作用。    下圖給出

33、了時(shí)鐘的三種關(guān)系的例子。     做時(shí)序分析時(shí),在創(chuàng)建好所有的時(shí)鐘后,需要定義這些時(shí)鐘之間的關(guān)系。我們可以把同步時(shí)鐘放到一個(gè)group中,然后在定義時(shí)鐘之間的關(guān)系時(shí),可以使用group來(lái)定義。在默認(rèn)情況下,TimeQuest認(rèn)為設(shè)計(jì)中所有的時(shí)鐘都是同步的,并把所有的時(shí)鐘都放在同一個(gè)group里。如果設(shè)計(jì)中有異步時(shí)鐘,就需要用命令把異步時(shí)鐘分組并定義出來(lái)。     在TimeQuest里,我們用set_clock_groups來(lái)定義時(shí)鐘的group。下面是命令的語(yǔ)法,更詳細(xì)的說(shuō)明請(qǐng)參照quartusII的幫助系統(tǒng)。S

34、yntaxset_clock_groups -h | -help -long_help -asynchronous -exclusive -group <names> -logically_exclusive -physically_exclusive     在DAC7512控制器里,CLK25M,CLK50M和DA_SCLK三個(gè)時(shí)鐘是同步時(shí)鐘。默認(rèn)情況下,它們已經(jīng)被軟件放到了同一個(gè)group里,所以我們不需要對(duì)其做任何的處理。    但假設(shè)CLK25M屬于一個(gè)group,而CLK

35、50M和DA_SCLK屬于另外一個(gè)group,我們就要用set_clock_groups命令把二者設(shè)為異步時(shí)鐘,命令如下:set_clock_groups -asynchronous -group CLK25M -group CLK50M DA_SCLK     我們對(duì)比一下把CLK25M設(shè)定為CLK50M的異步時(shí)鐘前后TimeQuest對(duì)時(shí)序分析的處理情況來(lái)看這個(gè)命令的作用。下面是在添加這個(gè)命令前后TimeQuest中Report clock transfer的結(jié)果。在沒(méi)有添加這個(gè)命令前,軟件默認(rèn)三個(gè)時(shí)鐘都是同步時(shí)鐘,所以會(huì)分析并報(bào)告出三個(gè)時(shí)鐘之間所有的timing path。   

溫馨提示

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

評(píng)論

0/150

提交評(píng)論