電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 169|回復(fù): 0
收起左側(cè)

【芯片設(shè)計(jì)】從RTL到GDS(八):時(shí)鐘樹綜合

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
匿名  發(fā)表于 2024-10-16 12:20:00 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
在上一篇文章中,我們已經(jīng)了解了布局這個(gè)概念。在完成了芯片的布局以后,我們才知道每個(gè)Instance放在哪里,也才知道每個(gè)Flip-Flop的具體位置。時(shí)鐘樹綜合需要知道每個(gè)觸發(fā)器的物理位置,以便于計(jì)算到達(dá)每個(gè)觸發(fā)器的最佳路徑和插入適當(dāng)?shù)木彌_器。布局階段完成后,所有單元都有了確定的坐標(biāo),這為時(shí)鐘樹綜合提供了所需的信息。此外布局階段不僅確定了單元的位置,還確定了大部分連線的布線。
時(shí)鐘樹綜合需要考慮現(xiàn)有的連線情況,以確保時(shí)鐘網(wǎng)絡(luò)的引入不會(huì)與現(xiàn)有的信號(hào)線沖突。在完成時(shí)鐘樹綜合以后,下一步將會(huì)完成進(jìn)一步的布線。本篇文章我們將重點(diǎn)放在時(shí)鐘樹綜合上。

在之前的階段中,我們都認(rèn)為時(shí)鐘是理想的,現(xiàn)在既然所有的時(shí)序單元都已經(jīng)放好了,我們按理說(shuō)要給這些時(shí)序單元提供真正的時(shí)鐘信號(hào),才能讓我們的分析變得更加準(zhǔn)確。

一個(gè)非常簡(jiǎn)單的辦法,直接用一個(gè)時(shí)鐘作為Source,連接到所有的時(shí)序單元的Clock接口。可以嗎?
顯然不可以,這種辦法沒(méi)有考慮Timing、Power、Area等等一系列的問(wèn)題。最顯而易見(jiàn)的就是沒(méi)有考慮時(shí)序,假設(shè)兩個(gè)時(shí)序單元模塊物理距離比較遠(yuǎn),那么時(shí)鐘到達(dá)的時(shí)間顯然也不一樣。目前的電路都是高速電路,一個(gè)時(shí)鐘周期可能1ns都不到,從同一源頭出發(fā),這個(gè)時(shí)間信號(hào)可能才走到芯片的一半呢!
既然問(wèn)題沒(méi)有這么簡(jiǎn)單,那么我們就逐一考慮這一系列的問(wèn)題,將這些問(wèn)題解決了,大概也就清楚了時(shí)鐘樹綜合到底是在做什么。


1、Implications of Clocking

回顧一下靜態(tài)時(shí)序分析的基本概念,我們的時(shí)鐘約束有兩大約束,分別稱為Max Delay約束和Min Delay約束。其本質(zhì)都是評(píng)估數(shù)據(jù)信號(hào)到達(dá)觸發(fā)器D端和時(shí)鐘信號(hào)到達(dá)觸發(fā)器Clock端的時(shí)間關(guān)系。

之前我們的分析相對(duì)簡(jiǎn)單,考慮理想的時(shí)鐘信號(hào)。大家有沒(méi)有想過(guò)時(shí)鐘信號(hào)不是那么理想的情況?比如時(shí)鐘信號(hào)到達(dá)兩個(gè)寄存器的時(shí)刻不一樣。這就會(huì)引入額外的參數(shù),這個(gè)概念我們稱之為Clock Skew。同樣對(duì)時(shí)序造成影響的還有Clock Jitter。
Clock Skew是一個(gè)空間概念,反映的是不同寄存器之間的時(shí)鐘到達(dá)關(guān)系。Clock Jitter則是相對(duì)于同一個(gè)寄存器而言,由于時(shí)鐘信號(hào)的擾動(dòng)之類的影響,其不同的時(shí)鐘周期持續(xù)時(shí)間不一樣的現(xiàn)象。此外時(shí)鐘的上升和下降,顯然不是一下子就從0到1或者從1到0,其必然需要一個(gè)時(shí)間,我們一般叫做trise,tfall。
對(duì)于Clock Skew,有一個(gè)很簡(jiǎn)單的思路,既然到達(dá)的時(shí)刻不一樣,想辦法讓它們一樣不就行了?比如到達(dá)一個(gè)寄存器比較快,我在它中間搞一點(diǎn)延遲,那么到達(dá)時(shí)間不就慢下來(lái)了?這種方法我們稱為Insertion Delay。

下圖反映了Skew和Jitter是怎么導(dǎo)致的;旧嫌梢韵聨讉(gè)因素導(dǎo)致:
Clock Generation
時(shí)鐘信號(hào)最初由時(shí)鐘源生成,如果時(shí)鐘源本身存在不穩(wěn)定因素,比如晶體振蕩器的老化、溫度變化影響等,都可能導(dǎo)致時(shí)鐘信號(hào)的不穩(wěn)定;
Distribution Network
Number of Buffers:在時(shí)鐘分布網(wǎng)絡(luò)中,為了驅(qū)動(dòng)更多的負(fù)載,會(huì)插入多個(gè)緩沖器。緩沖器的數(shù)量和類型會(huì)影響時(shí)鐘信號(hào)的穩(wěn)定性和傳遞時(shí)間;
Device Variation:即使是同一批次的器件,它們的工作特性也可能存在微小的差異,這些差異可能會(huì)導(dǎo)致時(shí)鐘信號(hào)通過(guò)不同器件時(shí)產(chǎn)生不同的延遲;
Wire length and Variation:芯片內(nèi)部的連線長(zhǎng)度不同,電氣特性也不盡相同,這會(huì)導(dǎo)致時(shí)鐘信號(hào)到達(dá)各個(gè)觸發(fā)器的時(shí)間不同;
Coupling:信號(hào)線之間的耦合效應(yīng)也可能導(dǎo)致時(shí)鐘信號(hào)的傳播受到影響,比如相鄰信號(hào)線之間的電磁干擾;
Load:不同的觸發(fā)器或邏輯單元對(duì)時(shí)鐘信號(hào)的負(fù)載不同,這會(huì)影響時(shí)鐘信號(hào)的傳遞速度;
Environment Variation
Temperature:溫度變化會(huì)影響器件的電氣特性,包括信號(hào)傳播速度和電源電壓等,進(jìn)而影響時(shí)鐘信號(hào)的穩(wěn)定性;
Power Supply:電源的波動(dòng)或者噪聲也會(huì)影響時(shí)鐘信號(hào)的穩(wěn)定性,尤其是在電壓供應(yīng)不穩(wěn)定的情況下;


我們知道了Skew和Jitter的由來(lái),我們?cè)賮?lái)看看它是怎么影響我們的時(shí)序分析的,通過(guò)下圖我們可以非常清晰的看到Skew和Jitter對(duì)時(shí)序的影響。這里相信大家看過(guò)靜態(tài)時(shí)序分析那篇文章以后,對(duì)靜態(tài)時(shí)序分析有基本的理解,所以大家這里直接看圖就行,我就不多做解釋了。

