一文詳解時(shí)序約束是如何影響數(shù)字系統(tǒng)的
時(shí)序在數(shù)字系統(tǒng)中占有至關(guān)重要的地位,時(shí)序約束對(duì)數(shù)字系統(tǒng)的設(shè)計(jì)起著顯著的作用,定義時(shí)序約束是一個(gè)相當(dāng)復(fù)雜的過(guò)程。
FPGA(現(xiàn)場(chǎng)可編程門陣列)是一種靈活且可重構(gòu)的硬件平臺(tái),廣泛應(yīng)用于數(shù)字電路設(shè)計(jì)和加速計(jì)算領(lǐng)域。在設(shè)計(jì)復(fù)雜的數(shù)字電路時(shí),時(shí)序約束是關(guān)鍵的步驟之一,它可以確保電路在給定的時(shí)鐘頻率下正常運(yùn)行。本文將介紹時(shí)序約束的重要性,并提供一些優(yōu)化時(shí)序性能的技巧和相關(guān)的源代碼示例。
一、時(shí)序約束的重要性
時(shí)序約束是確保FPGA設(shè)計(jì)在正確的時(shí)鐘頻率下運(yùn)行的關(guān)鍵步驟。通過(guò)指定時(shí)序約束,設(shè)計(jì)人員可以告訴綜合工具和布局布線工具如何優(yōu)化電路的時(shí)序性能。如果沒(méi)有正確的時(shí)序約束,設(shè)計(jì)可能會(huì)面臨以下問(wèn)題:
時(shí)序違規(guī):當(dāng)設(shè)計(jì)的時(shí)序路徑超過(guò)FPGA的時(shí)序限制時(shí),就會(huì)發(fā)生時(shí)序違規(guī)。這可能導(dǎo)致電路功能失效或不可預(yù)測(cè)的行為。
容錯(cuò)能力下降:沒(méi)有適當(dāng)?shù)臅r(shí)序約束,電路對(duì)時(shí)鐘頻率的容錯(cuò)能力會(huì)下降,容易受到抖動(dòng)、噪聲和溫度變化等因素的干擾。
性能下降:缺乏時(shí)序約束可能會(huì)導(dǎo)致電路的性能下降,無(wú)法充分利用FPGA的資源和計(jì)算能力。
FPGA開(kāi)發(fā)過(guò)程中,離不開(kāi)時(shí)序約束,那么時(shí)序約束是什么?簡(jiǎn)單點(diǎn)說(shuō),F(xiàn)PGA芯片中的邏輯電路,從輸入到輸出所需要的時(shí)間,這個(gè)時(shí)間必須在設(shè)定的時(shí)鐘周期內(nèi)完成,更詳細(xì)一點(diǎn),即需要滿足建立和保持時(shí)間。時(shí)序約束可以讓VIvado和Quartus等FPGA開(kāi)發(fā)軟件,在布線時(shí)檢測(cè)綜合出來(lái)的邏輯電路是否滿足這個(gè)時(shí)序要求,并生成時(shí)序報(bào)告。
建立/保持時(shí)間
1、基本概念
設(shè)定時(shí)序約束的目的就是為了滿足建立時(shí)間和保持時(shí)間,所以理解“建立時(shí)間和保持時(shí)間”這兩個(gè)概念非常重要。
建立時(shí)間:在時(shí)鐘上升沿到來(lái)之前,輸入信號(hào)需要提前一個(gè)最小時(shí)間里“預(yù)先準(zhǔn)備好”,這個(gè)最小時(shí)間量就是建立時(shí)間;
保持時(shí)間:在時(shí)鐘上升沿到來(lái)之后,輸入信號(hào)必須保持一個(gè)最小時(shí)間量“不能變化”,這樣這個(gè)最小時(shí)間量就是保持時(shí)間。
一、時(shí)序分析:揭示時(shí)間之秘
時(shí)序分析,簡(jiǎn)而言之,是對(duì)系統(tǒng)中信號(hào)傳播時(shí)間的分析和評(píng)估。它主要分為靜態(tài)時(shí)序分析(STA)和動(dòng)態(tài)時(shí)序分析(DTA)兩種類型。
靜態(tài)時(shí)序分析(STA)是電子設(shè)計(jì)中最為常用的分析方法。它通過(guò)對(duì)電路中的所有時(shí)序路徑進(jìn)行遍歷,根據(jù)給定工作條件(如溫度、電壓、工藝角等)下的時(shí)序庫(kù)文件,計(jì)算信號(hào)在這些路徑上的傳播延時(shí),進(jìn)而檢查信號(hào)的建立和保持時(shí)間是否滿足設(shè)計(jì)要求。STA的核心在于其全面性和準(zhǔn)確性,能夠發(fā)現(xiàn)設(shè)計(jì)中的潛在時(shí)序問(wèn)題,為設(shè)計(jì)優(yōu)化提供有力支持。
動(dòng)態(tài)時(shí)序分析(DTA)則更加側(cè)重于對(duì)系統(tǒng)動(dòng)態(tài)行為的模擬和分析。它通過(guò)對(duì)輸入信號(hào)施加不同時(shí)刻的激勵(lì),在仿真環(huán)境中模擬系統(tǒng)的運(yùn)行過(guò)程,并對(duì)仿真結(jié)果進(jìn)行時(shí)序和功能分析。DTA雖然能夠更真實(shí)地反映系統(tǒng)的動(dòng)態(tài)特性,但由于其計(jì)算復(fù)雜度和資源消耗較大,通常用于對(duì)關(guān)鍵路徑或特定場(chǎng)景的深入分析。
二、時(shí)序約束:界定時(shí)間邊界
時(shí)序約束是指在設(shè)計(jì)和開(kāi)發(fā)硬件或軟件系統(tǒng)時(shí),對(duì)各個(gè)元件或操作之間的時(shí)間關(guān)系進(jìn)行限制和要求。它是確保系統(tǒng)在特定時(shí)間范圍內(nèi)以期望順序和時(shí)間間隔進(jìn)行操作的關(guān)鍵。
時(shí)序約束的應(yīng)用廣泛而深入,涵蓋了電子電路設(shè)計(jì)、數(shù)字系統(tǒng)設(shè)計(jì)、通信協(xié)議設(shè)計(jì)等多個(gè)領(lǐng)域。在電子電路設(shè)計(jì)中,時(shí)序約束通常包括時(shí)鐘頻率、時(shí)鐘沿、時(shí)序延遲和時(shí)序關(guān)系等方面的要求。這些約束條件共同構(gòu)成了系統(tǒng)穩(wěn)定運(yùn)行的基石,確保了信號(hào)在指定時(shí)間范圍內(nèi)準(zhǔn)確到達(dá)目標(biāo)元件,避免了因信號(hào)延遲導(dǎo)致的系統(tǒng)故障或性能下降。
三、時(shí)序收斂:邁向設(shè)計(jì)成功
時(shí)序收斂是指通過(guò)設(shè)計(jì)優(yōu)化和約束調(diào)整,使系統(tǒng)滿足時(shí)序要求的過(guò)程。它是集成電路設(shè)計(jì)過(guò)程中不可或缺的一環(huán),直接關(guān)系到設(shè)計(jì)的成功與否。
在FPGA(現(xiàn)場(chǎng)可編程邏輯門陣列)和ASIC(專用集成電路)等集成電路設(shè)計(jì)過(guò)程中,時(shí)序收斂是一個(gè)復(fù)雜而耗時(shí)的過(guò)程。設(shè)計(jì)師需要根據(jù)STA和DTA的結(jié)果,對(duì)設(shè)計(jì)進(jìn)行反復(fù)優(yōu)化和調(diào)整,以確保所有時(shí)序路徑都滿足設(shè)計(jì)要求。這包括調(diào)整時(shí)鐘頻率、優(yōu)化電路結(jié)構(gòu)、增加緩沖器等多種手段。
一、時(shí)序分析中的重要概念
在數(shù)字系統(tǒng)中有兩個(gè)非常重要的概念:建立時(shí)間和保持時(shí)間,其示意圖如圖1所示。一個(gè)數(shù)字系統(tǒng)能否正常工作跟這兩個(gè)概念密切相關(guān)。只有建立時(shí)間和保持時(shí)間都同時(shí)得到滿足時(shí),數(shù)字系統(tǒng)才能可靠的、正常的工作。

