国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA 硬件的單粒子翻轉(zhuǎn)模擬技術(shù)

2021-09-20 10:26:56施聿哲白雨鑫
數(shù)據(jù)采集與處理 2021年4期
關(guān)鍵詞:故障注入觸發(fā)器腳本

施聿哲,陳 鑫,陳 凱,白雨鑫,張 穎

(南京航空航天大學(xué)電子信息工程學(xué)院,南京 211106)

引 言

隨著制造工藝的發(fā)展,集成電路特征尺寸減小,改變電路工作狀態(tài)所需要的能量閾值呈幾何級(jí)下降趨勢(shì),使得集成電路更容易受到輻射照射的影響[1]。地球外層空間為強(qiáng)輻射環(huán)境[2],給航天設(shè)備中集成電路的正常運(yùn)作帶來了極大的挑戰(zhàn)。輻照對(duì)集成電路可恢復(fù)性故障中最主要的影響為單粒子翻轉(zhuǎn)(Single event upset,SEU),表現(xiàn)為存儲(chǔ)單元中的比特位翻轉(zhuǎn)。因此,評(píng)估集成電路對(duì)SEU 的敏感性至關(guān)重要。

通常采用故障注入技術(shù)來模擬宇宙空間環(huán)境中SEU 對(duì)集成電路的影響,其中最經(jīng)典的方法是將電路暴露在模擬的空間輻射環(huán)境中進(jìn)行故障注入[3?4],以獲得與實(shí)際輻射環(huán)境下最為接近的實(shí)驗(yàn)數(shù)據(jù)。但是這種方法存在損害電路的風(fēng)險(xiǎn),且測(cè)試成本十分昂貴,通常只有在電路設(shè)計(jì)的最終測(cè)試階段才會(huì)采用?;谲浖抡娴墓收献⑷爰夹g(shù)則是輻射測(cè)試的有效替代方法。它支持多種類型的故障模型,實(shí)現(xiàn)方式非常靈活。文獻(xiàn)[5]提出了一種基于TCL 腳本在網(wǎng)表級(jí)電路中注入故障的方法,但是軟件仿真的時(shí)間開銷非常大,并不適用于超大規(guī)模集成電路(Very large scale integration,VLSI)輻射性能的評(píng)估。

現(xiàn)在廣泛采用基于FPGA 的硬件模擬技術(shù)的故障注入方法。FPGA 硬件模擬速度很快,能夠滿足VLSI 電路的評(píng)估需求,此外FPGA 還具有良好的可控性和可觀察性。此類方法又分為重配置和旁路注入。重配置首先回讀配置存儲(chǔ)器的比特文件,然后修改部分配置內(nèi)容以模擬單粒子翻轉(zhuǎn),再重新寫回配置存儲(chǔ)器[6?8]。該方法基于FPGA 的內(nèi)部專用端口實(shí)現(xiàn),沒有額外的資源開銷。但是重配置功能高度依賴FPGA 硬件的支持,比特文件配置FPGA 所消耗的時(shí)間很容易成為故障注入速度的瓶頸。旁路注入最常用的方式是復(fù)用掃描鏈,其故障注入速度可達(dá)到微秒級(jí)[9?10],相比重配置快了多個(gè)數(shù)量級(jí),而且易于實(shí)現(xiàn),可通過腳本直接在原始電路中插入。但復(fù)用掃描鏈?zhǔn)菍⒐收辖?jīng)由掃描鏈串行移位至目標(biāo)寄存器,該過程會(huì)增加非常明顯的時(shí)間開銷。另一種方式是修改觸發(fā)器結(jié)構(gòu)[11?12]。文獻(xiàn)[11]通過修改FPGA 內(nèi)建庫中構(gòu)成電路的基本單元使電路具備故障注入功能,該方案理論上可達(dá)到的故障注入速度最快。但是重建庫是十分耗時(shí)的過程,需要將原始器件庫中的觸發(fā)器、RAM、邏輯門和乘法器等所有單元進(jìn)行替換,而且器件庫和測(cè)試平臺(tái)是緊密聯(lián)系的,測(cè)試平臺(tái)的升級(jí)或者更替可能導(dǎo)致器件庫無法使用,因此技術(shù)的遷移性較差;所有寄存器單元還需要添加獨(dú)占式的故障輸入信號(hào)加以控制,硬件資源占用率非常高。文獻(xiàn)[12]通過對(duì)網(wǎng)表中所有的觸發(fā)器添加額外的組合邏輯和端口來注入故障,故障注入可以即時(shí)響應(yīng),所以注入速度相比掃描鏈更快,但該方案修改后的電路中每個(gè)觸發(fā)器需添加3 個(gè)查找表,額外的資源開銷也很大。

