文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2017.01.011
中文引用格式: 王菲,,張莎莎,,王茜. 信號跨時鐘域問題分析及驗證方法研究[J].電子技術(shù)應(yīng)用,2017,,43(1):43-45,,49.
英文引用格式: Wang Fei,Zhang Shasha,,Wang Xi. Research of clock domain crossing problems and a verification method[J].Application of Electronic Technique,,2017,43(1):43-45,,49.
0 引言
近些年,,FPGA設(shè)計已由過去的譯碼,、編碼等簡單電路升級為各種復(fù)雜接口電路、通訊協(xié)議甚至專用算法處理器的實現(xiàn),,因此,,單時鐘設(shè)計遠不能滿足要求,多個時鐘域并存已非常普遍,。這必然帶來信號跨時鐘域問題,,如傳輸丟失、產(chǎn)生亞穩(wěn)態(tài)導(dǎo)致功能錯誤等。然而在實際中,,如何發(fā)現(xiàn)跨時鐘域問題是一個難點,,本文提出一種跨時鐘域的驗證方法,對日常工作中發(fā)現(xiàn)及解決跨時鐘域問題有著重要意義,。
1 信號跨時鐘域帶來的問題分析
信號跨時鐘域是影響FPGA設(shè)計的可靠性,、安全性的重要因素,究其根本原因都是由于亞穩(wěn)態(tài)[1]造成,。經(jīng)過深入的分析歸納,,信號跨時鐘域問題(CDC問題)主要分為亞穩(wěn)態(tài)的傳播、數(shù)據(jù)丟失和跨時鐘域信號再聚合時引起功能出錯3類,。
1.1 亞穩(wěn)態(tài)的傳播
如圖1所示,,信號A違反了觸發(fā)器的建立-保持時間,導(dǎo)致輸出B產(chǎn)生振蕩,,并持續(xù)一段時間,,所以當(dāng)clk_B的第二個有效沿到來時,B有可能穩(wěn)定到一個中間電壓,,也有可能繼續(xù)震蕩,,因此就會給系統(tǒng)帶來以下的問題:
(1)不同的扇出會把不穩(wěn)定的B判定為不同的值,這樣就使得系統(tǒng)進入了一個未知的狀態(tài),,導(dǎo)致某些功能失效,。
(2)造成至少一個周期的傳播延時,導(dǎo)致時序問題,。
1.2 數(shù)據(jù)丟失
觸發(fā)器的輸入A從clk_A時鐘域(較快時鐘域)進入clk_B時鐘域(較慢時鐘域)時,,由于穩(wěn)定的時間不夠長造成沒有被clk_B時鐘域采樣到,從而丟失正確的數(shù)據(jù),,如圖2所示,。
1.3 跨時鐘域信號再聚合(Re-convergence)時引起功能出錯
當(dāng)跨時鐘域信號再聚合時會引起電路功能錯誤。由于亞穩(wěn)態(tài)的影響會造成接收到的CDC信號發(fā)生不可預(yù)測且可變的延遲,,這些不同延遲的信號在重新聚合時就可能造成采樣失敗,,從而導(dǎo)致功能錯誤。圖3為跨時鐘域信號再聚合的問題模型,。這種設(shè)計路徑常見于多位控制總線信號的跨時鐘域傳播,,跨時鐘域再聚合波形分析如圖4所示,。
2 跨時鐘域驗證方法
對于跨時鐘域驗證而言,,目前業(yè)界并沒有統(tǒng)一的、成熟的驗證方法,,這里主要結(jié)合多年FPGA設(shè)計驗證經(jīng)驗,,加入對業(yè)界領(lǐng)先技術(shù)的應(yīng)用,提出一種多模式、互補型的跨時鐘域驗證方法,。該方法從不同角度,、多方位、分階段對FPGA進行檢查,,是一種以靜態(tài)分析為主要技術(shù)手段,,輔助以動態(tài)仿真驗證的驗證方法,跨時鐘域驗證的基本流程如圖5所示,。
2.1 結(jié)構(gòu)驗證
結(jié)構(gòu)驗證是跨時鐘域驗證整個流程中的主要環(huán)節(jié),,它是一種以靜態(tài)分析為主要技術(shù)手段的形式驗證方法,通過對FPGA設(shè)計綜合后存在數(shù)據(jù)跨時鐘域傳播的路徑進行分析,,檢查是否存在跨時鐘域問題,。
(1)檢查是否存在同步電路
數(shù)據(jù)跨時鐘域傳播時(無論是從快時鐘域到慢時鐘域,或是從慢到快時鐘域),,由于兩個時鐘域互不相關(guān),,均存在亞穩(wěn)態(tài)的可能性。因此需插入同步電路模塊,。沒有同步電路的設(shè)計結(jié)構(gòu)如圖6所示,。
(2)檢查同步電路的正確性
目前對于單bit信號的同步,主要有電平同步器,、邊沿同步器及脈沖同步器3種形式,。但是無論哪種形式,同步電路的核心為兩級寄存器同步,。下面列出幾種在FPGA設(shè)計中常見的無效同步電路形式,,如圖7~圖11所示。
(3)檢查是否屬于多位信號的跨時鐘域問題
對于多位信號,,主要是以握手協(xié)議,、異步fifo的交互方式來完成信號的跨時鐘域傳播。多bit信號在跨時鐘域傳播時不能簡單地采用同步每位信號來完成,。這會帶來多位數(shù)據(jù)的一致性問題,,造成目的時鐘域采樣錯誤。錯誤電路結(jié)構(gòu)如圖12所示,。
(4)檢查是否屬于跨時鐘域信號再聚合問題[4]
跨時鐘域信號再聚合應(yīng)與多位數(shù)據(jù)跨時鐘域的問題有所區(qū)分,,問題電路結(jié)構(gòu)如圖3所示,源時鐘域可以是一個或多個時鐘域,,不同信號經(jīng)過目的時鐘域同步后由組合邏輯再聚合,,再聚合而成的信號在使用時會對后級電路造成威脅。其與多位時鐘跨時鐘域問題的解決辦法均為在源時鐘域的輸入端引入多位編碼方式,,即格雷編碼,。
通過目前的驗證情況看,,以上電路結(jié)構(gòu)形式基本可以涵蓋90%以上的設(shè)計形式。
2.2 協(xié)議檢查
協(xié)議檢查是對結(jié)構(gòu)驗證的有力補充,,可以發(fā)現(xiàn)通過電路結(jié)構(gòu)檢查無法發(fā)現(xiàn)的跨時鐘域問題,,這里的協(xié)議檢查仍然以靜態(tài)分析為主要技術(shù)手段。協(xié)議檢查的方法是通過對上級系統(tǒng)及任務(wù)需求等方面的深入分析,,確認問題設(shè)計路徑上信號的輸入形式,、變化快慢、保持時間等參數(shù),,從而確定是否存在跨時鐘域問題,。
典型的協(xié)議檢查例如數(shù)據(jù)由快時鐘域向慢時鐘域傳播的情況。如圖13的分析可知,,當(dāng)數(shù)據(jù)由快時鐘域向慢時鐘域傳播時,,如果數(shù)據(jù)保持時間不夠則目的時鐘域無法采樣到數(shù)據(jù),這種情況會造成數(shù)據(jù)丟失,。這時就需要結(jié)合信號在實際電路中約定的協(xié)議來分析判斷跨時鐘域信號在源時鐘域是如何變化的,,每次變化保持的時間是多長。
經(jīng)協(xié)議分析檢查之后修改電路如圖14所示,,使得源時鐘域的數(shù)據(jù)保持兩個時鐘周期從而使目的時鐘域能夠穩(wěn)定采樣,,避免數(shù)據(jù)丟失的問題,相比圖2波形發(fā)生的變化如圖15所示,。當(dāng)然,,這種修改適用于目的時鐘域的時鐘頻率小于兩倍源時鐘域的情況。
2.3 CDC動態(tài)仿真
前面的結(jié)構(gòu)驗證和協(xié)議檢查的驗證方法都是靜態(tài)分析的方法,,除此之外還可以采用動態(tài)仿真的方法對跨時鐘域問題進行驗證,。這里的動態(tài)仿真與功能驗證中的仿真有很大區(qū)別,CDC動態(tài)仿真主要是引入斷言的方法針對數(shù)據(jù)跨時鐘域時可能存在問題的時序點進行仿真,。CDC仿真要在前面靜態(tài)分析的基礎(chǔ)上,,在已知電路結(jié)構(gòu)存在跨時鐘域問題的前提下,有針對性地設(shè)計斷言,,驗證時序的正確性,。
CDC動態(tài)仿真分為以下3個步驟:(1)提取屬性,(2)斷言設(shè)計,,(3)斷言仿真,。提取屬性和斷言設(shè)計這兩步可先由工具針對常見的CDC設(shè)計形式自動產(chǎn)生,這些自動產(chǎn)生的CDC協(xié)議檢測器在仿真環(huán)境下運行,,最后通過調(diào)用仿真環(huán)境(testbench)檢查設(shè)計的功能是否正確,。很多情況下,對于所需驗證的時序點,,需要人工進行斷言的設(shè)計,,這也是這個環(huán)節(jié)的難點。
3 總結(jié)
本文主要對目前FPGA設(shè)計中存在的跨時鐘域問題進行了深入的分析總結(jié),,提出了一種多模式,、互補型的跨時鐘域驗證方法。詳細講解了如何分層次,、多方位地進行跨時鐘域驗證以確認設(shè)計中的亞穩(wěn)態(tài)問題,,為發(fā)現(xiàn)目前FPGA產(chǎn)品研制中的跨時鐘域問題提供了依據(jù),后續(xù)會對方法中的斷言設(shè)計進行進一步的研究,。
參考文獻
[1] 周偉.FPGA跨時鐘域亞穩(wěn)態(tài)研究[J].電子世界,,2012(3):87-89.
[2] Mike Stein,Paradigm Works.Crossing the abyss:asynchronous signals in a synchronous world[].EDN magazine,,2003.
[3] San Jose.Real intent introduces CDC verification for altera customers.Real Intent Inc.2008.3.
作者信息:
王 菲,,張莎莎,王 茜
(中國航天科技集團公司第九研究院第七七一研究所,,陜西 西安710119)