一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

XDC約束技巧之CDC篇

FPGA算法工程師 ? 來(lái)源:FPGA算法工程師 ? 2023-04-03 11:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

上一篇《XDC 約束技巧之時(shí)鐘篇》介紹了 XDC 的優(yōu)勢(shì)以及基本語(yǔ)法,詳細(xì)說(shuō)明了如何根據(jù)時(shí)鐘結(jié)構(gòu)和設(shè)計(jì)要求來(lái)創(chuàng)建合適的時(shí)鐘約束。我們知道 XDC 與 UCF 的根本區(qū)別之一就是對(duì)跨時(shí)鐘域路徑(CDC)的缺省認(rèn)識(shí)不同,那么碰到 FPGA 設(shè)計(jì)中常見(jiàn)的 CDC 路徑,到底應(yīng)該怎么約束,在設(shè)計(jì)上又要注意些什么才能保證時(shí)序報(bào)告的準(zhǔn)確性?

CDC的的定義與分類

CDC 是 Clock DomainCrossing 的簡(jiǎn)稱,CDC 時(shí)序路徑指的是起點(diǎn)和終點(diǎn)由不同時(shí)鐘驅(qū)動(dòng)的路徑。在電路設(shè)計(jì)中對(duì)這些跨時(shí)鐘域路徑往往需要進(jìn)行特別的處理來(lái)避免亞穩(wěn)態(tài)的產(chǎn)生,例如使用簡(jiǎn)單同步器、握手電路或是 FIFO 來(lái)隔離。

安全的CDC路徑

所謂安全的 CDC 路徑是指那些源時(shí)鐘和目標(biāo)時(shí)鐘擁有相同的來(lái)源,在 FPGA 內(nèi)部共享部分時(shí)鐘網(wǎng)絡(luò)的時(shí)序路徑。這里的安全指的是時(shí)鐘之間的關(guān)系對(duì) Vivado來(lái)說(shuō)是全透明可分析的。

dd85dd44-d08d-11ed-bfe3-dac502259ad0.png

不安全的CDC路徑

不安全的 CDC 路徑則表示源時(shí)鐘和目標(biāo)時(shí)鐘不同,且由不同的端口進(jìn)入 FPGA,在芯片內(nèi)部不共享時(shí)鐘網(wǎng)絡(luò)。這種情況下,Vivado 的報(bào)告也只 是基于端口處創(chuàng)建的主時(shí)鐘在約束文件中所描述的相位和頻率關(guān)系來(lái)分析, 并不能代表時(shí)鐘之間真實(shí)的關(guān)系。

ddc8ff2a-d08d-11ed-bfe3-dac502259ad0.png

在 Vivado 中分析 CDC

在 ISE 中想要快速定位那些需要關(guān)注的 CDC 路徑并不容易,特別是要找到不安全的 CDC 時(shí),因?yàn)?ISE 缺省認(rèn)為所有來(lái)源不同的時(shí)鐘都不相關(guān)且不做分析,要報(bào)告出這類路徑,需要使用 ISE Timing Analyzer (TRCE) ,并加上 “-u” (表示 unconstrained)這個(gè)選項(xiàng)。

在 Vivado 中則容易許多,我們可以使用report_clock_interaction 命令(GUI 支持)來(lái)鑒別和報(bào)告設(shè)計(jì)中 所有的時(shí)鐘關(guān)系。執(zhí)行命令后會(huì)生成一個(gè)矩陣圖,其中對(duì)角線上的路徑表示源時(shí)鐘與目標(biāo)時(shí)鐘相同的時(shí)鐘內(nèi)部路徑,其余都是 CDC 路徑。

Vivado 還會(huì)根據(jù)網(wǎng)表和已讀入的約束分析出 CDC 路徑的約束情況,并分顏色表示。例如綠色代表有時(shí)序約束,紅色代表不安全的 CDC 路徑但是沒(méi)有約束時(shí)序例外,橙色表示有部分路徑已約束為 false path 的不安 全 CDC 路徑。

