理解FPGA中的壓穩(wěn)態(tài)
本白皮書介紹FPGA 中的壓穩(wěn)態(tài),為什么會出現(xiàn)這一現(xiàn)象,它是怎樣導(dǎo)致設(shè)計失敗的。介紹怎樣計算壓穩(wěn)態(tài)MTBF,重點是對結(jié)果造成影響的各種器件和設(shè)計參數(shù)。
引言
當信號在不相關(guān)或者異步時鐘域之間傳送時,會出現(xiàn)壓穩(wěn)態(tài),它是導(dǎo)致包括FPGA 在內(nèi)的數(shù)字器件系統(tǒng)失敗的一種現(xiàn)象。本白皮書介紹FPGA 中的壓穩(wěn)態(tài),解釋為什么會出現(xiàn)這一現(xiàn)象,討論它是怎樣導(dǎo)致設(shè)計失敗的。
通過計算壓穩(wěn)態(tài)導(dǎo)致的平均故障間隔時間(MTBF),設(shè)計人員知道是否應(yīng)采取措施來降低這類失敗的概率。
本白皮書解釋怎樣利用各種設(shè)計和器件參數(shù)來計算MTBF, FPGA 供應(yīng)商和設(shè)計人員怎樣提高MTBF??梢酝ㄟ^設(shè)計方法和優(yōu)化措施來降低出現(xiàn)壓穩(wěn)態(tài)失敗的概率,從而提高系統(tǒng)可靠性。
什么是壓穩(wěn)態(tài)?
FPGA 等數(shù)字器件中的所有寄存器都有確定的信號時序要求,使每一個寄存器能夠正確的采集輸入數(shù)據(jù),產(chǎn)生輸出信號。為保證能夠可靠的工作,寄存器輸入必須在時鐘沿之前穩(wěn)定一段時間( 寄存器建立時間,即tSU),在時鐘沿之后也要保持穩(wěn)定一段時間( 寄存器保持時間,即tH)。一定的時鐘至輸出延時 (tCO) 之后,寄存器輸出有效。如果信號轉(zhuǎn)換不能滿足寄存器的tSU 或者tH 要求,寄存器輸出就有可能進入壓穩(wěn)態(tài)。在壓穩(wěn)態(tài)中,寄存器輸出在高電平和低電平狀態(tài)之間徘徊一段時間,這意味著,輸出延時超出設(shè)定的tCO 之后才能轉(zhuǎn)換到確定的高電平或者低電平狀態(tài)。
在同步系統(tǒng)中,輸入信號必須滿足寄存器時序要求,因此,不會出現(xiàn)壓穩(wěn)態(tài)。信號在不相關(guān)或者異步時鐘域電路之間傳輸時,一般會出現(xiàn)壓穩(wěn)態(tài)問題。在這種情況下,由于信號可能在相對于目的時鐘的任意時間到達,因此,設(shè)計人員不能保證信號能夠滿足tSU 和tH 要求。然而,并不是所有不能滿足寄存器tSU 或者tH的信號轉(zhuǎn)換都導(dǎo)致壓穩(wěn)態(tài)輸出。寄存器是否會進入壓穩(wěn)態(tài)以及返回穩(wěn)定狀態(tài)所需要的時間與器件制造工藝以及實際工作條件有關(guān)。在大部分情況下,寄存器會很快返回穩(wěn)定狀態(tài)。
可以把寄存器在時鐘邊沿采樣數(shù)據(jù)信號形象的看成是球從山上滾落下來,如圖1 所示。山的兩邊代表穩(wěn)定狀態(tài)——信號轉(zhuǎn)換之后,信號的老數(shù)據(jù)和新數(shù)據(jù),山頂代表壓穩(wěn)態(tài)。如果球從山頂滾落,它會處于不確定狀態(tài),實際中,它稍偏向一側(cè),然后,落到山下。從山頂開始,越到山腳,球到達底部穩(wěn)定狀態(tài)的速度越快。
圖 1. 利用球從山上落下描述壓穩(wěn)態(tài)
如果數(shù)據(jù)信號在時鐘沿之后以最小的 tH 轉(zhuǎn)換,這就類似球從山的“老數(shù)據(jù)值”一側(cè)落下,輸出信號保持在該時鐘轉(zhuǎn)換的最初值不變。當寄存器數(shù)據(jù)輸入在時鐘沿之前以最小 tSU 轉(zhuǎn)換,保持時間大于最小 tH,這就類似球從山的“新數(shù)據(jù)值”一側(cè)落下,輸出信號很快達到穩(wěn)定的新狀態(tài),滿足確定的tCO 時間要求。但是,當寄存器數(shù)據(jù)輸入不能滿足tSU 或者 tH, 時,這就類似于球從山頂落下。如果球落在山頂附近,那么,它會花很長時間才能落到山腳,增加了時鐘轉(zhuǎn)換到穩(wěn)定輸出的延時,超出了要求的tCO。
圖2 描述了壓穩(wěn)態(tài)信號。時鐘信號轉(zhuǎn)換時,輸入信號從低電平狀態(tài)轉(zhuǎn)換到高電平狀態(tài),不能滿足寄存器的tSU 要求。數(shù)據(jù)輸出信號從低電平狀態(tài)開始,進入壓穩(wěn)態(tài),在高電平和低電平狀態(tài)之間徘徊。信號輸出A 轉(zhuǎn)換到輸入數(shù)據(jù)的新邏輯1 狀態(tài),輸出B 返回到數(shù)據(jù)輸入最初的邏輯0 狀態(tài)。在這兩種情況下,輸出轉(zhuǎn)換到確定的1 或者0 狀態(tài)的時間被延遲了,超出了寄存器要求的tCO。
圖 2. 壓穩(wěn)態(tài)輸出信號實例
壓穩(wěn)態(tài)什么時候會導(dǎo)致設(shè)計失敗?
如果數(shù)據(jù)輸出信號在寄存器下次采集數(shù)據(jù)之前,轉(zhuǎn)換到有效狀態(tài),那么,壓穩(wěn)態(tài)信號不會對系統(tǒng)工作有不利影響。但是,如果壓穩(wěn)態(tài)信號不能在它到達下一設(shè)計寄存器之前轉(zhuǎn)換到低電平或者高電平狀態(tài),那就會導(dǎo)致系統(tǒng)失敗。繼續(xù)山和球的形象解釋,當球到達山腳( 穩(wěn)定邏輯狀態(tài)0 或者1) 的時間超出分配的時間后,即,寄存器tCO 加上寄存器通路所有時序余量的時間,就會出現(xiàn)失敗。當壓穩(wěn)態(tài)信號沒有在分配的時間內(nèi)穩(wěn)定下來時,如果目的邏輯觀察到不一致的邏輯狀態(tài),即,不同的目的寄存器采集到不同的壓穩(wěn)態(tài)信號值,出現(xiàn)邏輯失敗。
同步寄存器
當信號在不相關(guān)或者異步時鐘域電路之間傳送時,在使用該信號之前,需要將信號同步到新的時鐘域。新鐘域中第一個寄存器起到了同步寄存器的作用。
為消除異步信號傳送時壓穩(wěn)態(tài)導(dǎo)致的失敗,電路設(shè)計人員通常在目的時鐘域中使用多個串聯(lián)寄存器( 同步寄存器鏈或者同步器),將信號重新同步到新時鐘域上。采用這些寄存器,在設(shè)計中的其他部分使用壓穩(wěn)態(tài)信號之前,該信號能夠有更多的時間轉(zhuǎn)換到確定狀態(tài)。同步寄存器至寄存器通路上的時序余量是壓穩(wěn)態(tài)信號穩(wěn)定所需要的時間,被稱為壓穩(wěn)態(tài)穩(wěn)定時間。
同步寄存器鏈或者同步器是滿足以下要求的寄存器序列:
■ 鏈上的寄存器都由相同的或者相位相關(guān)的時鐘進行同步
■ 鏈上的第一個寄存器由不相關(guān)的時鐘域進行驅(qū)動,即異步驅(qū)動。
■ 每個寄存器只扇出連接一個寄存器,鏈上的最后一個寄存器除外。
同步寄存器鏈的長度是滿足以上要求的同步時鐘域中的寄存器數(shù)量。圖3 是長度為2 的同步鏈的例子,假設(shè)輸出信號被送入多個目的寄存器。
圖 3. 同步寄存器鏈實例
注意,異步輸入信號,或者在不相關(guān)時鐘域之間傳輸?shù)男盘枺瑫谙鄬τ诓杉拇嫫鲿r鐘沿的任意點進行轉(zhuǎn)換。因此,設(shè)計人員無法預(yù)測數(shù)據(jù)轉(zhuǎn)換前的信號轉(zhuǎn)換順序或者目的時鐘邊沿數(shù)量。例如,如果在時鐘域之間傳送異步總線信號,并進行同步,數(shù)據(jù)信號會在不同的時鐘沿進行轉(zhuǎn)換。結(jié)果,會接收到不正確的總線數(shù)據(jù)。
設(shè)計人員必須適應(yīng)這種電路工作方式,例如,雙時鐘 FIFO (DCFIFO) 邏輯存儲信號或者握手邏輯等。FIFO邏輯使用同步器在兩個時鐘域之間傳送控制信號,然后,數(shù)據(jù)被寫入雙端口存儲器,或者讀出。Altera 為這一操作提供DCFIFO 宏功能,它包括各種級別的延時,為控制信號提供亞穩(wěn)態(tài)保護。如果異步信號被用作兩個時鐘域之間的部分握手邏輯,控制信號會指出數(shù)據(jù)什么時候才能在時鐘域之間進行傳輸。在這種情況下,采用同步寄存器以確保亞穩(wěn)態(tài)不會影響控制信號的接收,在任何亞穩(wěn)態(tài)條件下,數(shù)據(jù)都有足夠的建立時間,在使用數(shù)據(jù)之前達到穩(wěn)定。在設(shè)計比較好的系統(tǒng)中,每一信號在被使用之前都能達到穩(wěn)定狀態(tài),設(shè)計可以正常工作。
計算亞穩(wěn)態(tài)MTBF
亞穩(wěn)態(tài)平均故障間隔時間MTBF 大致估算了亞穩(wěn)態(tài)導(dǎo)致出現(xiàn)兩次設(shè)計失敗之間的平均時間。較大的MTBF( 例如亞穩(wěn)態(tài)失敗間隔數(shù)百甚至數(shù)千年) 表明非??煽康脑O(shè)計。所需要的MTBF 取決于系統(tǒng)應(yīng)用。例如,急救醫(yī)療設(shè)備需要的MTBF 要比消費類視頻顯示設(shè)備長得多。增大亞穩(wěn)態(tài)MTBF 能夠減小信號傳輸導(dǎo)致設(shè)備出現(xiàn)亞穩(wěn)態(tài)問題的概率。
可以使用設(shè)計信息以及器件特征參數(shù)來計算設(shè)計中某些信號傳輸或者所有信息傳輸?shù)膩喎€(wěn)態(tài)MTBF。采用下面的公式和參數(shù)來計算同步器鏈的MTBF:
C1 和C2 常數(shù)取決于器件工藝和工作條件。
在fCLK 和fDATA 參數(shù)取決于設(shè)計規(guī)范: fCLK 是接收異步信號時鐘域的時鐘頻率, fDATA 是異步輸入數(shù)據(jù)信號的觸發(fā)頻率。較快的時鐘頻率以及觸發(fā)數(shù)據(jù)能夠降低( 或者劣化) MTBF。
tMET 參數(shù)是亞穩(wěn)態(tài)信號達到確切狀態(tài)的亞穩(wěn)態(tài)建立時間,即,超出寄存器tCO 的時序余量。同步鏈的 tMET 是鏈上每一寄存器輸出時序余量之和。
設(shè)計中每一同步器鏈的MTBF 確定了總的設(shè)計MTBF。同步器的失效率是1/MTBF,將每一同步器鏈的失敗概率相加得到整個設(shè)計的失敗概率,如下所示:
設(shè)計亞穩(wěn)態(tài)MTBF 為1/failure_ratedesign。
設(shè)計人員使用Altera® FPGA 時,不需要手動完成這些計算,這是因為Altera Quartus® II 軟件將亞穩(wěn)態(tài)參數(shù)集成到了工具中。
確定亞穩(wěn)態(tài)常數(shù)
FPGA供應(yīng)商可以通過FPGA的亞穩(wěn)態(tài)特性來確定MTBF方程中的常數(shù)。確定特性的難點在于典型FPGA設(shè)計的MTBF 一般在幾年以上,因此,使用真實設(shè)計,在實際工作條件下測量亞穩(wěn)態(tài)事件之間的時間間隔是不可行的。為確定器件亞穩(wěn)態(tài)常數(shù), Altera 使用了測試電路,設(shè)計的這一電路具有較短的可測量MTBF,如圖4 所示。
圖 4. 亞穩(wěn)態(tài)特性參數(shù)測試電路結(jié)構(gòu)
在這一設(shè)計中, clka 和clkb 是兩路不相關(guān)的時鐘信號。同步器輸入數(shù)據(jù)在每一時鐘周期進行觸發(fā)( 較大的fDATA)。同步器長度為1,這是因為一個同步寄存器連接了兩個目的寄存器。目的寄存器在一個時鐘周期后以及一個半時鐘周期后采集同步器輸出。如果信號在下一時鐘沿到達之前進入亞穩(wěn)態(tài),電路探測到采樣信號出現(xiàn)了不同,輸出一個錯誤信號。這一電路能夠探測到半時鐘周期內(nèi)出現(xiàn)的大部分亞穩(wěn)態(tài)事件。
在器件中很多地方復(fù)制了這一電路,以減小本地差異的影響,對每一例化模塊進行連續(xù)測試,以消除耦合噪聲。Altera 對每一測試結(jié)構(gòu)測量一分鐘,記錄錯誤數(shù)。以不同的時鐘頻率進行測試,在對數(shù)坐標上畫出MTBF 與tMET 的關(guān)系。常數(shù)C2 對應(yīng)于試驗結(jié)果趨勢線的斜率,以常數(shù)C1 線性標出曲線。
提高亞穩(wěn)態(tài)MTBF
由于MTBF 方程中的指數(shù)因子, tMET/C2 項對MTBF 計算的影響最大。因此,可以通過優(yōu)化器件常數(shù)C2,改進體系結(jié)構(gòu)來提高亞穩(wěn)態(tài)性能,或者優(yōu)化設(shè)計,增大同步寄存器的tMET。
改進FPGA 體系結(jié)構(gòu)MTBF 方程中的亞穩(wěn)態(tài)時間常數(shù)C2 取決于器件制造工藝技術(shù)相關(guān)的各種因素,包括晶體管速率和供電電壓等。采用較快的工藝技術(shù)和速度更快的晶體管,亞穩(wěn)態(tài)信號能夠很快達到穩(wěn)定。FPGA 從180-nm 工藝尺寸發(fā)展到90 nm,晶體管在提高速度的同時也增大了亞穩(wěn)態(tài)MTBF。因此,亞穩(wěn)態(tài)并不是FPGA 設(shè)計人員主要考慮的問題。
然而,隨著工藝尺寸的減小,供電電壓隨之降低,電路閾值電壓并沒有成比例下降。當寄存器進入亞穩(wěn)態(tài)時,其電壓大約是供電電壓的一半。供電電壓降低后,亞穩(wěn)態(tài)電壓電平接近電路中的閾值電壓。當這些電壓比較接近時,電路增益降低了,寄存器需要較長的時間才能脫離亞穩(wěn)態(tài)。FPGA 進入65-nm 以及更小的工藝尺寸之后,供電電壓降到0.9V 以下,相對于晶體管速度的提高,應(yīng)重點考慮閾值電壓的影響。因此,除非供應(yīng)商設(shè)計FPGA 電路來提高亞穩(wěn)態(tài)可靠性,否則,亞穩(wěn)態(tài)MTBF 會越來越差。
altera 利用FPGA 體系結(jié)構(gòu)亞穩(wěn)態(tài)分析功能來優(yōu)化電路,提高亞穩(wěn)態(tài)MTBF。Altera 40-nm Stratix® IV FPGA體系結(jié)構(gòu)以及新器件在設(shè)計上進行改進,降低了MTBF 常數(shù)C2 ,從而提高了亞穩(wěn)態(tài)的可靠性。
設(shè)計優(yōu)化
MTBF 方程中的指數(shù)因子意味著增大設(shè)計相關(guān)tMET 值能夠指數(shù)增大同步器MTBF。例如,如果某一器件的常數(shù)C2,設(shè)置工作條件為50 ps,那么, tMET 只需要增大200 ps,就能夠?qū)崿F(xiàn)指數(shù)200/50,提高MTBF e4 倍,即50 多倍,而增大400 ps,提高MTBF e8 倍,即3000 倍。
另一方面,最差MTBF 鏈對設(shè)計MTBF 的影響最大。例如,考慮具有10 個同步鏈的兩個不同設(shè)計。一個設(shè)計的10 個鏈有相同的10,000 年MTBF,另一設(shè)計的9 個鏈有一百萬年的MTBF,但是一個鏈的MTBF為100 年。設(shè)計失敗概率是每一鏈的失敗概率之和,失敗概率為1/MTBF。第一個設(shè)計的亞穩(wěn)態(tài)失敗概率為10 個鏈× 1/10,000 年 = 0.001,因此,設(shè)計MTBF是1000 年。第二個設(shè)計的失敗概率為9 個鏈 × 1/1,000,000 +1/100 = 0.01009,設(shè)計MTBF 為99 年,略小于最差鏈的MTBF。
換言之,設(shè)計較差的同步鏈決定了設(shè)計的亞穩(wěn)態(tài)總MTBF。由于這一效應(yīng),對所有異步信號和時鐘域傳輸進行亞穩(wěn)態(tài)分析非常重要。設(shè)計人員或者工具供應(yīng)商提高最差MTBF 同步鏈的tMET ,會對設(shè)計MTBF 有很大的影響。
為提高亞穩(wěn)態(tài)MTBF,設(shè)計人員可以在同步寄存器鏈上增加額外的寄存器級,以提高tMET 。增加的每一寄存器至寄存器連接時序余量被加到tMET 值中。設(shè)計人員一般使用兩個寄存器來同步信號,而Altera 建議使用三個寄存器作為標準,以實現(xiàn)更好的亞穩(wěn)態(tài)保護。然而,增加一個寄存器會在同步邏輯中加入額外的延時級,因此,設(shè)計人員必須綜合考慮這是否可行。
如果設(shè)計使用Altera FIFO 宏功能,跨時鐘域使用單獨的讀寫時鐘,那么,設(shè)計人員可以增強亞穩(wěn)態(tài)保護(和延時),實現(xiàn)更好的MTBF。Altera Quartus II MegaWizard™ 插件管理器提供增強亞穩(wěn)態(tài)保護選項,包括三個甚至更多的同步級 。
Quartus II 軟件還提供業(yè)界最好的亞穩(wěn)態(tài)分析和優(yōu)化功能,以增大同步寄存器鏈的tMET。確定同步器后,軟件將同步寄存器靠近放置,以增加同步鏈的輸出時序余量,然后報告亞穩(wěn)態(tài)MTBF。
結(jié)論
信號在不相關(guān)或者異步時鐘域電路之間傳輸時,會出現(xiàn)壓穩(wěn)態(tài)問題。亞穩(wěn)態(tài)失敗平均時間間隔與器件工藝技術(shù)、設(shè)計規(guī)范和同步邏輯的時序余量有關(guān)。FPGA 設(shè)計人員可以通過增大tMET ,采用增加同步寄存器時序余量等設(shè)計方法來提高系統(tǒng)可靠性,增大亞穩(wěn)態(tài)MTBF。Altera 確定了其 FPGA 的MTBF 參數(shù),改進器件技術(shù),從而增大了亞穩(wěn)態(tài)MTBF。使用Altera FPGA 的設(shè)計人員可以利用Quartus II 軟件功能來報告設(shè)計的亞穩(wěn)態(tài)MTBF,優(yōu)化設(shè)計布局以增大MTBF。
致謝
■ Jennifer Stephenson,應(yīng)用工程師,軟件應(yīng)用工程技術(shù)組成員, Altera 公司。
■ Doris Chen,軟件和系統(tǒng)工程高級軟件工程師, Altera 公司。
■ Ryan Fung,軟件和系統(tǒng)工程技術(shù)組資深成員, Altera 公司。
■ Jeffrey Chromczak,軟件和系統(tǒng)工程資深軟件工程師, Altera 公司。
(發(fā)布者:chiying)
評論