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

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

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

時序約束連載01~output delay約束

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-07-11 17:12 ? 次閱讀

本文將詳細(xì)介紹輸出延時(output delay)的概念、場景分類、約束參數(shù)獲取方法以及約束方法。

100572122-307766-tu1outputdelayyueshuleixing.png

圖1 output delay約束類型

如上圖1所示:輸出延時(output delay)約束與輸入延時(input delay)約束相似,輸出延時亦分成系統(tǒng)同步和源同步兩大情形。

其中源同步根據(jù)時鐘特性,又可以細(xì)分成SDR和DDR兩種情況。根據(jù)數(shù)據(jù)和時鐘的相位關(guān)系,DDR可以分成中心對齊和邊沿兩種。本文將詳細(xì)討論各種情況下的約束方法。

第1節(jié) 輸出延時約束的目的
在詳細(xì)討論輸出延時約束之前,明確為什么要做輸出延時約束,通過該約束可以解決什么問題?

第2節(jié) 輸出延時概念
設(shè)置輸出延時的目標(biāo):讓FPGA調(diào)整自身輸出的時序,使輸出的時序滿足下游器件寄存器的建立時間和保持時間要求,來使得下游器件能夠正確的捕獲數(shù)據(jù)。

2.1 輸出延時的max與min
2.1.1 max
max的意思是最大延時時間,用于考慮建立時間:一般為正數(shù),表示數(shù)據(jù)在時鐘采樣沿之前就到達(dá)。

最大延時時間公式:最大板級延時+TSU。TSU為下游器件要求的建立時間。假如板級延時為0,則max就是下游器件的“TSU”。

2.1.2 min
min的意思為最小延時時間,用于考慮保持時間:一般為負(fù)數(shù),表示數(shù)據(jù)在時鐘采樣沿之后還保持了一段時間 。

公式:最小板級延時-TH。TH為下游器件要求的保持時間。假如板級延時為0,min則是下游器件的“-Th”。

