周家成
(同濟大學(xué),上海 201804)
基于SRAM工藝的現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)具有較高的邏輯密度,且因其靈活通用以及可重復(fù)配置的特點而廣泛應(yīng)用于航天電子系統(tǒng)中。然而在空間輻射環(huán)境下,SRAM型FPGA內(nèi)部的配置存儲器極易受到高能粒子的撞擊而發(fā)生邏輯狀態(tài)的翻轉(zhuǎn),導(dǎo)致電路結(jié)構(gòu)發(fā)生改變而產(chǎn)生軟錯誤。因此,可靠性已經(jīng)成為FPGA設(shè)計最重要的指標(biāo)之一。
已有研究成果證實,空間環(huán)境下由于輻射造成的可靠性問題91%來自于單粒子翻轉(zhuǎn)造成的軟錯誤[10]。軟錯誤是可編程器件的配置發(fā)生改變導(dǎo)致電路功能錯誤的現(xiàn)象。為了緩解和消除軟錯誤對FPGA器件帶來的影響,學(xué)術(shù)界和工業(yè)界已經(jīng)開展了豐富的研究,如文獻[1,2]。然而這些研究往往基于通用的FPGA結(jié)構(gòu)模型,而無法評估真實器件對單粒子軟錯誤的反應(yīng);另一方面,采用對真實FPGA芯片進行高能粒子轟擊的辦法不僅價格昂貴,而且也無法在芯片的設(shè)計開發(fā)階段開展軟錯誤的評估,使得成品的軟錯誤性能很難得到保證。
為了能夠在FPGA芯片的設(shè)計開發(fā)階段就對FPGA器件原型結(jié)構(gòu)、布局布線(P&R)算法的軟錯誤性能進行評估,保證芯片的可靠性,本文選擇了已經(jīng)廣泛應(yīng)用的Xilinx公司Virtex系列FPGA芯片[3]作為研究對象,設(shè)計并開發(fā)一款面向?qū)嶋HFPGA器件的單粒子軟錯誤評估工具。Virtex系列FPGA芯片因其結(jié)構(gòu)精簡而具有代表性,至今在國內(nèi)尤其是航空航天領(lǐng)域仍有廣泛的應(yīng)用空間。
本文在深入研究了目標(biāo)FPGA器件底層結(jié)構(gòu)的基礎(chǔ)上,提取了SEU敏感單元的最小結(jié)構(gòu)模型,并進一步通過實現(xiàn)FPGA配置文件的讀入設(shè)計接口,實現(xiàn)了面向目標(biāo)FPGA軟錯誤的軟件評估平臺的建立。與目標(biāo)硬件軟錯誤效應(yīng)的比對驗證表明,本文提出的軟錯誤評估工具可以準(zhǔn)確地評估目標(biāo)FPGA芯片的軟錯誤特性。
FPGA軟錯誤效應(yīng)的評估需要基于FPGA器件模型展開。本節(jié)將對國內(nèi)外研究在這兩方面的成果進行簡要介紹。
VPR是基于島式結(jié)構(gòu)的布局布線工具。由于其開源的布局布線算法在學(xué)術(shù)界和工業(yè)界得到廣泛使用[4]。VPR將可編程邏輯器件按照功能邏輯劃分為不同的組成模塊,如圖1(a)所示。
(1)可編程邏輯塊(CLB),實現(xiàn)電路設(shè)計的邏輯功能;
(2)可編程I/O塊(IOB),連接芯片引腳于內(nèi)部信號;
(3)布線資源,即水平與豎直兩個方向的布線通道;
(4)可編程連接模塊,包括兩種開關(guān)矩陣Switch Box和Connection Box,分別用于連接兩個不同方向上的布線通道和連接CLB與布線通道。
VPR結(jié)構(gòu)模型具有對稱性,通過對每個不同模塊進行建模描述之后,就得到了整個FPGA器件的結(jié)構(gòu)。VPR采用的建模方法比CGE、SEGA更加精確[5],也給出了完整的P&R解決方案。但是VPR模型是基于實際器件的抽象,并不能精確對應(yīng)實際器件的物理結(jié)構(gòu),因而不能為真實FPGA器件提供準(zhǔn)確的故障模型。
Virtex器件包含可配置邏輯塊(CLBs)、輸入輸出塊(IOBs)、RAM塊(Block RAMs)、時鐘資源、可編程布線以及配置接口電路。這些資源由配置碼流文件(.bit)進行配置,通過配置接口完成一系列的配置指令以及配置數(shù)據(jù)的讀寫。
Virtex器件由多個重復(fù)的Tiles構(gòu)成,包括CLB Tile、IOB Tile、DLL Tile等。其中CLB Tiles構(gòu)成了Virtex器件的主體,如圖1(b)所示。CLB Tile中除了預(yù)布線資源外,還包含了多種可配置資源,如兩個邏輯功能單元(Slice)、兩個三態(tài)總線驅(qū)動單元(T-Buffer)、輸入輸出模塊(I/OMUX)以及全局布線資源(Global Routing Matrix,GRM)。其中,Slice內(nèi)部可配置單元的詳細(xì)結(jié)構(gòu)由圖1(c)進一步給出,它包含了邏輯生成器(LUT)、快速算數(shù)邏輯以及觸發(fā)器來實現(xiàn)多種邏輯功能。同時,OMUX將Slice的輸出接入全局布線資源,IMUX將信號從全局布線資源接入Slice和T-Buffer??梢钥吹剑@些可配置資源的功能完全受控于預(yù)定的配置單元,并通過碼流文件的配置完成預(yù)期的功能。然而一旦配置單元因為SEU而發(fā)生軟錯誤,電路的功能或結(jié)構(gòu)就會發(fā)生改變,影響整個FPGA器件的功能。
為了評估Virtex器件的軟錯誤效應(yīng),首先需要根據(jù)器件特點建立敏感資源的結(jié)構(gòu)模型;同時通過對配置碼流文件進行解析獲取敏感資源的設(shè)計信息,實現(xiàn)FPGA功能網(wǎng)表的提取。在此基礎(chǔ)上進一步利用故障注入技術(shù)和本文設(shè)計的軟錯誤仿真軟件分析軟錯誤在器件中的傳播,研究器件軟錯誤效應(yīng)的特性。實現(xiàn)上,本文利用Virtex器件結(jié)構(gòu)化的描述工具RapidSmith[6],并對其進行結(jié)構(gòu)和仿真功能的擴展,來滿足本文提出的軟錯誤效應(yīng)評估工具的需求。
FPGA中可配置資源結(jié)構(gòu)發(fā)生SEU的概率與該資源所占配置數(shù)直接相關(guān)[7]。由于CLB在Virtex器件中占全器件配置位的85%以上(如XCV300)[8],并且該比例隨器件規(guī)模的加大而增加,因此本文主要針對CLB配置位進行SEU軟錯誤效應(yīng)的評估。
解決了這小小的不愉快,史黛西小姐帶著大家繼續(xù)參觀。望著櫥窗里那些珍寶,步凡瞪大了眼睛,贊嘆的聲音從他的嘴里溢出。就在他隨著隊伍邊走邊看邊贊嘆的時候,他的目光突然停駐在了展館的角落——在那個展柜里,靜靜地躺著一本攤開的書,雖然書頁已經(jīng)泛黃,頁面的邊緣也顯得殘破而參差不齊,但讓人疑惑的是,書上的字符不是工工整整的印刷體,而是龍飛鳳舞的手寫體!
圖1 通用VPR結(jié)構(gòu)模型和Virtex系列FPGA結(jié)構(gòu)
如圖2(a)所示,Virtex器件中配置碼流的存儲可以表征為比特矩陣的形式,其中包含了CLB中各種可配置資源的配置信息(含冗余比特)[9]。如果已知一個CLB配置位在其所屬矩陣中的相對坐標(biāo),以及該CLB在整個器件中的空間位置編號,就可以計算出該比特在整個配置流中的絕對位置;反之亦然。
因此,本文首先通過對配置碼流文件組織結(jié)構(gòu)的分析獲得了CLB配置矩陣與Virtex物理結(jié)構(gòu)之間準(zhǔn)確的對應(yīng)關(guān)系,如圖2(b)所示。根據(jù)這個對應(yīng)關(guān)系,就可以建立配置碼流文件中具體的一個配置位與Virtex器件中某個配置單元和可配置資源的聯(lián)系,從而為軟錯誤效應(yīng)的準(zhǔn)確分析打下基礎(chǔ)。
本文提出的軟錯誤評估工具需要對器件的資源結(jié)構(gòu)以及各種可配置資源之間的邏輯連接關(guān)系進行描述。為此,我們利用如圖3所示的Device類來層次化地記錄器件的結(jié)構(gòu)和連接信息。Device類包含一個由Tile對象組成的二維陣列,以及一個Primitive Def類來對Primitive Site對象的結(jié)構(gòu)進行形式化的定義。Tile對象專門用于保存各種資源間的連接關(guān)系。它包含三個類成員:Wire、WireConnection和Primitive Site。其中Wire描述了Tile中所有的硬線資源。每一個Wire有數(shù)個WireConnection對象與之對應(yīng),描述了這條硬線在器件中所有的連接關(guān)系,WireConnection的實例構(gòu)成了器件中全部可供設(shè)計使用的連線資源。Primitive Site聲明了Tile中存在的邏輯單元,如Slice、T Buffer,但并不描述其詳細(xì)結(jié)構(gòu)。
為了獲得器件設(shè)計實例的功能網(wǎng)表,需要描述器件中邏輯電路的設(shè)計結(jié)構(gòu),即具體電路設(shè)計使用到的資源和連接情況。為此,我們利用如圖4所示的Design類來層次化地描述FPGA所實現(xiàn)的邏輯網(wǎng)絡(luò)。器件的邏輯網(wǎng)絡(luò)包含兩類:首先Frame Instance表示在設(shè)計中被實例化的Primitive Site,是頂層的邏輯結(jié)構(gòu);Global Net表示全局互聯(lián)線網(wǎng),連接各個Frame Instance形成頂層電路網(wǎng)絡(luò)。
圖3 FPGA器件資源模型結(jié)構(gòu)
圖4 FPGA設(shè)計結(jié)構(gòu)模型
進一步,在Frame Instance內(nèi)部,同樣建立邏輯與互聯(lián)資源的網(wǎng)絡(luò)結(jié)構(gòu):Bool Element和Inner Net。Bool Element擴展自Primitive Def下的Element,描述了具有邏輯功能的Element,如LUT或邏輯門。它具備Runnable接口,能夠被仿真內(nèi)核調(diào)用實現(xiàn)功能函數(shù)的仿真。Inner Net在功能上類似于Global Net,它連接了Bool Element。
圖5 功能仿真模型網(wǎng)絡(luò)結(jié)構(gòu)示意圖
在完成器件資源的建模和電路結(jié)構(gòu)的定義之后,讀入ISE標(biāo)準(zhǔn)設(shè)計流程生成的.bit文件,以生成可仿真的鏈路網(wǎng)絡(luò)模型。讀入的過程首先將讀入的配置文件的比特流按照其組織方式還原成配置矩陣,找出變化的配置位,再通過配置位的相對坐標(biāo)找到其對應(yīng)的可配置結(jié)構(gòu)。接下來,得到了這些散列的可配置結(jié)構(gòu)之后,建立兩類線網(wǎng)對象,即Global Net和Inner Net實現(xiàn)可配置結(jié)構(gòu)的互連。于是將FPGA電路建立了如圖5所示的層次化網(wǎng)絡(luò)結(jié)構(gòu),用于仿真軟錯誤的注入、傳播。
本文采用故障注入技術(shù)來模擬軟錯誤對器件配置字造成的翻轉(zhuǎn)情況。簡單來講,通過在碼流文件中隨即注入,通過配置位的索引查找到器件中該配置位對應(yīng)的可編程單元,賦予其特定故障;再利用功能網(wǎng)表對電路進行仿真以模擬軟錯誤在器件中的傳播和顯現(xiàn)過程,并最終將輸出與真實電路的輸出進行比較。
可配置單元的故障模型根據(jù)故障點發(fā)生的位置可以分為兩種情況:當(dāng)故障點位于Bool Element時,需要利用發(fā)生SEU后新的功能函數(shù)來替代原有功能函數(shù)進行故障單元的仿真;當(dāng)故障點位于PIP時,如圖6所示,需要根據(jù)故障敏感單元的故障模型計算故障點的行為函數(shù),并將計算得到的故障電平值傳播到每一個下游輸入引腳。故障點的行為函數(shù)可能涉及多個Wire的電平值,比如在等效MUX結(jié)構(gòu)隨機發(fā)生SEU的情況下,這些輸入Wire都有可能會被錯誤地輸出,影響電路中信號的正確傳播。
圖6 PIP故障點的故障傳播
為驗證本文提出的軟錯誤軟件評估平臺的準(zhǔn)確性,我們以兩個示例電路——8位的全加器和8位的乘法器來對軟錯誤效應(yīng)進行驗證。具體來講,通過軟件平臺對碼流文件進行解析和仿真,讀入到軟件平臺,并同時將相同的碼流文件下載到硬件實驗板,利用相同的輸入向量比較軟件的仿真輸出與硬件輸出的匹配度。
表1給出了兩個示例設(shè)計完成ISE綜合、布局布線、碼流生成后在目標(biāo)FPGA器件中資源的使用情況。雖然采用的示例電路沒有占用全部的FPGA資源,但考慮到FPGA可配置資源具有高度重復(fù)和對稱的結(jié)構(gòu),軟錯誤在同類型資源上的效應(yīng)也具有高度一致性的特點,因此采用的示例電路一定程度上可以較為準(zhǔn)確地反映出本文提出的軟件評估平臺對軟錯誤仿真的準(zhǔn)確程度。
表1 實驗電路在目標(biāo)器件上資源的占用情況
實驗首先對無故障電路模型進行測試,測試輸入向量共256對。經(jīng)驗證,無故障電路仿真結(jié)果的匹配度為100%,即所提出的軟件評估平臺在無故障的條件下可以給出與實際器件完全相同的結(jié)果,這表明本文所提出的軟件評估平臺在功能上是正確的。
接下來隨機對電路注入SEU故障并對故障電路進行重新仿真。同時將故障碼流下載到FPGA器件上以比對兩個平臺的輸出。表2給出了隨機注入故障的總數(shù)和所在資源的分布情況,圖7給出了軟件仿真平臺與實際FPGA器件在電路發(fā)生軟錯誤下結(jié)果的匹配度。
表2 實驗電路故障點所在資源的分布情況
圖7 故障注入后軟件仿真和實際器件的匹配度結(jié)果
實驗結(jié)果表明,對于LUT和PIP中的軟錯誤,本文提出的軟錯誤仿真軟件可以給出很好的仿真精度,匹配度達到90%以上;對于MUX來說,匹配度也達到75%以上。不同資源類型故障匹配度的差異,說明電路中實際結(jié)構(gòu)的故障模型準(zhǔn)確性是影響故障仿真結(jié)果的重要因素??傮w來講,利用本文提出的軟錯誤評估平臺在故障注入實驗下與真實硬件的平均匹配度達到了理想的預(yù)測效果。這表明本工具對目標(biāo)FPGA器件的軟錯誤效應(yīng)有很好的評估能力,也表明本文提出的軟錯誤軟件評估方法具有良好的應(yīng)用價值。
本文設(shè)計并提出了一款面向真實FPGA器件SEU效應(yīng)的軟件評估平臺。實驗結(jié)果表明,本文提出的方法和平臺可以準(zhǔn)確地對目標(biāo)器件的SEU效應(yīng)進行評估,從而為FPGA結(jié)構(gòu)設(shè)計和應(yīng)用開發(fā)提供先于硬件實現(xiàn)的軟件驗證環(huán)境。通過對電路模型和軟錯誤分析的改進,我們可以進一步提高對軟錯誤效應(yīng)的評估精度,為高可靠性FPGA芯片的研究、開發(fā)和設(shè)計提供更準(zhǔn)確的參考。
[1] L Sterpone, M Violante. A New Reliability-Oriented Place and Route Algorithm for SRAM-based FPGAs[J]. IEEE Transactions on Computers, 2006, 55(6): 732-744.
[2] 李興政,楊海鋼,等. VPR在FPGA結(jié)構(gòu)設(shè)計中的應(yīng)用[J]. 電子器件,2007, (10):1874-1877.
[3] 基于Scrubbing的空間SRAM型FPGA抗SEU系統(tǒng)設(shè)計[J].
[4] 劉攀,周強,等. 基于VPR的層次是FPGA結(jié)構(gòu)描述方法研究[J]. 微電子學(xué),2009, (2):105-110.
[5] Vaughn Betz, Jonathan Rose. Automatic Generation of FPGA Routing Architectures from High-Level Descriptions[A]. In: FPGA. 2000.
[6] Christopher Lavin, Marc Padilla, etc. A Library for Lowlevel Manipulation of Partially Placed-and-Routed FPGA Designs[EB/OL]. rapidsmith.sourceforge.net/docs.html
[7] 周永彬,楊俊. SRAM型FPGA單粒子翻轉(zhuǎn)失效率自動測試系統(tǒng)設(shè)計與實現(xiàn)[J].計算機測量與控制,2010,18(10): 2272-2274.
[8] Xilinx. Virtex Series Configuration Architecture User Guide[OL]. www.xilinx.com
[9] WANG ZhongMing, YAO ZhiBin, etc. Bitstream decoding and SEU-induced failure analysis in SRAM-based FPGAs[J]. SCIENCE CHINA-Information Sciences, 2012,(4): 971-982.
[10] P Graham, M Caffrey, J Zimmerman, D E Johnson, P Sundararajan, C Patterson. Consequences and Categories of SRAM FPGA Configuration SEUs. Militaryand Aerospace Applications of Programmable LogicDevices (MAPLD) ,2003.