精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

XDC約束技巧之I/O篇(上)

FPGA算法工程師 ? 來源:FPGA算法工程師 ? 2023-04-06 09:53 ? 次閱讀

本篇是Xilinx發(fā)布的《Vivado使用誤區(qū)與進階》系列的第四章,歡迎閱讀。

《XDC 約束技巧之時鐘篇》中曾對 I/O 約束做過簡要概括,相比較而言,XDC 中的 I/O 約束雖然形式簡單,但整體思路和約束方法卻與 UCF 大相徑庭。加之 FPGA 的應用特性決定了其在接口上有多種構建和實現(xiàn)方式,所以從 UCF 到 XDC 的轉換過程中,最具挑戰(zhàn)的可以說便是本文將要討論的 I/O 約束了。

I/O約束的語法

XDC 中可以用于I/O 約束的命令包括 set_input_delay / set_output_delay 和set_max_delay / set_min_delay 。其中,只有那些從 FPGA 管腳進入和/或輸出都不經過任何時序元件的純組合邏輯路徑可以用 set_max_delay / set_min_delay 來約束,其余 I/O 時序路徑都必須由 set_input_delay / set_output_delay 來約束。如果對 FPGA 的 I/O 不加任何約束,Vivado 會缺省認為時序要求為無窮大,不僅綜合和實現(xiàn)時不會考慮 I/O 時序,而且在時序分析時也不會報出這些未約束的路徑。

本文以下章節(jié)將會著重討論 XDC 接口約束和時序分析的基礎,介紹如何使用 set_input_delay / set_output_delay 對 FPGA 的 I/O 時序進行約束。

Input約束

e8b50452-d40b-11ed-bfe3-dac502259ad0.png

上圖所示 set_input_delay 的基本語法中,是想要設定 input 約束的端口名,可以是一個或數個 port;-clock 之后的指明了對時序進行分析所用的時鐘,可以是一個 FPGA 中真實存 在的時鐘也可以是預先定義好的虛擬時鐘;-max 之后的描述了用于setup分析的包含有板級走線和外部器件的延時;-min 之后的描述了用于 hold 分析的包含有板級走線和外部器件的延時。

上述這些選項是定義 Input 約束時必須寫明的,還有少數幾個可選項, 如 -add_delay 和 -clock_fall 用于 DDR 接口的約束。

Output約束

e90b788c-d40b-11ed-bfe3-dac502259ad0.png

上圖所示 set_output_delay 的基本語法中,是想要設定 output 約束的端口名,可以是一個或 數個 port;-clock 之后的指明了對時序進行分析所用的時鐘,可以是一個 FPGA 中真實存在的時鐘也可以是預先定義好的虛擬時鐘;-max 之后的描述了用于 setup 分析的包含有板級走線和外部器件的延時;-min 之后的描述了用于 hold 分析的包含有板級走線和外部器件的延時。

上述這些選項是定義 Output 約束時必須寫明的,還有少數幾個可選項如 -add_delay 和 -clock_fall 用于 DDR 接口的約束。

Setup/Hold時序分析

我們知道約束是為了設計服務,而設置好的約束必須在時序報告中加以驗證。所以,怎樣理解時序分析中的檢查規(guī)則就成了重中之重,這一點對 I/O 約束來說尤為重要。理解時序分析工具如何選取路徑分析的發(fā)送端(Launch)和接收端(Capture)時鐘沿(Clock Edges),在 Setup 和 Hold 分析時又有怎樣的具體區(qū)別,以 及這些數字在時序報告中如何體現(xiàn)等等是設置正確 I/O 約束的基礎。

更具體的時序分析方法以及如何深入解讀時序報告等內容將會在后續(xù)另開主題文章詳述,這里僅就 Setup/Hold 分析時對時鐘邊沿的選擇加以描述,便于以下章節(jié)的展開。

Setup時序分析

同步電路設計中,一般情況下,數據在時鐘上升沿發(fā)送,在下一個時鐘上升沿接收,發(fā)送的時鐘沿稱作 Launch Edge,接收沿稱作 Capture Edge。時序分析中的 Setup Check 跟 Capture Edge 的選擇息息相關。