我們?cè)賮?lái)看一下時(shí)鐘對(duì)功耗的影響。對(duì)時(shí)鐘網(wǎng)絡(luò)自身而言,其作為源頭,是需要一直活躍的。因此其活躍因子為1。因此我們需要考慮一下電容對(duì)功耗的影響。時(shí)鐘電容主要由以下幾方面組成:
時(shí)鐘生成:時(shí)鐘信號(hào)的產(chǎn)生通常涉及到鎖相環(huán)、時(shí)鐘分頻器等電路,這些電路在產(chǎn)生時(shí)鐘信號(hào)的過(guò)程中會(huì)消耗一定的功率;
時(shí)鐘元件:時(shí)鐘網(wǎng)絡(luò)中包含的緩沖器、多路選擇器、時(shí)鐘門控等元件,在驅(qū)動(dòng)時(shí)鐘信號(hào)時(shí)會(huì)消耗功率;
時(shí)鐘連線:時(shí)鐘信號(hào)需要通過(guò)連線傳遞到芯片上的各個(gè)部分,連線的電容會(huì)對(duì)時(shí)鐘信號(hào)產(chǎn)生負(fù)載,從而影響功耗;
時(shí)鐘負(fù)載:時(shí)鐘信號(hào)需要驅(qū)動(dòng)所有的時(shí)序元件(如觸發(fā)器),這些元件的負(fù)載也會(huì)消耗時(shí)鐘網(wǎng)絡(luò)的功率;
綜上所述,時(shí)鐘占據(jù)了整個(gè)芯片Power的很大一部分,考慮功耗的時(shí)候需要重點(diǎn)考慮這一部分。

我們?cè)賮?lái)看一下時(shí)鐘網(wǎng)絡(luò)對(duì)信號(hào)完整性的需求和影響。考慮信號(hào)完整性,意味著時(shí)鐘信號(hào)在傳輸過(guò)程中需要保持其原始形狀和質(zhì)量,不受噪聲和失真的影響。時(shí)鐘網(wǎng)絡(luò)上的噪聲可能會(huì)導(dǎo)致以下問(wèn)題:
首先考慮時(shí)鐘網(wǎng)絡(luò)上的噪聲會(huì)產(chǎn)生什么負(fù)面影響。最壞的情況下,噪聲會(huì)導(dǎo)致額外的時(shí)鐘邊緣,造成后級(jí)模塊的誤判斷,以為新的時(shí)鐘周期又來(lái)了。顯然這樣會(huì)造成嚴(yán)重錯(cuò)誤。即使噪聲沒(méi)有引起額外的邊沿,較低的耦合效應(yīng)仍然可能減緩或加速時(shí)鐘信號(hào)的傳播,導(dǎo)致時(shí)鐘偏斜。不規(guī)則的時(shí)鐘邊沿可能會(huì)阻礙觸發(fā)器的正常操作,因?yàn)橛|發(fā)器需要精確的時(shí)鐘邊沿來(lái)同步其操作。
然后考慮一下時(shí)鐘邊沿上升下降緩慢會(huì)帶來(lái)什么影響。時(shí)鐘信號(hào)的過(guò)渡時(shí)間過(guò)長(zhǎng)可能會(huì)導(dǎo)致觸發(fā)器無(wú)法在正確的時(shí)間窗口內(nèi)識(shí)別時(shí)鐘邊沿,影響其設(shè)置和保持時(shí)間。此時(shí)對(duì)噪聲的容忍性會(huì)進(jìn)一步下降。還會(huì)導(dǎo)致觸發(fā)器的性能下降,比如更差的建立時(shí)間保持時(shí)間。
那是不是上升下降越快越好呢?就像理想情況一樣,直接就從1到0或者從0到1。其實(shí)也不是,雖然快速的時(shí)鐘過(guò)渡通常被認(rèn)為是理想的,但如果過(guò)快,可能會(huì)導(dǎo)致功率消耗增加、設(shè)計(jì)過(guò)度復(fù)雜化,以及對(duì)其他信號(hào)的干擾增大。
此外如果時(shí)鐘網(wǎng)絡(luò)中的driver不平衡,會(huì)導(dǎo)致時(shí)鐘偏斜的增加,從而影響電路的同步性能。
一個(gè)比較好的建議,將trise和tfall設(shè)置為時(shí)鐘周期的百分之10到百分之20。

我們?cè)賮?lái)看一下時(shí)鐘網(wǎng)絡(luò)對(duì)面積的影響。時(shí)鐘網(wǎng)絡(luò)包括時(shí)鐘生成器、時(shí)鐘元件和時(shí)鐘連線,所有這些都會(huì)占用芯片面積。
時(shí)鐘生成器:例如鎖相環(huán)(PLL),可能會(huì)非常大,因?yàn)樗枰袷幤、相位檢測(cè)器、電荷泵、濾波器等多個(gè)子組件。
時(shí)鐘緩沖器:時(shí)鐘緩沖器分布在芯片的各個(gè)部分,以便驅(qū)動(dòng)時(shí)鐘信號(hào)到達(dá)每個(gè)時(shí)鐘元素。這些緩沖器的總和會(huì)占用相當(dāng)大的面積。
時(shí)鐘連線:時(shí)鐘連線會(huì)消耗大量的布線資源。在芯片設(shè)計(jì)中,布線資源是非常寶貴的,因?yàn)樗鼈儧Q定了信號(hào)如何在芯片上傳播。
此外我們需要考慮布線資源的重要性,為了實(shí)現(xiàn)快速和干凈的時(shí)鐘信號(hào)過(guò)渡,需要低的電阻-電容(RC)時(shí)間常數(shù)。這意味著時(shí)鐘網(wǎng)絡(luò)需要高質(zhì)量的布線資源。為了減少電阻,通常會(huì)選擇high、wide的金屬層來(lái)布線時(shí)鐘信號(hào),因?yàn)檫@些金屬層通常更寬,電阻更低。
時(shí)鐘網(wǎng)絡(luò)需要連接到芯片上的每個(gè)時(shí)鐘元素,這意味著時(shí)鐘連線需要遍布整個(gè)芯片。此外為了從高層次的金屬層連接到低層次的金屬層,需要使用疊孔,這也會(huì)占用額外的面積,并可能增加延遲。

2、Clock Distribution所以我們?cè)趺礃?gòu)建時(shí)鐘樹呢?

我們看一下需要做到什么。首先考慮只有一個(gè)時(shí)鐘源頭,有多個(gè)Sinks。我們需要將他們連接起來(lái)。同時(shí)讓Clock Skew,Delay,整體的Wire length,噪聲和耦合效應(yīng)都盡可能的小。
我們的挑戰(zhàn)是什么?
同步數(shù)百萬(wàn)(數(shù)十億)個(gè)獨(dú)立元素:在現(xiàn)代集成電路中,可能包含數(shù)百萬(wàn)甚至數(shù)十億個(gè)需要同步的元素,如觸發(fā)器、寄存器等。
在10 ps的時(shí)間尺度上同步:這些元素需要在極短的時(shí)間內(nèi)同步,大約在10皮秒(ps)的量級(jí)上。這是一個(gè)非常短暫的時(shí)間窗口,要求時(shí)鐘信號(hào)必須非常精確和穩(wěn)定。
跨越2-4 cm的距離:時(shí)鐘信號(hào)需要在芯片上傳播很長(zhǎng)的距離,通常在2到4厘米之間。這樣的距離在芯片內(nèi)部是一個(gè)相對(duì)較大的范圍。
同步距離與元素尺寸的比例約為10^5:這意味著時(shí)鐘信號(hào)需要在一個(gè)非常大的范圍內(nèi)同步非常小的元素,這是一個(gè)巨大的挑戰(zhàn)。
參考:光在1 cm內(nèi)傳播需要10 ps:光在10皮秒傳播不到1cm。這是一個(gè)理論上的極限,實(shí)際上的電子信號(hào)傳播速度遠(yuǎn)低于光速。
總結(jié)來(lái)說(shuō),時(shí)鐘路由的挑戰(zhàn)在于如何在極短的時(shí)間內(nèi),將時(shí)鐘信號(hào)精確地同步到芯片上每一個(gè)角落的元素,同時(shí)還要克服信號(hào)在傳播過(guò)程中的延遲和衰減。這要求設(shè)計(jì)師采用先進(jìn)的時(shí)鐘樹綜合技術(shù),優(yōu)化時(shí)鐘網(wǎng)絡(luò)的布局和布線,以確保時(shí)鐘信號(hào)的穩(wěn)定性和同步性。

