一種面向Verilog HDL設(shè)計(jì)的故障注入方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于容錯(cuò)計(jì)算與可靠性理論,設(shè)計(jì)了一種面向Verilog HDL設(shè)計(jì)的故障注 入方法,實(shí)現(xiàn)了 Verilog HDL故障注入工具。
【背景技術(shù)】
[0002] 近年來,計(jì)算機(jī)的應(yīng)用場所發(fā)生了很大的變化,不再僅僅局限于各種參數(shù)穩(wěn)定的 機(jī)房,而是延伸到了工廠、野外、海上、天空甚至宇宙等復(fù)雜的環(huán)境。這對計(jì)算機(jī)的穩(wěn)定性和 可靠性提出了更高層次的要求。隨著對微處理器等硬件平臺的可靠性研究逐漸深入,"故障 注入"作為一種新型的分析評價(jià)方法,提出對于微處理器的容錯(cuò)機(jī)制的有效性進(jìn)行可靠地 分析和評價(jià)的過程。該研究方法具有比傳統(tǒng)的基于測量或基于模型解析的方法更加靈活方 便、便宜有效。對容錯(cuò)計(jì)算與可靠性理論的研究者而言,一個(gè)有效易用的故障注入自動(dòng)化工 具在節(jié)約人力物力時(shí)間等方面起著越來越重要的作用。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明要解決的技術(shù)問題是提供一種面向Verilog HDL設(shè)計(jì)的故障注入方法,能 夠通過對Verilog HDL代碼的語法語義分析,從而獲得代碼中全部的故障注入點(diǎn),并實(shí)現(xiàn)對 Verilog HDL代碼的故障注入功能。
[0004] -種面向Verilog HDL設(shè)計(jì)的故障注入方法,步驟如下:
[0005] 1)步驟一:首先獲得需要進(jìn)行故障注入試驗(yàn)的工程(符合IEEE 1364-1995的 Verilog HDL語言標(biāo)準(zhǔn));
[0006] 2)步驟二:將該工程導(dǎo)入后進(jìn)行掃描,獲得工程中全部模塊信息,通過點(diǎn)選模塊 可以顯示模塊內(nèi)的全部信息;
[0007] 3)步驟三:使用故障注入管理器,可以對模塊中的變量進(jìn)行選擇,用戶設(shè)置好故 障模型(stuck-at 0/1或位翻轉(zhuǎn))后,將故障注入;
[0008] 4)步驟四:通過仿真模擬,即可看到故障注入結(jié)果。
[0009] 進(jìn)一步地,步驟一中根據(jù)標(biāo)準(zhǔn)的Verilog HDL代碼作為試驗(yàn)工程,為了使測試 更加準(zhǔn)確,工程采用規(guī)范語法語義,支持的Verilog HDL語言版本為:Verilog95,即IEEE 1364-1995 標(biāo)準(zhǔn)。
[0010] 進(jìn)一步地,步驟二中語法語義分析是故障注入工具最核心也是最復(fù)雜的模塊。要 實(shí)現(xiàn)故障注入,首先要對Verilog HDL源文件進(jìn)行解析,理清各個(gè)module間的層次關(guān)系,生 成模型的語法分析列表,存儲相應(yīng)的變量信息后,才能選擇故障注入的位置。
[0011] 進(jìn)一步地,步驟三中用戶可設(shè)置故障注入的參數(shù)有故障位,故障模型(置1,置0, 翻轉(zhuǎn)等),故障注入周期等。用戶收到Verilog HDL語法語義分析器返回的數(shù)據(jù),根據(jù)該數(shù) 據(jù)選擇故障需要注入的位置,同時(shí)設(shè)置故障注入的周期和所注入的故障模型。將該數(shù)據(jù)提 交給故障注入管理器后,管理器會判斷用戶提供的參數(shù)是否合法,如不合法(數(shù)據(jù)位不存 在,或缺少相關(guān)參數(shù)等)將提示用戶重新提交參數(shù),如圖1所示。
[0012] 進(jìn)一步地,步驟四中通過對故障注入前后的ModelSim SE 6. If模擬波形的驗(yàn)證分 析,從而驗(yàn)證了故障注入工具的有效性。
[0013] 本發(fā)明的技術(shù)方案:
[0014] Verilog故障注入工具,采用Qt平臺開發(fā),包括用戶交互工具,語法語義分析器和 故障注入管理器三個(gè)模塊。界面模塊屬于可視化部分,后兩個(gè)模塊屬于后臺核心代碼部分。
[0015] 用戶交互工具主要實(shí)現(xiàn)了與用戶的交互功能,包含工程導(dǎo)入、模塊列表展示、模塊 代碼展示、模塊內(nèi)變量列表屬性展示和故障注入管理器入口五個(gè)子模塊。工程導(dǎo)入模塊用 來選擇進(jìn)行故障注入試驗(yàn)的工程。模塊列表展示功能將工程內(nèi)全部模塊名稱列表展示。模 塊代碼展示可以將模塊內(nèi)部代碼全部讀取并呈現(xiàn),以便用戶觀察故障注入前后代碼信息。 模塊內(nèi)變量屬性展示將全部變量的名稱、類型、屬性、長度以及定義的行數(shù)進(jìn)行展示。最后 通過故障注入管理器入口與故障注入管理器鏈接。
[0016] 語法語義分析器包括代碼掃描,保留字識別,標(biāo)識符識別、添加和修改以及變量屬 性獲取等四個(gè)子功能。為了保證對Verilog HDL靈活的語言規(guī)則的適配度,代碼掃描功能 采用按字符掃描方法,利用正則表達(dá)式、非確定性自動(dòng)機(jī)(NFA)對Verilog HDL進(jìn)行描述。 根據(jù)分隔符和空白格對掃描到的單詞進(jìn)行判斷(是否為關(guān)鍵字,標(biāo)識符,數(shù)字等)。保留字 和標(biāo)識符的識別功能通過容器(vector)類進(jìn)行實(shí)現(xiàn),通過對兩個(gè)容器的增刪改查,實(shí)現(xiàn)對 保留字和標(biāo)識符進(jìn)行添加、識別和修改。變量屬性的獲取主要通過對已定義的標(biāo)識符進(jìn)行 識別后再進(jìn)行對單個(gè)標(biāo)識符的屬性修改,對于新定義標(biāo)識符,會有相應(yīng)的默認(rèn)屬性。
[0017] 故障注入管理器分故障注入和交互顯示兩部分。故障注入主要實(shí)現(xiàn)了獲取故障注 入的注入節(jié)點(diǎn),同時(shí)將故障模型、故障周期、故障位置通過與用戶交互記錄下來傳給底層函 數(shù),底層函數(shù)將該故障精準(zhǔn)注入。交互顯示主要負(fù)責(zé)與用戶的交互,并且判斷用戶設(shè)置的故 障模型是否合法,以便進(jìn)行準(zhǔn)確的故障注入試驗(yàn)。
[0018] 本發(fā)明采用的是基于模擬的故障注入技術(shù)。使用本發(fā)明可以方便、靈活地在計(jì)算 機(jī)等硬件平臺上進(jìn)行故障注入的模擬仿真,通過改變邏輯值來達(dá)到故障注入的效果,同時(shí) 該故障注入工具耗時(shí)較短,能夠滿足工程和實(shí)驗(yàn)的要求。基于模擬的故障注入技術(shù)可以在 微處理器等芯片設(shè)計(jì)和開發(fā)過程中,對容錯(cuò)技術(shù)的可靠性進(jìn)驗(yàn)證和評價(jià),大大地縮短了驗(yàn) 證的周期,為硬件的開發(fā)過程帶來極大方便。
【附圖說明】
[0019] 圖1故障注入管理器工作原理。
[0020] 圖2是本發(fā)明的軟件0層和1層數(shù)據(jù)流圖。
[0021] 圖3是本發(fā)明的用戶交互工具界面圖。
[0022] 圖4是本發(fā)明掃描功能依照的幾種典型的NFA舉例。
[0023] 圖5是本發(fā)明的故障注入管理器界面圖。
【具體實(shí)施方式】
[0024] 以下結(jié)合
【發(fā)明內(nèi)容】
和說明書附圖詳細(xì)說明本發(fā)明的具體實(shí)施。
[0025] ⑴總體結(jié)構(gòu)
[0026] 面相Verilog HDL設(shè)計(jì)的故障注入工具,采用Qt平臺開發(fā),包括主程序界面,語法 語義分析器和故障注入管理器三個(gè)模塊,如圖2所示。其中界面模塊為可視化部分,主要完 成與用戶進(jìn)行信息交互,后兩個(gè)模塊屬于后臺核心代碼部分,負(fù)責(zé)實(shí)現(xiàn)語法語義分析和故 障注入功能。
[0027] (2)用戶交互工具
[0028] 用戶交互工具主要實(shí)現(xiàn)了與用戶的交互功能,包含工程導(dǎo)入、模塊列表展示、模塊 代碼展示、模塊內(nèi)變量列表屬性展示和故障注入管理器入口五個(gè)子模塊,如圖3所示。
[0029] 工程導(dǎo)入模塊用來選擇進(jìn)行故障注入試驗(yàn)的工程。模塊列表展示功能將工程內(nèi)全 部模塊名稱列表展示。模塊代碼展示可以將模塊內(nèi)部代碼全部讀取并呈現(xiàn),以便用戶觀察 故障注入前后代碼信息。模塊內(nèi)變量屬性展示將全部變量的名稱、類型、屬性、長度以及定 義的行數(shù)進(jìn)行展示。最后通過故障注入管理器入口與故障注入管理器鏈接。
[0030] (3)語法語義分析器
[0031 ] 語法語義分析器包括代碼掃描,保留字識別,標(biāo)識符識別、添加和修改以及變量屬 性獲取等四個(gè)子功能。
[0032] 代碼掃描子功能主要根據(jù)由Verilog HDL正則表達(dá)式推導(dǎo)出的NFA進(jìn)行編寫。模 塊聲明語法舉例:
[0034] 分析器掃描識別順序:
[0035] I)module 關(guān)鍵字;
[0036] 2)module 的名稱;
[0037] 3)左括號;
[0038] 4) input或者output或者inout或者直接是端口名稱;
[0039] 5)逗號;
[0040] 6)這樣一直到識別出有括號以及緊接著的分號為止。
[0041 ] 根據(jù)上面的模塊聲明的文法有如下的正則表達(dá)式:
[0043] 有了這些正則表達(dá)式,可以推導(dǎo)出相應(yīng)的NFA,根據(jù)NFA即可完成代碼的編寫。如 圖4所示。
[0044] 保留字和標(biāo)識符的識別功能通過C++的容器(vector)類實(shí)現(xiàn)。通過對兩個(gè)容器 KeyArr、IdentiferArr的增刪改查完成對保留字和標(biāo)識符的添加、修改和識別。
[0045] 變量屬性的獲取主要通過對已定義的標(biāo)識符進(jìn)行識別后再對單個(gè)標(biāo)識符的屬性 進(jìn)行修改,對于新定義的標(biāo)識符,會有相應(yīng)的默認(rèn)屬性。
[0046] (4)故障注入管理器
[0047] 故障注入管理器分為故障注入和交互顯式兩部分。
[0048] 故障注入主要實(shí)現(xiàn)了獲取故障注入的注入節(jié)點(diǎn),同時(shí)將故障模型、故障周期、故障 位置,通過與用戶交互記錄下來傳給底層函數(shù),底層函數(shù)將該故障精準(zhǔn)注入。
[0049] 交互顯式主要負(fù)責(zé)與用戶的交互,并且判斷用戶設(shè)置的故障模型是否合法,以便 進(jìn)行準(zhǔn)確的故障注入試驗(yàn)。如圖5所示。
【主權(quán)項(xiàng)】
1. 一種面向VerilogHDL設(shè)計(jì)的故障注入方法,能夠通過對VerilogHDL代碼的語 法語義分析,從而獲得代碼中全部故障注入點(diǎn),實(shí)現(xiàn)靈活的故障注入配置和仿真,其特征在 于,包括以下步驟; 步驟一:用戶交互工具實(shí)現(xiàn)故障注入的配置和顯示功能,獲得需要進(jìn)行故障注入試驗(yàn) 的工程,包含工程導(dǎo)入、模塊列表展示、模塊代碼顯示、模塊內(nèi)變量列表屬性顯示和故障注 入管理器入口五個(gè)子模塊; 步驟二:掃描VerilogHDL工程文件,采用正則表達(dá)式、非確定性自動(dòng)機(jī)(NFA)對VerilogHDL進(jìn)行描述,包括代碼掃描、保留字識別、標(biāo)識符識別和修改、變量屬性獲取四個(gè) 功能,識別全部變量的名稱、類型、屬性、長度、定義位置; 步驟三:使用故障注入管理器,斷用戶設(shè)置的故障模型是否合法,獲取故障注入節(jié)點(diǎn), 將故障模型、故障周期、故障位置通過用戶交互記錄傳給底層函數(shù)以實(shí)現(xiàn)故障精準(zhǔn)注入。 步驟四:通過仿真模擬,獲得故障注入結(jié)果。
【專利摘要】本發(fā)明公開了一種面向Verilog?HDL設(shè)計(jì)的故障注入方法,屬于容錯(cuò)計(jì)算與可靠性理論研究領(lǐng)域。基于該方法設(shè)計(jì)了Verilog?HDL故障注入工具,采用Qt平臺開發(fā),包括交互工具、語法語義分析器和故障注入管理器三個(gè)模塊。以Verilog?HDL正則表達(dá)式推導(dǎo)出的NFA為指導(dǎo),實(shí)現(xiàn)代碼掃描分析,支持IEEE1364-1995的Verilog?HDL語言標(biāo)準(zhǔn),通過與用戶的配置交互,完成故障注入功能。本發(fā)明屬于一款容錯(cuò)計(jì)算與可靠性理論研究的輔助方法,采用基于模擬的故障注入技術(shù)。使用本發(fā)明可以方便、靈活地在模擬測試的計(jì)算機(jī)等硬件平臺上進(jìn)行故障注入的模擬仿真,通過改變邏輯值來達(dá)到故障注入的效果。
【IPC分類】G06F9/44
【公開號】CN105302547
【申請?zhí)枴緾N201510599306
【發(fā)明人】王潔, 柳繼偉, 陳偉浩, 李浩然, 石霖
【申請人】大連理工大學(xué)
【公開日】2016年2月3日
【申請日】2015年9月19日