色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

XDC約束技巧之時鐘篇

FPGA算法工程師 ? 來源:FPGA算法工程師 ? 2023-03-28 09:51 ? 次閱讀

Xilinx的新一代設計套件Vivado中引入了全新的約束文件 XDC,在很多規則和技巧上都跟上一代產品 ISE 中支持的 UCF 大不相同,給使用者帶來許多額外挑戰。Xilinx 工具專家告訴你,其實用好 XDC 很容易,只需掌握幾點核心技巧,并且時刻牢記:XDC 的語法其實就是 Tcl 語言。

XDC的優勢

XDC 是 XilinxDesign Constraints 的簡寫,但其基礎語法來源于業界統 一的約束規范 SDC(最早由 Synopsys 公司提出,故名 Synopsys Design Constraints) 。所以 SDC、XDC 跟 Vivado Tcl 的關系如下圖所示。

009600c4-ccd4-11ed-bfe3-dac502259ad0.png

XDC 在本質上就是 Tcl 語言,但其僅支持基本的 Tcl 語法如變量、列表和運算符等等,對其它復雜的循環以及文件 I/O 等語法可以通過在 Vivado 中 source 一個 Tcl 文件的方式來補充。(對 Tcl 話題感興趣的讀者可以參考作者的另一篇文章《Tcl 在 Vivado 中的應用》)XDC 與 UCF 的最主要區別有兩點:

1.XDC 可以像 UCF 一樣作為一個整體文件被工具讀入,也可以在實現過程中被當作一個個單獨的命令直接執行。這就決定了 XDC 也具有 Tcl 命令的特點,即后面輸入的約束在有沖突的情況下會覆蓋之前輸入的約束(時序例外的優先級會在下節詳述)。另外,不同于 UCF 是全部讀入再處理的方式,在 XDC 中,約束是讀一條執行一條,所以先后順序很重要,例如要設置 IO 約束之前,相對應的 clock 一定要先創建好。

2.UCF 是完全以 FPGA 的視角看問題,所以缺省認為所有的時鐘之間除非預先聲明是同步的,否則就視作異步而不做跨時鐘域時序分析;XDC 則恰恰相反,ASIC 世界的血緣背景決定了在其中,所有的時鐘缺省視作全同步,在沒有時序例外的情況下,工具會主動分析每一條跨時鐘域的路徑。

XDC的基本方法

XDC 的基本語法可以分為時鐘約束、I/O約束以及時序例外約束三大類。根據 Xilinx 的 UltraFast 設計方法 學中 Baseline 部分的建議(UG949 中有詳細介紹),對一個設計進行約束的先后順序也可以依照這三類約束依次進行。本文對可以在幫助文檔中查到的基本 XDC 語法不做詳細解釋,會將重點放在使用方法和技巧上。

時鐘約束

時鐘約束必須最早創建。對 7 系列 FPGA 來說,端口進來的時鐘以及 GT 的輸出 RXCLK/TXCLK 都必須 由用戶使用 create_clock 自主創建為主時鐘。如果是差分輸入的時鐘,可以僅僅在差分對的 P 側用 get_ports 獲取端口,并使用 create_clock 創建。例如,

00f4ef1c-ccd4-11ed-bfe3-dac502259ad0.png

Vivado 自動推導的衍生時鐘

MMCM/PLL/BUFR 的輸出作為衍生時鐘,可以由 Vivado 自動推導,無需用戶創建。自動推導的好處在于 當MMCM/PLL/BUFR 的配置改變而影響到輸出時鐘的頻率和相位時,用戶無需改寫約束,Vivado 仍然可以自 動推導出正確的頻率/相位信息。劣勢在于,用戶并不清楚自動推導出的衍生鐘的名字,當設計層次改變時,衍生鐘的名字也有可能改變。這樣就會帶來一個問題:用戶需要使用這些衍生鐘的名字來創建 I/O 約束、時鐘關系或是時序例外等約束時,要么不知道時鐘名字,要么時鐘名字是錯的。

01090006-ccd4-11ed-bfe3-dac502259ad0.png

推薦的做法是,由用戶來指定這類衍生時鐘的名字,其余頻率等都由 Vivado 自動推導。這樣就只需寫明 create_generated_clock 的三個 option,其余不寫即可。如上所示。

