時(shí)鐘擴(kuò)展對(duì)使用賽靈思Vivado設(shè)計(jì)套件的工程師來(lái)說(shuō)是一個(gè)很大的挑戰(zhàn),但不是一個(gè)不可逾越的障礙。
隨著越來(lái)越多的賽靈思用戶開(kāi)始使用Vivado?設(shè)計(jì)套件,部分用戶對(duì)未擴(kuò)展時(shí)鐘表示困惑。那么什么是未擴(kuò)展時(shí)鐘呢?他們是如何進(jìn)行關(guān)聯(lián)和計(jì)時(shí)的?應(yīng)對(duì)未擴(kuò)展時(shí)鐘的標(biāo)準(zhǔn)方法又是什么呢?下面讓我們來(lái)詳細(xì)探討一下這個(gè)問(wèn)題,重點(diǎn)是探討確保設(shè)計(jì)人員使用正確的同步技術(shù)安全地穿越未擴(kuò)展時(shí)鐘之間的跨時(shí)鐘域(clock domain crossing)的方法。
隨著Vivado工具的推出,賽靈思現(xiàn)在能夠支持采用業(yè)界標(biāo)準(zhǔn)Synopsys設(shè)計(jì)約束(SDC)格式的時(shí)序約束。這是ISE設(shè)計(jì)套件工具處理時(shí)序方式上的重大轉(zhuǎn)變。Vivado套件最根本的區(qū)別在于所有時(shí)鐘在默認(rèn)條件下都彼此關(guān)聯(lián)。這樣在ISE中處于無(wú)約束狀態(tài)的時(shí)序路徑在Vivado設(shè)計(jì)套件中則處于受約束狀態(tài)。如果兩個(gè)時(shí)鐘之間不存在周期性關(guān)系,這種約束會(huì)造成非常嚴(yán)格的時(shí)序要求。
未擴(kuò)展時(shí)鐘是指在1,000個(gè)時(shí)鐘周期內(nèi)與另一個(gè)時(shí)鐘之間不存在周期性關(guān)系的時(shí)鐘。Vivado BFT 內(nèi)核范例設(shè)計(jì)即是體現(xiàn)未擴(kuò)展時(shí)鐘工作方式的良好途徑。
發(fā)起和捕獲
時(shí)序路徑從發(fā)起事件開(kāi)始,由捕獲事件終止。發(fā)起事件發(fā)生在同步單元的時(shí)鐘從非工作狀態(tài)轉(zhuǎn)入工作狀態(tài)的時(shí)候。捕獲事件發(fā)生在下游的或者負(fù)責(zé)捕獲的同步單元的時(shí)鐘從非工作狀態(tài)轉(zhuǎn)入工作狀態(tài)的時(shí)候。從發(fā)起事件到捕獲事件之間所需的時(shí)間被稱為“路徑要求”,它代表自事件發(fā)起后到捕獲單元引腳處出現(xiàn)有效數(shù)據(jù)之間所需的時(shí)間。
如果發(fā)起時(shí)鐘和捕獲時(shí)鐘同時(shí)位于同一物理時(shí)鐘網(wǎng)中,路徑要求僅指時(shí)鐘周期。以250MHz時(shí)鐘為例,如果發(fā)起單元和捕獲單元的工作沿相同(上升沿對(duì)上升沿或下降沿對(duì)下降沿),那么發(fā)起事件和捕獲事件之間的時(shí)間間隔則恰好為4納秒。如果發(fā)起單元和捕獲單元的工作沿不同,路徑就必須按一半的時(shí)鐘頻率進(jìn)行時(shí)間計(jì)算。這就是時(shí)鐘的上升沿對(duì)下降沿或下降沿對(duì)上升沿轉(zhuǎn)換的情況,對(duì)一個(gè)250MHz的時(shí)鐘來(lái)說(shuō),對(duì)應(yīng)的就是2納秒的路徑要求。
在時(shí)鐘源(source clock)和時(shí)鐘目標(biāo)端(destination clock)非同一個(gè)時(shí)鐘的情況下,時(shí)序問(wèn)題就變得更加復(fù)雜。具有不同時(shí)鐘源和時(shí)鐘目標(biāo)端的時(shí)序路徑被稱為跨時(shí)鐘域(CDC)路徑。
如果發(fā)起時(shí)鐘和捕獲時(shí)鐘之間的相位關(guān)系未知,就無(wú)法計(jì)算路徑要求。由于不確定相位關(guān)系,則無(wú)法準(zhǔn)確確定路徑時(shí)序。不安全時(shí)鐘在Vivado設(shè)計(jì)套件生成的時(shí)鐘交互報(bào)告中會(huì)突出顯示。在發(fā)起時(shí)鐘和捕獲時(shí)鐘之間的相位關(guān)系已知的情況下,只要兩個(gè)時(shí)鐘之間存在周期性關(guān)系,就可以用數(shù)學(xué)方法推導(dǎo)出路徑要求。用于判斷給定發(fā)起時(shí)鐘和捕獲時(shí)鐘之間最低路徑要求的方法稱為時(shí)鐘擴(kuò)展。不過(guò)確定兩個(gè)時(shí)鐘之間是否存在周期性關(guān)系需要用實(shí)際限制加以約束,因?yàn)橐话闱闆r下兩個(gè)不同時(shí)鐘之間不存在共同的周期性特征。
Vivado設(shè)計(jì)套件使用的實(shí)際限制條件是1,000個(gè)時(shí)鐘周期,以兩個(gè)時(shí)鐘中較小的時(shí)鐘周期為測(cè)量標(biāo)準(zhǔn)。如果在擴(kuò)展兩個(gè)時(shí)鐘到超過(guò)1,000個(gè)時(shí)鐘周期后沒(méi)出現(xiàn)周期性關(guān)系,那么這兩個(gè)時(shí)鐘就被稱為“未擴(kuò)展”時(shí)鐘。
Vivado設(shè)計(jì)套件對(duì)兩個(gè)未擴(kuò)展時(shí)鐘之間的路徑要求為發(fā)起時(shí)鐘和捕獲時(shí)鐘相鄰工作沿之間相隔的最少時(shí)間。但需要注意的是對(duì)超過(guò)1,000個(gè)時(shí)鐘周期的情況有更加嚴(yán)格的路徑要求,這就是Vivado設(shè)計(jì)套件將這種類(lèi)型的兩個(gè)時(shí)鐘之間的關(guān)系稱之為未擴(kuò)展的原因。
Vivado BFT內(nèi)核可為測(cè)試不同時(shí)鐘速率提供理想設(shè)置,從而判定兩個(gè)時(shí)鐘是否為擴(kuò)展時(shí)鐘
為更好地理解Vivado設(shè)計(jì)套件計(jì)算未擴(kuò)展時(shí)鐘的方法,先以圖1中的TCL腳本來(lái)對(duì)擴(kuò)展任意兩個(gè)時(shí)鐘速率之間的上升沿對(duì)上升沿路徑要求的方法進(jìn)行詳細(xì)說(shuō)明。圖2是這個(gè)腳本的輸出,即兩個(gè)分別運(yùn)行在125MHz和156.25MHz的時(shí)鐘的擴(kuò)展。
圖1 - 擴(kuò)展時(shí)鐘的TCL腳本
圖2 - 125MHz和156.25MHz時(shí)鐘的時(shí)鐘擴(kuò)展
為確認(rèn)上述TCL腳本得出的結(jié)果,我們來(lái)觀察一下Vivado BFT 內(nèi)核范例設(shè)計(jì)。BFT 內(nèi)核可為測(cè)試不同時(shí)鐘速率提供理想設(shè)置,從而判定兩個(gè)時(shí)鐘是否為擴(kuò)展時(shí)鐘。該內(nèi)核有兩個(gè)獨(dú)立的時(shí)鐘源,分別命名為wbClk和bftClk。時(shí)序約束可將wbClk和bftClk的頻率分別設(shè)置為100MHz和200MHz。用戶可可對(duì)任意兩個(gè)時(shí)鐘速率的此類(lèi)約束進(jìn)行修改,以便確定由Vivado時(shí)序引擎判別的擴(kuò)展關(guān)系。圖3是將bftClk設(shè)置為125MHz,將wbClk設(shè)置為156.25MHz時(shí)所顯示的結(jié)果,并提供了相關(guān)的時(shí)序(report_timing –from [get_clocks bftClk] -to [get_clocks wbClk])。請(qǐng)注意,由發(fā)起沿、捕獲沿和時(shí)序要求共同確認(rèn)TCL腳本的預(yù)測(cè)結(jié)果。
圖3 - 125MHz發(fā)起時(shí)鐘到156.25MHz捕獲時(shí)鐘的時(shí)鐘擴(kuò)展
表1是使用圖4中的TCL腳本獲得的幾種時(shí)鐘速率的發(fā)起沿、捕獲沿和路徑要求。
圖4 - 時(shí)鐘擴(kuò)展Tcl 腳本
處理未擴(kuò)展時(shí)鐘
人們常常把未擴(kuò)展時(shí)鐘視為異步時(shí)鐘,并通過(guò)FIFO、邊沿檢測(cè)器或同步器電路等適當(dāng)?shù)耐郊记蓙?lái)進(jìn)行處理。如果用戶使用此類(lèi)技巧,應(yīng)在約束中使用時(shí)序例外來(lái)處理未擴(kuò)展時(shí)鐘(一般使用set_false_path或set_max_delay例外)。
理解和說(shuō)明未擴(kuò)展時(shí)鐘具有重要的意義,因?yàn)闀r(shí)鐘之間的邊沿關(guān)系將決定Vivado設(shè)計(jì)套件中時(shí)序引擎所使用的路徑要求。賽靈思希望對(duì)設(shè)計(jì)中的所有未擴(kuò)展時(shí)鐘進(jìn)行詳查,以確保使用適當(dāng)?shù)耐郊记砂踩卮┰轿磾U(kuò)展時(shí)鐘之間的跨時(shí)鐘域。
評(píng)論
查看更多