季振凱,謝文虎
(無錫中微億芯有限公司,江蘇無錫 214072)
隨著市場需求和技術(shù)的發(fā)展,F(xiàn)PGA規(guī)模呈指數(shù)增長,目前國內(nèi)已經(jīng)能夠研制億門級FPGA產(chǎn)品,超大規(guī)模集成電路由于隨機(jī)的制造缺陷導(dǎo)致的各類偶發(fā)缺陷將無法避免[1]。FPGA制造過程中產(chǎn)生的偶發(fā)缺陷通常會導(dǎo)致器件功能異常,90%以上表現(xiàn)為固定缺陷,稱之為質(zhì)量缺陷,可通過圓片測試、初始電測試剔除;少部分表現(xiàn)為初始正常,工作一定時間后,異常缺陷放大,然后表現(xiàn)出功能異常,這種缺陷稱為潛在缺陷。由于潛在缺陷的不可預(yù)測性,提供有效的方法激發(fā)集成電路潛在缺陷、剔除早期失效產(chǎn)品,是高可靠集成電路設(shè)計和制造領(lǐng)域的重要研究內(nèi)容。
剔除早期失效電路的方法是進(jìn)行電路靜態(tài)老煉或動態(tài)老煉試驗[2]。靜態(tài)老煉只施加電應(yīng)力和溫度應(yīng)力,可誘發(fā)與雜質(zhì)污染相關(guān)的潛在缺陷[2]。動態(tài)老煉需在靜態(tài)老煉的基礎(chǔ)上增加激勵信號,使電路內(nèi)部邏輯資源發(fā)生翻轉(zhuǎn),提高老煉應(yīng)力,激發(fā)潛在缺陷。
國外對FPGA老煉的研究較早,美國NASA發(fā)表了SRAM型FPGA老煉試驗報告[3],詳細(xì)地介紹了商用SRAM型FPGA老煉試驗系統(tǒng)的軟硬件設(shè)計和試驗原理圖。加州理工學(xué)院和加利福尼亞州立大學(xué)發(fā)表了針對宇航級FPGA的老煉方法[4],提出宇航級FPGA與普通器件的差異,并設(shè)計了相應(yīng)的測試向量和檢錯方法。國內(nèi)對FPGA老煉的研究也取得了較大進(jìn)步,中國電子科技集團(tuán)公司第五十八研究所郁振華和朱衛(wèi)良發(fā)表了針對FPGA電路的動態(tài)老煉技術(shù),是針對靜態(tài)老煉的提升,可提高FPGA老煉應(yīng)力[5];北京微電子技術(shù)研究所王茉針對高可靠FPGA提出了老煉系統(tǒng)的軟硬件設(shè)計方案[6],老煉程序覆蓋了FPGA所有IO的一種電平模式,以及通過移位寄存器實現(xiàn)部分資源的覆蓋。
目前國內(nèi)外對FPGA老煉的研究集中在老煉方法設(shè)計、單段老煉程序設(shè)計和老煉激勵設(shè)計。但FPGA規(guī)模越來越大,單段程序的動態(tài)老煉試驗資源覆蓋率越來越低,存在絕大部分資源未被施加老煉應(yīng)力的問題。針對該問題,本文提出一種多程序動態(tài)刷新老煉系統(tǒng)以及高覆蓋率老練程序設(shè)計方法,通過多段老煉程序循環(huán)刷新的方式提高FPGA的老煉覆蓋率。
FPGA壽命周期中失效率和其他集成電路類似,符合經(jīng)典“浴盆曲線”(或“浴盤曲線”)理論[7],集成電路失效“浴盆曲線”如圖1所示。
圖1 集成電路失效“浴盆曲線”
根據(jù)失效概率,F(xiàn)PGA壽命周期可劃分為3個失效期,分別是早期失效期、偶然失效期以及耗損失效期[8],每個階段表現(xiàn)出不同的特征。
(1)早期失效
早期失效階段的失效原因是設(shè)計缺陷、原材料缺陷或制造過程偶發(fā)缺陷[9-10]。該階段發(fā)生失效的概率與時間的關(guān)系符合韋布爾分布[11]。
(2)偶然失效期
偶然失效期也稱為使用期或隨機(jī)失效期,F(xiàn)PGA產(chǎn)品進(jìn)入偶然失效期后失效概率將趨于穩(wěn)定且降至最低,偶然失效期是產(chǎn)品狀態(tài)最好的階段。發(fā)生偶然失效主要原因是質(zhì)量缺陷、材料缺陷、環(huán)境過于惡劣或使用方式不當(dāng)?shù)萚9-10]。偶然失效期的失效概率與時間的關(guān)系符合指數(shù)分布[7]。
(3)損耗失效期
電路長期使用將造成FPGA電路老化和過度損耗,F(xiàn)PGA電路失效概率在此階段開始快速上升,電路失效的內(nèi)在原因是金屬化電遷移和熱載流子效應(yīng)。損耗失效期的失效概率和時間關(guān)系符合對數(shù)正態(tài)分布[11]。
通過環(huán)境應(yīng)力篩選、老煉等措施,可剔除早期失效產(chǎn)品,同時加速集成電路老化,使集成電路盡早進(jìn)入低失效率的偶然失效期。
老煉試驗的理論依據(jù)是經(jīng)典反應(yīng)速率理論,即當(dāng)外界的電、熱等應(yīng)力增加時,器件會加速老化[12]。老煉對集成電路壽命周期的影響如圖2所示,在正常使用條件下,F(xiàn)PGA器件需要幾千小時進(jìn)入偶然失效期,如果對器件進(jìn)行老煉,器件可在幾十個小時后進(jìn)入偶然失效期。
圖2 老煉對集成電路壽命周期的影響
在FPGA的老煉試驗中,頻率和電壓采用正常工作的條件,主要以溫度作為加速變量。硅集成電路在以溫度為加速應(yīng)力條件下的加速因子數(shù)據(jù)可通過Arrhenius經(jīng)驗公式計算:
其中,T1、T2為開氏溫度,t1、t2分別為T1、T2產(chǎn)生相同退化量對應(yīng)的時間,t1/t2為加速因子;K為玻爾茲曼常量,K=8.62×10-5eV/K;Ea為缺陷激活能,可取0.403 eV。
根據(jù)式(1),電路在高溫125℃條件下老煉72 h等效于在25℃下老化154天。
多程序動態(tài)老煉系統(tǒng)的設(shè)計主要包含老煉系統(tǒng)軟硬件設(shè)計以及被老煉FPGA的老煉程序開發(fā)。
根據(jù)整體方案需求,設(shè)計了如圖3所示的多程序動態(tài)老煉系統(tǒng)。整個系統(tǒng)由兩部分組成,一部分為工位板,另一部分為驅(qū)動板,工位板位于高溫箱內(nèi)部,驅(qū)動板位于外部,兩部分采用專門的連接件連接。
圖3 多程序動態(tài)老煉系統(tǒng)整體功能框圖
工位板的功能是承載被老煉FPGA電路,該P(yáng)CB板只包含F(xiàn)PGA安裝插座以及相應(yīng)的阻容器件。工位板FPGA采用被動串行配置,每一個FPGA需要至少4根信號線(CCLK,DIN,INIT,PROGRAM)用于配置,每一塊老煉板上有12個FPGA工位,由于CCLK、DIN、PROGRAM為輸入信號,INIT在完成初始前為低,完成初始化后為高阻態(tài),以上信號可以直接互連且不損傷端口,為了減少端口數(shù)量,多個器件可共享一個來自驅(qū)動板的信號,工位板信號共享示意圖如圖4所示。除配置信號外,還需要激勵信號,激勵信號采用與配置信號相同的連接方式。
圖4 工位板信號共享示意圖
軟件設(shè)計主要體現(xiàn)在驅(qū)動板,驅(qū)動板功能是向工位板FPGA發(fā)送配置信號和激勵信號,該板主要由能夠控制信號輸入輸出的FPGA、能夠存儲所有老煉文件的存儲器、能夠增強(qiáng)FPGA輸出信號驅(qū)動能力的驅(qū)動電路(如164245等)以及能夠提供工位FPGA工作電壓的電源芯片組成。驅(qū)動板的信號傳輸流程為:存儲器存儲工位板FPGA的配置文件由驅(qū)動FPGA讀出,經(jīng)過總線驅(qū)動電路后發(fā)送給工位板并對工位板FPGA進(jìn)行配置,完成配置后對工位板發(fā)送激勵信號。驅(qū)動板的電路連接圖如圖5所示。
圖5 驅(qū)動板電路連接圖
實現(xiàn)高覆蓋率老煉系統(tǒng)的重點工作內(nèi)容是老煉程序的設(shè)計,需要針對不同的器件單獨(dú)開發(fā),老煉程序的開發(fā)包括功能模塊和布線資源的設(shè)計,實現(xiàn)對BLOCK RAM、CLB、IOB、DSP、時鐘管理模塊以及開關(guān)和互連線資源的覆蓋。老煉程序采用內(nèi)建自測試(同一個器件同時實現(xiàn)信號發(fā)生模塊和信號測試模塊的功能)的設(shè)計方式,老煉系統(tǒng)通過檢測電路輸出的信號判斷電路邏輯正確性,老煉程序使用4個端口輸入,并在固定的3個端口輸出自測試結(jié)果。
3.2.1可編程邏輯塊老煉程序設(shè)計
FPGA電路包含大量可編程邏輯塊(CLB)。每個CLB由2個或4個Slice組成,每個Slice包含4輸入或6輸入查找表、選擇器、進(jìn)位邏輯以及寄存器等功能模塊。CLB內(nèi)部結(jié)構(gòu)復(fù)雜,單段程序無法實現(xiàn)對CLB各個功能塊的覆蓋。在設(shè)計多段老煉程序時,為提高程序覆蓋效率,首先應(yīng)進(jìn)行模塊劃分,將能夠在同一個程序中實現(xiàn)的模塊劃分成一類,功能模塊劃分如表1所示。
表1 功能模塊劃分
CLB老煉程序采用調(diào)用原語的方式實現(xiàn),然后進(jìn)行位置約束。根據(jù)資源復(fù)雜程度的差異,部分模塊需要多段老煉程序。以MULT_AND老煉程序為例,MULT_AND一共4段程序,分別覆蓋器件上半部分CLB.S0、CLB.S1和下半部分CLB.S0、CLB.S1,主要老煉Slice內(nèi)部進(jìn)位鏈的與門MULT_AND功能塊,圖6、7分別為MULT_AND上半部分CLB.S1老煉程序部分原語代碼和部分UCF約束代碼。
圖6 MULT_AND老煉程序原語
圖7 MULT_AND老煉程序約束語句
表2為MULT_AND老煉程序的資源占用情況,根據(jù)表2的統(tǒng)計,單個代碼Slice占用率是77%,其中50%的Slice為實現(xiàn)老煉覆蓋被約束在器件的上半部分,另外27%是為實現(xiàn)內(nèi)建自測試消耗的資源。因為單段程序只涉及單一資源,內(nèi)部觸發(fā)器和LUT的占用比例較低,但多個程序疊加能夠完成對CLB的100%覆蓋。
表2 MULT_AND老煉程序資源占用情況
3.2.2 BRAM、DSP和時鐘單元等硬核模塊老煉程序設(shè)計
BRAM、DSP和時鐘單元等硬核模塊為黑盒子模塊,老煉程序設(shè)計較為簡單,只需要根據(jù)BRAM和DSP的各種工作模式進(jìn)行窮舉調(diào)用。以BRAM老煉程序設(shè)計為例,BRAM初始化值為全0,采用March C+算法,覆蓋所有位寬,覆蓋A寫A讀、A寫B(tài)讀、B寫A讀、B寫B(tài)讀即可。
3.2.3開關(guān)和互連線老煉程序設(shè)計
FPGA能夠?qū)崿F(xiàn)高度靈活性的原因在于FPGA包含了大量的開關(guān)和互連線資源,這種優(yōu)勢也給老煉程序的設(shè)計帶來了挑戰(zhàn),開關(guān)和互連線老煉程序采用xdl語言設(shè)計,首先生成xdl文件,然后通過xdl文件生成位流文件。這種方法不需要約束文件,可以完全根據(jù)設(shè)計人員的需要定制老煉程序,具有覆蓋率高的優(yōu)點,但需要了解FPGA內(nèi)部所有互連節(jié)點的分布和命名規(guī)則。圖8是單倍線xdl代碼截圖(部分)。
圖8 單倍線xdl代碼(部分)
根據(jù)布線資源跨越CLB數(shù)量的不同,至少需將互連線的設(shè)計分為3類:單倍線(連接相鄰開關(guān)矩陣不跨越任何CLB的布線)、六倍線(通過一個開關(guān)矩陣跨越5個CLB與另一個開關(guān)矩陣相連的布線)和全局長線(貫穿整個FPGA的CLB陣列,具有最小延時的布線),且需覆蓋開關(guān)矩陣內(nèi)部的可編程互聯(lián)點PIPs(Programmable Interconnect Points)。
工位FPGA采用被動串行配置,老煉系統(tǒng)工作流程由以下步驟構(gòu)成:
(1)將需要的若干段老煉程序(測試程序移植和減端口改造)以BIN文件的形式寫入到驅(qū)動板的存儲器中;
(2)工位板和驅(qū)動板上電后,驅(qū)動板向老煉板發(fā)送配置時鐘信號CCLK和配置信號DIN,實現(xiàn)對FPGA的從串模式配置;
(3)完成第一段全部的配置數(shù)據(jù)寫入后,保持CCLK電平不變;
(4)驅(qū)動板根據(jù)當(dāng)前寫入的配置程序,給予相應(yīng)的激勵;
(5)在等待特定的時間后(300~600 s),PROGRAM發(fā)低脈沖,等待INIT為高后,重新寫入新的老煉程序;
(6)重復(fù)2~5步,周而復(fù)始,實現(xiàn)多老煉程序的動態(tài)刷新。
目前已經(jīng)在多個FPGA產(chǎn)品中實現(xiàn)了動態(tài)老煉系統(tǒng),以某型30萬門FPGA為例,老煉程序共148段,可實現(xiàn)所有硬核資源以及絕大部分開關(guān)和互連線資源的覆蓋。通過專用軟件統(tǒng)計148段老煉程序綜合資源覆蓋率并與原來的單段老煉程序?qū)Ρ?,老煉資源覆蓋率對比結(jié)果如表3所示。
表3 老煉資源覆蓋率對比
①只覆蓋了16位數(shù)據(jù)位寬和真雙端口讀寫模。
②I/O使用率能夠達(dá)到100%,但是I/O內(nèi)部資源覆蓋率只有10%~20%。
對比結(jié)果表明,采用多段程序刷新的方式對電路進(jìn)行老煉,可顯著提高老煉覆蓋率。
FPGA制造過程中產(chǎn)生的潛在缺陷會導(dǎo)致器件出現(xiàn)早期失效,老煉試驗的意義在于通過加速電路老化使集成電路快速進(jìn)入失效率低且相對穩(wěn)定的偶發(fā)失效期。由于FPGA結(jié)構(gòu)復(fù)雜,單段動態(tài)老煉程序并不能使絕大部分邏輯資源進(jìn)入動態(tài)老煉狀態(tài),達(dá)不到使器件進(jìn)入偶發(fā)失效期的目的,可能使器件潛在缺陷無法暴露,通過多段程序刷新的老煉方法可彌補(bǔ)上述缺陷,實現(xiàn)更高的老煉覆蓋率。