第3節(jié) 輸出延時的兩種測量方法
3.1 下游器件的參數(shù)(推薦
第一種是根據(jù)下游器件的參數(shù)來設(shè)置建立時間和保持時間,通過下游器件的數(shù)據(jù)手冊,可以得知下游器件寄存器的建立時間和保持時間的要求。在得知下游器件的建立時間和保持時間之后,就可以進(jìn)行相應(yīng)的設(shè)置,從而實現(xiàn)時序約束。

3.2 示波器測量
第二種方法是用示波器測量下游器件的一個輸入端口,來得到它的時序信息。 比如說它的延時這種信息。但這種方法一般不常用。本書推薦使用第一種方法,因為第二種方法要求硬件做的比較規(guī)范,不能出現(xiàn)延時不斷抖動的情況。

第4節(jié) 各應(yīng)用場景下的約束方法
接下來討論各種不同情況下輸出接口的時序約束方式。

4.1 系統(tǒng)同步
如圖2所示,系統(tǒng)同步就是FPGA和下游器件共用一個時鐘,可以認(rèn)為這個時鐘的延時等于零。但實際上,F(xiàn)PGA把數(shù)據(jù)送給下游器件,是有一定延時的。

一般下游器件的寄存器會有一個建立時間和保持時間參數(shù)。可以從數(shù)據(jù)手冊中得到下游器件相應(yīng)的參數(shù),比如說它的建立時間是2ns,保持時間是1ns。而FPGA的延時可能符合一個抖動的情況,通過示波器測量或者計算方式可以得到FPGA的板級延時。比如說它的板級延時最大是0.5ns,板級延時最小是0.3ns。

100572122-307767-tu2xitongtongbujiekoushiyitu.png

圖2 系統(tǒng)同步接口示意圖

當(dāng)測量得到板級延時之后,下一步便可以進(jìn)行配置了。比如說最大的輸出延時為最大的板級延時加上建立時間要求,即2ns+0.5ns=2.5ns。最小板級延時為輸出最小延遲時間減去下游芯片寄存器保持時間,即0.3ns–1ns=-0.7ns。使用TCL語句實現(xiàn)以上約束的代碼如下所示:

100572122-307768-tu3.png

上面約束語句首先是通過creat_clock創(chuàng)建了一個生成時鐘,輸出給下游芯片作為時鐘信號(需要注意該信號本身是存在的,只是通過創(chuàng)建生成時鐘的方式告知quartus、vivado等綜合軟件該信號是時鐘信號)。然后,set_output_delay –clock sysclk -max 2.5 [get_ports DOUT]的含義就是輸出信號DOUT相對生成時鐘sysclk的最大延遲是2.5ns。而set_output_delay –clock sysclk -min -0.7 [get_ports DOUT] 的含義就是輸出信號DOUT相對生成時鐘sysclk的最小延遲是-0.7ns。

這是系統(tǒng)同步的情況,系統(tǒng)同步就是FPGA和下游器件共用一個時鐘信號。

4.2 源同步SDR
接下來看一下源同步,如圖3所示,F(xiàn)PGA輸出數(shù)據(jù)給下游器件同時,也會與數(shù)據(jù)同步輸出一個時鐘信號給下游器件,時鐘和數(shù)據(jù)一起傳輸。其中分為SDR和DDR。SDR是指使用時鐘上升沿去采樣數(shù)據(jù),DDR是指上升沿和下降沿都去采樣數(shù)據(jù)。

100572122-307774-tu3sdrchuanshushiyitu.png

圖3 SDR傳輸示意圖

上圖3為典型的SDR傳輸示意圖,SDR使用上升沿對數(shù)據(jù)進(jìn)行采樣。SDR的原理、方法與系統(tǒng)同步都是一樣的,也是通過查數(shù)據(jù)手冊得到下游器件寄存器的建立時間、保持時間。它保持的要求也能知道我的這個延時的抖動是多少啊。在測量之后得到最大抖動和最小抖動,就能根據(jù)公式計算出最大延遲時間和最小延遲時間。根據(jù)公式,最大延時時間是指板級傳輸延時最大值加上下游器件建立時間要求,而最小延遲是指板級傳輸延遲最小值減去下游器件保持時間。

MP801開發(fā)板提供了兩路高速DAC,AD9709時鐘頻率最高支持125MHz,輸出也是符合SDR要求的,通過閱讀手冊獲取該芯片寄存器的建立時間和保持時間。如下圖4是AD9709芯片的接口時序圖,CLK2是時鐘信號,WRT2是類似寫使能的信號,一般與時鐘CLK保持一致即可,DATA IN是FPGA個AD9709芯片的八位數(shù)字信號,而IOUTA OR IOUTB是DAC芯片的兩路模擬輸出信號,與本次時序分析無關(guān)。建立時間是指數(shù)據(jù)必須在時鐘上升沿之前到達(dá)的一段時間,所以下圖中ts就是AD9709接口寄存器建立時間。保持時間是指數(shù)據(jù)必須在時鐘上升沿之后保持的一段時間,所以下圖中tH就是AD9709接口寄存器的保持時間。

100572122-307769-tu4ad9709jiekoushixutu.png

圖4 AD9709接口時序圖

在根據(jù)芯片手冊的數(shù)據(jù)表查的上圖4中對應(yīng)的時間,如下圖5所示,tS的最小值為2.0ns,故建立時間為2.0ns,保持時間tH為1.5ns。能夠?qū)Ω拍罾斫猓还苁鞘裁葱酒伎梢愿鶕?jù)芯片手冊的接口時序圖得知接口寄存器的建立時間和保持時間,后續(xù)時序約束可以直接使用該參數(shù)。

100572122-307770-tu5ad9709xinpianshijiancanshu.png

圖5 AD9709芯片時間參數(shù)

4.3 源同步-DDR(查手冊方法)
DDR其實就是SDRAM的升級版,為了提高數(shù)據(jù)傳輸效率,DDR在時鐘的上升沿和下降沿都對數(shù)據(jù)采樣。同樣可以查手冊得到接口寄存器的建立時間、保持時間,由于在時鐘上升沿和下降沿都在采集數(shù)據(jù),在這兩個邊沿都會存在建立時間和保持時間的要求,例如:

100572122-307771-tu6ddrjiekoushiyitu.png

圖6 DDR接口示意圖

