一、inputdelay
首先要知道inputdelay約束的是什么?inputdelay就是要告訴fpga,以fpga時鐘輸入引腳為參考點,時鐘采樣沿到資料有效的max和min延遲,如下圖的紅圈所示,
對于inputdelay可以分為下圖中的幾個型別,

因為現在主要用到的是源同步,中心對齊,所以只對這兩類進行了學習,下圖是源同步介面型別的inputdelay分析模型,

我們需要知道inputdelay中約束的max和min是由上游器件的Tco,Tc_d,布線延遲Td_bd,Tc_bd決定的,并不關fpga什么事情,inputdelay約束要做的就是告訴fpga輸入時鐘和資料的關系,(如果Td_bd,Tc_bd為0的話,那么上游器件的時鐘和資料輸出是什么關系,進入fpga的就是什么關系),
源同步SDR型別介面
對源同步介面進行 Input 約束可以根據不同的已知條件,選用不同的約束方式,有兩種方式,
1.已經知道游器件的Tco,Tc_d,布線延遲Td_bd,Tc_bd,
dmax = (Td_bdmax + Tcomax)-(Tc_d + Tc_bd)
dmin = (Tco min+ Td_bd min) – (Tc_d + Tc_bd)
2. FPGA 作為輸入介面時,資料有效視窗是已知條件,如下圖所示

那么為了滿足dv_bre 和 dv_are ,所以
dmax = T - dv_bre;
dmin = dv_are;
如下圖所示,

DDR 源同步中心對齊輸入介面
模型如下圖所示,

那么為了滿足上升沿和下降沿的dv_bre , dv_are,

outputdelay的分析也有兩種方法,
1.方法一我們稱作 Setup/Hold Based Method,僅需要了解下游 器件用來鎖存資料的觸發器的 Tsu 與 Th 值與系統板級的延時便可以設定,
先上公式dmax = 最大布線延遲 + 下游器件的Tsu;
dmin = 最小布線延遲 - 下游器件的Thd,
我剛開始就很疑惑公式是怎么來的,估計大家剛學也是這樣,下面就按照我的理解來說一下,
當最大布線延遲為0的時候,fpga的資料和時鐘時鐘輸出關系只要滿足下游器件的保持建立時間就可以,如下圖所示,

這里先不考慮tsu和thd加起來是不是等于一個時鐘周期,就只知道fpga輸出資料提前時鐘采樣沿的時間至少有tsu這么大,然后采樣沿過后資料保持時間至少有Tth這么大,
下面先分析建立時間
因為布線延遲為0,所以可以認為fpga一輸出時鐘上升沿(對于fpga來說就是發射沿)下游器件能無延時的收到時鐘上升沿(對于下游器件來說就是采樣沿),那么這時候fpga輸出的資料只要提前時鐘上升沿tsu的時間發送,這樣到達下游器件引腳處的資料也是提前時鐘上升沿tsu的,
假如布線延時不為0,這是fpga輸出的時鐘還是可以無延遲到下游器件(這里是相對于資料延時來說的),但由于資料有延遲,那么下游器件的采樣沿到來時之前,fpga輸出的資料不能提前tsu個時間來到下游器件的輸入,這樣就不滿足下游器件的建立時間了(最糟糕的是游器件的采樣時鐘來了,資料還沒有來),解決辦法就是,本來fpga輸出的資料是提前時鐘tsu個時間,現在就需要在tsu的基礎上加上布線延遲,也就是資料提前時鐘(tsu+布線延遲)的時間,當加上去的是最大布線延時時,這時較小的布線延時情況也是能滿足下游器件的建立時間的,
所以公式dmax = 最大布線延遲 + 下游器件的Tsu, 用來分析建立時間,
然后分析保持時間
如果布線延時為0的話,在fpga輸出時鐘發射沿后資料保持了多長時間,到達下游器件時的資料就會在時鐘采樣沿之后保持多長的時間,
如果布線延遲不為0的話,設fpga輸出時鐘發射沿后資料保持的時間為d,那么只要這個d+布線延遲 = 下游器件的保持時間就可以滿足下游器件的保持時序要求,因為fpga輸出的資料在時鐘發射沿之后d時間結束了以后,資料還需要經過布線延遲這段時間,所以按最小的布線延時的情況下算出這個d,這時較大的布線延遲情況也是能滿足下游器件的保持時間的,
所示公式dmin = 最小布線延遲 - 下游器件的Thd,用來分析保持時間,
當布線延時小于下游器件的保持時間時,dmax、dmin就會是前面圖中紅色的情況; 當布線延時大于下游器件的保持時間時,dmax、dmin就會是前面圖中黃色色的情況
2.方法二稱作 Skew Based Method, 此時需要了解 FPGA 送出的資料相對于時鐘沿的關系,根據 Skew 的大小和時鐘頻率來計算如何設定 Output 約束,
多數情況我們不知道目標芯片 setup 門限值或者 hold 的門限值,我們需要假設輸出信號的狀態也就是時鐘與資料的關系,這里假設的值是 SKEW, 假設 SKEW 的目的是讓綜合工具知道輸出的時鐘采樣沿不能落在 SKEW 的區 間,如果落在 SKEW 區間就出現時序違例,這樣我們可以假定 SKEW 的大小來 調節時鐘與資料的關系,

分析方法跟第一種一樣的,
最后說下自己對outputdelay的理解:只要fpga的輸出資料比時鐘提前dmax的時間,理論上fpga輸出的資料只需要足夠存在dmax-dmin的時間就可以滿足下游器件的建立和保持時間,但是實際上fpga內部存器輸出的資料一定是存在一個周期,不過就算一個周期大于dmax-dmin也不會影響下游器件的建立和保持時間的,所以時序不違例的要點只需要滿足fpga輸出資料提前時鐘dmax就可以,只不過在約束上還是要加上dmin的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/267375.html
標籤:其他
下一篇:【原創】流水線處理對比實體
