在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

時序分析的基本步驟

FPGA設(shè)計論壇 ? 來源:FPGA設(shè)計論壇 ? 作者:FPGA設(shè)計論壇 ? 2022-03-30 11:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

時序分析的基本步驟:

一個合理的時序約束可以分為以下步驟:

bf9080b4-af4b-11ec-aa7f-dac502259ad0.png

時序約束整體的思路與之前我說的方法基本一致。整體的思路如下:

先是約束時鐘,讓軟件先解決內(nèi)部時序問題;(在這一步驟中可以適當加入時序例外,以便時序通過)

然后再加入IO的延遲約束;

最后針對沒有過的時序,添加時序例外。

在《vivado使用誤區(qū)與進階》中,提到了一種叫 UltraFAST 的設(shè)計方法。針對下圖中所說的根據(jù)迭代結(jié)果添加必要的例外約束(步驟1),為什么是添加必要的呢?是因為雖然是跨時鐘域,但是有時候就算不約束,時序也能過。當碰到時序不過的時候,現(xiàn)階段可以去針對該部分路徑進行時序例外約束,以便后續(xù)繼續(xù)分析。需要注意的是,就算沒有報時序為例,現(xiàn)階段也一定要去留意那些跨時鐘的路徑(通過clock_interaction),確認代碼有沒有做相應(yīng)的跨時鐘域處理。針對跨時鐘域的代碼處理后面會提到。

bfa70686-af4b-11ec-aa7f-dac502259ad0.png

bfbf57d6-af4b-11ec-aa7f-dac502259ad0.png

定義時鐘約束

時鐘主要可以分為主時鐘以及衍生時鐘。

創(chuàng)建主時鐘。典型的主時鐘根包括有以下幾種情況:輸入端口、千兆位收發(fā)器輸出引腳以及某些硬件原語輸出管腳。

bfdd736a-af4b-11ec-aa7f-dac502259ad0.png

約束實例 :

create_clock -name SysClk -period 10 -waveform {0 5} [get_ports sysclk]

GT 收發(fā)器輸入引腳,例如已恢復(fù)的時鐘,

bff388c6-af4b-11ec-aa7f-dac502259ad0.png

約束實例 :

create_clock -name txclk -period 6.667 [get_pin gt0/TXOUTCLK]

創(chuàng)建生成時鐘。

自動衍生時鐘

大部分生成時鐘都由 Vivado 設(shè)計套件時序引擎自動衍生獲得,該引擎可識別時鐘修改模塊 (CMB)及其對主時鐘所執(zhí)行的變換。賽靈思 7 系列器件中,CMB 是 :

? MMCM*/ PLL*

? BUFR

? PHASER*

如果 Vivado 設(shè)計套件時序引擎所選擇的自動衍生時鐘名稱并不合適,您可以使用 create_generated_clock 命令強行定義自己的名稱,此時無需指定波形轉(zhuǎn)換。該約束應(yīng)剛好位于約束文件中定義主時鐘的約束之后。例如,由 MMCM 實例生成的時鐘的默認名稱是 net0,您可以添加如下約束強制將其設(shè)定為自己的名稱(例如fftClk):

create_generated_clock -name fftClk [get_pins mmcm_i/CLKOUT0]

生成時鐘源自另一個現(xiàn)有時鐘(主時鐘)。通常用來描述由邏輯模塊在主時鐘上執(zhí)行的波形變換。由于生成時鐘的定義取決于主時鐘特性,因此必須首先定義主時鐘。要明確定義生成時鐘,必須使用 create_generated_clock 命令。

c009778a-af4b-11ec-aa7f-dac502259ad0.png

create_generated_clock -name GC1 -source [get_pins gen_clk_reg/C] -divide_by 2 [get_

pins gen_clk_reg/Q]

跨時終域處理

c023430e-af4b-11ec-aa7f-dac502259ad0.png

