文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.172154
中文引用格式: 王鵬,,尤然,劉旭紅,,等. 基于SoC的信號(hào)跨時(shí)鐘域傳輸驗(yàn)證方法研究[J].電子技術(shù)應(yīng)用,,2017,43(12):29-32.
英文引用格式: Wang Peng,,You Ran,,Liu Xuhong,et al. Research on verification method of signal clock domain crossing transmission based on SOC[J].Application of Electronic Technique,,2017,,43(12):29-32.
0 引言
隨著現(xiàn)代工業(yè)的不斷發(fā)展,,數(shù)字電路設(shè)計(jì)的規(guī)模和復(fù)雜程度也在不斷的增加。在系統(tǒng)級(jí)芯片(System on Chip,,SoC)中數(shù)據(jù)信號(hào)的傳輸也更多地在多個(gè)時(shí)鐘域間進(jìn)行即跨時(shí)鐘域(Clock Domain Crossing,,CDC)傳輸。但因?yàn)楦鱾€(gè)時(shí)鐘在頻率,、相位上的差異,,可能會(huì)因?yàn)榻r(shí)間或保持時(shí)間不滿足要求,而造成亞穩(wěn)態(tài)問題,。在輸出端可能會(huì)出現(xiàn)毛刺,、震蕩或某一固定的值,有可能會(huì)導(dǎo)致邏輯誤判,。甚至有可能輸出0~1之間的電壓值進(jìn)而導(dǎo)致下一級(jí)亞穩(wěn)態(tài),,即亞穩(wěn)態(tài)的傳播,邏輯誤判將導(dǎo)致功能性錯(cuò)誤,,而亞穩(wěn)態(tài)的傳播則擴(kuò)大了故障面[1],。為了避免亞穩(wěn)態(tài)及其產(chǎn)生的危害,常見的解決方法是通過CDC同步電路來保證數(shù)據(jù)的正確傳輸,。但是同步電路不一定能正確地將數(shù)據(jù)同步過去,,還需要保證電路的同步結(jié)構(gòu)正確并且滿足相應(yīng)的傳輸協(xié)議。當(dāng)分散傳播的CDC信號(hào)經(jīng)過同步電路同步后,,再重新進(jìn)行組合邏輯運(yùn)算時(shí),,會(huì)有可能因?yàn)閬喎€(wěn)態(tài)而導(dǎo)致信號(hào)提前或延遲到達(dá),從而使邏輯運(yùn)算后的結(jié)果與期望值不符,,即重匯聚問題,。對(duì)于CDC同步電路的驗(yàn)證,傳統(tǒng)的模擬仿真無法精確地模擬亞穩(wěn)態(tài)現(xiàn)象,,而且靜態(tài)時(shí)序分析也不能對(duì)其時(shí)序進(jìn)行分析[2],。
因此國(guó)內(nèi)不少研究人員對(duì)其進(jìn)行了研究討論。文獻(xiàn)[3]中提出了基于SpyGlass的靜態(tài)驗(yàn)證流程,,對(duì)同步電路結(jié)構(gòu)進(jìn)行了討論,,但沒有涉及到傳輸協(xié)議和重匯聚問題。梁駿等人在文獻(xiàn)[4]中對(duì)CDC同步電路進(jìn)行了重匯聚問題分析,,沒有系統(tǒng)地進(jìn)行結(jié)構(gòu)分析和傳輸協(xié)議驗(yàn)證,。國(guó)防科技大學(xué)羅莉等人在文獻(xiàn)[5]中對(duì)CDC同步電路進(jìn)行了結(jié)構(gòu)檢查和傳輸協(xié)議驗(yàn)證,,但沒有對(duì)重匯聚問題進(jìn)行分析。對(duì)于上述問題,,現(xiàn)在并沒有一套完整且通用的驗(yàn)證方法,。
本文在基于傳統(tǒng)SoC設(shè)計(jì)和驗(yàn)證仿真工具基礎(chǔ)上,形成的一整套完整且通用的CDC同步電路驗(yàn)證方法,。首先通過對(duì)CDC電路進(jìn)行結(jié)構(gòu)分析來保證電路同步結(jié)構(gòu)的正確,,再通過對(duì)電路進(jìn)行基于斷言的CDC協(xié)議驗(yàn)證來保證同步電路正確地傳輸了數(shù)據(jù),,最后通過亞穩(wěn)態(tài)注入分析來判斷保證不會(huì)出現(xiàn)重匯聚問題,。
1 驗(yàn)證方法的論述
對(duì)CDC傳輸信號(hào)的驗(yàn)證包括結(jié)構(gòu)分析、協(xié)議驗(yàn)證,、亞穩(wěn)態(tài)注入分析三個(gè)方面,,圖1的驗(yàn)證流程圖描述了三個(gè)驗(yàn)證方面的邏輯關(guān)系和驗(yàn)證條件。具體的驗(yàn)證方法步驟在下面小節(jié)中進(jìn)行說明,。
1.1 CDC結(jié)構(gòu)分析
常用的跨時(shí)鐘域同步電路是通過兩級(jí)觸發(fā)器結(jié)構(gòu)來進(jìn)行同步,,CDC結(jié)構(gòu)分析是為了保證設(shè)計(jì)中的CDC同步電路有同步結(jié)構(gòu),并且兩級(jí)觸發(fā)器中沒有組合邏輯,,也沒有被另外使用,。本文的CDC結(jié)構(gòu)分析是基于傳統(tǒng)的SoC設(shè)計(jì)工具,在Quartes II或ISE等工具中,,先經(jīng)過綜合或全編譯,,再生成RTL原理圖。
然后可以在生成的RTL原理圖中采用下列步驟來判斷是否正確地生成電路同步結(jié)構(gòu):
(1)在生成的原理圖中,,識(shí)別出輸入時(shí)鐘域和采樣時(shí)鐘域,。
(2)判斷在時(shí)鐘域交界處有無同步結(jié)構(gòu),如果沒有同步結(jié)構(gòu)需要重新返回修改RTL代碼,。
(3)判斷電路同步結(jié)構(gòu)中的兩級(jí)觸發(fā)器中有無其他組合邏輯,,是否被另外的使用。如果兩級(jí)觸發(fā)器中有其他的組合邏輯,,或者被另外的使用時(shí),,需返回修改RTL代碼。
CDC結(jié)構(gòu)分析保證了同步結(jié)構(gòu)正確后,,需再進(jìn)行協(xié)議驗(yàn)證,。從原理結(jié)構(gòu)中判斷同步后有無組合邏輯運(yùn)算,如果有組合邏輯運(yùn)算還需進(jìn)行亞穩(wěn)態(tài)注入分析,。
1.2 基于斷言的CDC協(xié)議驗(yàn)證
結(jié)構(gòu)分析完成后僅能說明電路結(jié)構(gòu)正確,,并不能表明數(shù)據(jù)可以正確傳輸,在工程實(shí)際中,,跨時(shí)鐘域同步電路傳輸時(shí)都有其相應(yīng)的傳輸協(xié)議,,只有滿足相應(yīng)的傳輸協(xié)議時(shí),,數(shù)據(jù)才可以正確地傳輸過去。本文驗(yàn)證電路是否滿足其相應(yīng)傳輸協(xié)議的方法是通過基于斷言的CDC協(xié)議驗(yàn)證,?;跀嘌缘腃DC協(xié)議驗(yàn)證是通過采用System Verilog語言來描述CDC電路要滿足的協(xié)議所需信號(hào)的屬性。在模擬仿真中,,如果所檢查的屬性不符合正確傳輸?shù)膮f(xié)議時(shí),,斷言就會(huì)宣告失敗?;跀嘌缘尿?yàn)證技術(shù)可以在工程實(shí)際中發(fā)現(xiàn)在一般的驗(yàn)證中難以發(fā)現(xiàn)的時(shí)序和事件序列相關(guān)問題,。如果斷言宣告失敗后,需修改RTL代碼,,直到滿足傳輸協(xié)議為止,。
1.3 亞穩(wěn)態(tài)注入分析
傳輸數(shù)據(jù)經(jīng)過了同步電路的同步,可以將數(shù)據(jù)正確地同步過去了,,但可能因?yàn)閬喎€(wěn)態(tài)而使輸出數(shù)據(jù)延遲或提前到達(dá),。此時(shí),如果輸出端的輸出數(shù)據(jù)再進(jìn)行組合邏輯運(yùn)算時(shí),,會(huì)因?yàn)閿?shù)據(jù)的提前或延遲輸出而導(dǎo)致運(yùn)算結(jié)果與預(yù)期不符即重匯聚問題,。所以本文采用在同步之后的數(shù)據(jù)處隨機(jī)注入延遲的方法來驗(yàn)證當(dāng)電路有亞穩(wěn)態(tài)問題時(shí),是否可能會(huì)產(chǎn)生重匯聚問題,。如果注入隨機(jī)延遲后,,經(jīng)過組合邏輯后的數(shù)據(jù)結(jié)果與預(yù)期不符,則表明此電路可能會(huì)產(chǎn)生重匯聚問題,。需要修改RTL代碼,,直到亞穩(wěn)態(tài)注入分析通過為止。
2 實(shí)例分析
本部分的測(cè)試案例以實(shí)際工程中的一個(gè)跨時(shí)鐘域數(shù)據(jù)傳輸模塊為例,,此傳輸模塊數(shù)據(jù)由頻率為166.7 MHz的時(shí)鐘域傳輸?shù)筋l率為100 MHz時(shí)鐘域,。模塊的輸出端出現(xiàn)了非預(yù)期的數(shù)據(jù),現(xiàn)以第一節(jié)的驗(yàn)證方法對(duì)跨時(shí)鐘域數(shù)據(jù)傳輸模塊進(jìn)行驗(yàn)證,。
2.1 CDC結(jié)構(gòu)分析
在進(jìn)行CDC結(jié)構(gòu)分析時(shí),,以Quartus II 軟件為例,進(jìn)行分析驗(yàn)證,。在Quartus II 軟件中通過Tools-> Netlist Viewers->RTL Viewer生成RTL原理圖,。可以得到如圖2所示原理圖,。
在RTL原理圖中可以分析得出該跨時(shí)鐘域數(shù)據(jù)傳輸模塊是由兩個(gè)DMUX模塊把數(shù)據(jù)同步過去后再進(jìn)行邏輯運(yùn)算?,F(xiàn)采用1.1節(jié)的方法對(duì)異步時(shí)鐘數(shù)據(jù)傳輸模塊RTL原理圖進(jìn)行討論:
(1)輸入數(shù)據(jù)時(shí)鐘域clk1,頻率為166.7 MHz,同步采樣時(shí)鐘域clk2,,頻率為100 MHz,。
(2)可以看到在采樣時(shí)鐘域中有同步結(jié)構(gòu)—兩級(jí)觸發(fā)器(en2_1模塊和en2_2模塊)。
(3)兩級(jí)觸發(fā)器模塊中均無其他組合邏輯,。這表明該跨時(shí)鐘域數(shù)據(jù)傳輸模塊的同步結(jié)構(gòu)正確,,為了保證數(shù)據(jù)正確地同步過去,還需進(jìn)行CDC協(xié)議驗(yàn)證,。從原理圖中可以看到數(shù)據(jù)同步過去后,,有組合邏輯運(yùn)算,所以還需進(jìn)行亞穩(wěn)態(tài)注入分析,。
2.2 基于斷言的CDC協(xié)議驗(yàn)證
數(shù)據(jù)要從兩個(gè)DMUX模塊中正確地傳輸過去,,需要滿足相應(yīng)的傳輸協(xié)議:輸入數(shù)據(jù)在發(fā)送時(shí)鐘域的選擇信號(hào)有效期間一直保持穩(wěn)定,且同步到接收時(shí)鐘域后,,在接收時(shí)鐘域的輸入數(shù)據(jù)需在接收時(shí)鐘域的選擇信號(hào)穩(wěn)定期間一直保持穩(wěn)定,。
其斷言協(xié)議如下:
property en1_p1;
@(posedge clk1) $rose(en1)|-> en1[*(`T2/`T1+1)];
endproperty
property en1_p;
@(posedge clk1) (en1 ##1 en1) |-> $stable(datin1);
endproperty
property en2_p;
@(posedge clk2) (en2 ##1 en2)|-> $stable(datin1);
endproperty
其中T1為clk1的時(shí)鐘周期,時(shí)鐘周期長(zhǎng)度為6 ns,。T2為clk2的時(shí)鐘周期,時(shí)鐘周期長(zhǎng)度為10 ns,。第一段代碼表示同步信號(hào)en1至少保持兩個(gè)采樣時(shí)鐘長(zhǎng)度的穩(wěn)定,,第二段代碼表示的是輸入數(shù)據(jù)datain1在發(fā)送時(shí)鐘域的選擇信號(hào)en1有效期間一直保持穩(wěn)定,第三段代碼表示輸入數(shù)據(jù)在接收時(shí)鐘域的選擇信號(hào)en2有效期間一直保持穩(wěn)定,。
由圖4可以看到失效斷言數(shù)量為0,,通過了傳輸協(xié)議,表明數(shù)據(jù)可以正確地傳輸過去,。
2.3 亞穩(wěn)態(tài)注入分析
兩個(gè)DMUX模塊分別將數(shù)據(jù)datain1和數(shù)據(jù)datain2同步過去后,,再進(jìn)行組合邏輯運(yùn)算。根據(jù)本文1.3節(jié)的方法,,采用隨機(jī)注入延遲的方法是隨機(jī)注入一個(gè)延遲的采樣時(shí)鐘,。可從下面的波形圖中看到當(dāng)有一個(gè)采樣時(shí)鐘的隨機(jī)延遲時(shí),,組合邏輯運(yùn)算后的輸出數(shù)據(jù)會(huì)與預(yù)期的輸出有不相符的地方,。圓圈圈出部分為錯(cuò)誤的運(yùn)算結(jié)果。
因此,,當(dāng)電路中有亞穩(wěn)態(tài)的情況發(fā)生時(shí),,盡管經(jīng)過同步后,數(shù)據(jù)正確地傳輸出來,,但當(dāng)進(jìn)行組合邏輯運(yùn)算時(shí),,可能會(huì)因?yàn)閿?shù)據(jù)的延遲而使邏輯運(yùn)算后的結(jié)果和預(yù)期不符。由此可以得知此跨時(shí)鐘域數(shù)據(jù)傳輸模塊可能出現(xiàn)重匯聚問題。因此需要修改此設(shè)計(jì)模塊的RTL代碼,,然后重新進(jìn)行驗(yàn)證,。
3 結(jié)束語
本文介紹了基于傳統(tǒng)SoC設(shè)計(jì)和仿真工具的一整套對(duì)信號(hào)CDC傳輸?shù)尿?yàn)證方法。從電路結(jié)構(gòu),、傳輸協(xié)議,、亞穩(wěn)態(tài)注入三個(gè)循序漸進(jìn)的角度進(jìn)行了論述。并使用此套方法對(duì)一個(gè)跨時(shí)鐘域傳輸模塊進(jìn)行了驗(yàn)證,,證明了本文所提出的方法能在設(shè)計(jì)初期發(fā)現(xiàn)設(shè)計(jì)中的不合理地方,,提高設(shè)計(jì)的可靠性和效率。
參考文獻(xiàn)
[1] 周偉,,杜玉曉,,楊其宇,等.FPGA跨時(shí)鐘域亞穩(wěn)態(tài)研究[J].電子世界,,2012:87-89.
[2] 范毓洋,,劉萬和,田毅,,等.基于SVA的跨時(shí)鐘域協(xié)議驗(yàn)證方法[J].微電子學(xué)與計(jì)算機(jī),,2015,32(9):23-27,,32.
[3] 趙文鋒.基于SpyGlass的同步設(shè)計(jì)分析與靜態(tài)驗(yàn)證[D].西安:西安電子科技大學(xué),,2014.
[4] 梁駿,唐露,,張明,,等.基于隨機(jī)延時(shí)注入的跨時(shí)鐘域信號(hào)驗(yàn)證方法[J].微電子學(xué)與計(jì)算機(jī),2014,,31(2):1-4.
[5] 羅莉,,何鴻君,徐煒遐,,等.面向SOC芯片的跨時(shí)鐘域設(shè)計(jì)和驗(yàn)證[J].計(jì)算機(jī)科學(xué),,2011,38(9):279-281.
[6] Luo Li,,He Hongjun,,Dou Qiang,et al.Design and verification of multi-clock domain synchronizers [C]//Intelligent System Design and Engineering Applicat.Changsha,,2010:544-547.
[7] CUMMINGS C E.Clock domain crossing(CDC) design & verification techniques using system verilog[EB/OL].[2008-09-26].http://www.sunburst-design.com/papers.
[8] Mentor Graphics.0-In CDC Analyzer User Guide software version 3.0c,,September 2010.
[9] 黃隸凡,鄭學(xué)仁.FPGA設(shè)計(jì)中的亞穩(wěn)態(tài)研究[J].微電子學(xué),,2011,,41(2).
[10] 高文輝,胥志毅,鄔天凱,,等.異步時(shí)鐘亞穩(wěn)態(tài)仿真方法[J].信息技術(shù),,2012(10):167-169.
作者信息:
王 鵬1,尤 然2,,劉旭紅2,,范毓洋1,田 毅1
(1.中國(guó)民航大學(xué) 民用航空器適航審定技術(shù)與管理研究中心 天津市民用航空器適航與維修重點(diǎn)實(shí)驗(yàn)室,,天津300300,;
2.中國(guó)民航大學(xué) 適航學(xué)院,天津300300)