本文提出了一種基于旁路注入技術(shù)的快速故障注入方法。該方法可通過腳本自動(dòng)化分析基于硬件描述語言編寫的寄存器傳輸級(jí)(Register transfer level,RTL)超大規(guī)模集成電路設(shè)計(jì),并修改電路結(jié)構(gòu)使之能夠從旁路注入故障,結(jié)合仿真結(jié)果證明腳本可適用于任意規(guī)模電路。同時(shí)巧用時(shí)分復(fù)用機(jī)制保證腳本修改后的電路的原始功能不受影響。腳本實(shí)現(xiàn)電路修改的過程簡(jiǎn)單,耗時(shí)少,修改后電路增加的硬件資源開銷相對(duì)其他技術(shù)方案也較低,適用于VLSI 的評(píng)估。實(shí)驗(yàn)結(jié)果證明了其故障注入速度可以達(dá)到納秒級(jí)別,具有優(yōu)越的故障注入速度,在實(shí)際應(yīng)用中具有不錯(cuò)的前景。

1 旁路注入關(guān)鍵技術(shù)

旁路注入原理是在原有的設(shè)計(jì)基礎(chǔ)上,通過添加額外的組合邏輯,使待測(cè)電路具備故障注入功能。

1.1 旁路注入故障的單觸發(fā)器結(jié)構(gòu)

原始觸發(fā)器結(jié)構(gòu)和旁路注入觸發(fā)器結(jié)構(gòu)分別如圖1(a)和圖1(b)所示。enable 控制電路是否處于故障注入模式:enable 處于有效狀態(tài)時(shí),電路處于故障注入模式,故障數(shù)據(jù)(Faulty data)會(huì)輸出到觸發(fā)器的輸入端;否則,enable處于無效狀態(tài),電路處于正常工作模式,原始數(shù)據(jù)(Data)送給觸發(fā)器采樣。

圖1 單觸發(fā)器結(jié)構(gòu)Fig.1 Structure of flip?flop

故障數(shù)據(jù)的類型由故障類型選通信號(hào)組決定,該信號(hào)組有3 根信號(hào)線,分別是單比特翻轉(zhuǎn)(Reverse)、單比特固定1(Stuck?at?1)和單比特固定0(Stuck?at?0),且在同一時(shí)間只有一根信號(hào)線有效。為了降低故障數(shù)據(jù)產(chǎn)生電路的資源開銷,本文巧妙地利用了四輸入查找表(LUT4)的內(nèi)部結(jié)構(gòu),將正常數(shù)據(jù)和故障類型選通信號(hào)作為查找表的輸入,并將對(duì)應(yīng)故障類型數(shù)據(jù)作為輸出,因此只需1 個(gè)查找表即可完成故障數(shù)據(jù)的產(chǎn)生。

1.2 任意觸發(fā)器故障注入流程

VLSI 電路中觸發(fā)器數(shù)目眾多,需要逐個(gè)標(biāo)識(shí),以實(shí)現(xiàn)對(duì)指定的任意觸發(fā)器進(jìn)行故障注入操作。任意觸發(fā)器故障注入流程如圖2 所示。首先遍歷電路所有模塊中的觸發(fā)器,然后依次分配唯一的ID 編號(hào)。故障注入時(shí),首先根據(jù)ID 確定待注入故障的觸發(fā)器,使能該觸發(fā)器的en?able,然后選擇故障類型產(chǎn)生錯(cuò)誤數(shù)據(jù),在觸發(fā)器采樣時(shí)注入故障數(shù)據(jù)。其余未匹配的觸發(fā)器仍舊正常工作,不受故障注入過程的影響。此外,通過該故障注入流程可以對(duì)任意電路進(jìn)行任意位置的故障注入,不受電路規(guī)模限制。

