一、概念 建立時(shí)間:觸發(fā)器(DFF)時(shí)鐘上升沿到來之前,數(shù)據(jù)需要保持穩(wěn)定的最小時(shí)間間隙就是建立時(shí)間。簡而言之,時(shí)鐘邊沿觸發(fā)前,要求數(shù)據(jù)必須存在一段時(shí)間, 這就是器件需要的建立時(shí)間。如不滿足建立時(shí)間,這個(gè)數(shù)據(jù)就不能被這一時(shí)鐘打入觸發(fā)器。 保持時(shí)間:觸發(fā)器(DFF)時(shí)鐘上升沿到來之后,數(shù)據(jù)需要保持穩(wěn)定的最小時(shí)間間隙就是保持時(shí)間。簡而言之,時(shí)鐘邊沿觸發(fā)后,數(shù)據(jù)也必須保持一段時(shí)間,以便能夠穩(wěn)定讀取, 這就是器件需要的建立時(shí)間。如果hold time 不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。  ?? 通過時(shí)序邏輯的Setup和Hold作約束,即可保證時(shí)鐘邊沿采集數(shù)據(jù)的穩(wěn)定狀態(tài),從而達(dá)成消除毛刺的目的。 ??我們都知道數(shù)據(jù)是在時(shí)鐘信號(hào)上升沿的那一瞬間被打進(jìn)觸發(fā)器從而被采樣的,那么我們只需要在時(shí)鐘上升沿的那一瞬間或者那一小段時(shí)間保持穩(wěn)定不就行了?理論上這么想是沒問題的,但對(duì)于實(shí)際工程來講,這是幾乎不可能達(dá)到的。 ??要分析這個(gè)問題,我們不妨先看一下D觸發(fā)器里面到底長啥樣,下圖是經(jīng)典上升沿D觸發(fā)器的內(nèi)部結(jié)構(gòu)圖:  ??與非門G1到G4是維持阻塞電路,G5和G6構(gòu)成一個(gè)RS觸發(fā)器用于數(shù)據(jù)的鎖存。如有不明白R(shí)S觸發(fā)器的真值表和工作機(jī)理的可以在網(wǎng)上找到資料,這里不再累述。 ??圖中可以看到,時(shí)鐘信號(hào)直接作用在了G2和G3上面,也就意味著G2和G3是真正的采樣傳輸門電路,輸入信號(hào)應(yīng)該要正確的被G2和G3采樣后傳輸至后面的RS觸發(fā)器。我們注意到,數(shù)據(jù)在傳輸?shù)紾3之前經(jīng)過了G4,傳輸至G2之前經(jīng)過了G4和G1。我們知道,實(shí)際情況中信號(hào)經(jīng)過門電路是有延遲的。所以輸入信號(hào)在到達(dá)G2和G3之前經(jīng)過了G1和G4的延遲,因此就引入了建立時(shí)間的概念:建立時(shí)間就是為了補(bǔ)償信號(hào)在G1和G4上的延遲。也就是數(shù)據(jù)在時(shí)鐘沿來臨之前,需要足夠的建立時(shí)間讓信號(hào)經(jīng)過G1和G4到達(dá)G2和G3。觸發(fā)器的建立時(shí)間主要取決于G1和G4. ??那么保持時(shí)間呢?一樣的,上升沿來臨時(shí),數(shù)據(jù)通過G2和G3傳輸至后面的RS觸發(fā)器,但G2和G3也會(huì)存在延時(shí)。因此又引入了保持時(shí)間的概念:保持時(shí)間就是為了補(bǔ)償信號(hào)在G2和G3上的延遲。也就是數(shù)據(jù)在時(shí)鐘沿來臨之后,需要足夠的保持時(shí)間讓信號(hào)正確的從G2和G3傳輸至RS觸發(fā)器。觸發(fā)器的保持時(shí)間主要取決于G1到G4,進(jìn)而可以推斷出,一般D觸發(fā)器的保持時(shí)間比建立時(shí)間要長。 ??建立時(shí)間和保持時(shí)間存在的意義就是為了使數(shù)據(jù)隨時(shí)鐘信號(hào)被準(zhǔn)確采樣。如果不滿足建立時(shí)間和保持時(shí)間會(huì)怎樣?很簡單,因?yàn)樵趥鬏數(shù)倪^程中數(shù)據(jù)并不是處于穩(wěn)定狀態(tài)而處于亞穩(wěn)態(tài)區(qū)(metastability ),則會(huì)導(dǎo)致采樣的數(shù)據(jù)可能會(huì)出錯(cuò)。 時(shí)鐘偏移 (clock skew):由于路徑延遲,同一個(gè)時(shí)鐘信號(hào)到達(dá)兩個(gè)不同的寄存器之間的時(shí)間差值,根據(jù)差值可以分為正偏移和負(fù)偏移。  時(shí)間裕量(setup/hold slack):如果數(shù)據(jù)信號(hào)在時(shí)鐘沿觸發(fā)前后持續(xù)的時(shí)間均超過建立和保持時(shí)間,那么超過量就分別被稱為建立時(shí)間裕量和保持時(shí)間裕量。 最大時(shí)鐘頻率fmax:fmax = 1/Tmin ?? Tmin—— 最小時(shí)鐘周期 ?? 電路正常工作時(shí),所允許的系統(tǒng)時(shí)鐘脈沖頻率最大值。下面會(huì)給出最大始終頻率計(jì)算方法。 時(shí)鐘抖動(dòng)(clock jitter):指的是時(shí)鐘周期的變化。指兩個(gè)時(shí)鐘周期之間存在的差值,這個(gè)誤差是在時(shí)鐘發(fā)生器內(nèi)部產(chǎn)生的,和晶振或者PLL內(nèi)部電路有關(guān),布線對(duì)其沒有影響。由于跟晶振本身的工藝有關(guān),所以在設(shè)計(jì)中無法避免它能帶來的影響,通產(chǎn)只能在設(shè)計(jì)中留有一定的margin。 ??分析Setup需要分析數(shù)據(jù)路徑和時(shí)鐘路徑,下面結(jié)合一個(gè)比較經(jīng)典的模型來看看我們?cè)谶M(jìn)行電路設(shè)計(jì)的時(shí)候要如何去滿足建立時(shí)間和保持時(shí)間。  ??圖中,Tcomb表示兩個(gè)觸發(fā)器之間組合邏輯電路延時(shí)(可變,可通過電路優(yōu)化);Tskew1,Tskew2分別為CLK1處相和CLK2處對(duì)于原始CLK的時(shí)鐘偏移,clock skew主要是由于時(shí)鐘線存在長度而導(dǎo)致的時(shí)鐘偏移;Tco表示數(shù)據(jù)從輸入端到輸出端的最小時(shí)間間隔(屬于器件延時(shí));兩個(gè)D觸發(fā)器均為上升沿觸發(fā)。 ??假設(shè)D觸發(fā)器的建立時(shí)間為Tsetup,保持時(shí)間為Thold,則存在如下關(guān)系式: ?????? Tsetup < = Tclk+Tskew-Tco-Tcomb (1) ?????? Thold < = Tco+Tcomb-Tskew (2) 其中: ??Tclk : 時(shí)鐘周期 ??Tskew : Tclk2相對(duì)于Tclk1時(shí)鐘線上的延時(shí),Tskew=Tskew2-Tskew1 ??Tco: DFF1觸發(fā)器從D端到Q端的時(shí)延 ??Tcomb : 數(shù)據(jù)信號(hào)經(jīng)過組合邏輯電路的延時(shí)(例如緩沖器) 下圖是這個(gè)模型的時(shí)序圖,結(jié)合圖四我們可以推導(dǎo)出這兩個(gè)約束關(guān)系式。  建立時(shí)間約束: ??(1)式的思想其實(shí)就是 在第二個(gè)時(shí)鐘沿(數(shù)據(jù)采樣邊沿)來臨之前,數(shù)據(jù)穩(wěn)定的時(shí)間一定要大于等于建立時(shí)間。因此在一個(gè)時(shí)鐘周期內(nèi),數(shù)據(jù)穩(wěn)定的時(shí)間為Tclk-Tco-Tcomb,因?yàn)闀r(shí)鐘也存在偏移,因此要把這個(gè)時(shí)鐘偏移加上,于是最后數(shù)據(jù)穩(wěn)定的時(shí)間為Tclk+Tskew-Tdq-Tcomb,滿足這個(gè)穩(wěn)定時(shí)間大于建立時(shí)間即可。 ??理論上能夠承載的最大時(shí)鐘頻率為:f_max = 1/(Tsetup+Tco+Tcomb-Tskew) 保持時(shí)間約束: ??(2)式的思想為 在第二個(gè)時(shí)鐘沿(數(shù)據(jù)采樣邊沿)來臨之后,數(shù)據(jù)穩(wěn)定的時(shí)間一定要大于等于保持時(shí)間。因此在時(shí)鐘沿來臨之后,數(shù)據(jù)穩(wěn)定的時(shí)間為Tco+Tcomb,再減去時(shí)鐘偏移則為Tco+Tcomb-Tskew,滿足這個(gè)穩(wěn)定時(shí)間大于等于保持時(shí)間即可。 ??為什么計(jì)算的時(shí)候要取第二個(gè)時(shí)鐘沿時(shí)刻來計(jì)算這些關(guān)系式,為什么不能取第一個(gè)是時(shí)鐘沿呢?這是由于在第一個(gè)時(shí)鐘上升沿通常是采集不到數(shù)據(jù)的,在Tclk1與Tclk2之間的時(shí)鐘偏移Tskew通常可以通過做時(shí)鐘樹將其控制的很小,一般在ps級(jí)別,而在有效數(shù)據(jù)通過數(shù)據(jù)路徑傳輸?shù)紻2時(shí),還要經(jīng)歷器件延時(shí)、組合邏輯延時(shí)和線延時(shí)等過程,而在這個(gè)過程中Tclk2的第一個(gè)時(shí)鐘邊沿早已過去,因此只能在下一個(gè)時(shí)鐘邊沿采集數(shù)據(jù)。 如果setup time violation或者h(yuǎn)old timeviolation應(yīng)該怎么辦? Setup time violation solution:調(diào)整上述公式中的變量:Tclk, Tcomb,Tskew ? - 增大Tclk ????就是降低數(shù)字系統(tǒng)的工作頻率 (很多產(chǎn)品等級(jí),是根據(jù)頻率來分的;品質(zhì)好的芯片,頻率高,價(jià)格貴) ?-減少Tcomb: ????從數(shù)字電路邏輯功能設(shè)計(jì)的角度看 ??????在組合電路之間插入寄存器,增加流水線(pipeline); ??????在不改變邏輯功能的前提下,對(duì)組合邏輯電路進(jìn)行優(yōu)化; ??????減少扇出或者負(fù)載; ????從數(shù)字物理版圖實(shí)現(xiàn)的角度看 ??????更換速度更快的標(biāo)準(zhǔn)單元(HVT – High Voltage Threshold, SVT – Standard Voltage Threshold) ??????更換驅(qū)動(dòng)能力更強(qiáng)的標(biāo)準(zhǔn)單元(X2, X4) ??????跟換阻值更低的金屬層以減少標(biāo)準(zhǔn)單元電路的負(fù)載和金屬線網(wǎng)的延遲 ?-增加Tskew ????在時(shí)鐘路徑上,插入buffer,增加時(shí)鐘路徑的延遲,但是不能影響hold timing。 hold time violation solution: ??-增大Tcomb ????在組合電路的數(shù)據(jù)傳輸路徑上,插入延遲單元(buffer),增加組合邏輯延遲;但是當(dāng)組合邏輯延時(shí)增加時(shí),setup time可能會(huì)出現(xiàn)違例。這時(shí)候就需要做平衡(balance)。由此可以看出setup和hold time是相互制約的。 ??-減小Tskew ????時(shí)鐘樹調(diào)整,做好clock tree balance,hold就容易收斂。因?yàn)閔old time與時(shí)鐘周期沒有關(guān)系
三、擴(kuò)展等式關(guān)系引入時(shí)間裕量,建立等式關(guān)系: ?????? Tsetup slack= Tclk+Tskew-Tsetup-Tco-Tcomb-Tnet ?? (1) ?????? Thold slack = Tco+Tcomb+Tnet-Thold-Tskew ?? ?? (2) 其中: ??Tnet為走線的延時(shí); ??Tsetup slack為建立時(shí)間裕量; ??Thold slack為保持時(shí)間裕量 對(duì)于有意義的時(shí)序約束,建立時(shí)間余量Tslack,setup和保持時(shí)間余量Tslack,hold都要大于0才行。故原有公式轉(zhuǎn)化如下: ??????Tclk > Tco+Tcomp+Tnet+Tsetup-Tskew ?? (1) ??????Tco+Tcomp+Tnet > Thold+Tskew ????? (2) 為了得到更加簡單的理解,我們按照常規(guī),忽略Tnet和Tskew。原因在于Tnet,Tskew通常太小。 ??????Tclk > Tco+Tcomp+Tsetup ??(3) ??????Tco+Tcomp > Thold ????(4) (3)式表明,數(shù)據(jù)從第一個(gè)觸發(fā)器采樣時(shí)刻傳到第二個(gè)觸發(fā)器采樣時(shí)刻,不能超過一個(gè)時(shí)鐘周期!假如數(shù)據(jù)傳輸超過一個(gè)時(shí)鐘周期,那么就會(huì)導(dǎo)致第二個(gè)觸發(fā)器開始采樣的時(shí)候,想要的數(shù)據(jù)還沒有傳過來。 對(duì)于(4)式兩邊同時(shí)加上Tsetup,得到(5): ??????Tco+Tcomp+Tsetup > Thold+Tsetup ?? (5) 結(jié)合(3)式和(5)式,我們得到如下的式子: ??????Thold+Tsetup < Tco+Tcomp+Tsetup < Tclk ?? (6) Tco+Tcomp+Tsetup是指數(shù)據(jù)從第一級(jí)觸發(fā)器采樣瞬間開始,傳輸?shù)降诙?jí)觸發(fā)器并被采樣的傳輸延時(shí)。我們簡稱為數(shù)據(jù)傳輸延時(shí)。 (6)式右側(cè)Tco+Tcomp+Tsetup< Tclk表明 :約定數(shù)據(jù)傳輸延時(shí)不能太大,如果太大(超過一個(gè)時(shí)鐘周期),那么第二級(jí)觸發(fā)器就會(huì)在采樣的時(shí)刻發(fā)現(xiàn)數(shù)據(jù)還沒有到來。 (6)式左側(cè)Thold+Tsetup <Tco+Tcomp+Tsetup表明:約定數(shù)據(jù)傳輸延時(shí)不能太小。Thold+Tsetup的時(shí)間寬度叫做觸發(fā)器的采樣窗口,在窗口期內(nèi),D觸發(fā)器是脆弱的,對(duì)毛刺沒有免疫力的。假如數(shù)據(jù)傳輸延時(shí)特別小,那么就會(huì)發(fā)現(xiàn),當(dāng)?shù)诙?jí)觸發(fā)器開始采樣的時(shí)候,第一級(jí)觸發(fā)器的窗口期還沒有結(jié)束!也就是說,如果這個(gè)時(shí)候輸入端數(shù)據(jù)有變化,那么不僅第一級(jí)觸發(fā)器處于亞穩(wěn)態(tài),第二級(jí)觸發(fā)器也將處于亞穩(wěn)態(tài)! 綜上,可以知道,數(shù)據(jù)傳輸延時(shí)既不能太大以至于超過一個(gè)時(shí)鐘周期,也不能太小以至于小于觸發(fā)器采樣窗口的寬度。這就是靜態(tài)時(shí)序分析的內(nèi)涵。 參考:https://www.sohu.com/a/339791710_505888 http://blog.sina.com.cn/s/blog_78e87ba10102x14t.html https://blog.csdn.net/dongdongnihao_/article/details/80951413
|