如上圖6要求上升沿建立時間tsu_r為0.7ns,上升沿的保持時間thd_r為0.3ns,下降沿的建立時間tsu_f為0.6ns,下降沿的保持時間thd_f為0.4ns。進(jìn)行IO約束之前,一般都會先約束一個生成時鐘,目的在于告訴綜合軟件該接口信號以哪個時鐘信號為標(biāo)準(zhǔn),便于后續(xù)約束直接使用。根據(jù)理論知識,如果時鐘線與數(shù)據(jù)信號線的PCB走線做了等長處理,那么源同步的最大延遲為下游器件的建立時間,最小延遲為0減去下游器件的保持時間。所以該DDR上升沿最大延遲0.7ns,最小延遲為0-0.3ns=0.3ns,下降沿最大延遲0.6ns,最小延遲是-0.4ns。上述約束轉(zhuǎn)換成TCL代碼如下所示:

100572122-307772-tu7.png

注意這個clock_for下降沿的時候,要加上-add_delay。上面的六句約束中的前面兩句時鐘約束不是一定存在的,這兩句與前面的時鐘約束方式是一樣的,后面四句set_output_delay用于約束輸出接口信號所對應(yīng)的最大和最小輸出延遲,帶有clock for的表示以時鐘的下降沿作為參考點,從而完成對DDR輸出接口信號的約束。

有的讀者會注意到input delay 有個什么叫中心對齊的,為什么這里就沒有了?因為 input delay 是靠測量的方式去得到的,而output delay是查數(shù)據(jù)手冊的方式獲得的數(shù)據(jù)。那么他的邊緣這個點的時候,就不不可能會抖動。在下降沿的時候,在之前會穩(wěn)定,穩(wěn)定多久,之后會穩(wěn)定多久,因此他一定是這么穩(wěn)這樣一個情況的啊,他會把這個實際參數(shù)要求給你啊,所以沒有什么邊緣對齊和中心對齊的情況。我們從查數(shù)據(jù)手冊就會查到這幾個參數(shù),然后進(jìn)行配置就可以了啊。還有一點就是對于我們的板級延時的一般情況下呢,如果我們硬件做的好的板,這件事是不需要考慮的。也就是說我們的output delay 一般呢就是設(shè)置它的鑒定時間啊,就是從手冊里面得到它鑒定時間和保質(zhì)時間這兩個參數(shù)。然后根據(jù)它公式直接就是配置就可以了啊,所以它output delay 的方式相對比較簡單。

第5節(jié) 總結(jié)與建議
根據(jù)經(jīng)驗,按照順序去索引,找到對應(yīng)的情況,按要求進(jìn)行約束。比如說這個端口是屬于上面三種情況中的哪一種,就按照那一種進(jìn)行配置,進(jìn)行約束就可以了。

input delay 、output delay就是告訴綜合工具現(xiàn)在的實際情況。告訴綜合軟件FPGA下游器件的情況、要求是什么,綜合軟件得知這些參數(shù)后,結(jié)合自身的參數(shù),在對設(shè)計進(jìn)行布局、布線時就會去考慮滿足下游器件的建立時間和保持時間要求。如果延遲時間過長,可以通過減小內(nèi)部走線的延遲,或者采用更加接近芯片管腳的觸發(fā)器去實現(xiàn)設(shè)計,減小輸出延遲來達(dá)到目的。如果延遲過短導(dǎo)致下游器件保持時間不滿足,綜合軟件可以通過增加走線延遲等增大輸出延遲時間的方式滿足下游器件保持時間的要求??傊?,只要添加合理的約束,告知綜合軟件下游器件的延遲要求,綜合軟件就可以通過調(diào)節(jié)內(nèi)部觸發(fā)器的布局、走線來滿足下游器件的建立時間和保持時間的要求,從而達(dá)到約束的目的。這就是 output delay 一個配置方式,相對比較簡單。

審核編輯:湯梓紅

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

    關(guān)注

    43

    文章

    2304

    瀏覽量

    191274
  • 時鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1740

    瀏覽量

    131633
  • 時序約束
    +關(guān)注

    關(guān)注

    1

    文章

    115

    瀏覽量

    13433