當(dāng)寄存器的建立時(shí)間或保持時(shí)間不能得到滿足時(shí),寄存器有可能會(huì)進(jìn)入亞穩(wěn)態(tài)( Metastable)。亞穩(wěn)態(tài)是一種電壓的中間態(tài),假設(shè)寄存器的輸出電壓大于3V判決為邏輯1,小于0.3V判決為邏輯0,那么電壓處于0.3V到3V之間并且能夠短時(shí)間穩(wěn)定的狀態(tài)就是亞穩(wěn)態(tài)。寄存器在進(jìn)入亞穩(wěn)態(tài)一段時(shí)間后會(huì)回復(fù)到正常的狀態(tài),但是有可能回到邏輯1的狀態(tài),也有可能回到邏輯0的狀態(tài)。這種不確定性就有可能引起數(shù)字系統(tǒng)的錯(cuò)誤。
建立時(shí)間和保持時(shí)間是一個(gè)寄存器的固有屬性,是由其內(nèi)部的結(jié)構(gòu)、工藝等因素決定的,因而在進(jìn)行數(shù)字系統(tǒng)設(shè)計(jì)時(shí)只能通過(guò)改變電路結(jié)構(gòu)使其滿足建立時(shí)間和保持時(shí)間的要求,而不能改變建立時(shí)間和保持時(shí)間的值。
二、建立時(shí)間和保持時(shí)間對(duì)電路性能的影響
首先來(lái)看一個(gè)典型的同步數(shù)字系統(tǒng)的示意圖,見(jiàn)圖2。

