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

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

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

CDC設計和約束技巧

Xilinx賽靈思官微 ? 來源:djl ? 作者:周麗娜 ? 2019-07-24 17:19 ? 次閱讀

CDC的定義與分類

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

安全的CDC路徑

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

CDC設計和約束技巧

不安全的CDC路徑

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

CDC設計和約束技巧

在Vivado中分析CDC

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

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

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

CDC設計和約束技巧

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

CDC設計和約束技巧

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

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

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

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

CDC的設計與約束

CDC路徑在FPGA設計中普遍存在,在設置相應的約束前,必須了解設計中采取了怎樣的方法來處理跨時鐘域路徑。

簡單同步器

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

CDC設計和約束技巧

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

set_property ASYNC_REG TRUE [get_cells [list sync0_reg sync1_reg]]

在XDC中,對于此類設計的CDC路徑,可以采用set_clock_groups來約束。

CDC設計和約束技巧

set_clock_groups -asynchronous -group [get_clocks -include_generated_clocks clk_oxo ] \

-group [get_clocks -include_generated_clocks clk_core ]

用FIFO隔離CDC

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

Build-in硬核FIFO

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

帶有格雷碼控制的FIFO

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

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

CDC設計和約束技巧

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

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

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

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

CDC設計和約束技巧

set_max_delay -from [get_cells …../rd_pntr_gc_reg[*]] -to [get_cells …../Q_reg_reg[*]] \

-datapath_only [get_property PERIOD $rd_clock]

set_max_delay -from [get_cells …../wr_pntr_gc_reg[*]] -to [get_cells …../Q_reg_reg[*]] \

-datapath_only [get_property PERIOD $wr_clock]

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

CDC約束方案的對比

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

全部忽略的約束

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

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

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

劣勢:會掩蓋時序報告中所有的跨時鐘域路徑,容易誤傷,不利于時序分析。

使用datapath_only約束

datapath_only是從ISE時代的UCF中繼承過來的約束,在XDC中必須作為一個選項跟set_max_delay配合使用,可以約束在時鐘之間,也可以對具體路徑進行約束。

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

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

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

逐條進行時序例外約束

對設計中的CDC路徑分組或逐條分析,采用不同的時序例外約束,如set_false_path,set_max_delay和set_multicycle_path等來約束。

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

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

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

小結(jié)

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

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

