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