圖2 任意觸發(fā)器故障注入流程Fig.2 Fault injection process of arbitrary flip?flop

1.3 時(shí)分復(fù)用機(jī)制

由于觸發(fā)器只在邊沿采樣數(shù)據(jù),對(duì)時(shí)序有很高的要求,這給故障注入帶來挑戰(zhàn)。此外,故障注入時(shí)也不能影響處于正常工作狀態(tài)的觸發(fā)器。為了確保能夠穩(wěn)定可靠的注入故障,本設(shè)計(jì)采用時(shí)分復(fù)用機(jī)制。將時(shí)間劃分為故障注入時(shí)間clk_div1 和正常運(yùn)作時(shí)間clk_div2。在clk_div1 下執(zhí)行故障注入;在clk_div2下執(zhí)行電路的原始邏輯。

圖3 所示的是時(shí)分復(fù)用機(jī)制下,單比特翻轉(zhuǎn)故障的注入過程。t1時(shí)刻ID 匹配觸發(fā)器,enable 變?yōu)橛行顟B(tài);t2時(shí)刻故障類型輸入為reverse,因此觸發(fā)器的輸出發(fā)生了翻轉(zhuǎn)。此外,若clk為系統(tǒng)設(shè)定頻率的兩倍,還可保持電路原有的數(shù)據(jù)吞吐率。

圖3 時(shí)分復(fù)用機(jī)制Fig.3 Time division multiplexing mecha?nism

2 自動(dòng)化處理腳本設(shè)計(jì)

本章介紹如何通過腳本編程,對(duì)RTL 級(jí)的設(shè)計(jì)代碼進(jìn)行再處理,實(shí)現(xiàn)旁路注入故障相關(guān)操作。所有工作均通過腳本自動(dòng)化執(zhí)行,電路分析時(shí)間開銷小,且不受電路規(guī)模的限制。

2.1 提取觸發(fā)器的腳本設(shè)計(jì)

提取觸發(fā)器的腳本流程分析過程如圖4 所示。首先檢索待測(cè)電路中所有的觸發(fā)器,檢索依據(jù)是所有觸發(fā)器均需要基于關(guān)鍵字reg 進(jìn)行定義。檢索后進(jìn)一步文本處理可以得到觸發(fā)器的名稱和其對(duì)應(yīng)的位寬。其次是過濾邏輯類型。SEU 影響的是電路的時(shí)序邏輯,所以只需處理時(shí)序邏輯的語句塊。檢索依據(jù)是基于時(shí)鐘邊沿的關(guān)鍵字(posedge 和negedge)。然后從觸發(fā)器隊(duì)列中移除非時(shí)序邏輯的觸發(fā)器。最后還需要過濾冗余觸發(fā)器,通常包括定義后卻未使用的觸發(fā)器。處理后的觸發(fā)器列表再根據(jù)觸發(fā)器位寬分配一定的ID 范圍,再加上控制時(shí)鐘、所屬模塊等相關(guān)信息即可輸出完整正確的觸發(fā)器列表。

圖4 提取觸發(fā)器的腳本流程Fig.4 Script flow of flip?flop ex?traction

2.2 旁路注入邏輯的腳本設(shè)計(jì)

旁路注入邏輯的腳本偽代碼如算法1 所示。首先遍歷所有的時(shí)序邏輯塊,檢索每個(gè)邏輯塊中的觸發(fā)器變量以及分配的ID 范圍,然后將表1 中第1 行到第6 行的旁路注入相關(guān)邏輯插入到對(duì)應(yīng)時(shí)序邏輯塊中,將原始邏輯放在第7 行else 的分支中。最后,在輸入輸出端口聲明處添加ID 和故障類型選通信號(hào)作為輸入端口。

算法1旁路注入邏輯偽代碼

(1)if ID matched then

// 觸發(fā)器ID 匹配

(2)if reverse then // 單比特翻轉(zhuǎn)