我們看一下目前的技術(shù)趨勢(shì)。我們都知道時(shí)鐘頻率目前變得越來(lái)越高,隨著時(shí)鐘頻率的提高,對(duì)始終偏斜以及信號(hào)過(guò)渡的要求也越來(lái)越高。此外隨著CMOS工藝的縮小,PLL的性能得到改善,有助于減少時(shí)鐘抖動(dòng),但與此同時(shí)其它噪聲源可能會(huì)增加,比如電源噪聲和溫度梯度。
銅互連的使用降低了電阻-電容(RC)時(shí)間常數(shù),有助于改善信號(hào)過(guò)渡和潛在的時(shí)鐘偏斜。低介電常數(shù)(low k)材料可以減少時(shí)鐘功耗,改善延遲、偏斜和過(guò)渡率。
隨著設(shè)計(jì)的深入流水線化,使用了更多的寄存器,這增加了時(shí)鐘網(wǎng)絡(luò)的電容負(fù)載。更大的芯片尺寸需要更長(zhǎng)的連線來(lái)覆蓋整個(gè)晶圓,增加了時(shí)鐘網(wǎng)絡(luò)的復(fù)雜性和功耗。隨著功能的增加和器件的增多,更多的元素需要時(shí)鐘信號(hào),這進(jìn)一步增加了時(shí)鐘網(wǎng)絡(luò)的負(fù)擔(dān)。動(dòng)態(tài)邏輯設(shè)計(jì)中,通常會(huì)有更多的元素需要時(shí)鐘信號(hào),這也會(huì)增加時(shí)鐘網(wǎng)絡(luò)的復(fù)雜性。

根據(jù)不同的設(shè)計(jì)需求和目標(biāo),時(shí)鐘綜合可以采用不同的方法,主要包括以下幾種:
時(shí)鐘樹(Clock Tree):這是傳統(tǒng)的時(shí)鐘分布方法,它從單一的時(shí)鐘源開(kāi)始,通過(guò)一系列的緩沖器(buffers)和驅(qū)動(dòng)器(drivers)將時(shí)鐘信號(hào)分支傳遞到芯片上的各個(gè)觸發(fā)器。時(shí)鐘樹的設(shè)計(jì)旨在平衡每個(gè)觸發(fā)器看到的時(shí)鐘路徑長(zhǎng)度,以減少時(shí)鐘偏斜。
時(shí)鐘網(wǎng)格(Clock Mesh/Grid):時(shí)鐘網(wǎng)格是一種全局時(shí)鐘分布網(wǎng)絡(luò),它由水平和垂直的時(shí)鐘線組成,這些線在整個(gè)芯片上形成一個(gè)網(wǎng)格狀結(jié)構(gòu)。時(shí)鐘網(wǎng)格的設(shè)計(jì)可以提高時(shí)鐘信號(hào)的均勻性,減少時(shí)鐘偏斜,并且有助于應(yīng)對(duì)隨著芯片尺寸增大而增加的時(shí)鐘分布挑戰(zhàn)。
時(shí)鐘脊柱(Clock Spines):時(shí)鐘脊柱是一種介于時(shí)鐘樹和時(shí)鐘網(wǎng)格之間的時(shí)鐘分布方法。它通常包括一些主要的垂直或水平時(shí)鐘線,這些線充當(dāng)主時(shí)鐘路徑,然后通過(guò)分支將時(shí)鐘信號(hào)傳遞到芯片上的各個(gè)部分。時(shí)鐘脊柱的設(shè)計(jì)旨在提供一種平衡的方法,既能夠減少時(shí)鐘偏斜,又能夠簡(jiǎn)化時(shí)鐘網(wǎng)絡(luò)的復(fù)雜性。
每種方法都有其優(yōu)勢(shì)和局限性,設(shè)計(jì)師需要根據(jù)具體的電路設(shè)計(jì)、性能要求和工藝技術(shù)來(lái)選擇合適的時(shí)鐘綜合方法。隨著集成電路尺寸的增大和性能要求的提高,時(shí)鐘綜合變得越來(lái)越具有挑戰(zhàn)性,需要更加先進(jìn)的工具和算法來(lái)支持。

我們來(lái)看一下時(shí)鐘樹。時(shí)鐘樹是集成電路中用于分布時(shí)鐘信號(hào)的一種結(jié)構(gòu)。在設(shè)計(jì)中,一個(gè)簡(jiǎn)單但非實(shí)用的方法是為每個(gè)時(shí)鐘終點(diǎn)(sink)單獨(dú)布線,并平衡RC延遲。然而,這種方法會(huì)導(dǎo)致功耗過(guò)大,且每個(gè)網(wǎng)線的較大RC值可能會(huì)引起信號(hào)完整性問(wèn)題。
為了避免這些問(wèn)題,實(shí)際中會(huì)使用緩沖器樹(buffered tree)結(jié)構(gòu)。這種方法的特點(diǎn)和優(yōu)勢(shì)包括:
短網(wǎng)線意味著更低的RC值:通過(guò)使用緩沖器樹,每個(gè)時(shí)鐘網(wǎng)線的長(zhǎng)度可以縮短,從而降低RC(電阻-電容)值。短的網(wǎng)線可以減少信號(hào)延遲和功耗。
緩沖器恢復(fù)信號(hào):在時(shí)鐘信號(hào)傳播路徑上插入緩沖器可以幫助恢復(fù)信號(hào)強(qiáng)度,提高信號(hào)的過(guò)渡速率(slew rates),確保時(shí)鐘邊沿的清晰和可識(shí)別。
降低總插入延遲:由于RC值較低,整個(gè)時(shí)鐘樹的插入延遲(insertion delay)也會(huì)降低,這有助于減少時(shí)鐘偏斜。
減少總的開(kāi)關(guān)電容:緩沖器樹可以減少時(shí)鐘網(wǎng)絡(luò)上總的開(kāi)關(guān)電容,因?yàn)槊總(gè)緩沖器只需驅(qū)動(dòng)較少的負(fù)載。這有助于降低時(shí)鐘網(wǎng)絡(luò)的動(dòng)態(tài)功耗。
總之,時(shí)鐘樹的設(shè)計(jì)目標(biāo)是在功耗、信號(hào)完整性和時(shí)鐘偏斜之間找到平衡。通過(guò)使用緩沖器樹,設(shè)計(jì)師可以有效地管理這些設(shè)計(jì)約束,實(shí)現(xiàn)高效且可靠的時(shí)鐘分布。