ddf510e2-d08d-11ed-bfe3-dac502259ad0.png

矩陣下方是時(shí)鐘關(guān)系表格,可以就各種條件進(jìn)行篩選和排序,方便定位 CDC 路徑。建議的做法是:首先,對(duì)“Common Primary Clock”排序(顯示為 Yes 或 No),這么做可以快速鑒別出那些安全和不安全的 CDC 路徑,接著觀察對(duì)應(yīng)的“Inter-Clock Constraints”欄內(nèi)的內(nèi)容,判斷已讀入的XDC 中是否對(duì)這類路徑進(jìn)行了合理的約束。

de1c99f0-d08d-11ed-bfe3-dac502259ad0.png

第二步,可以對(duì)“Path Req (WNS)”由小到大進(jìn)行排序,找到那些數(shù)值特別?。ɡ缧∮?100ps)或是顯示 為“Unexpanded”的 CDC 路徑,結(jié)合是否共享“CommonPrimary Clock”來(lái)鑒別此類路徑,作出合理的約束。

過(guò)小的 Path Req (WNS)一般都表示此類跨時(shí)鐘域路徑缺少異步時(shí)鐘關(guān)系或其它時(shí)序例外的約束,如果兩 個(gè)時(shí)鐘連“Common Primary Clock”也不共享,則 100%可以確認(rèn)為異步時(shí)鐘,應(yīng)該加上相應(yīng)的時(shí)鐘關(guān)系約束。

顯示為“Unexpanded”的時(shí)鐘關(guān)系,表示 Vivado 在一定長(zhǎng)度(缺省為 1000)的周期內(nèi)都沒(méi)有為兩個(gè)時(shí)鐘的頻率和相位找到固定的關(guān)系,則無(wú)法推導(dǎo)出相應(yīng)的 Path Req 約束值。此類 CDC 需要特別留意,也要加上異 步時(shí)鐘關(guān)系約束。

這個(gè)矩陣還支持交互式的時(shí)序分析,選中任意一個(gè)方框,右鍵顯示下拉菜單:選擇 Report Timing,會(huì)報(bào) 告出這一格代表的時(shí)鐘域(本時(shí)鐘域或是跨時(shí)鐘域)內(nèi)最差的時(shí)序路徑;選擇Set Clock Groups 則可以設(shè)置時(shí)鐘關(guān)系約束并添加到 XDC 文件中。

CDC 的設(shè)計(jì)與約束

CDC 路徑在 FPGA 設(shè)計(jì)中普遍存在,在設(shè)置 相應(yīng)的約束前,必須了解設(shè)計(jì)中采取了怎樣的方法來(lái)處理跨時(shí)鐘域路徑。

簡(jiǎn)單同步器

對(duì)于單根跨時(shí)鐘域路徑,一般采用簡(jiǎn)單同步器(Simple Synchronizer),就是由至少兩級(jí) CE 端 和 Reset/Clear 端接死的寄存器序列來(lái)處理。

de765e86-d08d-11ed-bfe3-dac502259ad0.png

這種情況下,為了更長(zhǎng)的平均無(wú)故障時(shí)間 MTBF(Mean Time Between Failures),需要配合一個(gè) ASYNC_REG的約束,把用作簡(jiǎn)單同步器的多個(gè)寄存器放入同一個(gè) SLICE,以降低走線延時(shí)的不一致和不確定性。

set_property ASYNC_REG TRUE [get_cells [list sync0_reg sync1_reg]]

在 XDC 中,對(duì)于此類設(shè)計(jì)的 CDC 路徑,可以采用 set_clock_groups 來(lái)約束。

dea2c372-d08d-11ed-bfe3-dac502259ad0.png

用 FIFO 隔離 CDC

在總線跨時(shí)鐘域的設(shè)計(jì)中,通常會(huì)使用異步 FIFO 來(lái)隔離。根據(jù) FIFO 的實(shí)現(xiàn)方式不同,需要加入不同的 XDC 約束。

Build-in 硬核 FIFO

