本篇博文中的分析是根據(jù)客戶(hù)真實(shí)問(wèn)題撰寫(xiě)的,該客戶(hù)發(fā)現(xiàn)即使時(shí)序已得到滿(mǎn)足的情況下,硬件功能仍出現(xiàn)錯(cuò)誤。最后發(fā)現(xiàn),問(wèn)題與時(shí)鐘域交匯 (Clock Domain Crossing) 有關(guān),因此,本篇博文介紹了如何調(diào)試設(shè)計(jì)中的時(shí)鐘域交匯問(wèn)題。
問(wèn)題說(shuō)明:
在此設(shè)計(jì)中,用戶(hù)生成了比特流并將其用于器件編程,在硬件上進(jìn)行測(cè)試時(shí),用戶(hù)發(fā)現(xiàn)少量時(shí)鐘域上無(wú)法獲得期望的功能。
用戶(hù)對(duì)行為仿真和實(shí)現(xiàn)后仿真進(jìn)行了測(cè)試,發(fā)現(xiàn)信號(hào)上可得到正確的結(jié)果。
同時(shí),這些用戶(hù)未發(fā)現(xiàn)任何種類(lèi)的時(shí)序違例,所有值均為正值,如“設(shè)計(jì)時(shí)序匯總 (Design Timing Summary)” 中所示。
注:您可使用以下選項(xiàng)自行檢查設(shè)計(jì)的時(shí)序匯總信息:
■ 在 Vivado GUI 中,轉(zhuǎn)至“報(bào)告 (Reports)”選項(xiàng)卡 -》“時(shí)序 (Timing)”-》“時(shí)序匯總報(bào)告 (Report Timing Summary)”
■運(yùn)行以下 Tcl 命令:
report_timing_summary -file 《filepath》/timingreport.txt
根本原因:
硬件功能問(wèn)題背后可能存在多種原因。
包括缺少時(shí)鐘域交匯 (CDC) 同步器、時(shí)鐘拓?fù)淝穬?yōu)化、時(shí)鐘結(jié)構(gòu)中使用了組合邏輯、亞穩(wěn)態(tài)以及經(jīng)典的未約束路徑問(wèn)題。
要檢查與時(shí)鐘/架構(gòu)/CDC 等相關(guān)的警告/嚴(yán)重警告,可使用方法論報(bào)告。
要在 Vivado GUI 中打開(kāi)方法論報(bào)告,請(qǐng)轉(zhuǎn)至“報(bào)告 (Report)”選項(xiàng)卡 -》“方法論報(bào)告 (Report Methodology)”,或者在 Tcl 控制臺(tái) (Tcl console) 中,使用 report_methodology。
報(bào)告打開(kāi)后,您可能會(huì)看到幾條與設(shè)計(jì)相關(guān)的警告和嚴(yán)重警告,需您進(jìn)行檢查。
在此示例中,報(bào)告中顯示了幾條警告,這些警告與 CDC 相關(guān)的錯(cuò)誤實(shí)踐有關(guān)(這些警告的 ID 為 Timing-9 和 Timing-10),如下所示。
這些警告聲稱(chēng)工具經(jīng)由約束語(yǔ)句(例如,set_false_path 或 set_clock_groups)的使用,在 2 個(gè)時(shí)鐘域之間檢測(cè)到一個(gè)或多個(gè)異步時(shí)鐘域交匯。
但它在捕獲時(shí)鐘端未找到任何雙寄存器邏輯同步器。因此,它建議用戶(hù)運(yùn)行 report_CDC 并對(duì)這些 CDC 路徑執(zhí)行進(jìn)一步分析。
要在 Vivado GUI 中打開(kāi) CDC 報(bào)告,請(qǐng)轉(zhuǎn)至“報(bào)告 (Report)”選項(xiàng)卡 -》 “時(shí)序 (Timing)”-》“CDC 報(bào)告 (Report CDC)”?;蛘撸稍?Tcl 控制臺(tái)中運(yùn)行 report_cdc 命令。
請(qǐng)參閱 (UG906) 以獲取有關(guān)閱讀此 CDC 報(bào)告的詳細(xì)指南。
CDC 報(bào)告顯示在發(fā)生硬件功能錯(cuò)誤的時(shí)鐘域內(nèi)存在不安全的未知 CDC 端點(diǎn)(如下所示)。請(qǐng)參閱 (UG906) 以了解此報(bào)告命名法。
如何解決這些警告/嚴(yán)重警告?
1) (UG906)包含有關(guān)這些警告以及其它時(shí)序方法論檢查的詳細(xì)說(shuō)明。請(qǐng)?jiān)敳槠渲刑峁┑氖纠?,以理解每一?xiàng)警告及其根本原因。您可通過(guò)添加適當(dāng)?shù)耐诫娐罚ㄍㄟ^(guò)修改 RTL 或者使用賽靈思可參數(shù)化宏 (XPM))來(lái)相應(yīng)改善設(shè)計(jì)。
2) 您可能還需要相應(yīng)添加或修改約束,或者在 RTL 源代碼中為 CDC 端點(diǎn)添加 ASYNC_REG 屬性。(您還可參閱(UG906)以便詳細(xì)了解 CDC 拓?fù)浣Y(jié)構(gòu)。)
3) 對(duì)于偽靜態(tài)寄存器接口,最好將 CDC 接口豁免,而不是對(duì)其進(jìn)行過(guò)度設(shè)計(jì)。
如需獲取有關(guān)豁免以及如何創(chuàng)建豁免的更多信息,請(qǐng)參閱 (UG906)。
注:偽靜態(tài) CDC 寄存器接口為包含近似靜態(tài)的配置寄存器的 CDC 路徑。這些路徑初始化后可能不再改變,或者可能僅改變 1 次,因此用戶(hù)幾乎可以將其看作是靜態(tài)的。
結(jié)論
對(duì) CDC 路徑完成必要修改后,客戶(hù)得以成功通過(guò)硬件的功能測(cè)試。
編輯:jq
-
寄存器
+關(guān)注
關(guān)注
31文章
5421瀏覽量
123308 -
RTL
+關(guān)注
關(guān)注
1文章
388瀏覽量
60661 -
CDC
+關(guān)注
關(guān)注
0文章
57瀏覽量
18131
原文標(biāo)題:開(kāi)發(fā)者分享 | 使用方法論報(bào)告 1:時(shí)序已滿(mǎn)足,但硬件功能出現(xiàn)錯(cuò)誤
文章出處:【微信號(hào):gh_2d0d1910c28b,微信公眾號(hào):思佳訊SkyworksSolutions】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
FPGA設(shè)計(jì)中解決跨時(shí)鐘域的三大方案

如何處理好FPGA設(shè)計(jì)中跨時(shí)鐘域問(wèn)題?
如何處理好FPGA設(shè)計(jì)中跨時(shí)鐘域間的數(shù)據(jù)
基于多時(shí)鐘域的異步FIFO設(shè)計(jì)
關(guān)于FPGA中跨時(shí)鐘域的問(wèn)題分析
由于時(shí)鐘域交匯處理不當(dāng)所導(dǎo)致罕見(jiàn)的比特翻轉(zhuǎn)
如何調(diào)試設(shè)計(jì)中的時(shí)鐘域交匯問(wèn)題

CDC跨時(shí)鐘域的基礎(chǔ)概念
CDC跨時(shí)鐘域的基礎(chǔ)概念介紹
跨時(shí)鐘域CDC之全面解析
跨時(shí)鐘域處理方式

fpga跨時(shí)鐘域通信時(shí),慢時(shí)鐘如何讀取快時(shí)鐘發(fā)送過(guò)來(lái)的數(shù)據(jù)?
如何處理跨時(shí)鐘域這些基礎(chǔ)問(wèn)題

評(píng)論