讓我們來(lái)構(gòu)建一個(gè)實(shí)際的時(shí)鐘樹,可以看到下圖這個(gè)形狀,非常像H。所以我們稱之為H-Tree。它具有以下特點(diǎn):
一個(gè)大的中心驅(qū)動(dòng)器:H-Tree從一個(gè)大的中心驅(qū)動(dòng)器開(kāi)始,向四個(gè)方向(或者更多的方向,取決于設(shè)計(jì)的復(fù)雜性)分支。
遞歸的H形狀結(jié)構(gòu):H-Tree使用遞歸的H形狀結(jié)構(gòu)來(lái)匹配連線長(zhǎng)度,確保時(shí)鐘信號(hào)到達(dá)各個(gè)觸發(fā)器的時(shí)間大致相同。
在分支點(diǎn)減半連線寬度:在H-Tree的分支點(diǎn),連線的寬度會(huì)減半,這樣做可以減少信號(hào)反射,提高信號(hào)質(zhì)量。
然而,這種完美平衡的H-Tree在實(shí)際應(yīng)用中很難實(shí)現(xiàn),因此更現(xiàn)實(shí)的方法是使用錐形H-Tree(Tapered H-Tree),其試圖實(shí)現(xiàn)平衡,但更加靈活,以適應(yīng)實(shí)際設(shè)計(jì)中觸發(fā)器不均勻分布的情況。
標(biāo)準(zhǔn)的時(shí)鐘樹綜合(CTS)方法會(huì)考慮到觸發(fā)器的實(shí)際分布,嘗試構(gòu)建一個(gè)平衡的時(shí)鐘樹。在CTS過(guò)程中,工具會(huì)根據(jù)觸發(fā)器的位置和時(shí)鐘網(wǎng)絡(luò)的需求來(lái)自動(dòng)放置緩沖器,并調(diào)整連線的長(zhǎng)度和寬度,以實(shí)現(xiàn)最佳的時(shí)鐘分布。

我們來(lái)看兩個(gè)工業(yè)界的芯片的時(shí)鐘網(wǎng)絡(luò),其使用了H-Tree。

我們?cè)賮?lái)看一下時(shí)鐘網(wǎng)格,其相對(duì)于時(shí)鐘樹有什么區(qū)別呢?首先我們看一下時(shí)鐘網(wǎng)格長(zhǎng)什么樣子,可以看到其前面仍然是時(shí)鐘樹,但真的驅(qū)動(dòng)的時(shí)候,將flip flop放到一個(gè)個(gè)的格子中,然后直接通過(guò)連線進(jìn)行驅(qū)動(dòng)。它有以下幾個(gè)優(yōu)點(diǎn):
時(shí)鐘偏斜由網(wǎng)格密度決定:時(shí)鐘網(wǎng)格通過(guò)均勻分布的網(wǎng)格線來(lái)提供時(shí)鐘信號(hào),因此時(shí)鐘偏斜主要取決于網(wǎng)格的密度,而不是特定負(fù)載的位置。
時(shí)鐘信號(hào)無(wú)處不在:由于時(shí)鐘網(wǎng)格覆蓋整個(gè)芯片,因此時(shí)鐘信號(hào)幾乎可以在芯片的任何地方獲得。
對(duì)工藝變化的容忍度高:時(shí)鐘網(wǎng)格的結(jié)構(gòu)使得它對(duì)制造過(guò)程中的變化不那么敏感,因此可以提供更加穩(wěn)定的時(shí)鐘分布。
通常能夠?qū)崿F(xiàn)極低的時(shí)鐘偏斜:由于時(shí)鐘網(wǎng)格的設(shè)計(jì)方式,它通常能夠?qū)崿F(xiàn)非常低的時(shí)鐘偏斜值。
然而,時(shí)鐘網(wǎng)格也有一些缺點(diǎn):
大量的布線和功耗:時(shí)鐘網(wǎng)格需要大量的布線,這會(huì)導(dǎo)致功耗的增加。
連線電容大:由于時(shí)鐘網(wǎng)格的布線范圍廣泛,因此連線的電容也會(huì)很大。
需要強(qiáng)大的驅(qū)動(dòng)器:為了驅(qū)動(dòng)這樣的網(wǎng)格,需要強(qiáng)大的驅(qū)動(dòng)器,這意味著驅(qū)動(dòng)器的預(yù)驅(qū)動(dòng)電容也會(huì)很大。
布線面積大:時(shí)鐘網(wǎng)格占用了大量的芯片面積,這可能會(huì)影響其他電路元素的布局。
為了最小化這些缺點(diǎn),可以使網(wǎng)格間距變得更粗,但這樣做會(huì)導(dǎo)致時(shí)鐘偏斜變差,從而失去了時(shí)鐘網(wǎng)格的主要優(yōu)勢(shì)。設(shè)計(jì)時(shí)不應(yīng)過(guò)度設(shè)計(jì),而是應(yīng)該讓時(shí)鐘偏斜盡可能大,只要它仍然在可容忍的范圍內(nèi)。
此外時(shí)鐘網(wǎng)格對(duì)于片上系統(tǒng)來(lái)說(shuō)似乎并不可行,這是因?yàn)镾oC的復(fù)雜性和對(duì)功耗、面積的限制。因此,設(shè)計(jì)師需要根據(jù)具體的應(yīng)用和設(shè)計(jì)約束來(lái)選擇合適的時(shí)鐘分布方法。

我們看幾個(gè)工業(yè)界的例子,可以看到時(shí)鐘網(wǎng)格的Driver Size很大。其Skew相比于時(shí)鐘周期而言非常的小。

時(shí)鐘脊柱(Clock Spines)是一種用于時(shí)鐘分布的替代方法,它旨在減少時(shí)鐘網(wǎng)格所導(dǎo)致的功耗和布線資源的消耗。時(shí)鐘脊柱的設(shè)計(jì)理念是構(gòu)建一個(gè)中心脊柱,然后從脊柱向外輻射時(shí)鐘信號(hào),以實(shí)現(xiàn)時(shí)鐘的局部分布。
以下是時(shí)鐘脊柱的一些關(guān)鍵特點(diǎn):
構(gòu)建H Tree到每個(gè)脊柱:與時(shí)鐘網(wǎng)格不同,時(shí)鐘脊柱設(shè)計(jì)中會(huì)構(gòu)建一個(gè)中心脊柱,然后從脊柱向外輻射時(shí)鐘信號(hào)。這種設(shè)計(jì)類似于H Tree結(jié)構(gòu)。
從脊柱輻射本地時(shí)鐘分布:時(shí)鐘脊柱的設(shè)計(jì)允許從脊柱向各個(gè)方向輻射時(shí)鐘信號(hào),以實(shí)現(xiàn)對(duì)本地區(qū)域的時(shí)鐘分布。
減少功耗和布線資源:與時(shí)鐘網(wǎng)格相比,時(shí)鐘脊柱的設(shè)計(jì)減少了布線資源的需求,因?yàn)樗灰笤诿總(gè)方向上都布設(shè)時(shí)鐘線。這有助于降低功耗。
Pentium 4是早期采用時(shí)鐘脊柱設(shè)計(jì)的一個(gè)例子。它表明時(shí)鐘脊柱在實(shí)際應(yīng)用中是可行的,并且能夠滿足當(dāng)時(shí)的設(shè)計(jì)需求。

