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