SDR 接口的 setup 分析中,工具如下圖這樣識別發(fā)送和接收時鐘沿。

e9578f7e-d40b-11ed-bfe3-dac502259ad0.png

而在 DDR 接口的 setup 分析中,因為數據是雙沿采樣,所以發(fā)送和接收時鐘沿變成上升(下降)沿發(fā)送,下降(上升)沿接收。

e9a10ab4-d40b-11ed-bfe3-dac502259ad0.png

Hold時序分析

e9da6b06-d40b-11ed-bfe3-dac502259ad0.png

Hold Check 主要是為了保證數據在接收(采樣)端時鐘沿之后還能穩(wěn)定保持一段時間,對 Hold 分析而言,同一個時鐘沿既是 Launch Edge 也是 Capture Edge,這一點對 SDR 和 DDR(不論是中心對齊還是邊沿對齊)都一樣。

Input接口類型和約束

由于歷史的原因,相當一部分 FPGA 設計仍然在系統(tǒng)中起到膠合邏輯(Glue Logic)的作用,當然,如今 的 FPGA 中嵌入了高速串行收發(fā)器嵌入式處理器等,早就不僅僅局限于系統(tǒng)設計的配角,反而成為了其中的主角甚至是明星。但數據接口的同步一直是 FPGA 設計中的常見問題,也是一個重點和難點,很多設計不穩(wěn)定都是因為數據接口的同步有問題。

FPGA 的數據接口同步根據系統(tǒng)級設計方式來講可以分為系統(tǒng)同步和源同步兩種。

系統(tǒng)同步接口

系統(tǒng)同步接口(System Synchronous Interface)的構建相對容易,以FPGA 做接收側來舉例,上游器件僅僅傳遞數據信號到 FPGA 中,時鐘信號則完全依靠系統(tǒng)板級來同步。時鐘信號在系統(tǒng)級上同源,板級走線的延時也要對齊。正因為這樣的設計,決定了數據傳遞的性能受到時鐘在系統(tǒng)級的走線延時和 skew 以及數據路徑延時的雙重限制,無法達到更高速的設計要求,所以大部分情況也僅僅應用 SDR 方式。

ea0a2ae4-d40b-11ed-bfe3-dac502259ad0.png

對系統(tǒng)同步接口做 Input 約束相對容易,只需要考慮上游器件的 Tcko 和數據在板級的延時即可。下圖是一 個 SDR 上升沿采樣系統(tǒng)同步接口的 Input 約束示例。

ea5ea718-d40b-11ed-bfe3-dac502259ad0.png

設置和分析 I/O 約束一定要有個系統(tǒng)級思考的視角,如上右圖所示,Launch Edge 對應的是上游器件的時 鐘,而 Capture Edge 則對應 FPGA 的輸入時鐘,正因為是系統(tǒng)同步時鐘,所以可以將其視作完全同步而放在一張圖上分析,這樣一來,就可以用一般時序分析方法來看待問題。

一條完整的時序路徑,從源觸發(fā)器的 C 端開始,經過 Tcko 和路徑傳輸延時再到目的觸發(fā)器的 D 端結束。放在系統(tǒng)同步的接口時序上,傳輸延時則變成板級傳輸延時(還要考慮 skew),所以上述 -max 后的數值是 Tcko 的最大值加上板級延時的最大值而來,而-min 后的數值則是由兩個最小值相加而來。

源同步接口

為了改進系統(tǒng)同步接口中時鐘頻率受限的弊端,一種針對高速 I/O 的同步時序接口應運而生,在發(fā)送端將數據和時鐘同步傳輸,在接收端用時鐘沿脈沖來對數據進行鎖存,重新使數據與時鐘同步,這種電路就是源同步接口電路(Source Synchronous Interface)。

源同步接口最大的優(yōu)點就是大大提升了總線的速度,在理論上信號的傳送可以不受傳輸延遲的影響,所以源同步接口也經常應用 DDR 方式,在相同時鐘頻率下提供雙倍于 SDR 接口的數據帶寬。

源同步接口的約束設置相對復雜,一則是因為有 SDR、DDR、中心對齊(Center Aligned)和邊沿對齊 (Edge Aligned)等多種方式,二則可以根據客觀已知條件,選用與系統(tǒng)同步接口類似的系統(tǒng)級視角的方式,或是用源同步視角的方式來設置約束。