跨時鐘域處理,主要是為了避免亞穩(wěn)態(tài)的傳播(注意亞穩(wěn)態(tài)不能消除,但是可以采用一定的方式,降低其傳播的風險)。觸發(fā)器進入亞穩(wěn)態(tài)的時間可以用參數(shù)MTBF(Mean Time Between Failures)來描述,MTBF即觸發(fā)器采樣失敗的時間間隔,表示為:

c0396ab2-af4b-11ec-aa7f-dac502259ad0.jpg

例如針對單bit數(shù)據(jù)的跨時鐘域處理,是為了讓MTBF增大,使得進入一個可接受范圍。

*跟大家探討一個問題,為什么打兩拍就可以降低亞穩(wěn)態(tài)的傳播呢?

我想到的一個場景如下:

c04c09ba-af4b-11ec-aa7f-dac502259ad0.png

信號a,經(jīng)過跨時鐘處理后變成了a’;這樣就可以確保在時序滿足的前提下,同一個時鐘域中的1、2、3模塊接收到的a’的值是一致的,如果不做跨時鐘域處理,由于布局布線的延遲不一樣,不能確保到達1、2、3模塊的值是一致的,從而導(dǎo)致邏輯混亂,引起系統(tǒng)的不穩(wěn)定現(xiàn)象。

IO的延遲約束

輸入延遲

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

c0604c54-af4b-11ec-aa7f-dac502259ad0.png

輸入延時即為從外部器件發(fā)出數(shù)據(jù)到FPGA輸入端口的延時時間。其中包括時鐘源到FPGA延時和到外部器件延時之差、經(jīng)過外部器件的數(shù)據(jù)發(fā)送Tco,再加上PCB板上的走線延時。如下圖所示,為外部器件和FPGA接口時序。

c076cb46-af4b-11ec-aa7f-dac502259ad0.png

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

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

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

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

我們很容易就可以從公式(1)和(2),推到出(3)

Tclk – Ftsu ≥Tclk1 - Tclk2 + Tco + Tpcb ≥ FTh (3)

在公式(3)中,我們發(fā)現(xiàn)Tclk 、Ftsu以及FTh,對于工具來說是已知的,而Tclk1 - Tclk2 + Tco + Tpcb正是我們需要告知綜合工具的延遲量。

從我們推到出的公式,我們可以得到

Input_delay_max = Tclk – Ftsu; Input_delay_min = FTh ;

輸出延遲

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

c091a164-af4b-11ec-aa7f-dac502259ad0.png

輸出延時即為從FPGA輸出數(shù)據(jù)后到達外部器件的延時時間。其中包括時鐘源到FPGA延時和到外部器件延時之差、PCB板上的走線延時以及外部器件的數(shù)據(jù)建立和保持時間。如所示,為FPGA和外部器件接口時序圖。

c0aad9e0-af4b-11ec-aa7f-dac502259ad0.png

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

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

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

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

我們很容易就可以從公式(4)和(5),發(fā)現(xiàn)這兩條公式與前面推導(dǎo)輸入延遲如出一轍。只不過現(xiàn)在FPGA變成了輸出器件,而Tsu、Th是下游器件的參數(shù),綜合工具并不知情,需要我們告訴他。除了FTco以外,其他參數(shù)都需要我們告訴工具。

由公式(4)我們可以推導(dǎo)出:

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

那么output delay max = Tpcb(max) –(Tclk2(min) – Tclk1(max)+Tsu

同理我們由公式(5)可以推導(dǎo)出:

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

那么output delay min = Tpcb(min) – (Tclk2(max) – Tclk1(min))– Th

時鐘為例的一些處理方法

下面是我收集到的一些針對時序為例的常規(guī)處理辦法,也記錄下來與大家分享一下:

c0c1837a-af4b-11ec-aa7f-dac502259ad0.png

c0e6f5f6-af4b-11ec-aa7f-dac502259ad0.png

c101a8b0-af4b-11ec-aa7f-dac502259ad0.png

c11cecec-af4b-11ec-aa7f-dac502259ad0.png

下面介紹主要面對的兩個時序問題的處理技巧。

1)setup time 建立時間問題