---> END <---

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

    關(guān)注

    0

    文章

    82

    瀏覽量

    12708
  • 時序設計
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    43923
收藏 人收藏

    評論

    相關(guān)推薦

    FPGA User Guide之report_cdc

    report_cdc 可以報告設計中所有的 cdc 路徑并將其分類(前提是時鐘被約束好),我們可以基于該報告來檢查設計中是否有不安全的 cdc 路徑。
    發(fā)表于 11-28 10:53 ?1169次閱讀

    Foreach對Associative Array的constraint約束問題記錄分享

    systemverilog constraint中的foreach可以對數(shù)組進行遍歷和約束,常用于普通數(shù)組,隊列或者動態(tài)數(shù)組。
    的頭像 發(fā)表于 08-21 09:31 ?1144次閱讀
    Foreach對Associative Array的constraint<b class='flag-5'>約束</b>問題記錄分享

    求16.5安裝方法和約束設置

    求16.5安裝方法和約束設置
    發(fā)表于 05-24 22:32

    時序約束資料包

    、Vivado基本操作流程2、時序基本概念3、時序基本約束和流程4、Baselining時序約束5、CDC時序約束6、I/O時序7、例外時序約束
    發(fā)表于 08-01 16:45

    我的verilog代碼和約束文件出錯該怎么辦?

    變化,輸出頻率在輸出時為漿果高(> 1MHz)我看到一個等于我的時鐘幅度的恒定電壓。下面是我的verilog代碼和約束文件,可以;有人幫助我理解可能出錯的地方模塊main1(TX1,TX40
    發(fā)表于 08-01 09:38

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

    XDC中的I/O約束雖然形式簡單,但整體思路和約束方法卻與UCF大相徑庭。加之FPGA的應用特性決定了其在接口上有多種構(gòu)建和實現(xiàn)方式,所以從UCF到XDC的轉(zhuǎn)換過程中,最具挑戰(zhàn)的可以說便是本文將要
    發(fā)表于 11-17 19:01 ?7270次閱讀
    FPGA設計<b class='flag-5'>約束</b>技巧之XDC<b class='flag-5'>約束</b>之I/O篇(下)

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

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

    基于約束的沖突檢測模型

    針對協(xié)同設計沖突無法準確全面檢測的問題,提出了一種基于約束的沖突檢測模型。在分析了協(xié)同設計中約束分層和約束滿足問題的基礎上,該檢測模型將約束劃分為已知
    發(fā)表于 01-05 11:30 ?1次下載
    基于<b class='flag-5'>約束</b>的沖突檢測模型

    各型號的DSPBIOS線程同步原語以及相關(guān)的問題和約束

    通過信號量和鎖提供形式排除的方法。 您選擇的機制取決于需要同步的線程類型。該應用程序說明描述了各種DSP/BIOS線程同步原語以及相關(guān)的問題和約束。
    發(fā)表于 05-03 09:24 ?4次下載
    各型號的DSPBIOS線程同步原語以及相關(guān)的問題<b class='flag-5'>和約束</b>

    如何輕松管理PCB設計規(guī)則和約束

    目前,PCB 電氣和制造約束的數(shù)量和復雜性不斷激增。參加這次研討會可了解如何輕松管理您的設計規(guī)則和約束。我們將詳細介紹如何為網(wǎng)絡、網(wǎng)絡類和間距組合創(chuàng)建約束,如何建立規(guī)則層級構(gòu)等。
    的頭像 發(fā)表于 05-16 06:05 ?3353次閱讀
    如何輕松管理PCB設計規(guī)則<b class='flag-5'>和約束</b>

    如何輕松地管理您的設計規(guī)則和約束

    參加這次研討會,學習如何輕松地管理您的設計規(guī)則和約束。我們將研究如何創(chuàng)建約束網(wǎng)、網(wǎng)類、和間隙集,如何建立規(guī)則的層次結(jié)構(gòu),等等。
    的頭像 發(fā)表于 10-12 07:10 ?2536次閱讀

    淺談PCB設計系統(tǒng)中的設計規(guī)則和約束

    PCB設計取決于一套規(guī)則和約束條件,這些規(guī)則和約束條件決定了電路板的布局方式。這些規(guī)則涵蓋了各個方面,從組件之間的緊密程度到特定網(wǎng)絡的布線厚度。但是,成功的唯一方法是為每個作業(yè)專門設計規(guī)則。以前可行
    的頭像 發(fā)表于 01-13 13:32 ?3950次閱讀

    射頻連接器的高功率射頻和微波被動考慮因素和約束資料下載

    電子發(fā)燒友網(wǎng)為你提供射頻連接器的高功率射頻和微波被動考慮因素和約束資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-15 08:54 ?15次下載
    射頻連接器的高功率射頻和微波被動考慮因素<b class='flag-5'>和約束</b>資料下載

    XDC約束技巧之CDC

    上一篇《XDC 約束技巧之時鐘篇》介紹了 XDC 的優(yōu)勢以及基本語法,詳細說明了如何根據(jù)時鐘結(jié)構(gòu)和設計要求來創(chuàng)建合適的時鐘約束。我們知道 XDC 與 UCF 的根本區(qū)別之一就是對跨時鐘域路徑(CDC
    的頭像 發(fā)表于 04-03 11:41 ?1961次閱讀

    CDC跨時鐘域處理及相應的時序約束

    CDC(Clock Domain Conversion)跨時鐘域分單bit和多bit傳輸
    的頭像 發(fā)表于 06-21 14:59 ?1728次閱讀