日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > ZYNQ


01


CDC的定義與分類



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


安全的CDC路徑

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


不安全的CDC路徑

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


在Vivado中分析CDC

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

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

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

矩陣下方是時(shí)鐘關(guān)系表格,可以就各種條件進(jìn)行篩選和排序,方便定位CDC路徑。建議的做法是:

首 先,對“Common Primary Clock”排序(顯示為Yes或 No),這么做可以快速鑒別出那些安全和不安全的CDC路徑,接著觀察對應(yīng)的“Inter-Clock Constraints”欄內(nèi)的內(nèi)容,判斷已讀入的XDC中是否對這類路徑進(jìn)行了合理的約束。

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

過小的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在一定長度(缺省為1000)的周期內(nèi)都沒有為兩個(gè)時(shí)鐘的頻率和相位找到固定的關(guān)系,則無法推導(dǎo)出相應(yīng)的Path Req約束值。此類CDC需要特別留意,也要加上異步時(shí)鐘關(guān)系約束。

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


02


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



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


簡單同步器

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

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

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


用FIFO隔離CDC

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


  • Build-in 硬核 FIFO

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


  • 帶有格雷碼控制的FIFO

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


如下圖所示FIFO,在存儲器外部有一些用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)先級最高,很顯然這么做會導(dǎo)致所有跨讀寫時(shí)鐘域的路徑全部不做時(shí)序分析,讀寫指針和相關(guān)控制邏輯也就失去了存在的意義。

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

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

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


CDC約束方案的對比

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


  • 全部忽略的約束

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

示例:

set_clock_groups -asynchronous   -group clkA -group clkB

優(yōu)勢:

簡單、快速、執(zhí)行效率高。

劣勢:

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


  • 使用 datapath_only 約束

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

示例:

set_max_delay 10 -datapath_only -from clkA -to clkB

優(yōu)勢:

簡便、執(zhí)行效率較高。

劣勢:

1) 需要特別留意是否設(shè)置了過于嚴(yán)格的約束,因?yàn)槭褂谜呓?jīng)常會使用較快的時(shí)鐘周期來約束跨時(shí)鐘域路徑 。

2) 注意約束優(yōu)先級的關(guān)系,是否跟設(shè)計(jì)中其它的約束有沖突。

3) set_max_delay而沒有配套設(shè)置 set_min_delay的情況下,同一路徑只做 setup分析而不做hold分析。


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

對設(shè)計(jì)中的CDC路徑分組或逐條分析,采用不同的時(shí)序例外約束,

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)勢:

靈活、針對性好、便于時(shí)序分析和調(diào)試。

劣勢:

1) 逐條約束會占用大量時(shí)間來調(diào)試和分析,效率低下。

2) 時(shí)序例外的優(yōu)先級比較復(fù)雜,多種 時(shí)序例外約束共存的情況下,很容易產(chǎn)生意想不到的沖突,進(jìn)一步增加調(diào)試時(shí)間,降低效率。

3) 這么做極容易產(chǎn)生臃腫的XDC約束文件,而且時(shí)序例外的執(zhí)行更耗內(nèi)存,直接導(dǎo)致工具運(yùn)行時(shí)間變長。


小結(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 的用戶快速掌握對FPGA設(shè)計(jì)中CDC路徑的鑒別、分析和約束方法,提高設(shè)計(jì)效率。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