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