(3)D ←~D

//觸發(fā)器的數(shù)值翻轉(zhuǎn)

(4)else if Stuck?at?0 then //單比特固定0

(5)D ←0

//觸發(fā)器數(shù)值變?yōu)?

(6)else D ←1

//觸發(fā)器數(shù)值變?yōu)?

(7)else D ←D //原始邏輯

2.3 時(shí)分復(fù)用邏輯的腳本設(shè)計(jì)

單比特觸發(fā)器加入旁路注入邏輯比較簡(jiǎn)單,可以直接通過if?else 的分支語句實(shí)現(xiàn)。但對(duì)多比特觸發(fā)器而言,通過分支語句對(duì)多比特觸發(fā)器某一位注入故障會(huì)導(dǎo)致該觸發(fā)器的其他位也無法正常工作。為此,本文巧妙地設(shè)計(jì)時(shí)分復(fù)用機(jī)制,在時(shí)間上錯(cuò)開故障注入過程和電路正常工作過程。時(shí)分復(fù)用邏輯偽代碼如算法2 所示。

算法2時(shí)分復(fù)用邏輯偽代碼

(1)if(clk_div1 ==1)then //故障注入時(shí)間

(2)故障注入

(3)else 執(zhí)行正常邏輯//正常運(yùn)作時(shí)間

進(jìn)一步設(shè)計(jì)電路來驗(yàn)證腳本功能的正確性,選擇1 位寄存器來實(shí)現(xiàn)產(chǎn)生方波信號(hào)的電路。將設(shè)計(jì)的HDL 模型通過腳本處理,處理前后的邏輯如圖5 所示。

圖5 腳本插入故障邏輯前后對(duì)比Fig.5 Comparison of the original logic and the modified logic

圖5(b)中的err_data 代表故障數(shù)據(jù),可通過組合邏輯實(shí)現(xiàn)。組合邏輯的表達(dá)式為

式中:Y表示2.3 輸出的故障數(shù)據(jù);X表示當(dāng)前觸發(fā)器的數(shù)值;A、B、C分別代表3 類故障(單比特固定0,單比特固定1 和單比特翻轉(zhuǎn))。邏輯功能和門級(jí)電路的設(shè)計(jì)相吻合,在ID 匹配時(shí)對(duì)目標(biāo)觸發(fā)器注入故障,且在任意時(shí)刻只能有一種故障類型有效。

3 實(shí)驗(yàn)結(jié)果

3.1 仿真驗(yàn)證

為驗(yàn)證腳本功能的正確性,本文選取經(jīng)過腳本處理后的4 比特循環(huán)計(jì)數(shù)器作為待測(cè)電路進(jìn)行測(cè)試,從低位到高位依次分配ID(1~4)。對(duì)ID 為1 的觸發(fā)器cnt[0]在某一時(shí)刻注入一次故障,以單比特翻轉(zhuǎn)reverse 為例,仿真波形結(jié)果如圖6 所示。

從圖6 可見,當(dāng)ID 為0 時(shí),此時(shí)無觸發(fā)器被選中,電路處于正常工作狀態(tài);當(dāng)ID 為1 時(shí),cnt[0]被選為故障注入對(duì)象,該觸發(fā)器進(jìn)入故障注入模式。隨后在clk 的上升沿,檢測(cè)到故障類型輸入reverse 有效,此時(shí)對(duì)觸發(fā)器注入一次故障,使得cnt 的計(jì)數(shù)值從7 跳變?yōu)榱?。進(jìn)一步觀察,可發(fā)現(xiàn)計(jì)數(shù)器值發(fā)生改變的原因是cnt[0]的值從1 變?yōu)榱?,而cnt 的高三位仍保持正常狀態(tài)。由此可驗(yàn)證腳本的自動(dòng)化流程可以使電路具備正確的故障注入功能。

圖6 故障注入仿真Fig.6 Fault injection simulation

3.2 板級(jí)測(cè)試