ea9e5bc4-d40b-11ed-bfe3-dac502259ad0.png

如上圖所示,對源同步接口進行 Input 約束可以根據不同的已知條件,選用不同的約束方式。一般而言, FPGA 作為輸入接口時,數據有效窗口是已知條件,所以方法 2 更常見,Vivado IDE 的 Language Templates 中關于源同步輸入接口 XDC 模板也是基于這種方法。但不論以何種方式來設置 Input 約束,作用是一樣,時序報告的結果也應該是一致的。

eae07d92-d40b-11ed-bfe3-dac502259ad0.png

針對上圖所示中心對齊源同步 SDR 接口時序,分別按照兩種方式來約束,需要的已知條件和計算方式雖然不同,但卻可以得到完全一樣的結果。

eb465d6a-d40b-11ed-bfe3-dac502259ad0.png

eb83fec2-d40b-11ed-bfe3-dac502259ad0.png

DDR接口的約束設置

DDR 源同步接口的約束稍許復雜,需要將上升沿和下降沿分別考慮和約束,以下以源同步接口為例,分別就輸入接口數據為中心對齊或邊沿對齊的方式來舉例。

DDR源同步中心對齊輸入接口

ebb86bda-d40b-11ed-bfe3-dac502259ad0.png

已知條件如下:

時鐘信號 src_sync_ddr_clk 的頻率: 100 MHz

數據總線: src_sync_ddr_din[3:0]

上升沿之前的數據有效窗口 ( dv_bre ) : 0.4 ns

上升沿之后的數據有效窗口 ( dv_are ) : 0.6 ns

下降沿之前的數據有效窗口 ( dv_bfe ) : 0.7 ns

下降沿之后的數據有效窗口 ( dv_afe ) : 0.2 ns

可以這樣計算輸入接口約束:DDR 方式下數據實際的采樣周期是時鐘周期的一半;上升沿采樣的數據(Rise Data)的 -max 應該是采樣周期減去這個數據的發(fā)送沿(下降沿)之前的數據有效窗口值 dv_bfe,而 對應的-min 就應該是上升沿之后的數據有效窗口值 dv_are ;同理,下降沿采樣的數據(Fall Data)的 -max 應該是采樣周期減去這個數據的發(fā)送沿(上升沿)之前的數據有效窗口值 dv_bre,而對應的-min 就應該是下降沿之后的數據有效窗口值 dv_afe 。

所以最終寫入 XDC 的 Input 約束應該如下所示:

ebdb7792-d40b-11ed-bfe3-dac502259ad0.png

DDR 源同步邊沿對齊輸入接口

ec17f884-d40b-11ed-bfe3-dac502259ad0.png

已知條件:

時鐘信號 src_sync_ddr_clk 的頻率: 100 MHz

數據總線: src_sync_ddr_din[3:0]

上升沿之前的數據 skew (skew_bre ) : 0.6 ns

上升沿之后的數據 skew (skew_are ) : 0.4 ns

下降沿之前的數據 skew (skew_bfe ) : 0.3 ns

下降沿之后的數據 skew (skew_afe ) : 0.7 ns

可以這樣計算輸入接口約束:因為已知條件是數據相對于時鐘上升沿和下降沿的 skew,所以可以分別獨立計算;上升沿的 -max 是上升沿之后的數據 skew (skew_are ),對應的-min 就應該是負的上升沿之前的數 據 skew (skew_bre );下降沿的 -max 是下降沿之后的數據 skew (skew_afe ),對應的-min 就應該是負的下 降沿之前的數據 skew (skew_bfe )。

所以最終寫入 XDC 的 Input 約束應該如下所示:

ec426510-d40b-11ed-bfe3-dac502259ad0.png

出現(xiàn)負值并不代表延時真的為負,而是跟數據相對于時鐘沿的方向有關。請一定牢記 set_input_delay 中 -max/-min 的定義,即時鐘采樣沿到達之后最大與最小的數據有效窗口(set_output_delay 中 -max/-min 的定 義與之正好相反,詳見后續(xù)章節(jié)舉例說明)。

