如今典型的SOC 芯片都功能復(fù)雜、接口豐富,在眾多復(fù)雜功能中不可能所有功能都同時(shí)工作,為了能耗,大多數(shù)SOC 芯片都會(huì)切分成多個(gè)電壓域,而豐富的接口就意味著龐雜的clock 和reset. 信號(hào)跨越不同domain 時(shí)都需要特別處理,比如跨power domain 時(shí)需要插入isolation 或level shifter 或 ELS, 對(duì)power domain 的處理,需要理清power domain 的關(guān)系,定義清楚power intent, 在設(shè)計(jì)、驗(yàn)證、實(shí)現(xiàn)端都需要做額外處理;相對(duì)于Power domain, 信號(hào)跨越Clock domains 給設(shè)計(jì)、驗(yàn)證、實(shí)現(xiàn)帶來的挑戰(zhàn)會(huì)更大, 今天捋一捋實(shí)現(xiàn)端對(duì)跨Clock domains 的處理,主要是CDC check.
從RTL 到GDS 實(shí)現(xiàn)過程每一步都需要做CDC check, 以保證輸入正確且實(shí)現(xiàn)過程沒有犯錯(cuò)。
如何確定一個(gè)時(shí)鐘域?
相位關(guān)系確定的兩個(gè)或多個(gè)時(shí)鐘稱為同步時(shí)鐘,所有被同步時(shí)鐘驅(qū)動(dòng)的時(shí)序邏輯,為同一時(shí)鐘域;無確定相位關(guān)系的兩個(gè)或多個(gè)時(shí)鐘稱為異步時(shí)鐘。同步時(shí)鐘跟異步時(shí)鐘特別像夫妻關(guān)系跟情人關(guān)系,同步時(shí)鐘像夫妻關(guān)系,有固定規(guī)則保護(hù)其正常運(yùn)轉(zhuǎn),出軌就是setup 或hold 沒修干凈;異步時(shí)鐘就如情人關(guān)系,沒有任何規(guī)則可以保證共同財(cái)產(chǎn)不受侵犯,沒有任何責(zé)任跟義務(wù),所以需要除了靈肉上的交流之外盡量相互隔離。一個(gè)道理:信號(hào)是可以夸時(shí)鐘域的,情人關(guān)系是可以有的,只要做好必要的隔離不影響社會(huì)規(guī)則正常運(yùn)轉(zhuǎn)就成。
如果規(guī)避亞穩(wěn)態(tài)?
數(shù)字電路是個(gè)1,0分明的世界,除此之外的狀態(tài)都不是穩(wěn)定狀態(tài),被稱為亞穩(wěn)態(tài),亞穩(wěn)態(tài)會(huì)導(dǎo)致電路功能失效,本來期待一個(gè)1結(jié)果來了一個(gè)0,功能失效,只能姐妹六九天長(zhǎng)地久了。同步電路通過setup 跟hold 來規(guī)避亞穩(wěn)態(tài)。
但是對(duì)于異步電路而言,因?yàn)闀r(shí)鐘相位不固定,無法保證來的一定是0或1,所以無法用靜態(tài)時(shí)序分析的辦法來規(guī)避亞穩(wěn)態(tài),辦法總比問題多,聰明的工程師們拍著地中海造出了同步電路,雖然不能徹底規(guī)避亞穩(wěn)態(tài),但是只要使其發(fā)生的概率逼近于無限小,那情人還是情人,靈肉交流就能暢通無阻。
在數(shù)字電路中用MTBF 來衡量亞穩(wěn)態(tài)造成故障的風(fēng)險(xiǎn),可能每家公司用于計(jì)算MTBF 的公式都不同,下面是網(wǎng)上找到的兩個(gè),看上去比較科學(xué),根據(jù)MTBF 可以計(jì)算出在故障率可接受的范圍內(nèi)同步器所需要的寄存器級(jí)數(shù)。
常見的同步電路有哪些?
常見的同步電路有:
- 由兩級(jí)或多級(jí)寄存器組成的同步器 :這是最常見的同步器,用于同步單根信號(hào)或一組bus, 如果是同步一組bus 則這組bus 必須用格雷碼。
- MUX 同步電路 :如下圖將dready 信號(hào)經(jīng)過同步器送到目標(biāo)時(shí)鐘域,對(duì)于這種同步電路要在設(shè)計(jì)上保證:sready 信號(hào)必須相對(duì)于目標(biāo)時(shí)鐘保持m+1 個(gè)時(shí)鐘周期,也就是說sready 在m+1 個(gè)dclk 周期內(nèi)都不能跳變;同時(shí)在數(shù)據(jù)傳輸過程data 保持穩(wěn)定,所謂的數(shù)據(jù)傳輸過程即dready 信號(hào)在dclk 時(shí)鐘域有效期間。
- 握手同步電路 :如下圖所示,是一個(gè)典型的握手同步電路,握手同步電路通過請(qǐng)求信號(hào)跟應(yīng)答信號(hào)進(jìn)行數(shù)據(jù)交流,當(dāng)有數(shù)據(jù)需要傳輸時(shí),源時(shí)鐘域發(fā)出請(qǐng)求信號(hào),同時(shí)發(fā)出數(shù)據(jù),目標(biāo)時(shí)鐘域收到請(qǐng)求信號(hào)后將數(shù)據(jù)鎖存,同時(shí)返回應(yīng)答信號(hào),源時(shí)鐘域收到應(yīng)答信號(hào)后,可改變數(shù)據(jù),握手同步電路的弊端是latency 太長(zhǎng)。對(duì)于握手同步電路,在設(shè)計(jì)上要保證:sreq 信號(hào)必須保持m+1 個(gè)dclk 時(shí)鐘周期;data 信號(hào)必須保持m 個(gè)dclk 時(shí)鐘周期;dack 信號(hào)必須保持m+1 個(gè)sclk 時(shí)鐘周期;源時(shí)鐘域在收到應(yīng)到信號(hào)之前必須保持請(qǐng)求信號(hào);在上一個(gè)請(qǐng)求傳輸沒有結(jié)束之前不能發(fā)出新的請(qǐng)求。
- **異步FIFO: **異步FIFO 應(yīng)該是大家最熟悉的同步電路了,在學(xué)習(xí)Verilog 的時(shí)候都應(yīng)該寫過異步FIFO. 異步FIFO 還是常見的筆試面試題,根據(jù)需求算FIFO 深度。
CDC check 在檢查什么?
實(shí)現(xiàn)端的CDC check 工具,在做CDC check 時(shí),首先根據(jù)SDC 確定時(shí)鐘域,然后在設(shè)計(jì)中提取同步電路;然后再分析同步電路的各種問題,常見的檢查有:
-
Convergence in the Crossover Path : 多路跨時(shí)鐘信號(hào)通過組合邏輯進(jìn)入同步器,這會(huì)導(dǎo)致源時(shí)鐘域的glitch 傳遞到目標(biāo)時(shí)鐘域。
-
Divergence in the Crossover Path : 同一個(gè)控制信號(hào)控制多路數(shù)據(jù)傳輸,如下圖所示,用Trans_en 來同時(shí)控制數(shù)據(jù)和地址使能信號(hào),但實(shí)際中,由于不同的同步電路『meta-stable settling 』時(shí)間不同,所以無法保證數(shù)據(jù)使能跟地址使能同時(shí)有效,從而導(dǎo)致功能錯(cuò)誤。
-
Divergence of Meta-stable Signal: 不要從同步器中間拉出一根信號(hào)用作他用,也不要在同步器中間插入多級(jí)buffer 或inverter.
-
Re-convergence of Synchronized Signals : 多路跨時(shí)鐘信號(hào)經(jīng)過同步器后做邏輯運(yùn)算,這跟同步一組bus 而沒用格雷碼的風(fēng)險(xiǎn)是類似的,無法保證不同路的同步器在目標(biāo)時(shí)鐘域信號(hào)穩(wěn)定是同時(shí)的,各路同步器之間的skew 是無法確切知道的。
實(shí)現(xiàn)端做CDC check 是依賴于SDC 的,所以要確保在SDC 中 clock 關(guān)系定義正確。小編很好奇,在驗(yàn)證端的CDC check 是怎么做的?是否用『斷言』更有效?
-
寄存器
+關(guān)注
關(guān)注
31文章
5434瀏覽量
124514 -
SoC芯片
+關(guān)注
關(guān)注
1文章
646瀏覽量
35824 -
RTL
+關(guān)注
關(guān)注
1文章
389瀏覽量
61128 -
同步器
+關(guān)注
關(guān)注
1文章
109瀏覽量
15184 -
FIFO存儲(chǔ)
+關(guān)注
關(guān)注
0文章
103瀏覽量
6192
發(fā)布評(píng)論請(qǐng)先 登錄
怎么將信號(hào)從一個(gè)時(shí)鐘域傳遞到另一個(gè)時(shí)鐘域
如何調(diào)試設(shè)計(jì)中的時(shí)鐘域交匯問題

如何調(diào)試設(shè)計(jì)中的時(shí)鐘域交匯問題

介紹使用SVA的幾個(gè)優(yōu)勢(shì)
FPGA跨時(shí)鐘域處理方法(一)

CDC跨時(shí)鐘域處理及相應(yīng)的時(shí)序約束
如何處理跨時(shí)鐘域這些基礎(chǔ)問題

評(píng)論