為進(jìn)一步驗(yàn)證本文提出的設(shè)計(jì)方案對(duì)于復(fù)雜電路系統(tǒng)的適用性,采用經(jīng)典的MIPS 32 位處理器的測(cè)試電路進(jìn)行實(shí)測(cè)[13]。測(cè)試平臺(tái)為Xilinx 的Zynq[14]xc7z035ffg676?2 SoC。整個(gè)測(cè)試系統(tǒng)的框架如圖7 所示。

首先由PC 配置故障參數(shù)給Zynq 的PS 端,參數(shù)主要包括ID 和故障類型。然后PS 端根據(jù)參數(shù)產(chǎn)生故障向量并下發(fā)給PL 端的故障注入控制器,其中故障向量不僅包含了PC 配置的基本參數(shù),還包含了執(zhí)行次數(shù)和故障注入時(shí)間等信息。實(shí)驗(yàn)時(shí)參考設(shè)計(jì)和待測(cè)設(shè)計(jì)同時(shí)執(zhí)行一個(gè)運(yùn)算程序,故障注入控制器在執(zhí)行過程中對(duì)待測(cè)設(shè)計(jì)注入故障,隨后由故障監(jiān)控器比較二者的運(yùn)算結(jié)果,如果結(jié)果不一致則判定錯(cuò)誤發(fā)生,并將結(jié)果保存到存儲(chǔ)器,最后由PS 讀取故障結(jié)果數(shù)據(jù)。

實(shí)驗(yàn)從資源開銷和速度兩方面來評(píng)估性能。在資源開銷方面,處理器主要分為取指、譯碼、執(zhí)行、存儲(chǔ)和寫回5 個(gè)模塊,故只需對(duì)這5 個(gè)模塊的原始資源和修改后的資源開銷進(jìn)行對(duì)比,具體如表1所示。

表1 原始邏輯和修改后的邏輯資源開銷對(duì)比Table 1 Comparison of resource cost between the original and modified logics

可見修改后電路總共消耗的LUT 增加了69.8%,觸發(fā)器的開銷幾乎沒有增加。寫回模塊不含有觸發(fā)器,腳本處理前后沒有變化。而文獻(xiàn)[9]使用掃描鏈處理類似規(guī)模電路(觸發(fā)器數(shù)目為418,LUT 為2 322)時(shí),觸發(fā)器的開銷增加130.1%~360.8%,LUT 增加的開銷為42.8%~237.9%;文獻(xiàn)[10]的掃描鏈在處理電路(觸發(fā)器數(shù)目為530,LUT 為1 543)時(shí),觸發(fā)器和LUT 增加的開銷分別為33.9% 和29.1%;文獻(xiàn)[11]采用修改內(nèi)置庫的方式處理電路(觸發(fā)器數(shù)目為3 991,LUT 為3 482)增加了1.5 倍的LUT 資源;文獻(xiàn)[12]使用旁路注入處理小規(guī)模電路(觸發(fā)器數(shù)目為119,LUT 為362)增加了143.1% 的LUT。比較后可發(fā)現(xiàn)本文方案的資源開銷相比大多數(shù)方案較小,對(duì)測(cè)試平臺(tái)的要求較低。

考慮到工藝的發(fā)展以及電路規(guī)模的增大,以一定的面積開銷來換取快速故障注入的實(shí)現(xiàn)是可以接受的。

在速度性能方面,實(shí)驗(yàn)設(shè)定為每個(gè)時(shí)鐘周期都對(duì)選定的某個(gè)觸發(fā)器注入故障,可計(jì)算系統(tǒng)的最快故障注入速度。測(cè)試覆蓋全部1 712 個(gè)觸發(fā)器,參考設(shè)計(jì)工作頻率為100 MHz,待測(cè)設(shè)計(jì)由于時(shí)分復(fù)用需將頻率設(shè)置為200 MHz。測(cè)試結(jié)果如表2 所示,其中模擬時(shí)間包括電路執(zhí)行程序,測(cè)試向量的配置和下發(fā)以及數(shù)據(jù)分析的全部開銷。雖然PS 平均每次生成和發(fā)送測(cè)試向量產(chǎn)生了5.96μs 左右的開銷,但故障注入速度依然達(dá)到6.8 ns/故障,非常接近系統(tǒng)的工作頻率。其中生成每個(gè)測(cè)試向量所需時(shí)間為定值,如果待測(cè)電路的執(zhí)行時(shí)間越長,系統(tǒng)等待新測(cè)試向量的開銷就更小,故障注入速度也會(huì)越快。