當(dāng)然時(shí)鐘的設(shè)計(jì)非常復(fù)雜,上面也是簡(jiǎn)單介紹一下。這里我們簡(jiǎn)單總結(jié)一下這三種時(shí)鐘網(wǎng)絡(luò)的區(qū)別:

此外還有專用的Skew管理機(jī)制。

我們來(lái)看一下時(shí)鐘并發(fā)優(yōu)化。不要忘記CTS的主要目標(biāo),我們的核心目標(biāo)是要滿足時(shí)序要求和DRV約束。時(shí)鐘偏斜的減少只是作為時(shí)鐘綜合與后端設(shè)計(jì)(post-CTS)和前端設(shè)計(jì)(pre-CTS)之間時(shí)序相關(guān)性的一個(gè)指標(biāo)。實(shí)際上,我們更應(yīng)該關(guān)注的是滿足時(shí)序和驅(qū)動(dòng)約束。
CCOpt提出了一種新的時(shí)鐘綜合方法,它不再將時(shí)鐘偏斜作為唯一目標(biāo),而是同時(shí)考慮時(shí)序和驅(qū)動(dòng)約束,以及功耗和面積的優(yōu)化。在構(gòu)建時(shí)鐘網(wǎng)絡(luò)時(shí),CCOpt方法會(huì)考慮時(shí)序和驅(qū)動(dòng)約束,而不是僅僅關(guān)注時(shí)鐘偏斜。這有助于在滿足性能要求的同時(shí),減少功耗和面積的浪費(fèi)。

其首先構(gòu)建一個(gè)時(shí)鐘樹,然后檢查時(shí)序并修復(fù)任何違反時(shí)序要求的地方。這種方法之所以有效,是因?yàn)榇蠖鄶?shù)時(shí)序路徑都是局部的,它們可能來(lái)自同一個(gè)時(shí)鐘分支,因此不需要太多的時(shí)鐘偏斜平衡。
以下是這種方法的一些優(yōu)點(diǎn):
局部的時(shí)序路徑:大多數(shù)時(shí)序路徑都是局部的,這意味著它們通常來(lái)自同一個(gè)時(shí)鐘分支。因此,這些路徑不需要太多的時(shí)鐘偏斜平衡來(lái)開(kāi)始;
減少時(shí)鐘偏斜平衡:由于時(shí)序路徑的局部性,可以減少時(shí)鐘偏斜平衡的需求。這有助于降低插入延遲,因?yàn)闀r(shí)鐘信號(hào)到達(dá)觸發(fā)器的時(shí)間更短;
降低功耗和面積:由于減少了時(shí)鐘偏斜平衡的需求,因此可以減少時(shí)鐘緩沖器的數(shù)量,從而降低功耗和面積的消耗;
電流分布的優(yōu)化:減少時(shí)鐘偏斜平衡有助于優(yōu)化電流分布,減少IR Drop的影響;
有用的時(shí)鐘偏斜:盡管減少了時(shí)鐘偏斜平衡,但仍會(huì)保留一定程度的時(shí)鐘偏斜,這對(duì)于時(shí)序路徑上的局部時(shí)序要求是有益的。比如可以在建立時(shí)間緊張的寄存器,你讓時(shí)鐘晚一點(diǎn)到來(lái),這屬于合理利用Skew;
總的來(lái)說(shuō),CCOpt方法通過(guò)首先構(gòu)建一個(gè)基本的時(shí)鐘樹,然后根據(jù)時(shí)序要求進(jìn)行調(diào)整,可以在滿足時(shí)序要求的同時(shí),減少功耗和面積的消耗。這種方法強(qiáng)調(diào)時(shí)序路徑的局部性,并在此基礎(chǔ)上進(jìn)行時(shí)鐘網(wǎng)絡(luò)的設(shè)計(jì)和優(yōu)化。

3、Clock Tree Synthesis in EDA我們來(lái)看一下實(shí)際EDA工具是如何進(jìn)行時(shí)鐘樹綜合的。這里我們將以Cadence的Innovus為例進(jìn)行說(shuō)明。

首先我們?cè)倜鞔_一下,我們?cè)跁r(shí)鐘樹綜合之前已經(jīng)有了什么,基于這些東西我們需要做什么,實(shí)現(xiàn)什么。
我們需要滿足DRV約束,比如最大扇出,最大電容,最大長(zhǎng)度等等。還要盡可能減少Skew,減少Insertion Delay。

我們來(lái)看一下時(shí)鐘樹由哪些部分組成?
起始點(diǎn):時(shí)鐘樹的起始點(diǎn)是時(shí)鐘端口或時(shí)鐘生成器的輸出引腳,這是時(shí)鐘信號(hào)的源頭,所有的時(shí)鐘信號(hào)都是從這里開(kāi)始傳播的;
葉子節(jié)點(diǎn)/終點(diǎn):時(shí)鐘樹的葉節(jié)點(diǎn)或終點(diǎn)是指時(shí)鐘信號(hào)最終到達(dá)的地方,通常是寄存器、存儲(chǔ)器等同步元件的時(shí)鐘引腳,理論上時(shí)鐘信號(hào)必須在這些點(diǎn)上同時(shí)到達(dá),以保持?jǐn)?shù)據(jù)的同步性;
緩沖器/反相器:緩沖器和反相器是時(shí)鐘樹中的重要組成部分,它們用于驅(qū)動(dòng)時(shí)鐘信號(hào),確保時(shí)鐘信號(hào)的轉(zhuǎn)換能夠滿足設(shè)計(jì)要求。通過(guò)插入緩沖器或反相器,可以調(diào)整時(shí)鐘路徑的延遲,以減少時(shí)鐘偏斜;(比如通過(guò)兩個(gè)反相器,讓信號(hào)0和1變得更分明,變得變強(qiáng))


特殊邏輯:包括多路復(fù)用器、集成的時(shí)鐘門控、時(shí)鐘分頻器等。這些邏輯單元可以用來(lái)控制時(shí)鐘信號(hào)的分布,例如,通過(guò)時(shí)鐘門控來(lái)關(guān)閉不需要的時(shí)鐘信號(hào),以降低功耗;
我們需要一種“語(yǔ)言”來(lái)定義這些(以及其他)組件,接下來(lái)我們會(huì)討論CCOpt方法中對(duì)這些的命名規(guī)定。

我們?cè)賮?lái)回顧一下什么是Source和Sink。
Clock Source:
Clock Source是指時(shí)鐘信號(hào)發(fā)散出來(lái)的引腳,是時(shí)鐘樹的起點(diǎn);
Clock Source可以是:(這三個(gè)直接看下圖就可以理解,很清楚)
設(shè)計(jì)的主要輸入端口,例如一個(gè)外部時(shí)鐘信號(hào)輸入到芯片;
一個(gè)IP核的輸出引腳,比如一個(gè)鎖相環(huán)(PLL)的輸出,PLL通常用于生成穩(wěn)定且頻率可調(diào)的時(shí)鐘信號(hào);
一個(gè)門控電路的輸出引腳,例如時(shí)鐘復(fù)用器或時(shí)鐘門控的輸出。這些電路用于控制時(shí)鐘信號(hào)的路由和開(kāi)關(guān);
Clock Sink:
Clock Sinks是指所有接收時(shí)鐘信號(hào)的引腳,是時(shí)鐘樹的終點(diǎn)。
Clock Sinks可以是:
寄存器(觸發(fā)器FF或鎖存器latch)的時(shí)鐘輸入引腳;
IP核的時(shí)鐘輸入引腳,比如SRAM,這種我們也成為Macro單元;
主要輸出端口,比如時(shí)鐘信號(hào)需要從當(dāng)前模塊驅(qū)動(dòng)到外部;


