基于冗余互連資源的fpga單粒子翻轉(zhuǎn)軟錯(cuò)誤檢測方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及FPGA軟錯(cuò)誤防護(hù)與檢測領(lǐng)域,特別是涉及一種基于冗余互連資源的FPGA單粒子翻轉(zhuǎn)軟錯(cuò)誤檢測方法。【
背景技術(shù):
】[0002]目前大部分的FPGA器件都采用SRAM,即靜態(tài)隨機(jī)存儲器(StaicRandomAccessMemory,SRAM)作為配置信息的存儲單元。雖然SRAM型FPGA器件具有開發(fā)周期短、成本低、高性能、低功耗以及可重配置等優(yōu)點(diǎn),但是SRAM型FPGA器件內(nèi)部存在的大量SRAM可配置單元極易受到高能粒子影響發(fā)生單粒子翻轉(zhuǎn)(SingleEventUpset,SEU)軟錯(cuò)誤,使得其結(jié)構(gòu)與功能發(fā)生變化而產(chǎn)生功能失效。隨著器件集成度的不斷提高,F(xiàn)PGA器件應(yīng)用范圍不斷擴(kuò)大,單粒子翻轉(zhuǎn)軟錯(cuò)誤引起的可靠性問題已經(jīng)成為影響FPGA器件進(jìn)一步發(fā)展的重要因素。[0003]在過去的研宄中已經(jīng)對FPGA單粒子翻轉(zhuǎn)軟錯(cuò)誤防護(hù)技術(shù)有了廣泛研宄,這類研宄主要分為錯(cuò)誤檢測技術(shù)與糾正技術(shù)。軟錯(cuò)誤糾正技術(shù)能夠在系統(tǒng)工作的同時(shí)將軟錯(cuò)誤對電路的影響消除,保證電路的正常工作。但是軟錯(cuò)誤糾正技術(shù)往往不能準(zhǔn)確定位軟錯(cuò)誤的發(fā)生地,一旦軟錯(cuò)誤在FPGA器件中產(chǎn)生積累,只能將整個(gè)FPGA器件進(jìn)行重配置才能使電路恢復(fù)正常。錯(cuò)誤檢測技術(shù)主要作用是將那些發(fā)生軟錯(cuò)誤的SRAM單元快速檢測出來,并通過檢測出來的錯(cuò)誤信息準(zhǔn)確地定位軟錯(cuò)誤的發(fā)生點(diǎn),之后再配合其它的錯(cuò)誤糾正技術(shù),如刷新技術(shù),動(dòng)態(tài)重配置等對整體電路或者部分電路進(jìn)行重配置來糾正軟錯(cuò)誤對電路的影響。[0004]雙備份比較技術(shù)(DWC)是一種十分簡單常用的錯(cuò)誤檢測技術(shù)。DWC技術(shù)將原電路轉(zhuǎn)化為兩份完全相同的復(fù)制電路,并通過比較這兩份復(fù)制電路的輸出來檢測電路中是否有軟錯(cuò)誤發(fā)生。DWC技術(shù)是一種能夠?qū)崿F(xiàn)在線實(shí)時(shí)檢測的錯(cuò)誤檢測技術(shù),它不需要停止系統(tǒng)工作來對電路進(jìn)行檢測,一旦電路中發(fā)生軟錯(cuò)誤,DWC技術(shù)中的比較器就會即時(shí)地輸出錯(cuò)誤信息。通過對錯(cuò)誤信息的解讀,即可準(zhǔn)確定位軟錯(cuò)誤的發(fā)生位置,并可以在保證其他電路正常工作的情況下,僅針對故障電路進(jìn)行重配置從而使電路恢復(fù)正常。[0005]DWC技術(shù)本質(zhì)是一種基于硬件冗余的檢測技術(shù),需要為電路提供時(shí)序元件,組合邏輯、布線資源以及I/O端口等多種硬件資源的全面冗余,但是全面冗余的策略會導(dǎo)致DWC技術(shù)在面積、時(shí)序、功耗以及I/O端口等方面有大量的開銷。同時(shí)FPGA內(nèi)部資源占用率往往有較大差別,這種資源占用的不均衡現(xiàn)象在實(shí)際設(shè)計(jì)中十分常見,往往因?yàn)槟承┵Y源的限制,導(dǎo)致其不能實(shí)現(xiàn)完整的雙備份比較技術(shù)?!?br/>發(fā)明內(nèi)容】[0006]為克服上述現(xiàn)有技術(shù)存在的不足,本發(fā)明之目的在于提供一種基于冗余互連資源的FPGA單粒子翻轉(zhuǎn)軟錯(cuò)誤檢測方法,其通過充分利用設(shè)計(jì)中互連資源存在較多冗余這一現(xiàn)象,開發(fā)了高效的冗余互連資源搜索算法,并借助對FPGA結(jié)構(gòu)的簡單修改,實(shí)現(xiàn)了對單粒子翻轉(zhuǎn)軟錯(cuò)誤的高效在線檢測。[0007]為達(dá)上述及其它目的,本發(fā)明提出一種基于冗余互連資源的FPGA單粒子翻轉(zhuǎn)軟錯(cuò)誤檢測方法,包括如下步驟:[0008]步驟一,建立FPGA內(nèi)部互連資源中的連接關(guān)系;[0009]步驟二,不使用邏輯單元,直接在FPGA器件中插入比較電路;[0010]步驟三,為已有的互聯(lián)資源尋找復(fù)制線路[0011]步驟四,將復(fù)制線路與比較電路結(jié)合完成對FPGA的基于冗余互連資源的雙備份比較,實(shí)現(xiàn)錯(cuò)誤檢測。[0012]進(jìn)一步地,對互聯(lián)資源尋找復(fù)制線路為不修改原設(shè)計(jì)的布局,直接在冗余互連資源的基礎(chǔ)上完成對互連資源的復(fù)制。[0013]進(jìn)一步地,步驟三進(jìn)一步包括:[0014]將器件中的互連資源分為實(shí)際設(shè)計(jì)中已使用的互連資源與未使用的冗余互連資源;[0015]將已使用的互連資源拆分為多個(gè)互連線,以互連線為單位尋找復(fù)制線路;[0016]將實(shí)際電路圖轉(zhuǎn)化為有向圖;[0017]在有向圖中完成對復(fù)制線路的搜索。[0018]進(jìn)一步地,所述將實(shí)際電路轉(zhuǎn)化為有向圖的轉(zhuǎn)化方法為:[0019]為每個(gè)互連資源與其可連接的互連資源建立連接關(guān)系;[0020]將互連資源轉(zhuǎn)化為有向圖的頂點(diǎn),互連資源之間的連接關(guān)系轉(zhuǎn)化為有向圖中的邊。[0021]進(jìn)一步地,所述在有向圖中完成復(fù)制線路的搜索的搜索方法為:[0022]將互連線路重要性排序;[0023]按順序?qū)γ恳粋€(gè)互連線路搜索復(fù)制線路;[0024]對每根互連線,從冗余互連資源中搜索另一條從source端到sink端的路徑;[0025]對每個(gè)互連線搜索完成后需要對互連資源中的使用情況進(jìn)行重新分類。[0026]進(jìn)一步地,對互連線路按涉及到的敏感比特位數(shù)進(jìn)行排序。[0027]進(jìn)一步地,對每根互連線,使用廣度遍歷算法,從冗余互連資源中搜索另一條從source端到sink端的路徑。[0028]進(jìn)一步地,在步驟二中,直接在FPGA器件中插入由異或門組成的比較電路。[0029]進(jìn)一步地,步驟二中,在頂U(kuò)X與邏輯模塊接口處插入比較電路。[0030]進(jìn)一步地,所述有向圖為無權(quán)有向圖。[0031]與現(xiàn)有技術(shù)相比,本發(fā)明一種基于冗余互聯(lián)資源的FPGA單粒子翻轉(zhuǎn)軟錯(cuò)誤檢測方法充分利用了設(shè)計(jì)中互連資源存在較多冗余這一現(xiàn)象,開發(fā)了高效的冗余互連資源搜索算法,并借助對FPGA結(jié)構(gòu)的簡單修改,實(shí)現(xiàn)了對單粒子翻轉(zhuǎn)軟錯(cuò)誤的高效在線檢測?!靖綀D說明】[0032]圖1為本發(fā)明所面向的Virtex系列FPGA內(nèi)部結(jié)構(gòu);[0033]圖2為本發(fā)明一種基于冗余互連資源的FPGA單粒子翻轉(zhuǎn)軟錯(cuò)誤檢測方法的步驟流程圖;[0034]圖3為本發(fā)明將net分解成line的示意圖;[0035]圖4為本發(fā)明將實(shí)際電路轉(zhuǎn)化為有向圖的示意圖;[0036]圖5為本發(fā)明一具體實(shí)施例的流程圖?!揪唧w實(shí)施方式】[0037]以下通過特定的具體實(shí)例并結(jié)合【附圖說明】本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭示的內(nèi)容輕易地了解本發(fā)明的其它優(yōu)點(diǎn)與功效。本發(fā)明亦可通過其它不同的具體實(shí)例加以施行或應(yīng)用,本說明書中的各項(xiàng)細(xì)節(jié)亦可基于不同觀點(diǎn)與應(yīng)用,在不背離本發(fā)明的精神下進(jìn)行各種修飾與變更。[0038]本發(fā)明所面向的FPGA器件為Xilinx公司Virtex系列FPGA器件,其具體結(jié)構(gòu)圖如圖1所示。Virtex器件采用的是島式結(jié)構(gòu),主要由可配置邏輯模塊陣列CLB構(gòu)成,CLB周圍被IO模塊IOB所包圍。每個(gè)CLB都由邏輯塊(Logicblock,LB)、輸入輸出多路選擇器(10MUX)以及開關(guān)矩陣(SwitchMatrix,SM)組成。其中一個(gè)LB中有兩個(gè)Slice,每個(gè)Slice中包括兩個(gè)4輸入的查找表LUT(Look-uptable)、兩個(gè)FFs(Flip-flops)以及若干MUX結(jié)構(gòu)與邏輯門。所有的LB被互連資源所包圍,互連資源主要組成成分有IOMUX和SwitchMatrix以及互連線段(Linesegment)。對Virtex系列的CLB中不同配置資源具體占比情況及其軟錯(cuò)誤發(fā)生比例進(jìn)行分析,發(fā)現(xiàn)90%以上的軟錯(cuò)誤都發(fā)生在FPGA的互連資源,在對FPGA的實(shí)際設(shè)計(jì)進(jìn)一步分析發(fā)現(xiàn)電路中的冗余互連資源大量存在,而冗余的邏輯資源較少。雖然FPGA中心區(qū)域的布線往往會因?yàn)樵O(shè)計(jì)的需要而被充分使用,但周圍的互連資源往往會大量閑置,這對于利用互連資源的冗余改進(jìn)雙備份比較技術(shù),從而實(shí)現(xiàn)軟錯(cuò)誤的檢測是非常有利的。[0039]圖2為本發(fā)明一種基于冗余互連資源的FPGA單粒子翻轉(zhuǎn)軟錯(cuò)誤檢測方法的步驟流程圖。如圖2所示,本發(fā)明一種基于冗余互連資源的FPGA單粒子翻轉(zhuǎn)軟錯(cuò)誤檢測方法,包括如下步驟:[0040]步驟201,建立FPGA內(nèi)部互連資源中的連接關(guān)系。[0041]在FPGA設(shè)計(jì)中互連資源是用于連接FPGA器件中的邏輯模塊。所有的互連資源是由多個(gè)net(線網(wǎng))構(gòu)成,每個(gè)net是由多個(gè)互連資源即pip(ProgrammableIntercon-nectPoints)組成,代表的是一個(gè)邏輯單元產(chǎn)生的輸出信號到另一個(gè)邏輯單元或者IOB端口的所有路徑。我們可以將net中從輸出端口引出的第一根互連線段的驅(qū)動(dòng)端稱為source端口;將net中接入到輸入端口的最后一根互連線段的被驅(qū)動(dòng)端口稱為sink端口。因此步驟203中為互連資源尋找復(fù)制線路的實(shí)質(zhì)就是在FPGA器件中為設(shè)計(jì)中的每個(gè)net尋找其復(fù)制線網(wǎng)即replicanet,replicanet是由器件中未被使用的可配置互連資源中的一些特定pip組成。replicanet的source端、sink端和原net的source端、sink端完全一至夂。由于一個(gè)net中包含一個(gè)source以及若干個(gè)sink,net會產(chǎn)生分支結(jié)構(gòu)這種多分支結(jié)構(gòu)給我們?yōu)槊總€(gè)net同時(shí)尋找復(fù)制線網(wǎng)帶來很大的困難,因此我們將net拆分為多個(gè)line,每個(gè)line由一個(gè)source端口,一個(gè)sink端口以及若干個(gè)pip組成,其具體拆分方式如圖3所示。圖中一個(gè)net拆分為3個(gè)line每個(gè)line由一個(gè)source端口,一個(gè)sink端口以及若干個(gè)pip構(gòu)成,無分支結(jié)構(gòu)。其中l(wèi)ineA包括source端口,sinkl端口以及pl、p4、p7、p8共4個(gè)。丨。;1:[11613包括80111^6端口,8;[111^2端口以及。3、。6、。9、。11共4個(gè)。丨。;1;[1160包括source端口,sink3端口以及p2、p5、p10、p12、p13共5個(gè)pip0[0042]步驟202,不使用邏輯單元,直接在FPGA器件中插入比較電路。[0043]傳統(tǒng)的完整雙備份比較技術(shù)是利用LUT或當(dāng)前第1頁1 2