當然,此類情況下用戶也可以選擇完全由自己定義衍生時鐘,只需補上其余表示頻率/相位關系的 option, 包括-multiply_by 、-divide_by 等等。需要注意的是,一旦 Vivado 在 MMCM/PLL/BUFR 的輸出檢測到用戶自定義的衍生時鐘,就會報告一個 Warning,提醒用戶這個約束會覆蓋工具自動推導出的衍生時鐘(例外的情況見文章下半段重疊時鐘部分的描述),用戶須保證自己創建的衍生鐘的頻率等屬性正確。

用戶自定義的衍生時鐘

工具不能自動推導出衍生鐘的情況,包括使用寄存器和組合邏輯搭建的分頻器等,必須由用戶使用 create_generated_clock 來創建。舉例如下,

01292b10-ccd4-11ed-bfe3-dac502259ad0.png

I/O約束

在設計的初級階段,可以不加 I/O 約束,讓工具專注于滿足 FPGA 內部的時序要求。當時序要求基本滿足后,再加上 I/O 約束跑實現。XDC 中的 I/O 約束有以下幾點需要注意:

1.不加任何 I/O 約束的端口時序要求被視作無窮大。 2.XDC 中的 set_input_delay / set_output_delay 對應于 UCF 中 OFFSET IN / OFFSET OUT,但視角相反。 OFFSETIN / OFFSET OUT 是從 FPGA 內部延時的角度來約束端口時序,set_input_delay / set_output_delay 則是從系統角度來約束。 3.典型的 I/O 時序,包括系統同步、源同步、SDR 和 DDR 等等,在 Vivado 圖形界面的 XDC templates 中都有示例。2014.1 版后還有一個 Timing Constraints Wizard 可供使用。

時序例外約束

時序例外約束包括 set_max_delay/set_min_delay,set_multicycle_path,set_false_path 等,這類約束除 了要滿足 XDC 的先后順序優先級外,還受到自身優先級的限制。一個總的原則就是針對同一條路徑,對約束目標描述越具體的優先級越高。不同的時序例外約束以及同一約束中不同條件的優先級如下所示:

0141b432-ccd4-11ed-bfe3-dac502259ad0.png

舉例來說,依次執行如下兩條 XDC,盡管第二條較晚執行,但工具仍然認定第一條約束設定的 15 為 clk1 到 clk2 之間路徑的 max delay 值。

01649592-ccd4-11ed-bfe3-dac502259ad0.png

再比如,對圖示路徑依次進行如下四條時序例外約束,優勝者將是第二條。但如果再加入最后一條約束, false path 的優先級最高,會取代之前所有的時序例外約束。

0179ac52-ccd4-11ed-bfe3-dac502259ad0.png

高級時鐘約束

約束最終是為了設計服務,所以要用好 XDC 就需要深入理解電路結構和設計需求。接下來我們就以常見 FPGA 設計中的時鐘結構來舉例,詳細闡述 XDC 的約束技巧。

時序的零起點

用 create_clock 定義的主時鐘的起點即時序的“零起點”,在這之前的上游路徑延時都被工具自動忽略。所以主時鐘創建在哪個“點”很重要,以下圖所示結構來舉例,分別于 FPGA 輸入端口和 BUFG 輸出端口創建一個主時鐘,在時序報告中體現出的路徑延時完全不同,很明顯 sysclk_bad 的報告中缺少了之前一段的延時,時序報 告不可信。

01a0e628-ccd4-11ed-bfe3-dac502259ad0.png

01bcc104-ccd4-11ed-bfe3-dac502259ad0.png

定義時鐘的先后順序

時鐘的定義也遵從 XDC/Tcl 的一般優先級,即: 在同一個點上,由用戶定義的時鐘會覆蓋工具自動推導的時鐘,且后定義的時鐘會覆蓋先定義的時鐘。若要二者并存,必須使用 -add 選項。

01d9c74a-ccd4-11ed-bfe3-dac502259ad0.png

01f5e934-ccd4-11ed-bfe3-dac502259ad0.png

上述例子中 BUFG 的輸出端由用戶自定義了一個衍生鐘 clkbufg,這個衍生鐘便會覆蓋此處原有的 sysclk。此外,圖示 BUFR 工作在 bypass 模式,其輸出不會自動創建衍生鐘,但在 BUFR 的輸出端定義一個 衍生鐘 clkbufr,并使用 -add 和 -master_clock 選項后,這一點上會存在 sysclk 和 clkbufg 兩個重疊的時鐘。 如下的 Tcl 命令驗證了我們的推論。

