新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 揭開未擴(kuò)展時鐘的秘密

揭開未擴(kuò)展時鐘的秘密

作者: 時間:2016-10-16 來源:網(wǎng)絡(luò) 收藏

時鐘擴(kuò)展對使用賽靈思Vivado設(shè)計套件的工程師來說是一個很大的挑戰(zhàn),但不是一個不可逾越的障礙。

本文引用地址:http://butianyuan.cn/article/201610/308302.htm

隨著越來越多的賽靈思用戶開始使用Vivado®設(shè)計套件,部分用戶對未擴(kuò)展時鐘表示困惑。那么什么是未擴(kuò)展時鐘呢?他們是如何進(jìn)行關(guān)聯(lián)和計時的?應(yīng)對未擴(kuò)展時鐘的標(biāo)準(zhǔn)方法又是什么呢?下面讓我們來詳細(xì)探討一下這個問題,重點(diǎn)是探討確保設(shè)計人員使用正確的同步技術(shù)安全地穿越未擴(kuò)展時鐘之間的跨時鐘域(clock domain crossing)的方法。

隨著Vivado工具的推出,賽靈思現(xiàn)在能夠支持采用業(yè)界標(biāo)準(zhǔn)Synopsys設(shè)計約束(SDC)格式的時序約束。這是ISE設(shè)計套件工具處理時序方式上的重大轉(zhuǎn)變。Vivado套件最根本的區(qū)別在于所有時鐘在默認(rèn)條件下都彼此關(guān)聯(lián)。這樣在ISE中處于無約束狀態(tài)的時序路徑在Vivado設(shè)計套件中則處于受約束狀態(tài)。如果兩個時鐘之間不存在周期性關(guān)系,這種約束會造成非常嚴(yán)格的時序要求。

未擴(kuò)展時鐘是指在1,000個時鐘周期內(nèi)與另一個時鐘之間不存在周期性關(guān)系的時鐘。Vivado BFT 內(nèi)核范例設(shè)計即是體現(xiàn)未擴(kuò)展時鐘工作方式的良好途徑。

發(fā)起和捕獲

時序路徑從發(fā)起事件開始,由捕獲事件終止。發(fā)起事件發(fā)生在同步單元的時鐘從非工作狀態(tài)轉(zhuǎn)入工作狀態(tài)的時候。捕獲事件發(fā)生在下游的或者負(fù)責(zé)捕獲的同步單元的時鐘從非工作狀態(tài)轉(zhuǎn)入工作狀態(tài)的時候。從發(fā)起事件到捕獲事件之間所需的時間被稱為“路徑要求”,它代表自事件發(fā)起后到捕獲單元引腳處出現(xiàn)有效數(shù)據(jù)之間所需的時間。

如果發(fā)起時鐘和捕獲時鐘同時位于同一物理時鐘網(wǎng)中,路徑要求僅指時鐘周期。以250MHz時鐘為例,如果發(fā)起單元和捕獲單元的工作沿相同(上升沿對上升沿或下降沿對下降沿),那么發(fā)起事件和捕獲事件之間的時間間隔則恰好為4納秒。如果發(fā)起單元和捕獲單元的工作沿不同,路徑就必須按一半的時鐘頻率進(jìn)行時間計算。這就是時鐘的上升沿對下降沿或下降沿對上升沿轉(zhuǎn)換的情況,對一個250MHz的時鐘來說,對應(yīng)的就是2納秒的路徑要求。

在時鐘源(source clock)和時鐘目標(biāo)端(destination clock)非同一個時鐘的情況下,時序問題就變得更加復(fù)雜。具有不同時鐘源和時鐘目標(biāo)端的時序路徑被稱為跨時鐘域(CDC)路徑。

1.jpg

圖1:擴(kuò)展時鐘的TCL腳本