收藏 人收藏

    評論

    相關(guān)推薦

    VIVADO時序約束及STA基礎(chǔ)

    時序約束的目的就是告訴工具當(dāng)前的時序狀態(tài),以讓工具盡量優(yōu)化時序并給出詳細(xì)的分析報告。一般在行為仿真后、綜合前即創(chuàng)建基本的時序
    的頭像 發(fā)表于 03-11 14:39 ?9827次閱讀

    FPGA時序約束之衍生時鐘約束和時鐘分組約束

    在FPGA設(shè)計中,時序約束對于電路性能和可靠性非常重要。在上一篇的文章中,已經(jīng)詳細(xì)介紹了FPGA時序約束的主時鐘約束。
    發(fā)表于 06-12 17:29 ?2828次閱讀

    時序約束時序分析 ppt教程

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

    時序約束用戶指南

    時序約束用戶指南包含以下章節(jié): ?第一章“時序約束用戶指南引言” ?第2章“時序約束的方法” ?
    發(fā)表于 11-02 10:20 ?0次下載

    FPGA時序約束方法

    FPGA時序約束方法很好地資料,兩大主流的時序約束都講了!
    發(fā)表于 12-14 14:21 ?19次下載

    FPGA時序約束分析余量

    FPGA在與外部器件打交道時,端口如果為輸入則與input delay約束相關(guān),如果最為輸出則output delay,這兩種約束的值究竟是
    發(fā)表于 11-10 10:06 ?4432次閱讀
    FPGA<b class='flag-5'>時序</b><b class='flag-5'>約束</b>分析余量

    時序約束中如何精確找到匹配的template?

    時序約束中的? set_input_delay/set_output_delay?約束一直是一個難點,無論是概念、
    的頭像 發(fā)表于 04-10 09:38 ?2005次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b>中如何精確找到匹配的template?

    FPGA設(shè)計之時序約束

    上一篇《FPGA時序約束分享01_約束四大步驟》一文中,介紹了時序約束的四大步驟。
    發(fā)表于 03-18 10:29 ?1689次閱讀
    FPGA設(shè)計之<b class='flag-5'>時序</b><b class='flag-5'>約束</b>

    詳解FPGA的時序input delay約束

    本文章探討一下FPGA的時序input delay約束,本文章內(nèi)容,來源于配置的明德?lián)P時序約束專題課視頻。
    發(fā)表于 05-11 10:07 ?4145次閱讀
    詳解FPGA的<b class='flag-5'>時序</b>input <b class='flag-5'>delay</b><b class='flag-5'>約束</b>

    FPGA的時序input delay約束

    本文章探討一下FPGA的時序input delay約束,本文章內(nèi)容,來源于明德?lián)P時序約束專題課視頻。
    的頭像 發(fā)表于 07-25 15:37 ?3083次閱讀
    FPGA的<b class='flag-5'>時序</b>input <b class='flag-5'>delay</b><b class='flag-5'>約束</b>

    創(chuàng)建輸入輸出接口時序約束的竅門

    時序約束中的 set_input_delay/set_output_delay 約束一直是一個難點,無論是概念、
    的頭像 發(fā)表于 08-02 09:54 ?2547次閱讀
    創(chuàng)建輸入輸出接口<b class='flag-5'>時序</b><b class='flag-5'>約束</b>的竅門

    淺談時序設(shè)計和時序約束

    ??本文主要介紹了時序設(shè)計和時序約束。
    的頭像 發(fā)表于 07-04 14:43 ?1463次閱讀

    時序約束連載03~約束步驟總結(jié)

    本小節(jié)對時序約束做最終的總結(jié)
    的頭像 發(fā)表于 07-11 17:18 ?661次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b><b class='flag-5'>連載</b>03~<b class='flag-5'>約束</b>步驟總結(jié)

    時序約束連載02~時序例外

    本文繼續(xù)講解時序約束的第四大步驟——時序例外
    的頭像 發(fā)表于 07-11 17:17 ?734次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b><b class='flag-5'>連載</b>02~<b class='flag-5'>時序</b>例外

    set_output_delay的本質(zhì)是什么?淺談set_ouput_delay時序

    set_output_delay是對模塊output信號在模塊外部延遲的約束,本質(zhì)上EDA工具會根據(jù)約束調(diào)整內(nèi)部器件(UFF0)的類型,擺放位置以及組合邏輯(C1)以滿足
    的頭像 發(fā)表于 08-12 09:48 ?2033次閱讀
    set_<b class='flag-5'>output_delay</b>的本質(zhì)是什么?淺談set_ouput_<b class='flag-5'>delay</b><b class='flag-5'>時序</b>