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

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

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

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

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