建立時間是工程設(shè)計中最常遇到的問題了。一般說來,導(dǎo)致建立時間違例主要有兩個原因:邏輯級數(shù)太大或者扇出太大。

打開Report Timing Summary界面查看路徑延遲信息。

c13f1e70-af4b-11ec-aa7f-dac502259ad0.png

Levels指的是邏輯級數(shù)logic level,一個logic level的延遲對應(yīng)的是一個LUT和一個Net的延遲,對于不同的器件,不同頻率的設(shè)計能容納的logic level是不同的。假設(shè)7系列的-2速度等級250MHz的設(shè)計,電路設(shè)計的大部分levels最好不要超過8,否則會造成時序收斂困難。

c154a6c8-af4b-11ec-aa7f-dac502259ad0.png

Logic level太大的處理方法就是重定時(Retiming)了,典型的重定時方法就是流水線,將過于冗長的組合邏輯增加寄存器進行打拍。

High Fanout指的是扇出,同樣和器件、設(shè)計頻率等有關(guān),如下圖所示:

c16a4168-af4b-11ec-aa7f-dac502259ad0.png

降低扇出最好不要在綜合設(shè)置中指定,過低的扇出限制會造成設(shè)計堵塞反而不利于時序收斂,最好的方法是根據(jù)設(shè)計中時序最差路徑的扇出進行針對性的優(yōu)化。如果是寄存器的輸出扇出很大,可以使用max_fanout屬性標記寄存器聲明,也可以手動復(fù)制寄存器,具體可參考:https://blog.csdn.net/shshine/article/details/52451997

如果不是關(guān)鍵時序路徑,而且高扇出網(wǎng)絡(luò)直接連接到觸發(fā)器,對扇出超過25K的net插入BUFG:

set_property CLOCK_BUFFER_TYPE BUFG [get_nets netName]

當然,也可以在后期Implementation的物理優(yōu)化設(shè)置中優(yōu)化扇出。

2)hold time 保持時間問題

在實踐中,我發(fā)現(xiàn)保持時間問題的問題往往是異步處理的問題。

對于一個信號的跨時鐘域問題,一般使用雙寄存器法(對于慢采快的結(jié)繩法這里不討論)。為了降低MTBF(Mean Time Between Failures,平均無障礙時間),這兩個寄存器最好位于同一個slice中。可以使用tcl語言指定,如:

set_property ASYNC_REG TRUE [get_cells [list sync0_reg sync1_reg]]

也可以直接在代碼中指定:

(* ASYNC_REG = "TRUE" *) (* keep = "true" *)reg sync0_reg, sysnc1_reg;

也可以參考代碼模板使用XPM模板進行處理。

c17ffc56-af4b-11ec-aa7f-dac502259ad0.png

c19cc516-af4b-11ec-aa7f-dac502259ad0.png

c1c8caf8-af4b-11ec-aa7f-dac502259ad0.png

**注意:

在發(fā)現(xiàn)同一個時鐘域中,時序還不滿足要求,那應(yīng)該怎么處理呢?