如果發(fā)起時鐘和捕獲時鐘之間的相位關(guān)系未知,就無法計算路徑要求。由于不確定相位關(guān)系,則無法準(zhǔn)確確定路徑時序。不安全時鐘在Vivado設(shè)計套件生成的時鐘交互報告中會突出顯示。在發(fā)起時鐘和捕獲時鐘之間的相位關(guān)系已知的情況下,只要兩個時鐘之間存在周期性關(guān)系,就可以用數(shù)學(xué)方法推導(dǎo)出路徑要求。用于判斷給定發(fā)起時鐘和捕獲時鐘之間最低路徑要求的方法稱為時鐘擴(kuò)展。不過確定兩個時鐘之間是否存在周期性關(guān)系需要用實際限制加以約束,因為一般情況下兩個不同時鐘之間不存在共同的周期性特征。Vivado設(shè)計套件使用的實際限制條件是1,000個時鐘周期,以兩個時鐘中較小的時鐘周期為測量標(biāo)準(zhǔn)。如果在擴(kuò)展兩個時鐘到超過1,000個時鐘周期后沒出現(xiàn)周期性關(guān)系,那么這兩個時鐘就被稱為“未擴(kuò)展”時鐘。Vivado設(shè)計套件對兩個未擴(kuò)展時鐘之間的路徑要求為發(fā)起時鐘和捕獲時鐘相鄰工作沿之間相隔的最少時間。但需要注意的是對超過1,000個時鐘周期的情況有更加嚴(yán)格的路徑要求,這就是Vivado設(shè)計套件將這種類型的兩個時鐘之間的關(guān)系稱之為未擴(kuò)展的原因。

2.jpg

圖2:125MHz和156.25MHz時鐘的時鐘擴(kuò)展

Vivado BFT內(nèi)核可為測試不同時鐘速率提供理想設(shè)置,從而判定兩個時鐘是否為擴(kuò)展時鐘

為更好地理解Vivado設(shè)計套件計算未擴(kuò)展時鐘的方法,先以圖1中的TCL腳本來對擴(kuò)展任意兩個時鐘速率之間的上升沿對上升沿路徑要求的方法進(jìn)行詳細(xì)說明。圖2是這個腳本的輸出,即兩個分別運(yùn)行在125MHz和156.25MHz的時鐘的擴(kuò)展。

為確認(rèn)上述TCL腳本得出的結(jié)果,我們來觀察一下Vivado BFT 內(nèi)核范例設(shè)計。BFT 內(nèi)核可為測試不同時鐘速率提供理想設(shè)置,從而判定兩個時鐘是否為擴(kuò)展時鐘。該內(nèi)核有兩個獨(dú)立的時鐘源,分別命名為wbClk和bftClk。時序約束可將wbClk和bftClk的頻率分別設(shè)置為100MHz和200MHz。用戶可可對任意兩個時鐘速率的此類約束進(jìn)行修改,以便確定由Vivado時序引擎判別的擴(kuò)展關(guān)系。圖3是將bftClk設(shè)置為125MHz,將wbClk設(shè)置為156.25MHz時所顯示的結(jié)果,并提供了相關(guān)的時序(report_timing –from [get_clocks bftClk] -to [get_clocks wbClk])。請注意,由發(fā)起沿、捕獲沿和時序要求共同確認(rèn)TCL腳本的預(yù)測結(jié)果。

表1是使用圖4中的TCL腳本獲得的幾種時鐘速率的發(fā)起沿、捕獲沿和路徑要求。

3.jpg

圖3:125MHz發(fā)起時鐘到156.25MHz捕獲時鐘的時鐘擴(kuò)展

表1:時鐘擴(kuò)展實例

4.jpg
5.jpg

圖4:時鐘擴(kuò)展Tcl 腳本

處理未擴(kuò)展時鐘

人們常常把未擴(kuò)展時鐘視為異步時鐘,并通過FIFO、邊沿檢測器或同步器電路等適當(dāng)?shù)耐郊记蓙磉M(jìn)行處理。如果用戶使用此類技巧,應(yīng)在約束中使用時序例外來處理未擴(kuò)展時鐘(一般使用set_false_path或set_max_delay例外)。

理解和說明未擴(kuò)展時鐘具有重要的意義,因為時鐘之間的邊沿關(guān)系將決定Vivado設(shè)計套件中時序引擎所使用的路徑要求。賽靈思希望對設(shè)計中的所有未擴(kuò)展時鐘進(jìn)行詳查,以確保使用適當(dāng)?shù)耐郊记砂踩卮┰轿磾U(kuò)展時鐘之間的跨時鐘域。



關(guān)鍵詞: 時鐘擴(kuò)展 Vivado

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