在這個例子中,數據是邊沿對齊,只要有 jitter 跟 skew 的存在,最差情況下,數據有效窗口在到達時鐘采樣沿之前就已經結束,所以會有負數出現(xiàn)在-min 之后。因此,在實際應用中,F(xiàn)PGA 用作輸入的邊沿對齊DDR 源同步接口的情況下,真正用來采樣數據的時鐘會經過一個 MMCM/PLL 做一定的相移,從而把邊沿對齊變成中心對齊。

另外,在經過 MMCM/PLL 相移后的采樣時鐘跟同步接口輸入的時鐘之間需要做set_false_path 的約束(如下述例子)而把那些偽路徑從時序報告中剔除,這里不再詳述。

ec72a5e0-d40b-11ed-bfe3-dac502259ad0.png

虛擬時鐘

在 FPGA 做系統(tǒng)同步輸入接口的情況下,很多時候上游器件送入的數據并不是跟某個 FPGA 中已經存在的真實的時鐘相關,而是來自于一個不同的時鐘,這時就要用到虛擬時鐘(Virtual Clock)。

舉例來說,上游器件用一個 100MHz 的時鐘送出數據到 FPGA,實際上這個數據每兩個時鐘周期才變化一次,所以可以用 50MHz 的時鐘來采樣。FPGA 有個 100MHz 的輸入時鐘,經過 MMCM 產生一個 50MHz 的衍 生時鐘,并用其來采樣上游器件送來的同步數據。當然,系統(tǒng)級的設計上,必須有一定的機制來保證上游器件中的發(fā)送時鐘和 FPGA 中的接收時鐘的時鐘沿對齊。

此時,我們可以借助虛擬時鐘的幫助來完成相應的 Input 接口約束。

eca7c392-d40b-11ed-bfe3-dac502259ad0.png

篇幅所限,對 XDC 中 I/O 約束的設計思路、分析方法以及如何具體設置 Input 接口約束的討論就到這里, 下一篇我們接著分析如何設置 Output 接口約束,看看 Vivado 中有什么方式可以幫助用戶準確便捷地定義接口時序約束。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1626

    文章

    21665

    瀏覽量

    601805
  • Xilinx
    +關注

    關注

    71

    文章

    2163

    瀏覽量

    121004
  • 時序
    +關注

    關注

    5

    文章

    385

    瀏覽量

    37275
  • 約束
    +關注

    關注

    0

    文章

    82

    瀏覽量

    12718
  • xdc
    xdc
    +關注

    關注

    1

    文章

    24

    瀏覽量

    5916

原文標題:XDC約束技巧之I/O篇(上)