表2 故障注入測(cè)試結(jié)果Table 2 Fault injection test results

進(jìn)一步比較本文所提及的其他故障注入技術(shù),對(duì)速度進(jìn)行對(duì)比,結(jié)果如表3 所示。

表3 速度性能對(duì)比Table 3 Speed performance comparison

由于各類方案的待測(cè)電路規(guī)模、執(zhí)行時(shí)間和時(shí)鐘頻率各不相同,表3 中新增了故障注入速度(歸一化為ns)和時(shí)鐘頻率(ns)的比值以便于直觀比較,比值越小說明故障注入速度和電路的工作頻率越接近,相對(duì)更快。文獻(xiàn)[9,10]雖然注入方式一致,但文獻(xiàn)[9]優(yōu)化了故障注入機(jī)制,減少了主機(jī)和測(cè)試平臺(tái)的交互,因此具備速度優(yōu)勢(shì);文獻(xiàn)[10]則通過串口傳輸故障激勵(lì),造成時(shí)間開銷太大?;趻呙桄湹姆绞较鄬?duì)于本文方案在速度性能上仍舊存在明顯差距。文獻(xiàn)[11]的故障注入方式雖然較快,但測(cè)試平臺(tái)中包含兩塊FPGA,其中一塊用于和主機(jī)的數(shù)據(jù)通信和故障檢測(cè),另一塊用于實(shí)現(xiàn)故障電路,二者通過接口相連,導(dǎo)致整體數(shù)據(jù)鏈路過長,造成速度不理想。同理,文獻(xiàn)[12]雖然采取和本文同樣的實(shí)現(xiàn)方式,但故障激勵(lì)的傳輸開銷太大,導(dǎo)致速度偏慢。本文通過網(wǎng)口傳輸故障配置參數(shù),PS 自動(dòng)生成故障激勵(lì),減少了和主機(jī)的通信頻率,并通過AXI 總線傳遞給PL,顯著縮短了故障向量的傳輸開銷,降低了系統(tǒng)的等待時(shí)間。數(shù)據(jù)結(jié)果表明,本文技術(shù)方案的故障注入速度相比現(xiàn)有的方案高了2~3 個(gè)數(shù)量級(jí)。

4 結(jié)束語

本文提出了一種適用于VLSI 電路的快速故障注入方法,通過腳本自動(dòng)完成電路分析和旁路注入故障邏輯的修改。最后選取復(fù)雜的微處理器設(shè)計(jì)驗(yàn)證性能,實(shí)驗(yàn)結(jié)果表明,本方法故障注入速度可以達(dá)到108個(gè)故障/s,可滿足超大規(guī)模集成電路的單粒子效應(yīng)故障注入的模擬需求。

猜你喜歡
故障注入觸發(fā)器腳本
酒駕
模擬訓(xùn)練裝備故障注入系統(tǒng)研究
安奇奇與小cool 龍(第二回)
SM4算法前四輪約減輪故障注入分析
采用修改-回放原理的1553B故障注入方法
數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
主從JK觸發(fā)器邏輯功能分析
電子世界(2017年22期)2017-12-02 03:03:45
快樂假期
使用觸發(fā)器,強(qiáng)化安全性
列車MVB總線故障注入研究
华容县| 金华市| 凉城县| 莱西市| 泗洪县| 车致| 汤阴县| 晋中市| 麻栗坡县| 平泉县| 襄城县| 辽阳市| 济宁市| 扎囊县| 怀安县| 临颍县| 曲靖市| 张掖市| 苗栗市| 水富县| 平昌县| 仪陇县| 常宁市| 驻马店市| 中江县| 五莲县| 基隆市| 隆昌县| 卢湾区| 丘北县| 二连浩特市| 鲜城| 浦北县| 花莲县| 郑州市| 板桥市| 沭阳县| 韶山市| 德格县| 鹤庆县| 重庆市|