(這時候只能在修改代碼方向努力了,回到Chipplanner中,分析關(guān)鍵路徑,看布線后的路徑是否過長,導(dǎo)致影響時序。還是由于高扇出導(dǎo)致時序為例。針對不同的原因,修改代碼。比如說,路徑過長,通常檢測是否代碼中嵌套的if語句級數(shù)太多?(可以嘗試case語句替代),又或者if的判斷中有表達式(if(a>b)之類的,看能否用電平替代,if(en)等,)對于有些邏輯融合起來一個大的模塊,看能否將大的邏輯塊劃分為若干個小邏輯塊實現(xiàn)。

針對高扇出問題,上述已提到相應(yīng)的處理方式。

寫到最后想說的是,調(diào)時序是一個比較難啃的活,有時候你增加了約束可能時序還會變的更差了,所以說一個良好的代碼風格很重要。假如上述的方法都已經(jīng)試過了,時序還是很難滿足,可能器件已經(jīng)快到達極限了,尤其是資源占用率比較高的時候。這時候只能降低時鐘或者替換更高性能的器件啦。

原文標題:FPGA學(xué)習(xí)-時序分析vivado篇

文章出處:【微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:彭菁

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 收發(fā)器
    +關(guān)注

    關(guān)注

    10

    文章

    3671

    瀏覽量

    107853
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5147

    瀏覽量

    89167
  • 時序分析
    +關(guān)注

    關(guān)注

    2

    文章

    127

    瀏覽量

    23763

原文標題:FPGA學(xué)習(xí)-時序分析vivado篇

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    同步時序數(shù)字電路的分析

    同步時序數(shù)字電路的分析二進制同步計數(shù)器 分析步驟: 1.確定電路是否是同步時序數(shù)字電路 2.確定觸發(fā)器的驅(qū)動方程 3.做出狀態(tài)轉(zhuǎn)換表 4.做
    發(fā)表于 10-20 10:10 ?30次下載
    同步<b class='flag-5'>時序</b>數(shù)字電路的<b class='flag-5'>分析</b>

    同步時序邏輯電路

    同步時序邏輯電路:本章系統(tǒng)的講授同步時序邏輯電路的工作原理、分析方法和設(shè)計方法。從同步時序邏輯電路模型與描述方法開始,介紹同步時序邏輯電路的
    發(fā)表于 09-01 09:06 ?0次下載

    時序約束與時序分析 ppt教程

    時序約束與時序分析 ppt教程 本章概要:時序約束與時序分析基礎(chǔ)常用
    發(fā)表于 05-17 16:08 ?0次下載

    基于時序路徑的FPGA時序分析技術(shù)研究

    基于時序路徑的FPGA時序分析技術(shù)研究_周珊
    發(fā)表于 01-03 17:41 ?2次下載

    靜態(tài)時序分析基礎(chǔ)及應(yīng)用

    靜態(tài)時序分析基礎(chǔ)及應(yīng)用
    發(fā)表于 01-24 16:54 ?7次下載

    Xilinx可編程邏輯器件設(shè)計與開發(fā)(基礎(chǔ)篇)連載43:Spartan

    在ISE 中可以進行時序分析,在PlanAhead 中同樣也可以進行時序分析。下面介紹用PlanAhead 進行時序
    發(fā)表于 02-11 06:13 ?742次閱讀
    Xilinx可編程邏輯器件設(shè)計與開發(fā)(基礎(chǔ)篇)連載43:Spartan

    時序邏輯電路分析有幾個步驟(同步時序邏輯電路的分析方法)

    分析時序邏輯電路也就是找出該時序邏輯電路的邏輯功能,即找出時序邏輯電路的狀態(tài)和輸出變量在輸入變量和時鐘信號作用下的變化規(guī)律。上面講過的時序
    發(fā)表于 01-30 18:55 ?12.8w次閱讀
    <b class='flag-5'>時序</b>邏輯電路<b class='flag-5'>分析</b>有幾個<b class='flag-5'>步驟</b>(同步<b class='flag-5'>時序</b>邏輯電路的<b class='flag-5'>分析</b>方法)

    時序約束的步驟分析

    FPGA中的時序問題是一個比較重要的問題,時序違例,尤其喜歡在資源利用率較高、時鐘頻率較高或者是位寬較寬的情況下出現(xiàn)。建立時間和保持時間是FPGA時序約束中兩個最基本的概念,同樣在芯片電路時序
    的頭像 發(fā)表于 12-23 07:01 ?2364次閱讀
    <b class='flag-5'>時序</b>約束的<b class='flag-5'>步驟</b><b class='flag-5'>分析</b>

    時序基礎(chǔ)分析

    時序分析是以分析時間序列的發(fā)展過程、方向和趨勢,預(yù)測將來時域可能達到的目標的方法。此方法運用概率統(tǒng)計中時間序列分析原理和技術(shù),利用時序系統(tǒng)的
    的頭像 發(fā)表于 11-15 07:02 ?3172次閱讀
    <b class='flag-5'>時序</b>基礎(chǔ)<b class='flag-5'>分析</b>

    時序分析的基本步驟介紹

    典型的主時鐘根包括有以下幾種情況:輸入端口、千兆位收發(fā)器輸出引腳以及某些硬件原語輸出管腳。
    的頭像 發(fā)表于 10-13 10:30 ?6020次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>分析</b>的基本<b class='flag-5'>步驟</b>介紹

    正點原子FPGA靜態(tài)時序分析時序約束教程

    靜態(tài)時序分析是檢查芯片時序特性的一種方法,可以用來檢查信號在芯片中的傳播是否符合時序約束的要求。相比于動態(tài)時序
    發(fā)表于 11-11 08:00 ?66次下載
    正點原子FPGA靜態(tài)<b class='flag-5'>時序</b><b class='flag-5'>分析</b>與<b class='flag-5'>時序</b>約束教程

    時序分析的靜態(tài)分析基礎(chǔ)教程

    本文檔的主要內(nèi)容詳細介紹的是時序分析的靜態(tài)分析基礎(chǔ)教程。
    發(fā)表于 01-14 16:04 ?14次下載
    <b class='flag-5'>時序</b><b class='flag-5'>分析</b>的靜態(tài)<b class='flag-5'>分析</b>基礎(chǔ)教程

    全面解讀時序路徑分析提速

    方法,能夠有效減少時序路徑問題分析所需工作量。 時序路徑問題分析定義為通過調(diào)查一條或多條具有負裕量的時序路徑來判斷達成
    的頭像 發(fā)表于 05-19 11:25 ?3494次閱讀
    全面解讀<b class='flag-5'>時序</b>路徑<b class='flag-5'>分析</b>提速

    FPGA設(shè)計之時序約束四大步驟

    本文章探討一下FPGA的時序約束步驟,本文章內(nèi)容,來源于配置的明德?lián)P時序約束專題課視頻。
    發(fā)表于 03-16 09:17 ?3802次閱讀
    FPGA設(shè)計之<b class='flag-5'>時序</b>約束四大<b class='flag-5'>步驟</b>

    PLC時序圖的設(shè)計步驟

    電器硬件的工作中而引申出來的,借用它可以分析與確定相關(guān)的邏輯量間的時序關(guān)系。采用時序圖法設(shè)計 PLC 程序的一般步驟如下:
    的頭像 發(fā)表于 10-05 09:55 ?6372次閱讀
    主站蜘蛛池模板: 性色视频免费 | 国产精品欧美一区二区三区不卡 | 久久久久久毛片免费播放 | 日本一区二区三区四区不卡 | 四虎国产精品永久地址49 | 欧美洲视频在线观看 | 免费观看成年欧美1314www色 | 国产精品免费看久久久香蕉 | 高清午夜毛片 | 午夜精品一区二区三区在线视 | 狠狠干夜夜 | 久久精品亚洲精品国产色婷 | 色多多www视频在线观看免费 | 色播在线 | 涩涩97在线观看视频 | 久久九色| 天堂福利视频 | 精品啪啪| 国产午夜精品久久久久 | 五月激情六月婷婷 | 中文天堂在线最新版在线www | 亚洲一区二区欧美 | 免费看污视频的网站 | av手机在线播放 | 五月综合激情 | 四虎影业 | 男人操女人视频在线观看 | 天天爱添天天爱添天天爱添 | www.色.com| 毛片大全免费 | 国产精品美女久久久久网站 | 大象焦伊人久久综合网色视 | 亚洲免费视频一区二区三区 | 天天操天天干天搞天天射 | 尻老逼 | 可以直接看的黄色网址 | 国模网站| 51国产午夜精品免费视频 | 色女人网| 午夜视频网 | 黄色免费网站视频 |