我們?cè)賮?lái)看一下Skew Group這個(gè)概念。我們有很多很多的Sink,我們將一部分Sink劃分為一個(gè)Skew Group,用于分析和控制Skew。默認(rèn)情況下,時(shí)鐘樹所有的Sinks屬于同一Skew Group。
然而,這些Sink也可以被劃分為幾個(gè)時(shí)鐘偏斜組,這樣可以更精細(xì)地控制時(shí)鐘偏斜。(有點(diǎn)像之前的Timing Group的概念)
此外不同時(shí)鐘的接收端可以屬于同一個(gè)時(shí)鐘偏斜組(例如,時(shí)鐘和生成的時(shí)鐘),這意味著它們?cè)跁r(shí)鐘樹上可能共享相同的路徑或緩沖器,甚至一個(gè)接收端可以同時(shí)屬于多個(gè)時(shí)鐘偏斜組。

我們?cè)賮?lái)看幾個(gè)關(guān)于Pins的概念。
Stop Pins
時(shí)鐘樹的葉子節(jié)點(diǎn),時(shí)鐘網(wǎng)絡(luò)將緩沖到停止引腳,但不會(huì)接著往下傳遞了;
所有時(shí)鐘接收端都是隱式的停止引腳,因此,按理說(shuō)這些引腳需要進(jìn)行時(shí)鐘偏斜平衡/分析(隱式代表不要額外去聲明,與之對(duì)應(yīng)的我們可以定義顯式的停止引腳,比如一個(gè)反相器,我們不希望時(shí)鐘順著它接著往下傳遞了,就可以顯式的聲明出來(lái));
要在CCOpt中定義額外的引腳作為停止引腳,使用下圖中的命令;
Ignore Pins
本身是時(shí)鐘網(wǎng)絡(luò)上的引腳,但它們?cè)谌魏螘r(shí)鐘偏斜組中都不會(huì)被視為時(shí)鐘接收端,因此也就不需要進(jìn)行時(shí)鐘偏斜平衡/分析;
時(shí)鐘網(wǎng)絡(luò)將緩沖到忽略引腳,但不會(huì)接著往下傳遞了;
Exclude Pins
與Ignore Pins相似,但時(shí)鐘網(wǎng)絡(luò)不會(huì)緩沖到Exclude Pins;
Through Pins
Through Pins是指那些本來(lái)會(huì)被視為Stop pins的引腳,但我們希望時(shí)鐘信號(hào)能夠通過(guò)它們傳播(用于緩沖和將引腳添加到時(shí)鐘偏斜組中);
在Innovus的新版本中,沒(méi)有明確的命令來(lái)定義穿越引腳。只需將其稱為Ignore Pins;
簡(jiǎn)單來(lái)說(shuō)在時(shí)鐘樹綜合的過(guò)程中,Through Pins允許時(shí)鐘信號(hào)在不被視作最終接收端的情況下通過(guò)某些節(jié)點(diǎn)。這樣做可以保持時(shí)鐘網(wǎng)絡(luò)的連續(xù)性,同時(shí)允許在這些節(jié)點(diǎn)上進(jìn)行緩沖和其他操作,以優(yōu)化時(shí)鐘網(wǎng)絡(luò)的性能。在Innovus的新版本中,不再需要顯式地定義穿越引腳,而是通過(guò)將它們標(biāo)記為忽略引腳來(lái)實(shí)現(xiàn)相同的功能;



我們?cè)賮?lái)看一個(gè)概念,Insertion Delay Pin,也可以叫做float pin。這個(gè)Pin角對(duì)應(yīng)Macro比如SRAM的時(shí)鐘輸入引腳。
這個(gè)引腳到其內(nèi)部的時(shí)鐘引腳還有一段邏輯。就比如下圖,其還需要X,這個(gè)時(shí)候如果我們要保證時(shí)鐘平衡的話。我們就應(yīng)該讓時(shí)鐘信號(hào)到這個(gè)Macro的時(shí)鐘引腳早一點(diǎn),從T變成T-X。其寫法如下所示。

讓我們來(lái)總結(jié)一下上述的Pin角類型。Stop Pin非常好理解,就是終點(diǎn),時(shí)鐘到這里就停下來(lái)了,不會(huì)接著傳了。Exclude Pin是完完全全可以忽視的Pin,什么規(guī)則都不用滿足。而Ignore Pin盡管叫這個(gè)名字,但還是要進(jìn)行DRV fixing的。

來(lái)看一下Clock Net的Routing問(wèn)題。由于Clock nets對(duì)于信號(hào)完整性影響非常大,前面也已經(jīng)介紹過(guò)了。所以對(duì)待其相比對(duì)待別的Net,有額外的工作要做。
我們?cè)跁r(shí)鐘樹綜合的時(shí)候要對(duì)其進(jìn)行Pre-route,來(lái)快速檢查一遍。此外還需要:
優(yōu)先選擇布線軌道:
為了減少電阻和電容,我們通常優(yōu)先選擇更高、更厚的金屬層來(lái)布線時(shí)鐘網(wǎng)絡(luò)。高層的金屬通常具有較低的電阻,而且與襯底的電容較小,這有助于提高時(shí)鐘網(wǎng)絡(luò)的性能。
屏蔽時(shí)鐘網(wǎng)絡(luò):
屏蔽是一種常用的技術(shù),用于減少時(shí)鐘網(wǎng)絡(luò)對(duì)其他網(wǎng)絡(luò)的干擾。通過(guò)在時(shí)鐘網(wǎng)絡(luò)周圍添加保護(hù)層或使用專門的屏蔽軌跡,可以減少電磁干擾(EMI)。
考慮在時(shí)鐘緩沖器旁邊添加去耦電容(DeCaps):
去耦電容可以用來(lái)過(guò)濾時(shí)鐘緩沖器輸出端的噪聲,提高時(shí)鐘信號(hào)的穩(wěn)定性。這些電容通常放置在時(shí)鐘緩沖器的附近,以減少電源噪聲對(duì)時(shí)鐘信號(hào)的影響。


我們?cè)趺丛贗nnovus中布線時(shí)鐘nets呢?首先,既然這些nets很特殊,就不能用默認(rèn)規(guī)則,要使用非默認(rèn)規(guī)則即Non-Default Rules(NDRs)。比如double-width/double-spacing。
同時(shí)還需要指定Routing類型,定義首選的布線層和屏蔽技術(shù)。
在Innovus中,我們將時(shí)鐘網(wǎng)絡(luò)分為三種類型:
頂部(Top)時(shí)鐘網(wǎng)絡(luò),即時(shí)鐘樹的初始分支,通常非常寬和高;
主干(Trunks)時(shí)鐘網(wǎng)絡(luò),即時(shí)鐘樹的主要分支,也比較寬和高;
葉子(Leaf)時(shí)鐘網(wǎng)絡(luò),即時(shí)鐘樹的底層,更接近邏輯單元。
綜上,我們將定義NDRs和布線規(guī)則,然后將它們應(yīng)用到時(shí)鐘網(wǎng)絡(luò)上。

