加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一、概述
    • 二、 應用背景
    • 三、理論分析
    • 四、應用分析
  • 推薦器件
  • 相關推薦
  • 電子產業(yè)圖譜
申請入駐 產業(yè)圖譜

FPGA STA(靜態(tài)時序分析)

04/30 13:44
2703
閱讀需 27 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大俠好,歡迎來到FPGA技術江湖,江湖偌大,相見即是緣分。大俠可以關注FPGA技術江湖,在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源,或者一起煮酒言歡。

今天給大俠帶來FPGA STA(靜態(tài)時序分析),話不多說,上貨。

一、概述

1.1? 概述

在快速系統(tǒng)中FPGA時序約束不止包含內部時鐘約束,還應包含完整的IO時序約束和時序例外約束才能實現(xiàn)PCB板級的時序收斂。因此。FPGA時序約束中IO口時序約束也是一個重點。僅僅有約束正確才能在快速情況下保證FPGA和外部器件通信正確。

1.2? FPGA總體概念

因為IO口時序約束分析是針對于電路板整個系統(tǒng)進行時序分析,所以FPGA需要作為一個總體分析,當中包含F(xiàn)PGA的建立時間、保持時間以及傳輸延時。傳統(tǒng)的建立時間、保持時間以及傳輸延時都是針對寄存器形式的分析。針對整個系統(tǒng)FPGA的建立時間保持時間能夠簡化。下圖為FPGA總體時序圖

如圖上圖所示,分解的FPGA內部寄存器的性能參數(shù):

(1) Tdin為從FPGA的IO口到FPGA內部寄存器輸入端的延時;

(2) Tclk為從FPGA的IO口到FPGA內部寄存器時鐘端的延時;

(3) Tus/Th為FPGA內部寄存器的建立時間和保持時間;

(4) Tco為FPGA內部寄存器傳輸時間;

(5) Tout為從FPGA寄存器輸出到IO口輸出的延時。

對于整個FPGA系統(tǒng)分析,能夠又一次定義這些參數(shù):FPGA建立時間能夠定義為:

(1) FPGA建立時間:FTsu = Tdin + Tsu – Tclk;

(2) FPGA保持時間:FTh = Th + Tclk。

(3) FPGA傳輸數(shù)據(jù)時間:FTco = Tclk + Tco + Tout;

由上分析當FPGA成為一個系統(tǒng)后就可以進行IO時序分析了。FPGA模型變?yōu)槿缦聢D所示,為FPGA系統(tǒng)參數(shù):

1.3?輸入最大最小延時

外部器件發(fā)送數(shù)據(jù)到FPGA系統(tǒng)模型如圖1.3所看到的。

對FPGA的IO口進行輸入最大最小延時約束是為了讓FPGA設計工具可以盡可能的優(yōu)化從輸入port到第一級寄存器之間的路徑延遲,使其可以保證系統(tǒng)時鐘可靠的採到從外部芯片到FPGA的信號。下圖為FPGA數(shù)據(jù)輸入模型:

輸入延時即為從外部器件發(fā)出數(shù)據(jù)到FPGA輸入port的延時時間。

當中包含時鐘源到FPGA延時和到外部器件延時之差、經過外部器件的數(shù)據(jù)發(fā)送Tco。再加上PCB板上的走線延時。如圖1.4所看到的,為外部器件和FPGA接口時序。下圖為外部器件和FPGA接口時序:

(1). 最大輸入延時

最大輸入延時(input delay max)為當從數(shù)據(jù)發(fā)送時鐘沿(lanuch edge)經過最大外部器件時鐘偏斜(Tclk1),最大的器件數(shù)據(jù)輸出延時(Tco),再加上最大的PCB走線延時(Tpcb)。減去最小的FPGA時鐘偏移(FTsu)的情況下還能保證時序滿足的延時。這樣才能保證FPGA的建立時間,準確采集到本次數(shù)據(jù)值,即為setup slack必須為正。如圖1.1的所看到的。計算公式如下所示:

Setup slack =(Tclk + Tclk2(min))–(Tclk1(max)?+Tco(max)?+Tpcb(max)?+FTsu)≥0

推出以下公式:

Tclk1(max)?+ Tco(max)?+ Tpcb(max)?–Tclk2(min)?≤ Tclk + FTsu

由Altera官方數(shù)據(jù)手冊得知:

input delay max = Board Delay?(max)?– Board clock skew?(min)?+ Tco(max)

結合本系統(tǒng)參數(shù)公式為:

input delay max = Tpcb(max)?– (Tclk2(min)–Tclk1(max)) + Tco(max)

(2).?最小輸入延時

最小輸入延時(input delay min)為當從數(shù)據(jù)發(fā)送時鐘沿(lanuch edge)經過最小外部器件時鐘偏斜(Tclk1),最小器件數(shù)據(jù)輸出延時(Tco),再加上最小PCB走線延時(Tpcb),此時的時間總延時值一定要大于FPGA的最大時鐘延時和建立時間之和。這樣才能不破壞FPGA上一次數(shù)據(jù)的保持時間。即為hold slack必須為正,如圖1.1的所看到的,計算公式例如以下式所看到的:

Hold slack=(Tclk1(min)?+ Tco(min)?+ Tpcb(min))–(FTh + Tclk2(max))≥ 0

推出例如以下公式:

Tclk1(min)+Tco(min)+Tpcb(min)–Tclk2(max)?≥ FTh

由Altera官方數(shù)據(jù)手冊得知:

input delay max = Board Delay?(min)?- Board clock skew?(min)?+ Tco(min)

結合本系統(tǒng)參數(shù)公式為

input delay max=Tpcb(min)?– (Tclk2(max)–Tclk1(min)) + Tco(min)

進行輸入最大最小延時的計算,我們需要估算4個值:

    外部器件輸出數(shù)據(jù)通過PCB板到達FPGAport的最大值和最小值Tpcb,PCB延時經驗值為600mil/ns。1mm = 39.37mil;外部器件接收到時鐘信號后輸出數(shù)據(jù)延時的最大值和最小值Tco。時鐘源到達外部器件的最大、最小時鐘偏斜Tclk1;時鐘源到達FPGA的最大、最小時鐘偏斜Tclk2;

當外部器件時鐘為FPGA提供的時候。Tclk1和Tclk2即合成Tshew,如圖下圖所示,為FPGA輸出時鐘模型:

1.4? 輸出最大最小延時

FPGA輸出數(shù)據(jù)給外部器件模型如下圖所示。對FPGA的IO口進行輸出最大最小延時約束是為了讓FPGA設計工具可以盡可能的優(yōu)化從第一級寄存器到輸出port之間的路徑延遲。使其可以保證讓外部器件能準確的採集到FPGA的輸出數(shù)據(jù)。下圖為FPGA輸出延時模型:

輸出延時即為從FPGA輸出數(shù)據(jù)后到達外部器件的延時時間。

當中包含時鐘源到FPGA延時和到外部器件延時之差、PCB板上的走線延時以及外部器件的數(shù)據(jù)建立和保持時間。如圖所看到的,為FPGA和外部器件接口時序圖。下圖為FPGA輸出延時:

(1). 最大輸出延時

由Altera官方數(shù)據(jù)手冊得知:

Output delay max = Board Delay (max) – Board clock skew (min) + Tsu

由公式得知。最大輸出延時(output delay max)為當從FPGA數(shù)據(jù)發(fā)出后經過最大的PCB延時、最小的FPGA和器件時鐘偏斜,再加上外部器件的建立時間。約束最大輸出延時,是為了約束IO口輸出,從而使外部器件的數(shù)據(jù)建立時間。即為setup slack必須為正,計算公式例如以下式所看到的:

Setup slack =(Tclk + Tclk2(min))–(Tclk1(max)?+FTco(max)?+Tpcb(max)?+Tsu)≥0

推導出例如以下公式:

FTco(max)?+ Tpcb(max)?–(Tclk2(min)?– Tclk1(max))+Tsu ≤Tclk

再次推導,得到例如以下公式:

FTco(max)?+ Output delay max ≤Tclk

由此可見,約束輸出最大延時。即為通知編譯器FPGA的FTco最大值為多少。依據(jù)這個值做出正確的綜合結果。

(2).?輸出最小延時

由Altera官方數(shù)據(jù)手冊得知:

Output delay min = Board Delay (min) – Board clock skew (max) –Th

由公式得知,最小輸出延時(output delay min)為當從FPGA數(shù)據(jù)發(fā)出后經過最小的PCB延時、最大的FPGA和器件時鐘偏斜,再減去外部器件的建立時間。約束最小輸出延時,是為了約束IO口輸出。從而使IO口輸出有個最小延時值,防止輸出過快,破壞了外部器件上一個時鐘的數(shù)據(jù)保持時間。導致hlod slack為負值。不能正確的鎖存到數(shù)據(jù)。最小輸出延時的推導計算公式例如以下式所看到的:

Hold slack = (Tclk1(min)?+ FTco(min)?+ Tpcb(min))–(Th + Tclk2(max))≥ 0

推導出例如以下公式:

FTco(min)?+ Tpcb(min)?– (Tclk2(max)?– Tclk1(min))– Th ≥ 0

再次推導,得出例如以下公式:

FTco(min)?+ Output delay min ≥ 0

由公式得知,約束輸出最大延時,即為通知編譯器FPGA的FTco最小值為多少。依據(jù)這個值做出正確的綜合結果。

由公式得知,進行輸出最大最小延時的計算,我們需要估算4個值:

    FPGA輸出數(shù)據(jù)通過PCB板到達外部器件輸入port的最大值和最小值Tpcb,PCB延時經驗值為600mil/ns,1mm = 39.37mil。時鐘源到達外部器件的最大、最小時鐘偏斜Tclk2;時鐘源到達FPGA的最大、最小時鐘偏斜Tclk1;外部器件的建立時間Tsu和保持時間Th;

當外部器件時鐘為FPGA提供的時候,Tclk1和Tclk2即合成Tshew。如下圖所示,為FPGA提供時鐘模型:

1.5 使用范圍

通過作者使用總結情況,IO口時序約束主要使用在下面情況:

1.?數(shù)據(jù)交換頻率較高

因為IO時序約束一般計算值都是在幾納秒。當FPGA和外部數(shù)據(jù)交換頻率較低,如FPGA操作640*480的TFT液晶進行刷屏,傳輸數(shù)據(jù)頻率只24Mhz,一個數(shù)據(jù)時鐘都有41.666ns,全然不用約束都能滿足時序要求。

可是當操作SDRAM執(zhí)行到120M時候,因為一個數(shù)據(jù)變換周期才8ns。因此IO口的少量延時都會影響到SDRAM數(shù)據(jù)。因此這樣的情況下需要對輸入輸出進行完整的IO口時序約束。而且分析正確,才干消除傳輸數(shù)據(jù)不穩(wěn)定過的情況。

2.代碼已經比較優(yōu)化

當數(shù)據(jù)交換頻率較高,可是時序約束還是不滿足時序要求的時候。我們都需要對代碼進行分析,好的時序都是設計出來的,不是約束出來的。如程序清單 1.1所看到的。首先hcount_r 和vcount_r 都為10位計數(shù)器,這種代碼TFT的三色輸出的port就會有非常大的延時。由于dat_act的膠合邏輯太多。輸出路徑太長導致。

這種情況下應該不是首先做時序約束,應該改動代碼,盡量做到寄存器直接輸出。僅僅有當代碼比較優(yōu)化的情況,再做時序約束這樣才干得到較好的結果。

演示樣例程序如下:

assign dat_act  =    ((hcount_r >= hdat_begin) && (hcount_r < hdat_end))                           ?&&?((vcount_r?>=?vdat_begin)?&&?(vcount_r?<?vdat_end));assign tft_r    =    (dat_act) ? {rgb16_dat[15:11], 3'b111} : 8'h00;assign tft_g    =    (dat_act) ? {rgb16_dat[10:5],  3'b111} : 8'h00;  assign tft_b    =    (dat_act) ? {rgb16_dat[4:0],   3'b111} : 8'h00;

1.6? 總結

本篇主要是對FPGA的IO口時序約束進行對應的分析,并未做實際的使用分析,興許以后將會結合軟件,以及實際案例對IO口時序約束進行具體的使用介紹。最后附上一個Altera官方的IO時序約束分析樣例。如圖下圖所示,為Altera官方例程:

FPGA設計過程中所遇到的路徑有輸入到觸發(fā)器,觸發(fā)器到觸發(fā)器,觸發(fā)器到輸出,例如下圖所示,下圖就是典型的同步時序路徑:

二、 應用背景

靜態(tài)時序分析簡稱STA,它是一種窮盡的分析方法。它依照同步電路設計的要求。依據(jù)電路網(wǎng)表的拓撲結構,計算并檢查電路中每個DFF(觸發(fā)器)的建立和保持時間以及其它基于路徑的時延要求是否滿足。

STA作為FPGA設計的主要驗證手段之中的一個,不需要設計者編寫測試向量,由軟件自己主動完畢分析,驗證時間大大縮短,測試覆蓋率可達100%。

靜態(tài)時序分析的前提就是設計者先提出要求,然后時序分析工具才會依據(jù)特定的時序模型進行分析,給出正確是時序報告。

進行靜態(tài)時序分析。主要目的就是為了提高系統(tǒng)工作主頻以及添加系統(tǒng)的穩(wěn)定性。

對非常多數(shù)字電路設計來說,提高工作頻率非常重要,由于高工作頻率意味著高處理能力。通過附加約束能夠控制邏輯的綜合、映射、布局和布線,以減小邏輯和布線延時。從而提高工作頻率。

三、理論分析

1. 靜態(tài)時序分析的理論基礎知識

在進行正確的時序分析前。我們必須具備主要的靜態(tài)時序的基本知識點,不然看著編譯器給出的時序分析報告宛如天書。如圖所示,為libero軟件給出的寄存器到寄存器模型的時序分析報告的截取,接下來我們會弄清楚每一個欄目的數(shù)據(jù)變量的含義以及計算方法。

下圖為libero靜態(tài)時序分析報告:

1.1 固定參數(shù) launch edge、latch edge、Tsu、Th、Tco概念

(1). launch edge

時序分析起點(launch edge):第一級寄存器數(shù)據(jù)變化的時鐘邊沿,也是靜態(tài)時序分析的起點。

(2). latch edge

時序分析終點(latch edge):數(shù)據(jù)鎖存的時鐘邊沿,也是靜態(tài)時序分析的終點。

(3). Clock Setup Time (Tsu)

建立時間(Tsu):是指在時鐘沿到來之前數(shù)據(jù)從不穩(wěn)定到穩(wěn)定所需的時間,假設建立的時間不滿足要求那么數(shù)據(jù)將不能在這個時鐘上升沿被穩(wěn)定的打入觸發(fā)器。如 下圖所示,下圖為建立時間圖解:

(4). Clock Hold Time (Th)

保持時間(Th):是指數(shù)據(jù)穩(wěn)定后保持的時間。假設保持時間不滿足要求那么數(shù)據(jù)相同也不能被穩(wěn)定的打入觸發(fā)器。保持時間示意圖如下圖所示,下圖為保持時間圖解:

(5). Clock-to-Output Delay(tco)

數(shù)據(jù)輸出延時(Tco):這個時間指的是當時鐘有效沿變化后,數(shù)據(jù)從輸入端到輸出端的最小時間間隔。

1.2?Clock skew

時鐘偏斜(clock skew):是指一個時鐘源到達兩個不同寄存器時鐘端的時間偏移。如下圖所示,下圖為時鐘偏斜:

時鐘偏斜計算公式如下:Tskew = Tclk2 -Tclk1

1.3?Data Arrival Time

數(shù)據(jù)到達時間(Data Arrival Time):輸入數(shù)據(jù)在有效時鐘沿后到達所需要的時間。主要分為三部分:時鐘到達寄存器時間(Tclk1),寄存器輸出延時(Tco)和傳輸數(shù)據(jù)延時(Tdata),如下圖所示,為數(shù)據(jù)到達的時間:

數(shù)據(jù)到達時間計算公式如下:Data Arrival Time = Launch edge?+ Tclk1 +Tco + Tdata

1.4?Clock Arrival Time

時鐘到達時間(Clock Arrival Time):時鐘從latch邊沿到達鎖存寄存器時鐘輸入端所消耗的時間為時鐘到達時間,如下圖所示,為時鐘到達時間:

時鐘到達時間計算公式如下:Clock Arrival Time = Lacth edge + Tclk2

1.5?Data Required Time(setup/hold)

數(shù)據(jù)需求時間(Data Required Time):在時鐘鎖存的建立時間和保持時間之間數(shù)據(jù)必須穩(wěn)定,從源時鐘起點達到這樣的穩(wěn)定狀態(tài)需要的時間即為數(shù)據(jù)需求時間。如下圖所示,為數(shù)據(jù)需求時間:

(建立)數(shù)據(jù)需求時間計算公式例如以下:Data Required Time = Clock Arrival Time - Tsu

(保持)數(shù)據(jù)需求時間計算公式例如以下:Data Required Time = Clock Arrival Time?+ Th

1.6 Setup slack

建立時間余量(setup slack):當數(shù)據(jù)需求時間大于數(shù)據(jù)到達時間時,就說時間有余量,Slack是表示設計是否滿足時序的一個稱謂。下圖為建立時間余量:

建立時間余量的計算公式例如以下:Setup slack = Data Required Time - Data Arrival Time

由公式可知。正的slack表示數(shù)據(jù)需求時間大于數(shù)據(jù)到達時間,滿足時序(時序的余量)。負的slack表示數(shù)據(jù)需求時間小于數(shù)據(jù)到達時間,不滿足時序(時序的欠缺量)。

1.7 時鐘最小周期

時鐘最小周期:系統(tǒng)時鐘能執(zhí)行的最高頻率。

    當數(shù)據(jù)需求時間大于數(shù)據(jù)到達時間時,時鐘具有余量;當數(shù)據(jù)需求時間小于數(shù)據(jù)到達時間時,不滿足時序要求,寄存器經歷亞穩(wěn)態(tài)或者不能正確獲得數(shù)據(jù)。當數(shù)據(jù)需求時間等于數(shù)據(jù)到達時間時。這是最小時鐘執(zhí)行頻率。剛好滿足時序。

從以上三點能夠得出最小時鐘周期為數(shù)據(jù)到達時間等于數(shù)據(jù)需求時間的運算公式如下:Data Required Time?= Data Arrival Time

由上式推出如下公式:

Tmin + Latch edge + Tclk2 - Tsu = Launch edge + Tclk1 + Tco + Tdata

最后推出最小時鐘周期為:

Tmin = Tco + Tdata + Tsu - Tskew

四、應用分析

1. 設置時鐘主頻約束

全部的靜態(tài)時序分析都是在有約束的情況下編譯器才給出分析報告,所以進行時序分析的第一步就是設置約束。

Libero軟件設置時鐘約束的途徑三種,單時鐘約束,多時鐘約束和在Designer里面進行約束。

1.1 單時鐘約束

有時我們系統(tǒng)全部模塊都採用同一個時鐘,這樣的方式最為簡單,直接在Synplify主界面上有個設置時鐘約束的。如下圖紅框所看到的,下圖為單時鐘設置:

設置完畢后,編譯。通過Synplify時鐘報告看初步時鐘執(zhí)行頻率是否能達到要求,時鐘報告如圖4.2所看到的,設定100Mhz,能執(zhí)行102.7Mhz。滿足時序。下圖為時序報告:

1.2?時鐘約束

當系統(tǒng)內部模塊採用了多個時鐘時。那就需要進行多時鐘約束了。

首先需要打開設置界面。在Synplify中選擇:File->New->Constraint File建立SDC文件,選擇時鐘約束如下圖所示,為多時鐘約束:

對時鐘進行例如以下約束后保存SDC文件,約束如下圖所示,為多時鐘約束完畢:

1.2?Designer SmartTime時鐘約束

時鐘約束除了在Synplify中能夠約束外。還能夠在Designer SmartTime中設置時鐘約束,打開Designer Constraint,選擇Clock進行針對每一個使用時鐘的設置,如下圖所示,為Designer時序約束:

1.3?時序報告分析

(1)Synplify時序報告

當約束了時序后,需要觀察時序報告,看時鐘是否能達到我們需要的時鐘,首先觀察Synplify綜合報告。以多時鐘約束為樣例,從Synplify得到的時序報告如下圖所示,為多時鐘約束時序報告:

由上圖可知時序都滿足約束,未出現(xiàn)違規(guī)。能夠在以下的報告中查看最差路徑,如圖4.7所看到的是clk2的最差路徑。下圖為最差路徑:

(2)Designer SmartTime時序分析報告

當設計經過Synplify綜合給出網(wǎng)表文件后,還須要Designer進行布局布線,通過布局布線優(yōu)化后的時序會有變化,因此,還須要分析布局布線后的時序,打開Designer->Timing Analyzer查閱總體時序分析報告如下圖所示,為布局布線后時序報告:

由Synplify綜合后的報告和Designer進行布局布線后的報告能夠看出。布局布線后優(yōu)化了一些時序。特別是clk2時鐘,通過布局布線后優(yōu)化到了184Mhz,全然滿足時序。

(3)具體時序報告圖

通過Synplify綜合后的和Designer進行布局布線都僅僅是看到了一個大體的時序報告。當我們需要分析時序時候必須觀察細致的時序報告,在SmartTime中提供這樣的報告功能,以clk2分析為例,在Timing Analyzer找到例如以下區(qū)域,下圖為?時序報告選擇。

如上圖所示,選擇寄存器到寄存器進行分析時鐘主頻。寄存器到寄存器分析。

如上圖所示,時序報告中給出了數(shù)據(jù)延時。時序余量,數(shù)據(jù)到達時間,數(shù)據(jù)需求時間。數(shù)據(jù)建立時間,以及最小周期和時鐘偏斜等信息,有了上一節(jié)的時序分析基礎知識,我們全然能看懂這些數(shù)據(jù)代表的意義。這樣對我們時序分析就知己知彼,進一步雙擊當中一條路徑,還會給出這條路徑的硬件電路圖,如下圖硬件電路圖所示。有了這些具體的時序報告。對設計進行調整更加清晰。

 

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
XC6SLX45-2CSG324I 1 AMD Xilinx Field Programmable Gate Array, 3411 CLBs, 667MHz, 43661-Cell, CMOS, PBGA324, 15 X 15 MM, 0.80 MM PITCH, LEAD FREE, BGA-324
$65.17 查看
EPM2210F256A5N 1 Intel Corporation Flash PLD, 11.2ns, 1700-Cell, CMOS, PBGA256, 17 X 17 MM, 1 MM PITCH, LEAD FREE, FBGA-256
$116.24 查看
EPM1270T144A5N 1 Altera Corporation Flash PLD, 10ns, 980-Cell, CMOS, PQFP144, 22 X 22 MM, 0.50 MM PITCH, LEAD FREE, TQFP-144
$461.92 查看

相關推薦

電子產業(yè)圖譜

任何技術的學習就好比一個江湖,對于每一位俠客都需要不斷的歷練,從初入江湖的小白到歸隱山林的隱世高人,需要不斷的自我感悟自己修煉,讓我們一起仗劍闖FPGA乃至更大的江湖。