02108078-ccd4-11ed-bfe3-dac502259ad0.png

同步時鐘和異步時鐘

不同于 UCF 約束,在 XDC 中,所有的時鐘都會被缺省認為是相關的,也就是說,網表中所有存在的時序路徑都會被 Vivado 分析。這也意味著 FPGA 設計人員必須通過約束告訴工具,哪些路徑是無需分析的,哪些時鐘域之間是異步的。

02330300-ccd4-11ed-bfe3-dac502259ad0.png

如上圖所示,兩個主時鐘 ssclkin 和 sysclk 由不同的端口進入 FPGA,再經由不同的時鐘網絡傳遞,要將它們設成異步時鐘,可以使用如下約束:

025b5a3a-ccd4-11ed-bfe3-dac502259ad0.png

其中,-include_generated_clocks 表示所有衍生鐘自動跟其主時鐘一組,從而與其它組的時鐘之間為異步關系。不加這個選項則僅僅將時鐘關系的約束應用在主時鐘層面。

重疊(單點多個)時鐘

重疊時鐘是指多個時鐘共享完全相同的時鐘傳輸網絡,例如兩個時鐘經過一個 MUX 選擇后輸出的時鐘,在有多種運行模式的設計中很常見。

如下圖所示,clk125 和 clk250 是 clkcore_buf 的兩個輸入時鐘,不約束時鐘關系的情況下,Vivado 會對圖示路徑做跨時鐘域(重疊時鐘之間)分析。這樣的時序報告即便沒有違例,也是不可信的,因為 clk125 和 clk250 不可能同時驅動這條路徑上的時序元件。這么做也會增加運行時間,并影響最終的實現效果。

0277a640-ccd4-11ed-bfe3-dac502259ad0.png

02a8ee3a-ccd4-11ed-bfe3-dac502259ad0.png

如果 clk125 和 clk250 除了通過 clkcore_buf 后一模一樣的扇出外沒有驅動其它時序元件,我們要做的僅僅 是補齊時鐘關系的約束。

02d569a6-ccd4-11ed-bfe3-dac502259ad0.png

在很多情況下,除了共同的扇出,其中一個時鐘或兩個都還驅動其它的時序元件,此時建議的做法是在 clkcore_buf 的輸出端上創建兩個重疊的衍生鐘,并將其時鐘關系約束為-physically_exclusive表示不可能同時通過。這樣做可以最大化約束覆蓋率,也是 ISE 和 UCF 中無法做到的。

02ebce62-ccd4-11ed-bfe3-dac502259ad0.png

其他高級約束

時鐘的約束是 XDC 的基礎,熟練掌握時鐘約束,也是 XDC 約束技巧的基礎。其它高級約束技巧,包括復雜的 CDC(Clock Domain Crossing)約束和接口時序(SDR、DDR、系統同步接口和源同步接口)約束等方面還有很多值得注意的地方。這一系列《XDC 約束技巧》文章還會繼續就上述所列方向分篇詳述,敬請關注作者的后續更新,以及 Xilinx 官方網站和中文論壇上的更多技術文章。

下一篇,將推出《XDC約束技巧之CDC篇》,歡迎閱讀。

審核編輯:湯梓紅

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

    關注

    73

    文章

    2175

    瀏覽量

    123676
  • 時鐘
    +關注

    關注

    11

    文章

    1809

    瀏覽量

    132521
  • 約束
    +關注

    關注

    0

    文章

    82

    瀏覽量

    12864
  • Vivado
    +關注

    關注

    19

    文章

    820

    瀏覽量

    67735
  • xdc
    xdc
    +關注

    關注

    1

    文章

    24

    瀏覽量

    5992

原文標題:XDC約束技巧之時鐘篇

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

收藏 1人收藏
  • jf_746416461

評論

相關推薦

FPGA時序案例分析之時鐘周期約束

時鐘周期約束,顧名思義,就是我們對時鐘的周期進行約束,這個約束是我們用的最多的約束了,也是最重要
的頭像 發表于 11-19 11:44 ?5853次閱讀
FPGA時序案例分析<b class='flag-5'>之時鐘</b>周期<b class='flag-5'>約束</b>

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