我們來(lái)看一個(gè)具體的例子:
首先,定義NDR規(guī)則,比如Double width和Double Spacing,定義方式如下圖所示。這個(gè)規(guī)則的名字叫做CTS_2W2S。我們定義的規(guī)則允許我們指定時(shí)鐘網(wǎng)絡(luò)布線的特殊要求,例如更大的線寬、間距或特定的布線層。
然后我們創(chuàng)建用于時(shí)鐘樹綜合的routing type ,type名字叫做cts_trunk。在Innovus中,布線類型允許我們定義首選的布線層和屏蔽。這意味著在設(shè)計(jì)時(shí)鐘網(wǎng)絡(luò)時(shí),我們可以指定時(shí)鐘信號(hào)應(yīng)該優(yōu)先在哪些金屬層上布線,以及是否需要采取屏蔽措施來(lái)保護(hù)時(shí)鐘信號(hào)免受干擾。此外routing type是基于我們上述定義的NDR的,也就是說(shuō)routing type可以理解為在NDR上的進(jìn)一步規(guī)則定義。
最后我們上述定義的屬性作用在trunk類型的網(wǎng)絡(luò)上。這樣,Innovus就會(huì)根據(jù)定義的NDR和布線類型來(lái)布線時(shí)鐘網(wǎng)絡(luò),確保時(shí)鐘信號(hào)的質(zhì)量和完整性。

在運(yùn)行時(shí)鐘樹綜合之前,對(duì)設(shè)計(jì)中的每個(gè)時(shí)鐘樹進(jìn)行分析是非常重要的。分析的目的是為了確定以下幾個(gè)關(guān)鍵方面:
確定時(shí)鐘樹的根節(jié)點(diǎn),即時(shí)鐘信號(hào)的發(fā)散點(diǎn),通常是一個(gè)時(shí)鐘生成器或時(shí)鐘源的輸出引腳。
確定時(shí)鐘信號(hào)應(yīng)該到達(dá)的所有時(shí)鐘匯(如寄存器、觸發(fā)器等)以及可能需要特殊處理的時(shí)鐘樹例外情況。
檢查時(shí)鐘樹中是否已經(jīng)包含了某些預(yù)存的單元,例如用于時(shí)鐘門控的邏輯單元。
確定時(shí)鐘樹是否收斂,即是否存在自身收斂的時(shí)鐘路徑(一個(gè)時(shí)鐘樹的多個(gè)分支最終匯合)或與其他時(shí)鐘樹重疊的時(shí)鐘路徑。
分析時(shí)鐘樹之間是否存在時(shí)序關(guān)系,例如跨時(shí)鐘偏斜要求。
確定DRV約束,包括最大扇出、最大轉(zhuǎn)換時(shí)間和最大電容等。
選擇合適的庫(kù)單元來(lái)構(gòu)建時(shí)鐘樹,這些單元應(yīng)該滿足設(shè)計(jì)的要求,并且與工藝相兼容。
確定布線約束,包括布線規(guī)則和金屬層的選擇。這些約束將指導(dǎo)CTS工具如何布線時(shí)鐘網(wǎng)絡(luò),以確保信號(hào)質(zhì)量和滿足設(shè)計(jì)約束。
通過(guò)這些分析,設(shè)計(jì)者可以確保時(shí)鐘樹綜合的結(jié)果能夠滿足設(shè)計(jì)的時(shí)序和性能要求,同時(shí)還可以避免潛在的問(wèn)題,如時(shí)鐘偏斜過(guò)大、時(shí)鐘抖動(dòng)過(guò)多等。這有助于提高整個(gè)數(shù)字系統(tǒng)的可靠性和穩(wěn)定性。

我們看一下Clock Tree優(yōu)化前后的對(duì)比。包括但不限于使用Gate relocation、Buffer relocation、Buffer Sizing等技術(shù)。

我們?cè)倏纯磿r(shí)鐘樹綜合以后,對(duì)時(shí)序的影響?梢钥吹街罢J(rèn)為時(shí)鐘是理想的,現(xiàn)在引入了positive skew和negative skew。為了解決這一點(diǎn),我們按理說(shuō)就得對(duì)input delay和output delay,把這個(gè)因素給考慮進(jìn)來(lái)。
想象一下入口和出口有兩個(gè)Virtual寄存器,其Clock Skew存在不平衡。我們可以通過(guò)設(shè)置Input Delay和Output Delay,做到時(shí)鐘平衡。

我們看一下如何減少時(shí)鐘分布問(wèn)題,下面的很多方法其實(shí)用的不太多,大家可以自己看看。

4、Clock Generation

前面講了這么多,我們來(lái)看看時(shí)鐘是怎么生成的。最簡(jiǎn)單的方法就是用環(huán)形振蕩器,如下圖右上角所示。但這種方法雖然簡(jiǎn)單,但不是很穩(wěn)定,很容易受到PVT的影響。
因此我們通常是在芯片外部使用專用的晶振電路產(chǎn)生時(shí)鐘,但這個(gè)片外時(shí)鐘只有一個(gè),并且時(shí)鐘頻率很受限,如果要實(shí)現(xiàn)高頻和分頻呢?我們就需要使用片上的專用時(shí)鐘生成器,通常是PLL。

基于上述的方案的電路大概長(zhǎng)這樣,可以看到我們實(shí)現(xiàn)了時(shí)鐘的倍頻和分頻。

PLL長(zhǎng)什么樣呢?其大概長(zhǎng)下面這個(gè)樣子。鎖相環(huán)基本的組成部件:檢相器 (PD)、環(huán)路濾波器 (LF) 和壓控振蕩器 (VCO)。作為一個(gè)負(fù)反饋系統(tǒng),在反饋回路中VCO的輸出被分頻器分頻到低頻后,通過(guò)檢相器和參考時(shí)鐘比較產(chǎn)生相位差信號(hào),接著該相差信號(hào)在前向通路上,被電荷泵和環(huán)路濾波器處理后產(chǎn)生電壓控制信號(hào),從而反過(guò)來(lái)控制VCO的輸出。鎖相環(huán)鎖相環(huán),關(guān)鍵是把相位給鎖住。

我們簡(jiǎn)單看一下PD長(zhǎng)啥樣。其輸入自然而然有兩個(gè)時(shí)鐘信號(hào),我們假設(shè)一個(gè)是Ref,一個(gè)是F_IN。如果REF先來(lái),那不就是慢了嗎,我們要把時(shí)鐘往前挪動(dòng)。類似的如果F_REF先來(lái),那就要把時(shí)鐘往后挪動(dòng)。

電荷泵和積分器長(zhǎng)下面這樣,我們已經(jīng)有了UP和DOWN信號(hào)。如果F_IN和F_REF一樣,那么就不需要充放電,V_C保持不變,輸出頻率也不變,否則就需要改變輸出頻率。

這個(gè)電壓就會(huì)用來(lái)控制Delay Line。我們看下圖,如果電壓不變,是不是Delay也就不變?如果電壓改變了,Delay-line的Delay也改變了,進(jìn)而影響到頻率。

我們把上面這個(gè)東西集成一下,就是VCO了。也就是壓控振蕩器。

5、Clock Domain Crossing