在圖2中,F(xiàn)F1和FF2代表兩個(gè)寄存器,在兩個(gè)寄存器中間存在組合邏輯。同步的數(shù)字系統(tǒng)正是由許多的寄存器,以及寄存器中間的組合邏輯構(gòu)成的(也包括寄存器間的直接連接)。
顯然,如果要數(shù)字系統(tǒng)正常工作,每個(gè)寄存器的建立時(shí)間和保持時(shí)間都必須得到滿足。假設(shè)時(shí)鐘信號(hào)ck到達(dá)所有寄存器的時(shí)間相同,圖3畫(huà)出了這兩個(gè)寄存器間的時(shí)序關(guān)系。

從圖中可以看到,如果要FF2的建立時(shí)間和保持時(shí)間得到滿足,必須要滿足以下公式:

其中Ts建立時(shí)間,Th為保持時(shí)間,Tclock為時(shí)鐘周期,Tclk2q為寄存器的傳輸延時(shí)(從時(shí)鐘有效沿到輸出的時(shí)間),Tdelay為兩個(gè)寄存器之間的組合邏輯延時(shí)。
從公式(1)中可以看出, 建立時(shí)間是否能得到滿足取決于3個(gè)參數(shù):時(shí)鐘周期、寄存器傳輸延時(shí)以及組合邏輯延時(shí)。其中寄存器的輸出延時(shí)是寄存器的固有屬性,不可更改,因而在設(shè)計(jì)中只能靠調(diào)節(jié)時(shí)鐘周期和組合邏輯的延時(shí)來(lái)滿足寄存器對(duì)于建立時(shí)間的要求。
從公式(2)中可以看出,保持時(shí)間能否得到滿足取決于2個(gè)參數(shù):寄存器的傳輸延時(shí)和組合邏輯的延時(shí),設(shè)計(jì)者能做的僅僅是調(diào)節(jié)組合邏輯的延時(shí)。
圖3僅僅是兩個(gè)寄存器之間的時(shí)序關(guān)系,在一個(gè)數(shù)字系統(tǒng)中往往包含有成千上萬(wàn)個(gè)寄存器,任意兩個(gè)相鄰的寄存器之間的時(shí)序關(guān)系都必須滿足公式(1)和公式(2)的約束,只有如此數(shù)字系統(tǒng)才能正常工作。在數(shù)字系統(tǒng)可以正常工作的前提下,組合邏輯的延時(shí)就決定了數(shù)字系統(tǒng)能夠工作的時(shí)鐘頻率的上限。組合邏輯的延時(shí)越短,系統(tǒng)的工作頻率的上限就越高,這里的組合邏輯的延時(shí)指的是任意兩個(gè)相鄰的寄存器之間的最長(zhǎng)的組合邏輯延時(shí),也就是關(guān)鍵路徑的延時(shí)。當(dāng)然,組合邏輯的延時(shí)也不能無(wú)限短,必須要滿足公式(2) 的要求。
三、在FPGA中對(duì)時(shí)序進(jìn)行約束
在FPGA設(shè)計(jì)中,時(shí)序約束占有重要的地位。時(shí)序約束主要有兩方面的作用:第一,EDA工具會(huì)根據(jù)設(shè)計(jì)者的約束努力嘗試布局布線,盡量滿足設(shè)計(jì)者提出的時(shí)序方面的要求;第二,在EDA工具經(jīng)過(guò)努力仍不能滿足設(shè)計(jì)者提出的時(shí)序要求時(shí)會(huì)給出警告信息,用以提示設(shè)計(jì)者。
在對(duì)設(shè)計(jì)進(jìn)行約束時(shí)要做到恰到好處,太松或者太緊的約束都不能使電路達(dá)到最好的狀態(tài)。約束過(guò)松自不必提,約束過(guò)緊之后EDA軟件經(jīng)過(guò)努力嘗試仍不能達(dá)到要求,但其不會(huì)取最接近目標(biāo)的一次,而是將最后一次作為結(jié)果,可能導(dǎo)致電路性能更加惡化。