在FPGA設計中,時序約束對于電路性能和可靠性非常重要。在上一的文章中,已經詳細介紹了FPGA時序約束的主時鐘約束
發表于 06-12 17:29 ?3173次閱讀

時序約束之時鐘約束

1. 基本時鐘約束create_clock-period 40.000 -name REFCLK [get_ports ref_clk] 創建時鐘周期ns命名 名字連接端口
發表于 09-21 11:51

關于XDC約束文件,你需要知道的幾點

作者:?圓宵?FPGA那點事兒 在ISE時代,使用的是UCF約束文件。從Vivado開始,XDC成了唯一支持的約束標準。XDC除了遵循工業界的通行標準SDC(Synopsys Desi
發表于 02-08 02:10 ?5410次閱讀

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

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

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

討論的I/O約束了。繼《XDC約束技巧之I/O(上)》?詳細描述了如何設置Input接口約束后,我們接著來聊聊怎樣設置Output接口。
發表于 11-17 19:01 ?7647次閱讀
FPGA設計<b class='flag-5'>約束</b>技巧之<b class='flag-5'>XDC</b><b class='flag-5'>約束</b>之I/O<b class='flag-5'>篇</b>(下)

XDC時鐘約束及優勢

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

XDC約束及物理約束的介紹

觀看視頻,了解和學習有關XDC約束,包括時序,以及物理約束相關知識。
的頭像 發表于 01-07 07:10 ?6428次閱讀
<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設計軟件
的頭像 發表于 11-27 07:17 ?5288次閱讀

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

XDC 是 Xilinx Design Constraints 的簡寫,但其基礎語法來源于業界統一的約束規范SDC。XDC 在本質上就是 Tcl 語言,但其僅支持基本的 Tcl 語法如變量、列表
的頭像 發表于 01-30 17:29 ?9980次閱讀

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

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

Vivado中XDC文件的約束順序

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

XDC約束技巧之CDC

上一XDC 約束技巧之時鐘》介紹了 XDC 的優勢以及基本語法,詳細說明了如何根據
的頭像 發表于 04-03 11:41 ?2440次閱讀

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

XDC 約束技巧之時鐘》中曾對 I/O 約束做過簡要概括,相比較而言,XDC 中的 I/O
的頭像 發表于 04-06 09:53 ?1624次閱讀

XDC約束技巧之I/O(下)

繼《XDC 約束技巧之 I/O (上)》詳細描述了如何設置 Input 接口 約束后,我們接著來聊聊怎樣設置 Output 接口約束,并分
的頭像 發表于 04-10 11:00 ?1411次閱讀
主站蜘蛛池模板: 午夜噜噜噜私人影院在线播放 | 国产成人无码区免费内射一片色欲 | 久久re这里精品23 | 日韩 亚洲 欧美 中文 高清 | 日本全彩黄漫无遮挡 | 99久久久久精品国产免费麻豆 | 中文国产在线观看 | 国产一区二区在线观看免费 | 软糯白嫩双性受h | 精品国产90后在线观看 | 欧美69xxx| 思思久久99热只有频精品66 | 丰满的寡妇hd高清在线观看 | 草莓视频在线观看免费观看高清 | 午夜深情在线观看免费 | 久久精选视频 | 无码国产色欲XXXX视频 | 女生扒开下面 | 视频一区国产精戏刘婷30 | 99人精品福利在线观看 | 伊人久久综合影院首页 | 亚洲另类中文字幕 | 青青草国产精品久久 | 国产精品资源在线观看网站 | 第一次破女视频出血视频 | 日本内射精品一区二区视频 | 与嫂子同居的日子在线观看 | 久久久久久久久久毛片精品美女 | www.精品久久 | 闺蜜扒开我尿口使劲揉 | 毛篇片在线观看 | 亚洲人美女肛交真人全程 | 国产综合无码一区二区色蜜蜜 | blacked黑人战小美女 | 2017年伦理片免费观看 | 久久成人免费观看全部免费 | 国产亚洲精品福利视频 | 蜜桃成熟时2在线观看完整版hd | 四虎影视库永久免费 | 伊人精品国产 | 久久精品亚洲AV高清网站性色 |

電子發燒友

中國電子工程師最喜歡的網站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品