跨時(shí)鐘域可以說(shuō)是面試必問(wèn)的一個(gè)問(wèn)題了。為什么要考慮跨時(shí)鐘域問(wèn)題呢?其本質(zhì)是建立時(shí)間和保持時(shí)間的要求決定的。如下圖所示,DA到DB的時(shí)候,由于CLKA和CLKB是異步時(shí)鐘,其無(wú)法保證建立時(shí)間的要求,所以就會(huì)出現(xiàn)亞穩(wěn)態(tài)。

我們看一下跨時(shí)鐘域主要的問(wèn)題有哪些:
亞穩(wěn)態(tài):
亞穩(wěn)態(tài)是指一個(gè)觸發(fā)器(flip-flop)的輸出在穩(wěn)定的高電平或低電平狀態(tài)之間的一種不穩(wěn)定狀態(tài)。當(dāng)異步信號(hào)在觸發(fā)器的建立時(shí)間(setup time)和保持時(shí)間(hold time)窗口內(nèi)發(fā)生變化時(shí),就可能會(huì)出現(xiàn)亞穩(wěn)態(tài)。亞穩(wěn)態(tài)可能導(dǎo)致的問(wèn)題包括:
在扇出處產(chǎn)生高的傳播延遲。
在芯片內(nèi)產(chǎn)生高電流流動(dòng),可能會(huì)導(dǎo)致芯片損壞。
在扇出的不同部分出現(xiàn)信號(hào)的不同值
數(shù)據(jù)丟失:
數(shù)據(jù)丟失可能發(fā)生在源端產(chǎn)生新數(shù)據(jù)時(shí),而目的端尚未捕獲前一個(gè)數(shù)據(jù)。在異步系統(tǒng)中,由于時(shí)鐘不同步,這種數(shù)據(jù)丟失的情況更為常見(jiàn)。
數(shù)據(jù)不一致
數(shù)據(jù)不一致性是指數(shù)據(jù)被延遲捕獲,導(dǎo)致多個(gè)相關(guān)信號(hào)處于不同的狀態(tài)。這種情況可能會(huì)在多時(shí)鐘域系統(tǒng)中出現(xiàn),當(dāng)一個(gè)域中的數(shù)據(jù)更新速度與其他域不同步時(shí),就會(huì)導(dǎo)致數(shù)據(jù)的不一致性。



通過(guò)同步器可以解決亞穩(wěn)態(tài)問(wèn)題,通常采用雙DFF同步,其讓亞穩(wěn)態(tài)出現(xiàn)的頻率變得非常低。值得注意的是其只是消除亞穩(wěn)態(tài),并不能保證是0還是1。

同步器就足夠了嗎?并不是,同步器只解決了亞穩(wěn)態(tài),沒(méi)有解決數(shù)據(jù)丟失問(wèn)題和數(shù)據(jù)不一致問(wèn)題。
以數(shù)據(jù)不一致為例,我們想象一下有多個(gè)bit,都采用同步的方式,其到達(dá)的時(shí)間有前有后,比如01變成10,采樣得到的可能是11(低比特還沒(méi)有采到變化以后的值)。
為了消除數(shù)據(jù)丟失,我們可以采取以下措施:
慢時(shí)鐘到快時(shí)鐘:如果數(shù)據(jù)從慢時(shí)鐘域傳輸?shù)娇鞎r(shí)鐘域,由于快時(shí)鐘域的時(shí)鐘周期較短,可以在多個(gè)周期內(nèi)采樣慢時(shí)鐘域的數(shù)據(jù),從而不會(huì)丟失數(shù)據(jù)。
快時(shí)鐘到慢時(shí)鐘:如果數(shù)據(jù)從快時(shí)鐘域傳輸?shù)铰龝r(shí)鐘域,快時(shí)鐘域的數(shù)據(jù)需要在源端保持多個(gè)周期,以確保慢時(shí)鐘域有足夠的時(shí)間采樣到數(shù)據(jù)。
為了確保數(shù)據(jù)一致性,我們需要考慮更多的因素:
握手協(xié)議:通過(guò)握手協(xié)議,源時(shí)鐘域和目的時(shí)鐘域可以相互確認(rèn)數(shù)據(jù)已經(jīng)準(zhǔn)備好并被接收,從而確保數(shù)據(jù)的連貫性和一致性。
異步FIFO接口:異步FIFO可以在不同的時(shí)鐘域之間提供一種緩沖機(jī)制,確保數(shù)據(jù)按照順序傳輸,避免數(shù)據(jù)丟失和一致性問(wèn)題。
即使不用異步FIFO,也可以單獨(dú)使用格雷碼,其可以減少在跨時(shí)鐘域傳輸時(shí)出現(xiàn)的數(shù)據(jù)不一致。但針對(duì)的是順序變化的數(shù)據(jù)才有意義,比如順序訪存地址。以上述的01變成10為例,格雷碼就將其轉(zhuǎn)換成了01變成11。這樣你要么采到01要么采到11,只會(huì)采到舊的值或者新的值,而不會(huì)采到錯(cuò)誤的值。還可以使用Mux實(shí)現(xiàn)跨時(shí)鐘,具體的可以搜相關(guān)資料了解一下。



系列文章入口——
【芯片設(shè)計(jì)】SoC 101(一):緒論
【芯片設(shè)計(jì)】FIFO漫談(零)從無(wú)處不在的FIFO開(kāi)始說(shuō)起
【芯片設(shè)計(jì)】計(jì)算機(jī)體系結(jié)構(gòu)(一)虛擬內(nèi)存
【芯片設(shè)計(jì)】深入理解AMBA總線(零)緒論
【芯片設(shè)計(jì)】握手協(xié)議的介紹與時(shí)序說(shuō)明
【芯片設(shè)計(jì)】復(fù)位那些小事 —— 復(fù)位消抖
【芯片設(shè)計(jì)】快速入門數(shù)字芯片設(shè)計(jì)(一)Introduction
【芯片驗(yàn)證】UVM源碼計(jì)劃(零)下定決心讀源碼前的自測(cè)環(huán)節(jié)
【芯片設(shè)計(jì)】異步電路碎碎念(一) 到底什么是異步電路
【芯片設(shè)計(jì)】從RTL到GDS(一):Introduction
其他文章鏈接——
【芯片驗(yàn)證】sva_assertion: 15道助力飛升的斷言練習(xí)
【芯片驗(yàn)證】可能是RTL定向驗(yàn)證的巔峰之作
【芯片驗(yàn)證】RTL仿真中X態(tài)行為的傳播 —— 從xprop說(shuō)起
【芯片驗(yàn)證】年輕人的第一個(gè)systemVerilog驗(yàn)證環(huán)境全工程與解析
【芯片設(shè)計(jì)】verilog中有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的本質(zhì)探究
【芯片設(shè)計(jì)】論RTL中always語(yǔ)法的消失術(shù)
【芯片設(shè)計(jì)】代碼即注釋,注釋即代碼
【芯片設(shè)計(jì)】700行代碼的risc處理器你確實(shí)不能要求太多了
入職芯片開(kāi)發(fā)部門后,每天摸魚之外的時(shí)間我們要做些什么呢
如何計(jì)算系統(tǒng)的outstanding 和 burst length?
芯片搬磚日!け扑缽(qiáng)迫癥的關(guān)鍵詞不對(duì)齊事件
熟人社會(huì)里,一群沒(méi)有社會(huì)價(jià)值的局外人

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有賬號(hào)?立即注冊(cè)

x
回復(fù)

使用道具

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表