文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.172154
中文引用格式: 王鵬,尤然,劉旭紅,等. 基于SoC的信號跨時鐘域傳輸驗證方法研究[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è)計的規(guī)模和復(fù)雜程度也在不斷的增加。在系統(tǒng)級芯片(System on Chip,SoC)中數(shù)據(jù)信號的傳輸也更多地在多個時鐘域間進行即跨時鐘域(Clock Domain Crossing,CDC)傳輸。但因為各個時鐘在頻率、相位上的差異,可能會因為建立時間或保持時間不滿足要求,而造成亞穩(wěn)態(tài)問題。在輸出端可能會出現(xiàn)毛刺、震蕩或某一固定的值,有可能會導(dǎo)致邏輯誤判。甚至有可能輸出0~1之間的電壓值進而導(dǎo)致下一級亞穩(wěn)態(tài),即亞穩(wěn)態(tài)的傳播,邏輯誤判將導(dǎo)致功能性錯誤,而亞穩(wěn)態(tài)的傳播則擴大了故障面[1]。為了避免亞穩(wěn)態(tài)及其產(chǎn)生的危害,常見的解決方法是通過CDC同步電路來保證數(shù)據(jù)的正確傳輸。但是同步電路不一定能正確地將數(shù)據(jù)同步過去,還需要保證電路的同步結(jié)構(gòu)正確并且滿足相應(yīng)的傳輸協(xié)議。當分散傳播的CDC信號經(jīng)過同步電路同步后,再重新進行組合邏輯運算時,會有可能因為亞穩(wěn)態(tài)而導(dǎo)致信號提前或延遲到達,從而使邏輯運算后的結(jié)果與期望值不符,即重匯聚問題。對于CDC同步電路的驗證,傳統(tǒng)的模擬仿真無法精確地模擬亞穩(wěn)態(tài)現(xiàn)象,而且靜態(tài)時序分析也不能對其時序進行分析[2]。
因此國內(nèi)不少研究人員對其進行了研究討論。文獻[3]中提出了基于SpyGlass的靜態(tài)驗證流程,對同步電路結(jié)構(gòu)進行了討論,但沒有涉及到傳輸協(xié)議和重匯聚問題。梁駿等人在文獻[4]中對CDC同步電路進行了重匯聚問題分析,沒有系統(tǒng)地進行結(jié)構(gòu)分析和傳輸協(xié)議驗證。國防科技大學(xué)羅莉等人在文獻[5]中對CDC同步電路進行了結(jié)構(gòu)檢查和傳輸協(xié)議驗證,但沒有對重匯聚問題進行分析。對于上述問題,現(xiàn)在并沒有一套完整且通用的驗證方法。
本文在基于傳統(tǒng)SoC設(shè)計和驗證仿真工具基礎(chǔ)上,形成的一整套完整且通用的CDC同步電路驗證方法。首先通過對CDC電路進行結(jié)構(gòu)分析來保證電路同步結(jié)構(gòu)的正確,再通過對電路進行基于斷言的CDC協(xié)議驗證來保證同步電路正確地傳輸了數(shù)據(jù),最后通過亞穩(wěn)態(tài)注入分析來判斷保證不會出現(xiàn)重匯聚問題。
1 驗證方法的論述
對CDC傳輸信號的驗證包括結(jié)構(gòu)分析、協(xié)議驗證、亞穩(wěn)態(tài)注入分析三個方面,圖1的驗證流程圖描述了三個驗證方面的邏輯關(guān)系和驗證條件。具體的驗證方法步驟在下面小節(jié)中進行說明。
1.1 CDC結(jié)構(gòu)分析
常用的跨時鐘域同步電路是通過兩級觸發(fā)器結(jié)構(gòu)來進行同步,CDC結(jié)構(gòu)分析是為了保證設(shè)計中的CDC同步電路有同步結(jié)構(gòu),并且兩級觸發(fā)器中沒有組合邏輯,也沒有被另外使用。本文的CDC結(jié)構(gòu)分析是基于傳統(tǒng)的SoC設(shè)計工具,在Quartes II或ISE等工具中,先經(jīng)過綜合或全編譯,再生成RTL原理圖。
然后可以在生成的RTL原理圖中采用下列步驟來判斷是否正確地生成電路同步結(jié)構(gòu):
(1)在生成的原理圖中,識別出輸入時鐘域和采樣時鐘域。
(2)判斷在時鐘域交界處有無同步結(jié)構(gòu),如果沒有同步結(jié)構(gòu)需要重新返回修改RTL代碼。
(3)判斷電路同步結(jié)構(gòu)中的兩級觸發(fā)器中有無其他組合邏輯,是否被另外的使用。如果兩級觸發(fā)器中有其他的組合邏輯,或者被另外的使用時,需返回修改RTL代碼。
CDC結(jié)構(gòu)分析保證了同步結(jié)構(gòu)正確后,需再進行協(xié)議驗證。從原理結(jié)構(gòu)中判斷同步后有無組合邏輯運算,如果有組合邏輯運算還需進行亞穩(wěn)態(tài)注入分析。
1.2 基于斷言的CDC協(xié)議驗證
結(jié)構(gòu)分析完成后僅能說明電路結(jié)構(gòu)正確,并不能表明數(shù)據(jù)可以正確傳輸,在工程實際中,跨時鐘域同步電路傳輸時都有其相應(yīng)的傳輸協(xié)議,只有滿足相應(yīng)的傳輸協(xié)議時,數(shù)據(jù)才可以正確地傳輸過去。本文驗證電路是否滿足其相應(yīng)傳輸協(xié)議的方法是通過基于斷言的CDC協(xié)議驗證?;跀嘌缘腃DC協(xié)議驗證是通過采用System Verilog語言來描述CDC電路要滿足的協(xié)議所需信號的屬性。在模擬仿真中,如果所檢查的屬性不符合正確傳輸?shù)膮f(xié)議時,斷言就會宣告失敗?;跀嘌缘尿炞C技術(shù)可以在工程實際中發(fā)現(xiàn)在一般的驗證中難以發(fā)現(xiàn)的時序和事件序列相關(guān)問題。如果斷言宣告失敗后,需修改RTL代碼,直到滿足傳輸協(xié)議為止。
1.3 亞穩(wěn)態(tài)注入分析
傳輸數(shù)據(jù)經(jīng)過了同步電路的同步,可以將數(shù)據(jù)正確地同步過去了,但可能因為亞穩(wěn)態(tài)而使輸出數(shù)據(jù)延遲或提前到達。此時,如果輸出端的輸出數(shù)據(jù)再進行組合邏輯運算時,會因為數(shù)據(jù)的提前或延遲輸出而導(dǎo)致運算結(jié)果與預(yù)期不符即重匯聚問題。所以本文采用在同步之后的數(shù)據(jù)處隨機注入延遲的方法來驗證當電路有亞穩(wěn)態(tài)問題時,是否可能會產(chǎn)生重匯聚問題。如果注入隨機延遲后,經(jīng)過組合邏輯后的數(shù)據(jù)結(jié)果與預(yù)期不符,則表明此電路可能會產(chǎn)生重匯聚問題。需要修改RTL代碼,直到亞穩(wěn)態(tài)注入分析通過為止。
2 實例分析
本部分的測試案例以實際工程中的一個跨時鐘域數(shù)據(jù)傳輸模塊為例,此傳輸模塊數(shù)據(jù)由頻率為166.7 MHz的時鐘域傳輸?shù)筋l率為100 MHz時鐘域。模塊的輸出端出現(xiàn)了非預(yù)期的數(shù)據(jù),現(xiàn)以第一節(jié)的驗證方法對跨時鐘域數(shù)據(jù)傳輸模塊進行驗證。
2.1 CDC結(jié)構(gòu)分析
在進行CDC結(jié)構(gòu)分析時,以Quartus II 軟件為例,進行分析驗證。在Quartus II 軟件中通過Tools-> Netlist Viewers->RTL Viewer生成RTL原理圖。可以得到如圖2所示原理圖。
在RTL原理圖中可以分析得出該跨時鐘域數(shù)據(jù)傳輸模塊是由兩個DMUX模塊把數(shù)據(jù)同步過去后再進行邏輯運算。現(xiàn)采用1.1節(jié)的方法對異步時鐘數(shù)據(jù)傳輸模塊RTL原理圖進行討論:
(1)輸入數(shù)據(jù)時鐘域clk1,頻率為166.7 MHz,同步采樣時鐘域clk2,頻率為100 MHz。
(2)可以看到在采樣時鐘域中有同步結(jié)構(gòu)—兩級觸發(fā)器(en2_1模塊和en2_2模塊)。
(3)兩級觸發(fā)器模塊中均無其他組合邏輯。這表明該跨時鐘域數(shù)據(jù)傳輸模塊的同步結(jié)構(gòu)正確,為了保證數(shù)據(jù)正確地同步過去,還需進行CDC協(xié)議驗證。從原理圖中可以看到數(shù)據(jù)同步過去后,有組合邏輯運算,所以還需進行亞穩(wěn)態(tài)注入分析。
2.2 基于斷言的CDC協(xié)議驗證
數(shù)據(jù)要從兩個DMUX模塊中正確地傳輸過去,需要滿足相應(yīng)的傳輸協(xié)議:輸入數(shù)據(jù)在發(fā)送時鐘域的選擇信號有效期間一直保持穩(wěn)定,且同步到接收時鐘域后,在接收時鐘域的輸入數(shù)據(jù)需在接收時鐘域的選擇信號穩(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的時鐘周期,時鐘周期長度為6 ns。T2為clk2的時鐘周期,時鐘周期長度為10 ns。第一段代碼表示同步信號en1至少保持兩個采樣時鐘長度的穩(wěn)定,第二段代碼表示的是輸入數(shù)據(jù)datain1在發(fā)送時鐘域的選擇信號en1有效期間一直保持穩(wěn)定,第三段代碼表示輸入數(shù)據(jù)在接收時鐘域的選擇信號en2有效期間一直保持穩(wěn)定。
由圖4可以看到失效斷言數(shù)量為0,通過了傳輸協(xié)議,表明數(shù)據(jù)可以正確地傳輸過去。
2.3 亞穩(wěn)態(tài)注入分析
兩個DMUX模塊分別將數(shù)據(jù)datain1和數(shù)據(jù)datain2同步過去后,再進行組合邏輯運算。根據(jù)本文1.3節(jié)的方法,采用隨機注入延遲的方法是隨機注入一個延遲的采樣時鐘??蓮南旅娴牟ㄐ螆D中看到當有一個采樣時鐘的隨機延遲時,組合邏輯運算后的輸出數(shù)據(jù)會與預(yù)期的輸出有不相符的地方。圓圈圈出部分為錯誤的運算結(jié)果。
因此,當電路中有亞穩(wěn)態(tài)的情況發(fā)生時,盡管經(jīng)過同步后,數(shù)據(jù)正確地傳輸出來,但當進行組合邏輯運算時,可能會因為數(shù)據(jù)的延遲而使邏輯運算后的結(jié)果和預(yù)期不符。由此可以得知此跨時鐘域數(shù)據(jù)傳輸模塊可能出現(xiàn)重匯聚問題。因此需要修改此設(shè)計模塊的RTL代碼,然后重新進行驗證。
3 結(jié)束語
本文介紹了基于傳統(tǒng)SoC設(shè)計和仿真工具的一整套對信號CDC傳輸?shù)尿炞C方法。從電路結(jié)構(gòu)、傳輸協(xié)議、亞穩(wěn)態(tài)注入三個循序漸進的角度進行了論述。并使用此套方法對一個跨時鐘域傳輸模塊進行了驗證,證明了本文所提出的方法能在設(shè)計初期發(fā)現(xiàn)設(shè)計中的不合理地方,提高設(shè)計的可靠性和效率。
參考文獻
[1] 周偉,杜玉曉,楊其宇,等.FPGA跨時鐘域亞穩(wěn)態(tài)研究[J].電子世界,2012:87-89.
[2] 范毓洋,劉萬和,田毅,等.基于SVA的跨時鐘域協(xié)議驗證方法[J].微電子學(xué)與計算機,2015,32(9):23-27,32.
[3] 趙文鋒.基于SpyGlass的同步設(shè)計分析與靜態(tài)驗證[D].西安:西安電子科技大學(xué),2014.
[4] 梁駿,唐露,張明,等.基于隨機延時注入的跨時鐘域信號驗證方法[J].微電子學(xué)與計算機,2014,31(2):1-4.
[5] 羅莉,何鴻君,徐煒遐,等.面向SOC芯片的跨時鐘域設(shè)計和驗證[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è)計中的亞穩(wěn)態(tài)研究[J].微電子學(xué),2011,41(2).
[10] 高文輝,胥志毅,鄔天凱,等.異步時鐘亞穩(wěn)態(tài)仿真方法[J].信息技術(shù),2012(10):167-169.
作者信息:
王 鵬1,尤 然2,劉旭紅2,范毓洋1,田 毅1
(1.中國民航大學(xué) 民用航空器適航審定技術(shù)與管理研究中心 天津市民用航空器適航與維修重點實驗室,天津300300;
2.中國民航大學(xué) 適航學(xué)院,天津300300)