這種 FIFO 實(shí)際上就是用 FPGA 內(nèi)部的 BRAM 來(lái)搭建,所有控制邏輯都在 BRAM 內(nèi)部,是推薦的 FIFO 實(shí)現(xiàn)方式。其所需的 XDC 也相對(duì)簡(jiǎn)單,只要像上述簡(jiǎn)單同步器的時(shí)鐘關(guān)系約束一樣用 set_clock_groups 將讀寫時(shí)鐘約束為異步即可。

帶有格雷碼控制的 FIFO

為了在亞穩(wěn)態(tài)下做讀寫指針抽樣也能正確判斷空滿狀態(tài),設(shè)計(jì)中也常用一種帶有格雷碼控制的 FIFO 來(lái)實(shí)現(xiàn)異步時(shí)鐘域的隔離。計(jì)數(shù)器和讀寫指針等需要用 BRAM 外部的邏輯搭建,這樣的結(jié)構(gòu)就不能簡(jiǎn)單約束 set_clock_groups,還要考慮這些外部邏輯如何約束。

如下圖所示 FIFO,在存儲(chǔ)器外部有一些用 FPGA 邏輯搭建的寫指針和讀指針控制,分屬不同的時(shí)鐘域,存在跨時(shí)鐘域的時(shí)序路徑。

此時(shí)如果僅將讀寫時(shí)鐘用 set_clock_groups 約束為異步時(shí)鐘,相當(dāng)于設(shè)置從 A 到 B 和從 B 到 A 的路徑全部為 false path。根據(jù)《XDC 約束技巧之時(shí)鐘篇》所列,false path 的優(yōu)先級(jí)最高,很顯然這么做會(huì)導(dǎo)致所有 跨讀寫時(shí)鐘域的路徑全部不做時(shí)序分析,讀寫指針和相關(guān)控制邏輯也就失去了存在的意義。

def40aac-d08d-11ed-bfe3-dac502259ad0.png

所以建議的做法是不設(shè) set_clock_groups 約束,轉(zhuǎn)而采用 set_max_delay 來(lái)約束這些跨時(shí)鐘域路徑。以寫入側(cè)舉例,一個(gè)基本的原則就是約束從 cell1 到 cell2 的路徑之間的延時(shí)等于或略小于 cell2 的驅(qū)動(dòng)時(shí)鐘一個(gè)周期的值。讀出側(cè)的約束同理。

set_max_delay $delay –from [get_cells cell1] –to [get_cells cell2] –datapath_only

如果用戶使用 Vivado 的 IP Catalog 來(lái)產(chǎn)生此類FIFO,這樣的 XDC 會(huì)隨 IP 的源代碼一起輸出(如下所示),使用者僅需注意確保這個(gè) FIFO 的讀寫時(shí)鐘域沒(méi)有被用戶自己的 XDC 約束為 false path 或是異步 clock groups 。

df2f620a-d08d-11ed-bfe3-dac502259ad0.png

自 2013.4 開始,Vivado 中還提供一個(gè)稱作 methodology_checks 的 DRC 檢查,其中包含有對(duì)此類異步FIFO 的 max delay 約束與時(shí)鐘域 clock groups 約束的沖突檢查。

CDC 約束方案的對(duì)比

CDC 路徑在 FPGA 設(shè)計(jì)中普遍存在,不少公司和研發(fā)人員都有自己偏愛(ài)的約束方式,這些方式通常有各自適用的環(huán)境,當(dāng)然也各有利弊。

全部忽略的約束

最大化全部忽略 CDC 路徑的約束,即采用 set_clock_groups 或是 set_false_path 對(duì)時(shí)鐘關(guān)系進(jìn)行約束, 從而對(duì)跨時(shí)鐘域的路徑全部忽略。

示例:set_clock_groups -asynchronous -group clkA -group clkB

優(yōu)勢(shì):簡(jiǎn)單、快速、執(zhí)行效率高。

劣勢(shì):會(huì)掩蓋時(shí)序報(bào)告中所有的跨時(shí)鐘域路徑,容易誤傷,不利于時(shí)序分析。