文章出處:【微信號:FPGA算法工程師,微信公眾號:FPGA算法工程師】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    物理約束實踐:I/O約束

    I/O約束I/O Constraints)包括I/O
    的頭像 發(fā)表于 11-18 16:42 ?1049次閱讀
    物理<b class='flag-5'>約束</b>實踐:<b class='flag-5'>I</b>/<b class='flag-5'>O</b><b class='flag-5'>約束</b>

    無法在XDC文件中設置maxdelay約束

    大家好,使用UCF文件中的ISE,我習慣于在輸入焊盤和第一個觸發(fā)器之間的信號設置maxdelay約束,特別是在總線信號,以確保總線的所有信號具有大致相同的傳播時間。使用Vivado,我無法在
    發(fā)表于 10-25 15:17

    XDC約束如何設計

    IDDR和IOB FF僅由我設計中的同一IOB中的IBUF驅動。我的代碼:IOBUF iobuf_iodata(.I(iodata_mux), .IO(iodata),// PAD .O
    發(fā)表于 11-13 14:28

    FPGA使用RGMII接口的88E1512搭建網絡通信系統(tǒng)

    |EthernetFMC6.ALTERAAN477:DesigningRGMIIInterfaceswithFPGAsandHardCopyASICs7.米聯(lián)客ESFP1512以太網SFP光電卡教程8.Vivado使用誤區(qū)與進階——XDC約束技巧
    發(fā)表于 07-07 08:30

    FPGA設計約束技巧XDC約束I/O

    從UCF到XDC的轉換過程中,最具挑戰(zhàn)的可以說便是本文將要討論的I/O約束了。 I/O
    發(fā)表于 11-17 18:54 ?1.3w次閱讀
    FPGA設計<b class='flag-5'>約束</b>技巧<b class='flag-5'>之</b><b class='flag-5'>XDC</b><b class='flag-5'>約束</b><b class='flag-5'>之</b><b class='flag-5'>I</b>/<b class='flag-5'>O</b><b class='flag-5'>篇</b> (<b class='flag-5'>上</b>)

    FPGA設計約束技巧XDC約束I/O(下)

    討論的I/O約束了。繼《XDC約束技巧I/
    發(fā)表于 11-17 19:01 ?7302次閱讀
    FPGA設計<b class='flag-5'>約束</b>技巧<b class='flag-5'>之</b><b class='flag-5'>XDC</b><b class='flag-5'>約束</b><b class='flag-5'>之</b><b class='flag-5'>I</b>/<b class='flag-5'>O</b><b class='flag-5'>篇</b>(下)

    XDC的時鐘約束及優(yōu)勢

    Xilinx?的新一代設計套件 Vivado 中引入了全新的約束文件 XDC,在很多規(guī)則和技巧都跟上一代產品 ISE 中支持的 UCF 大不相同,給使用者帶來許多額外挑戰(zhàn)。Xilinx 工具專家
    發(fā)表于 11-18 03:59 ?3581次閱讀

    XDC約束及物理約束的介紹

    觀看視頻,了解和學習有關XDC約束,包括時序,以及物理約束相關知識。
    的頭像 發(fā)表于 01-07 07:10 ?6153次閱讀
    <b class='flag-5'>XDC</b><b class='flag-5'>約束</b>及物理<b class='flag-5'>約束</b>的介紹

    如何將Altera的SDC約束轉換為Xilinx XDC約束

    了解如何將Altera的SDC約束轉換為Xilinx XDC約束,以及需要更改或修改哪些約束以使Altera的約束適用于Vivado設計軟件
    的頭像 發(fā)表于 11-27 07:17 ?5082次閱讀

    XDC時鐘約束的三種基本語法

    XDC 是 Xilinx Design Constraints 的簡寫,但其基礎語法來源于業(yè)界統(tǒng)一的約束規(guī)范SDC。XDC 在本質就是 Tcl 語言,但其僅支持基本的 Tcl 語法如
    的頭像 發(fā)表于 01-30 17:29 ?9580次閱讀

    Vivado IDE全面了解XDC文件的約束順序

    Vivado IDE約束管理器將任何已編輯的約束保存回XDC文件中的原始位置,但不會保存在Tcl腳本中。 任何新約束都保存在標記為目標的XDC
    的頭像 發(fā)表于 11-13 10:53 ?4105次閱讀
    Vivado IDE全面了解<b class='flag-5'>XDC</b>文件的<b class='flag-5'>約束</b>順序

    Vivado中XDC文件的約束順序

    使得問題更加復雜,比如一個設計使用了不同的IP核或者由不同團隊開發(fā)的模塊。不管設計者在設計中,使用了一個還是多個XDC文件,Xilinx推薦設計者使用下面的順序來組織約束XDC文件的約束
    的頭像 發(fā)表于 10-13 16:56 ?6858次閱讀

    XDC約束技巧之時鐘

    Xilinx的新一代設計套件Vivado中引入了全新的約束文件 XDC,在很多規(guī)則和技巧都跟上一代產品 ISE 中支持的 UCF 大不相同,給使用者帶來許多額外挑戰(zhàn)。Xilinx 工具專家告訴你,其實用好
    的頭像 發(fā)表于 03-28 09:51 ?2428次閱讀

    XDC約束技巧CDC

    XDC 約束技巧之時鐘》介紹了 XDC 的優(yōu)勢以及基本語法,詳細說明了如何根據時鐘結構
    的頭像 發(fā)表于 04-03 11:41 ?1999次閱讀

    XDC約束技巧I/O(下)

    繼《XDC 約束技巧 I/O )》詳細描述了
    的頭像 發(fā)表于 04-10 11:00 ?1078次閱讀