Clock Latency簡(jiǎn)介
要探討今天的主題,首先需要跟大家一起學(xué)習(xí)下clock latency這個(gè)基本概念。Clock latency通俗意義上是指clock定義點(diǎn)到clock sink point(時(shí)序器件的clock Pin)之間的這段延遲時(shí)間。其分為兩類,其中一類為,source latency,另外一類是network latency。
**source latency ** :也稱作insertion delay,通常是指clock source端到clock定義點(diǎn)之間的這段時(shí)間延遲;通常有兩種情況,其一:clock 直接來(lái)自于芯片外部,如crystal clock,此時(shí),source latency指的是芯片外部crystal出口到芯片PAD(假如clock定義在此處)之間的時(shí)間延遲;其二:clock 來(lái)自于芯片內(nèi)部的PLL,此時(shí),source latency指的是芯片內(nèi)部PLL輸出點(diǎn)到芯片內(nèi)部某個(gè)第一個(gè)clock定義點(diǎn)之間的這段時(shí)間。
network latency :其指的是clock定義點(diǎn)到clock sink point之間的這段時(shí)間。
這兩種latency是每一個(gè)clock的固有屬性,當(dāng)CTS完成之后,每一個(gè)clock如果是在propagation狀態(tài)下,其source latency和network latency都是確定的。當(dāng)然,在前期(PR之前或者CTS之前),通常情況下clock都處于ideal狀態(tài),為了能夠模擬真實(shí)的情況,我們可以通過(guò)指令set_clock_latency去指定每個(gè)clock的source latency或者network latency,具體此指令的用法,我們這里不詳細(xì)解釋了,有興趣,有需要的可以自己去查閱相關(guān)資料。
圖1 clock latency 示例
create_clock和create_generated_clock的不同點(diǎn)簡(jiǎn)介
通常定義clock的方式有兩種,create_clock和create_generated_clock。再上次有具體介紹過(guò),這兩個(gè)指令的使用。那么他們之間有哪些使用上的區(qū)別以及各自都有什么特點(diǎn)呢?大體總結(jié)如下:
- create_generated_clock能夠繼承其master clock phase,換句話說(shuō):generate clock的邊沿(rise or fall)是通過(guò)繼承master clock得到的。
- create_generated_clock能夠繼承其master clock的source latency。
- 通常情況下,create_clock的source latency為0.(在不特殊指定的情況下)
- 每當(dāng)設(shè)置一個(gè)create_clock,通常CTS時(shí)會(huì)構(gòu)建一個(gè)新的clock domain。
Generate clock定義出錯(cuò)引入的clock edge識(shí)別出錯(cuò)
在上次,我們通過(guò)多個(gè)例子,分類說(shuō)明了,如果generate clock定義不合理,會(huì)誤導(dǎo)工具做出錯(cuò)誤的timing分析的各種情形。但是具體工具timing分析會(huì)是什么樣的呢?
圖2 錯(cuò)誤的定義generate clock示例
如圖2所示,如果直接在u_ckdiv2/Q點(diǎn)上,使用-divide_by 2 –master_clock clk的方式定義generate clock,那么工具認(rèn)為的Q點(diǎn)的波形會(huì)是圖2中右圖所示的情況。這其實(shí)是與實(shí)際design的情況不符合的(假如DFF復(fù)位狀態(tài)為0)。這時(shí)工具會(huì)認(rèn)為的timing path check情況會(huì)如圖3所示。從u_ff1/CK到u_ff2/D,整個(gè)timing path周期只有半個(gè)clk cycle。
圖3 錯(cuò)誤的generate clock定義
如果我們能夠正確的在Q-pin上定義generate clock,那么工具認(rèn)為的Q-pin的波形會(huì)是圖4中所示的情形。這時(shí)同樣的timing path,從u_ff1/CK到u_ff2/D,工具做出的timing 分析會(huì)是圖4中的情形。
圖4 正確的generate clock定義
當(dāng)然,通過(guò)上面這個(gè)例子,雖然clock定義不合理,但是錯(cuò)誤的clock的定義,單從edge的傳播來(lái)看,其實(shí)是加緊了對(duì)design的約束,可能會(huì)浪費(fèi)一些PPA,但是不會(huì)讓design最終因?yàn)閠iming出錯(cuò)。
Generate clock定義出錯(cuò)引入的latency計(jì)算出錯(cuò)
其實(shí),除了上面分析提到的會(huì)影響工具正確的判斷定義的generate clock的edge之外,還會(huì)可能影響到工具錯(cuò)誤的計(jì)算clock的latency。
如圖5中的情形,如果采用圖5中(左,中,右)所示的定義方式,由于在mux的Z-pin上已經(jīng)定義了generate clock gclk1,而在定義generate clock clk_div時(shí),如果其master clock還指向了gclk1前面的一個(gè)clock-clk1,那么此時(shí)clock其實(shí)定義是不合理的。因?yàn)閺腸lk_div往前追,看到的第一個(gè)clock是gclk1,而clk1被其打斷了,其clock屬性不能再正確的往后傳播。
圖5 錯(cuò)誤的clock定義
也即上面提到的generate clock可以繼承其master clock的source latency這個(gè)特性就不能正確的保持了,從而導(dǎo)致工具認(rèn)為此處定義的generate clock的source latency將從0開(kāi)始計(jì)算。如果此處的generate clock替換為create clock會(huì)是怎樣的呢?大家可以思考一下。而如果想正確的繼承master clock的source latency,那么此處,可以按照?qǐng)D5中右所示的方式定義clock。
Clock Group定義簡(jiǎn)介
上面提到create clock定義時(shí),會(huì)伴隨新的clock domain的創(chuàng)建,此時(shí)所提到的clock domain即指clock group。當(dāng)然,clock group并不僅存在于create clock定義時(shí),在generate clock定義時(shí),也可以指定clock group。其主要目的是,人為的告訴工具,我們所定義的所有的clock之間的關(guān)系,從而減少工具自動(dòng)化分析的情形,降低runtime,得到更好的PPA的結(jié)果。但是具體clock group怎么劃分,是需要按照design架構(gòu)決定的。我們?cè)诖颂帲炔粫?huì)深究為什么要區(qū)分不同的clock group以及clock group劃分的依據(jù)(后面其它系列文章中再做分析),而是跟大家詳細(xì)的解釋下定義clock group的方法以及注意點(diǎn)。
如圖6所示,定義clock group我們SDC中右一條指令其為set_clock_group,詳細(xì)的解釋在圖6中都已經(jīng)給出,但是個(gè)人覺(jué)得還是有必要針對(duì)-logically_exclusive/-physically_exclusive/-asynchronous這三個(gè)option具體的分情況說(shuō)明一下。
圖6 clock group定義
-logically_exclusive/-physically_exclusive/-asynchronous簡(jiǎn)介
Logically_exclusive : 其含義是指兩組clock邏輯上不會(huì)同時(shí)存在。如圖7中第2框圖所示,雖然,clk1a/clk1b/clk2/clk3/clk4同時(shí)存在于整個(gè)design中,但是由于clock mux的select信號(hào)是相同的,所以從圖中可以看出,S=1,此時(shí)前后兩個(gè)mux分別選通clk2和clk4;如果S=0,則此時(shí)兩個(gè)MUX分別選通clk1a/clk1b和clk3,也就是clk1a/clk1b/clk3和clk2/clk4是邏輯上不會(huì)同時(shí)存在的。所以他們之間就是logically_exclusive。
Physically_exclusive : 其含義是指兩組clock之間物理上不會(huì)同時(shí)存在。如圖7中第1框圖所示。第一個(gè)clock mux中的clk1a和clk1b,這兩個(gè)clock是來(lái)自于相同的path,同一時(shí)間,這兩個(gè)clock物理上只有一個(gè)存在,所以他們便是physically_exlusive。
Asynchronous : 其含義是指兩組clock之間功能上異步的。如圖7中第3框圖所示,clk1和clk2,在功能設(shè)計(jì)時(shí)便是采用的異步方式設(shè)計(jì)的,即clk2跟clk1之間完全不需要關(guān)心相位或者frequency之間的關(guān)系,功能上也是正確的,這時(shí)候這兩個(gè)clock便是aysnchronous。當(dāng)然aysnchronous的前提條件是design功能上要保證正確性。
圖7 clock group定義示例
圖7中,如果換成第4框圖中的定義方式,跟第3框圖中的定義方式會(huì)有什么異同點(diǎn)?這個(gè)大家可以自己思考一下…
-
PAD
+關(guān)注
關(guān)注
1文章
100瀏覽量
30778 -
PIN管
+關(guān)注
關(guān)注
0文章
36瀏覽量
6380 -
PLL電路
+關(guān)注
關(guān)注
0文章
92瀏覽量
6483 -
CTS
+關(guān)注
關(guān)注
0文章
35瀏覽量
14154
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
揭開(kāi)xenomai雙核系統(tǒng)下clock機(jī)制的面紗
探討一下,CRC校驗(yàn)的優(yōu)勢(shì)
Stm32_Clock_Init函數(shù)如何定義
介紹一下STM32L151的clock tree
基于Stm32_Clock_Init()函數(shù)的流水燈設(shè)計(jì)
請(qǐng)教一下各位標(biāo)準(zhǔn)單元庫(kù)中clock buffer的設(shè)計(jì)很復(fù)雜嗎
S51下載線的制作單片機(jī)實(shí)用技術(shù)探討
浪潮與中橋探討:新數(shù)據(jù)時(shí)代下,存儲(chǔ)的挑戰(zhàn)與創(chuàng)新
企業(yè)云下的軟件定義存儲(chǔ)
阿里巴巴探討新基建下數(shù)字經(jīng)濟(jì)分布式存儲(chǔ)新機(jī)遇
軟件定義汽車趨勢(shì)下的供應(yīng)鏈變革
Arduino IDE環(huán)境下NodeMCU引腳定義
![Arduino IDE環(huán)境<b class='flag-5'>下</b>NodeMCU引腳<b class='flag-5'>定義</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
探討軟件定義未來(lái)醫(yī)療的新藍(lán)圖
DC/DC評(píng)估篇 損耗探討-定義和發(fā)熱
![DC/DC評(píng)估篇 損耗<b class='flag-5'>探討</b>-<b class='flag-5'>定義</b>和發(fā)熱](https://file.elecfans.com/web2/M00/92/E5/pYYBAGPy032AH8PfAAAkHgwVi60622.jpg)
評(píng)論