使用 datapath_only 約束

datapath_only 是從 ISE 時(shí)代的 UCF 中繼承過(guò)來(lái)的約束,在 XDC 中必須作為一個(gè)選項(xiàng)跟 set_max_delay 配合使用,可以約束在時(shí)鐘之間,也可以對(duì)具體路徑進(jìn)行約束。

示例:set_max_delay 10 -datapath_only -from clkA -to clkB

優(yōu)勢(shì):簡(jiǎn)便、執(zhí)行效率較高。

劣勢(shì):1) 需要特別留意是否設(shè)置了過(guò)于嚴(yán)格的約束,因?yàn)槭褂谜呓?jīng)常會(huì)使用較快的時(shí)鐘周期來(lái)約束跨時(shí)鐘域路徑 。2) 注意約束優(yōu)先級(jí)的關(guān)系,是否跟設(shè)計(jì)中其它的約束有沖突。3) set_max_delay 而沒(méi) 有配套設(shè)置 set_min_delay 的情況下,同一路徑只做 setup 分析而不做 hold 分析。

逐條進(jìn)行時(shí)序例外約束

對(duì)設(shè)計(jì)中的 CDC 路徑分組或逐條分析,采用不同的時(shí)序例外約束,如 set_false_path,set_max_delay 和 set_multicycle_path 等來(lái)約束。

示例:set_false_path -from [get_cells a/b/c/*_meta*] -to [get_cellsa/b/c/*_sync*]

優(yōu)勢(shì):靈活、針對(duì)性好、便于時(shí)序分析和調(diào)試。

劣勢(shì):1) 逐條約束會(huì)占用大量時(shí)間來(lái)調(diào)試和分析,效率低下。2) 時(shí)序例外的優(yōu)先級(jí)比較復(fù)雜,多種時(shí)序例外約束共存的情況下,很容易產(chǎn)生意想不到的沖突,進(jìn)一步增加調(diào)試時(shí)間,降低效率。3) 這么做極容易產(chǎn)生臃腫的 XDC 約束文件,而且時(shí)序例外的執(zhí)行更耗內(nèi)存,直接導(dǎo)致工具運(yùn)行時(shí)間變長(zhǎng)。

小結(jié)

CDC 路徑的分析和約束不僅在FPGA 設(shè)計(jì)中至關(guān)重要,也是數(shù)字電路設(shè)計(jì)領(lǐng)域一個(gè)非常重要的命題。IP 提供商、EDA 公司都有不少關(guān)于 CDC 的技術(shù)文檔。Vivado 相比于 Xilinx 上一代產(chǎn)品 ISE,已經(jīng)在 CDC 的鑒別和分析方面有了很大改進(jìn),XDC 相比于 UCF,在 CDC 路徑的約束上也更為高效,覆蓋率更高。

希望本篇短文可以幫助 Vivado 的用戶快速掌握對(duì) FPGA 設(shè)計(jì)中 CDC 路徑的鑒別、分析和約束方法,提高設(shè)計(jì)效率。

審核編輯:湯梓紅

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

    關(guān)注

    1644

    文章

    22007

    瀏覽量

    616375
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1891

    瀏覽量

    133016
  • 約束
    +關(guān)注

    關(guān)注

    0

    文章

    82

    瀏覽量

    12940
  • UCF
    UCF
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    10027
  • xdc
    xdc
    +關(guān)注

    關(guān)注

    1

    文章

    24

    瀏覽量

    6033

原文標(biāo)題:XDC 約束技巧之CDC篇

文章出處:【微信號(hào):FPGA算法工程師,微信公眾號(hào):FPGA算法工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    關(guān)于XDC約束文件,你需要知道的幾點(diǎn)

    作者:?圓宵?FPGA那點(diǎn)事兒 在ISE時(shí)代,使用的是UCF約束文件。從Vivado開始,XDC成了唯一支持的約束標(biāo)準(zhǔn)。XDC除了遵循工業(yè)界的通行標(biāo)準(zhǔn)SDC(Synopsys Desi
    發(fā)表于 02-08 02:10 ?5608次閱讀

    FPGA設(shè)計(jì)約束技巧XDC約束I/O (上)

    從UCF到XDC的轉(zhuǎn)換過(guò)程中,最具挑戰(zhàn)的可以說(shuō)便是本文將要討論的I/O約束了。 I/O 約束的語(yǔ)法 XDC 中可以用于 I/O 約束的命令包
    發(fā)表于 11-17 18:54 ?1.3w次閱讀
    FPGA設(shè)計(jì)<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>I/O<b class='flag-5'>篇</b> (上)

    FPGA設(shè)計(jì)約束技巧XDC約束I/O(下)

    討論的I/O約束了。繼《XDC約束技巧I/O(上)》?詳細(xì)描述了如何設(shè)置Input接口約束
    發(fā)表于 11-17 19:01 ?7797次閱讀
    FPGA設(shè)計(jì)<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>I/O<b class='flag-5'>篇</b>(下)

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

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

    XDC路徑的鑒別、分析和約束方法

    我們知道XDC與UCF的根本區(qū)別之一就是對(duì)跨時(shí)鐘域路徑(CDC)的缺省認(rèn)識(shí)不同,那么碰到FPGA設(shè)計(jì)中常見(jiàn)的CDC路徑,到底應(yīng)該怎么約束,在設(shè)計(jì)上又要注意些什么才能保證時(shí)序報(bào)告的準(zhǔn)確性
    發(fā)表于 11-18 04:04 ?6661次閱讀
    <b class='flag-5'>XDC</b>路徑的鑒別、分析和<b class='flag-5'>約束</b>方法

    XDC約束及物理約束的介紹

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

    如何將Altera的SDC約束轉(zhuǎn)換為Xilinx XDC約束

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

    CDC設(shè)計(jì)和約束技巧

    建議的做法是:首先,對(duì)“Common Primary Clock”排序(顯示為Yes 或No),這么做可以快速鑒別出那些安全和不安全的CDC路徑,接著觀察對(duì)應(yīng)的“Inter-Clock Constraints”欄內(nèi)的內(nèi)容,判斷已讀入的XDC中是否對(duì)這類路徑進(jìn)行了合理的
    的頭像 發(fā)表于 07-24 17:19 ?6069次閱讀
    <b class='flag-5'>CDC</b>設(shè)計(jì)和<b class='flag-5'>約束</b>技巧

    XDC時(shí)鐘約束的三種基本語(yǔ)法

    XDC 是 Xilinx Design Constraints 的簡(jiǎn)寫,但其基礎(chǔ)語(yǔ)法來(lái)源于業(yè)界統(tǒng)一的約束規(guī)范SDC。XDC 在本質(zhì)上就是 Tcl 語(yǔ)言,但其僅支持基本的 Tcl 語(yǔ)法如變量、列表
    的頭像 發(fā)表于 01-30 17:29 ?1w次閱讀

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

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

    FPGA知識(shí)xdc約束優(yōu)先級(jí)

    xdc約束優(yōu)先級(jí) 在xdc文件中,按約束的先后順序依次被執(zhí)行,因此,針對(duì)同一個(gè)時(shí)鐘的不同約束,只有最后一條
    的頭像 發(fā)表于 11-16 17:37 ?2211次閱讀

    Vivado中XDC文件的約束順序

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

    XDC約束技巧之時(shí)鐘

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

    XDC約束技巧I/O(上)

    XDC 約束技巧之時(shí)鐘》中曾對(duì) I/O 約束做過(guò)簡(jiǎn)要概括,相比較而言,XDC 中的 I/O 約束
    的頭像 發(fā)表于 04-06 09:53 ?1866次閱讀

    XDC約束技巧I/O(下)

    繼《XDC 約束技巧 I/O (上)》詳細(xì)描述了如何設(shè)置 Input 接口 約束后,我們接著來(lái)聊聊怎樣設(shè)置 Output 接口
    的頭像 發(fā)表于 04-10 11:00 ?1580次閱讀