• 沒有找到結果。

摘要 本

N/A
N/A
Protected

Academic year: 2022

Share "摘要 本"

Copied!
74
0
0

加載中.... (立即查看全文)

全文

(1)
(2)
(3)
(4)
(5)
(6)

摘要

本論文提出一個廣泛的容錯驗證環境平台,它包含了模擬基礎錯誤注入工 具、ModelSim VHDL 模擬器以及資料分析器,而整個驗證環境的核心為錯誤注入 工具,它可以注入暫時性錯誤以及永久性錯誤到由 VHDL 硬體描述語言所撰寫而 成的數位系統晶片當中,而可注入的 VHDL 模組包含了晶片層(Chip level)、暫 存器轉換層(RTL level)以及邏輯閘層(Gate level)的設計階段,除此之外本錯 誤注入工具利用 Weibull 錯誤分佈函式產生錯誤注入得時間點。我們所提供的錯 誤驗證工具還支援錯誤注入分析,這一個分析結果可以針對每一次的錯誤注入動 作提供相當有用的統計結果,而這個統計結果能表示錯誤注入後的錯誤分佈狀 況,我們可以利用錯誤注入工具驗證錯誤分佈狀況,如此一來可以全面性的驗證 容錯系統在不同的錯誤環境下的表現。在本論文中提供了一些簡單的容錯應用實 例來幫助使用者建立適當的錯誤環境,它可以藉由不同的錯誤環境更佳有效的檢 查容錯系統的能力,所以提供一個好的驗證環境可以幫助我們提升可靠度的分 析。而本論文所提供的應用實例包括了具故障偵測能力的管線式處理器以及具容 錯能力的超長指令處理器。

(7)

Abstract

This thesis presents a comprehensive fault-tolerant verification environment which encompasses a simulation-based fault injection tool, ModelSim VHDL simulator and data analyzer. The core of the verification environment is the fault injection tool that can inject the transient and permanent faults into VHDL models of digital systems at chip, RTL and gate levels during the design phase. Weibull fault distribution is employed to decide the time instant of fault injection. Our tool supports a fault injection analysis which can provide us the useful statistics for each injection campaign. The statistic data for each injection campaign represents a fault scenario.

We can exploit the injection tool to produce a variety of fault scenarios such that the fault-tolerant systems can be thoroughly validated. In the application studies, we show how the injection tool assists us in creating the proper fault environments that can be used to effectively validate the capability of a fault-tolerant system and examine the strength of a fault-tolerant system under various fault scenarios. Therefore, the proposed verification environment aids us in raising the efficiency and validity of dependability analysis. Those application studies include pipeline processor embedded error detection schemes and VLIW processor embedded fault-tolerant schemes.

(8)

致謝

此篇論文能夠順利完成要特別感謝指導教授陳永源博士的辛勤指導,使得我 在生活上以及學業上有所增長以及在學術研究上有所精進,以及顏金泰婆是在兩 年研究過程中的協助與指導,使我受益良多,此外也感謝家人的全力支持,讓我 在求學過程中無後顧之憂,能夠專心完成碩士學位。

感謝在求學過程中一起陪我度過這兩年研究生活的同學:戴正中、陳昆鋒、

陳彥祥

、李佳芳、陳逢銘,在平日課業上的討論以及生活問題上的扶持。

感謝賴鴻銓學長、劉學忠學長給予研究課題上的建議。也感謝學弟呂昆 龍、賴世軒、張云斌、林勝茂、李育政、林凱平、吳嘉偉、王姿雅,在研 究實驗上面的幫助。最後感謝大庄幫的各位,你們的支持與鼓勵是我求學 最大的動力。

在此僅將這份論文獻給我的師長、夥伴、朋友以及家人,共同分享這 得來不易的榮耀。

李政曄

謹致

中華民國九十三年七月於新竹

(9)

目錄

摘要...Ⅰ Abstract...Ⅱ 致謝...Ⅲ 目錄...Ⅳ 圖形目錄...Ⅵ 表格目錄...Ⅷ

第1章 簡介...1

第2章 錯誤注入、錯誤模擬與錯誤分析...5

2-1 錯誤注入...6

2-2 錯誤模擬...14

2-3 錯誤分析...15

2-3.1 錯誤行為與特性...15

2-3.2 錯誤分析流程...18

第3章 工具開發與整合...21

3-1 注入階段...21

3-2 模擬階段...28

3-3 分析階段...29

第4章 應用實例...35

4-1 具錯誤偵測技術的管線式處理器...35

4-4.1 即時性自我檢測算數功能元件...37

4-4.2 看門狗即時性程式指令監督處理器...39

4-2 具容錯能力的超長指令處理器...42

第5章 實驗結果...45

(10)

5-1.1 即時性自我檢測算數功能元件...45

5-1.2 看門狗即時性程式指令監督處理器...49

5-2 具容錯能力的超長指令處理器之錯誤注入模擬實驗...54

第6章 結論與未來展望...57

參考文獻...59

(11)

圖形目錄

圖 2-1:錯誤驗證環境流程圖...5

圖 2-2:(a) Weibull 失敗率函式分布圖...13

圖 2-2:(b) Weibull 失敗率函式數累積分佈圖...13

圖 2-3:錯誤模擬流程圖...14

圖 2-4:錯誤行為示意圖...15

圖 2-5:錯誤關係圖...16

圖 2-6:錯誤類型範例...16

圖 2-7:容錯系統架構狀態敘述圖...17

圖 2-8:錯誤分析概念圖...18

圖 2-9 錯誤分析流程圖...20

圖 3-1:錯誤注入、錯誤模擬、資料分析工作環境架構...21

圖 3-2:錯誤注入目標流程圖...22

圖 3-3:(a)Weibul 失敗率率函式...23

圖 3-3:(a) Weibul 失敗率累積分布反函式...23

圖 3-4:Weibul 失敗率函式階段臨界值...24

圖 3-5:(a)錯誤密度分析範例...27

圖 3-5:(b)錯誤密度分析步驟與結果...27

圖 3-6:模擬器內建指令錯誤注入方式...28

圖 3-7:容錯分析流程基本架構...29

圖 3-8:模擬波形檔案紀錄格式...30

圖 3-9:活動性錯誤的三種通例波形圖示...31

圖 3-10:活動性錯誤的 Case A 與 Case B 演算法使用時機...31

圖 3-11:活動性錯誤演算法(Case A)...32

(12)

圖 3-13:有效性故障分析流程圖...33

圖 3-14:錯誤分析統計演算法...34

圖 4-1:FTR2000 基本架構圖...35

圖 4-2:(a)雙軌式自我檢測基本方塊圖...37

圖 4-2:(b)二位元雙軌式自我檢測器...37

圖 4-3:階層式雙軌式自我檢查架構...38

圖 4-4:(a)自我檢測加法器架構...38

圖 4-4:(b)自我檢測乘法器架構...38

圖 4-5:自我檢測算數邏輯算元件示意圖...39

圖 4-6:看門狗即時性程式指令監督意示圖...39

圖 4-7:看門狗監督技術...40

圖 4-8:特徵向量(Watch-Dog Signature)格式...40

圖 4-9:看門狗指令監督處理器內部架構...41

圖 4-10:看門狗指令監督處理器嵌入於 FTR2000 架構圖...41

圖 4-11:具容錯能力的超長指令處理器硬體架構...42

圖 5-1:模擬記憶體錯誤型態的錯誤描述指令...49

圖 5-2:(a)不同的錯誤注入數目的故障偵測遺漏機率...55

圖 5-2:(b)不同的錯誤注入數目的故障恢復覆蓋率...55

圖 5-3:(a)不同的錯誤維持時間的故障偵測遺漏機率...56

圖 5-3:(b)不同的錯誤維持時間的故障恢復覆蓋率...56

(13)

表格目錄

表格 2-1:實體錯誤注入與軟體模擬基礎錯誤注入比較...8

表格 5-1:即時性自我檢測算數功能元件量化結果(錯誤維持時間 5 Clks)...46

表格 5-2:即時性自我檢測算數功能元件量化結果(錯誤維持時間 30 Clks)....46

表格 5-3:即時性自我檢測算數功能元件量化結果(錯誤維持時間 60 Clks)....47

表格 5-4:即時性自我檢測算數功能元件量化結果(錯誤維持時間 200 Clks)...47

表格 5-5:即時性自我檢測算數功能元件量化結果(錯誤維持時間 500 Clks)...48

表格 5-6:即時性自我檢測算數功能元件實驗結果...43

表格 5-7:看門狗即時性程式指令監督處理器量化實驗結果...50

表格 5-8:測試程式一以及測試程式二實驗結果...51

表格 5-9:指令記憶體匯流排以及控制流程訊號線分析結果...51

表格 5-10:測試程式程式區塊分析...52

表格 5-11:測試程式一中所包含的三個子程式分析結果...53

表格 5-12:不同錯誤注入數目的錯誤密度分析...54

表格 5-13:不同錯誤維持時間的錯誤密度分析...55

(14)

第1章 簡介

隨著電腦產品的普及,電腦可以說是與人們的日常生活息息相關,廣泛的應 用範圍從高科技的航太、軍事應用,乃至於一般家庭裡的家電、通訊、網路使用 都讓電腦的普及率達到一個相當高的程度。由於現今製程的進步以及晶圓成本降 低,速率(Performance)以及面積(Area)已經不在是設計者唯一的考量,設計者還 必須考慮到功率消耗(Power consumption)以及系統可靠度(System reliability)…等 問題,而在本篇論文中主要是著重於系統可靠度,這是因為速度在快的電腦如果 沒有提供一定程度的系統可靠度,則這樣的產品將不會被人們所接受。

影響系統可靠度的主要原因有下列三項:周圍環境的影響,由於電子產品對 於溫度以及輻射線…等環境因素相當的敏感,可能因為上述的干擾導致訊號發生 錯誤進而降低系統可靠度;先進的製程技術,因為製程技術的進步,使得某些電 氣效應更為明顯,例如:漏話干擾(Crosstalk)以及電子飄移(Electromigration)…等 現象都會影響訊號的完整性(Signal integrity);產品的損耗,當電子產品經由一定 的使用年限後,內部的金屬連線可能會被逐漸的耗損,最後可能會導致斷路的現 象發生使得產品發生故障。

對於提昇系統可靠度而言,最基本、有效的方法就是將容錯(Fault tolerant) 觀念整合至系統當中,使用一些外加的容錯技術來提昇系統的可靠度。容錯技術 所強調的特點有下列幾點:

z 故障偵測覆蓋率(Error Detection Coverage) z 故障恢復覆蓋率(Error Recovery Coverage) z 故障偵測潛伏時間(Error Detection Latency)

z 系統重建覆蓋率(System Reconfiguration Coverage)

所以判斷一個容錯系統的容錯能力可以依據這四點的優劣來評量之。在容錯 設計領域中,提供一個完整的錯誤注入、模擬、分析的環境工具是可以有效的去 評估所要加入的容錯技術是否具有一定的容錯能力,如此一來就可以在系統設計 階段評估加入的容錯技術是不是值得投資下去,而且也可以清楚的說明這樣的容 錯技術到底可以改善以及提升整個系統多少可靠度,而不用在不確定容錯技術是 否值得投資的情況下立即實作,並在實作之後,花費大量的實際機器工作時間以

(15)

及系統建構成本來驗證此一容錯技術是否具有一定的成效,這樣一來不但可以大 量節省建構系統所要花費的金錢與時間,同時也可以具體的知道每一項容錯技術 的優缺點,以便在往後的應用實例上能更快速且恰當的提出所需的容錯技術加以 應用。

為求驗證、測試設計出來的容錯產品能夠正常工作而所發展出來的錯誤注入 模式有下列兩類:

1.實體錯誤注入(Physical fault injection)

此方法是當容錯系統被以晶片、FPGA…等方法實作出來之後所使 用,因為需要實際的晶片來實行錯誤注入,因此需要較高的系統開發時 間以及較高的製作成本(晶片製作成本、實驗環境建構…等),此外錯誤 注入的可控制性(Controllability)以及可觀察性(Observability)都較差,但 是較接近實際產品。

2.軟體模擬基礎錯誤注入(Software-based simulate fault injection)

此 一 技 術 結 合 了 軟 體 實 踐 錯 誤 注 入(Software-implemented fault injection)以及模擬基礎錯誤注入(Simulation-based fault injection),藉由 模 擬 器 的 模 擬 模 型(Simulated model) 以 及 內 建 式 指 令 (Build-in commands),來達到錯誤注入的功能,此項技術的成本是最節省,因為 它可以應用在抽象層(Abstraction level)、暫存器轉換層(Register transfer level)、邏輯閘層(Gate level)等,並不需要實體的電路產生,如此一來還 可以降低設計的時間,可以提早在撰寫硬體描述語言時就能有效的測試 該系統的容錯能力,而且它具有相當高的可控制性以及可觀測性,但是 可能會與實際的產品有些微的差距。

這兩種錯誤注入方法中,軟體模擬基礎錯誤注入(Software-based simulate fault injection)方法具有較短的系統開發時間、較低的晶片製作成本、更有效率的 錯誤注入效果、較低成本的實驗環境建構…等,因為這些優勢條件,所以本論文 選擇以軟體模擬基礎的錯誤注入方法為出發點,提供一個完整的錯誤注入(Fault

(16)

利用 VHDL 模組執行錯誤注入以及錯誤模擬的技術可以被用來驗證、分析 一個容錯系統,此驗證分析的過程在容錯系統設計中是一極為重要的步驟,經由 錯誤注入(Fault injection)、錯誤模擬(Fault simulation)與錯誤分析(Fault analysis) 才可獲得容錯系統的一些重要數據與結果,例如:故障偵測涵蓋率(Error detection coverage)、故障偵測延遲時間(Error detection latency)、可靠度(Reliability)及執行 效能下降的幅度…等等。

本論文所提出的錯誤模擬驗證平台工具是在 VHDL 模組上開發一自動錯誤 注入工具軟體,此錯誤注入工具軟體可以將錯誤注入到抽象層(Abstraction level)、暫存器轉換層(Register transfer level)、邏輯閘層(Gate level)…等的 VHDL 模組上。我們利用VHDL 模擬器所提供的特殊模擬指令注入錯誤到 VHDL 模組 的訊號(Signals)或是變數(Variables)上,此方法的好處為不需更改 VHDL 原始碼 以及相當容易將錯誤注入和錯誤模擬的實驗應用在已設計完成的 VHDL 模組 上,缺點是錯誤注入的能力受限於模擬器所提供的指令集。

錯誤模擬驗證的工作可分為三個階段:第一個階段是處理、分析所要輸入錯 誤的容錯設計,而本論文所採用的設計方式是以VHDL 硬體描述語言撰寫電路,

接著利用分析所得的系統輸入/ 輸出接腳(I/O port)、訊號(Signal)、變數(Variable) 以作為錯誤注入目標(Fault target),在 VHDL 的設計架構中,經常利用有階層式 的設計方式來實現電路架構,即所有的程式碼並不一定要寫在同一份檔案中,而 且可以利用多個檔案加以組合,因此錯誤注入工具需要有動態分析檔案的能力。

接著利用機率分佈的函式模擬實際系統可能發生錯誤的機率進而決定每一個錯 誤發生時間(Fault instant time),最後將上述所得的錯誤注入目標、錯誤發生時間 以及定義好的錯誤模組結合即可獲的完整的錯誤注入敘述,錯誤注入的目的是產 生所需要的錯誤注入描述檔。第二階段則是利用第一階段產生的錯誤注入描述檔 於模擬器上執行錯誤模擬實驗,此一階段會產生兩組實驗結果:無錯誤注入的波 形紀錄檔案以及含有錯誤注入的波形紀錄檔案。第三階段是利用無錯誤注入的波

(17)

形紀錄檔案以及含有錯誤注入的波形紀錄檔案分析容錯參數且評估容錯系統的 能力。

在本論文中提出了兩個應用實例,藉由本論文所提供的錯誤注入驗證工具模 擬驗證這兩個容錯應用實例的容錯能力。此二實例分別為:

1. 具錯誤偵測技術的管線式處理器 2. 具容錯能力的超長指令處理器

在此二實例中分別針對管線式架構處理器以及超長指令處理器內部的各類 型元件提出相對應的偵測錯誤技術並加以整合、模擬與評估。例如在算數邏輯單 元(ALU)中將加法器和乘法器更換成具有自我檢查功能的算數元件;在整體的指 令、流程控制部分使用看門狗(Watch Dog)的編碼方式來做保護與監控指令執行 的正確性。

(18)

第2章 錯誤注入、錯誤模擬、錯誤分析

當完成容錯系統設計後,如何有效的驗證該設計的容錯能力來評估此一設計 是否有符合需求,因此建立一個完整而有效率的驗證環境是相當重要。錯誤驗證 環境流程是建立驗證環境的第一步,錯誤驗證環境流程圖如圖2-1 所示。該流程 圖可細分為三部份:錯誤注入(Fault Injection)、錯誤模擬(Fault Simulation)、資料 分析(Data Analysis),而各部份的詳細說明將在後面的章節一一介紹。

Processor with Fault Tolerant Scheme

Processor architecture implementation (VHDL coding)

VHDL codes Analysis

VHDL Processor Simulation

Fault Injection Simulation

Waveform Data Analysis and Report VHDL Paraer

implementation

VHDL Code Parsing

Fault Probability Distribution function included in Fault Set

Fault Description Generation

Waveform reader and comparison

Waveform reader and comparison

Fault Injection

Fault Simulation

Data Analysis

圖2-1:錯誤驗證環境流程圖

在執行錯誤驗證環境流程之前,首先必須設計出具有容錯技術的電路並且利 用VHDL(Very high speed integrated circuit Hardware Description Language)硬體描 述語言撰寫完成,然後藉由 VHDL 分析工具讀取並分析整個容錯系統,擷取所 需的資料並決定錯誤注入目標(Fault target),例如:元件名稱、訊號名稱、變數

(19)

名稱…等,然後依據錯誤時間機率分佈函式決定錯誤注入的時間,並產生錯誤注 入描述檔,最後利用模擬器(Simulator)模擬結果。

在錯誤模擬的時候,除了要模擬系統在沒有錯誤產生的模擬實驗,還需要加 入錯誤注入描述檔模擬有錯誤產生的模擬實驗,產生沒有錯誤注入(Fault free)以 及有錯誤注入的實驗波形數據後,就能比較分析兩者的差異。

藉由錯誤分析,可以分析出錯誤(Fault)是否為活動性錯誤(Active fault)以及 有效性故障(Effective error),同時能觀察容錯系統的故障偵測(Error detection)技 術是否有偵測出故障的發生、故障恢復(Error recovery)技術是否有修正該錯誤以 及系統重建技術(System reconfiguration)是否能排除無法恢復的故障電路,並且加 以統計結果,最後依據統計結果評估額外加入的容錯技術是否有達到預期的效 果,如此一來就可以評估此一容錯技術是不是值得投資,如果值得則可以使用該 項容錯技術;若不值得則需要修改容錯技術或是引用別的容錯技術來提升整個系 統的容錯能力以及提高該系統的可靠度。

2-1 錯誤注入(Fault Injection)

錯誤驗證流程中第一個步驟是錯誤注入,當容錯系統設計完成之後需要驗證 它的功能性以及正確性,而遭遇到的第一個問題便是如何測試容錯系統所使用的 容錯技術,因應這個問題所延伸出來的技術就是錯誤注入,它的特徵是能在短時 間之內有效的產生錯誤來測試容錯系統所使用的容錯技術。

目前錯誤注入技術包含以下幾類:

1. 實體錯誤注入(Physical fault injection):

此方法是當容錯系統被以晶片、FPGA…等方法實作出來之後所使 用,這類的技術又可細分成三種:

(1). 晶片腳位層次錯誤注入(IC Pin level fault injection):

該技術是利用晶片測試機台直接在晶片接腳上注入錯 誤,並觀察錯誤對此晶片系統所造成的影響。[10]

(20)

(2). 輻射方式錯誤注入(Radiation fault injection):

該技術是為了產生真實環境中的錯誤對系統的實際影 響,特別去建構一個可以產生雜訊污染源的工作環境平台,如 此一來可以用最實際的錯誤注入方式對晶片執行錯誤注入的 動作。[11]

(3). 硬體基礎錯誤注入(Hardware-based fault injection):

目 前 晶 片 設 計 領 域 中 , 有 提 供 硬 體 模 擬 的 工 作 平 台 (FPGA),它可以產生更準確且有效的錯誤注入,以便觀察晶 片對於錯誤的反應與行為。

晶片腳位層次錯誤注入以及輻射方式錯誤注入因為需要實際的晶 片來實踐錯誤注入,因此需要較高的系統開發時間以及製作成本,例 如:晶片製作成本、實驗環境建構…等,除此之外這兩類錯誤注入技術 的可控制性(Controllability)以及可觀察性(Observability)都相當的低。而 硬體基礎模擬錯誤注入技術因為使用 FPGA 的關係所以成本較低且有 較高的可控制性以及可觀察性。

2. 軟體模擬基礎錯誤注入(Software-based simulate fault injection):

該 技 術 是 結 合 軟 體 實 踐 錯 誤 注 入(Software-implemented fault injection)以及模擬基礎錯誤注入(Simulation-based fault injection),它是 藉由模擬器(Simulator)的模擬模型(Simulated model)以及內建式指令 (Build-in commands),來達到錯誤注入的功能,此項技術的成本是最節 省,因為它可以應用在抽象層(Abstraction level)、暫存器轉換層(Register transfer level)、邏輯閘層(Gate level)等,並不需要實體的電路產生,如 此一來還可以降低設計的時間,提早在撰寫硬體描述語言時就能有效的 測試該系統的容錯能力,而且它具有相當高的可控制性以及可觀測性。

[6][7][8][9]

(21)

實體錯誤注入 實體錯誤

注入

輻射方式 錯誤注入

硬體基礎 錯誤注入

軟體模擬基 礎錯誤注入

可控制性 低 低 中等 高

可觀測性 低 低 中等 高

實際電路 相似性

高 高 高 中等

花費成本 高 高 中等 低

表格2-1:實體錯誤注入與軟體模擬基礎錯誤注入比較

本論文是採用軟體模擬基礎錯誤注入技術,因為它可以大幅的縮短系統開發 時間、較低的成本花費而且能有效的提升錯誤注入能力…等。在執行錯誤注入 時,需注意下列幾項參數:

1. 硬體描述語言模組(HDL models)

在本篇論文當中所採用的硬體描述語言模組為 VHDL 模組,而在錯誤 注入中有使用到兩樣重要的技術將會與該模組有關:

(1). VHDL 語言的特徵(Characteristics of the VHDL language)

當一個系統利用 VHDL 語言中的階層式架構方法撰寫完成,

其中的元件會藉由訊號線(Signal)來做連結,VHDL 語言允許ㄧ條 訊號線可以讓多個元件所驅動(Drive)並且提供解答函數(Resolution function)來決定當一條訊號線有多個來源端在推動時,哪一個元件 所產生的值才是正確,該條訊號線被稱為解答訊號線(Resolve signal),它可以被用來模擬真實電路上面的匯流排或是金屬連線,

我們可以藉由此一特性來產生錯誤發生地點。

(22)

(2). 模擬器內建指令(Use of build-in commands of simulator)

目前市面上的EDA 工具提供了很多模擬工具,而這些工具大 部份都有提供內建指令,這些指令當中有一部份的指令可以被使用 於錯誤注入技術,使用模擬器內建指令可以避免修改 VHDL 原始 碼即可達到錯誤注入的目的,它僅需要考慮訊號線(Signal)以及變 數(Variable)的操作,但是這個技術的適用性是依靠模擬器對於所提 供的內建指令功能強大與否。

2. 錯誤注入目標(Fault targets):

當要執行錯誤注入時,首先便是要決定錯誤注入地點,在本論文當中錯 誤注入地點可分為三種資料物件(Data object)型態:輸出/輸入腳位(I/O port)、訊號線(Signal)、變數(Variable),然後藉由 VHDL 模組中的 VHDL 語 言特徵以及模擬器內建指令來完成錯誤注入的動作,而錯誤注入的方式主要 是依據所屬的物件型態的不同而有所區分:

(1). 輸出/輸入腳位與訊號線的錯誤注數方式,其主要的參數有:

a. 錯誤注入地點(Fault target) b. 錯誤的值(Fault value)

c. 錯誤發生時間(Fault instant time) d. 錯誤結束時間(Fault end time)

(2). 變數的錯誤注入方式,其主要的參數有:

a. 錯誤注入地點(Fault target) b. 錯誤的值(Fault value)

c. 錯誤發生時間(Fault instant time) 其中變數還可以分成兩類:

a. 暫時性(Temporary):

變數因為只能在程序(Process)中使用,所以當程序結

(23)

束時該變數就會消失,所以無法給定錯誤結束時間。

b.永久性(Atemporal):

此類型的變數是應用在儲存裝置(Stroage device)中,

像 是 暫 存 器 檔 案(Register file) 以 及 資 料 記 憶 體 (Data memory),當這類的錯誤被注入時,除非有新的值將其覆 蓋,否則該錯誤一直存在。

輸出/輸入腳位、訊號(Signal)與變數(Variable)三種不同物件型態之間主 要的差異是在於變數無法指定錯誤結束時間,而輸出/輸入腳位以及訊號可 以指定錯誤結束時間。

3. 錯誤模組(Fault model):

錯誤模組主要是用來決定所要注入錯誤的值,目前錯誤模組所包含的種 類相當的廣泛,其中有:Stuck-at 錯誤模組、高阻抗(High-impedance)錯誤模 組、未知值(Un-know)錯誤模組…等,在本篇論文當中採用 Stuck-at、高阻抗 (High-impedance)、未知值(Un-know)的混合式錯誤模組。

Stuck-at 錯誤模組可以模擬 64% CMOS 技術真實所會發生的缺陷 (Defect)。不確定(Indetermination)錯誤模則可以表示多種型態的暫時性錯誤 (Transient fault),例如:電壓源的不穩定、漏話(Cross-talk)以及電磁效應 (Electromagnetic interferences)的影響、溫度的變化、輻射線(α radiation and cosmic radiation)的干擾…等。高阻抗(high-impedance)可以表示實際上的永久 性錯誤(Permanent faults)型態,例如:電晶體氧化物(Transistor oxide)、半導 體上的金屬層、以及晶片所有的連線當中發生高阻抗時的狀況。

選擇上述三種錯誤模組為基礎的混合式錯誤模組,是因為這些錯誤模組 相當符合實際產品所會發生的錯誤,而且對於模擬器內建指令技術來講,很 容易就可以藉由改變訊號或是變數的值來模擬這類的錯誤。

(24)

4. 錯誤類型(Fault type):

錯誤類型在本論文中分為兩類:第一類為暫時性錯誤(Transient fault),所謂的暫時性錯誤指的是錯誤有一定的週期性,在經過若干時 間之後錯誤便會消失,第二類為永久性錯誤(Permanent faults),這類型 的錯誤並沒有結束時間,當錯誤一發生便會一直存在系統當中。影響錯 誤型態的原因有很多,例如:錯誤的值為高阻抗,這種錯誤對應在實際 狀況就像是斷線(Open-line),而這種錯誤就會被歸類為永久性的錯誤。

5. 錯誤分佈模組(Fault distribution model):

錯 誤 分 佈 模 組 的 主 要 功 能 是 決 定 錯 誤 發 生 時 間(Fault instant time),為了要模擬電子產品實際發生錯誤的狀況,在本論文當中採用了 Weibull 錯誤分佈機率函式[1][5],因為 Weibull 錯誤分佈機率函式能精 確的模擬出電子產品整個生命週期當中每一個時間點會錯誤發生機 率,它將電子產品的生命週期分為三個部份:Burn-in、Useful-life、

Wear-out,剛開始電子產品錯誤發生的機率較高,經過一段 Burn-in(利 用高溫、高壓的方法加速其老化的速度,將較差的電子產品淘汰)的時 間將所有電子產品不穩定的因素加以排除。在Useful-life,電子產品處 於一個較穩定的狀態,發生錯誤的機率較低。最後電子產品經過一定使 用的時間後,發生錯誤的機率又開始逐漸升高,這是因為晶片內部的接 點逐漸老化,影響到產品的穩定度,這段時間稱為Wear-out。

在採用Weibull 錯誤分佈機率函數之前,必須先了解關於系統可靠 度(System Reliability)以及失敗率函式(Failure rate function)的基本原 理。系統可靠度的定義如下所述:

某個電子產品在時間點t 時的系統可靠度如式 2-1 所述:

) ( ) (

) ( )

) (

( N t N t

t N N

t t N

R

f o

o o

= +

=

式2-1

(25)

同理,其系統不可靠度(System unreliability)如式 2-2 所述:

) ( ) (

) ( )

) (

( N t N t

t N N

t t N

Q

f o

f f

= +

=

式2-2

其中N 為在時間點 t 所有電子產品的總個數,No(t)為在時間點 t 電 子產品還能正確運作的個數,Nf(t)為在時間點 t 電子產品發生故障的個 數。

失敗率函式(Failure rate function)所代表的意義是,在時間點 t 時有 No(t)個電子產品可以正常運作,那麼經過 t△ 時間後在 t’時間點會有多 少個電子產品發生故障。我們可以藉由對R(t)微分求得失敗率函式以 z(t) 表示,如式2-3 所示:

) ( ) ) ( (

) (

) ) (

( )

( 1

) ( ) ( ))' 1 ( 1 ( ))' ( ) (

' (

) ( ) ' lim ( )

(

' 0

t R t dt z

t dR

t R

dt t dR dt

t N dR t N

dt t dN t t N

Q t

t R t

t R t t R

z

o

f t o

×

=

⎟ =

⎜ ⎞

⎝ ⎛ −

=

=

=

⎟⎟ =

⎜⎜ ⎞

= −

式 2-3

因為Weibull 機率分佈函式的 R(t)為 e-(λt)α,因此可以藉由式 2-3 求得 Weibull 失敗率頻率函式,如式 2-4 所示:

1

) ( 1 )

(

) ( ) (

) ( ) ( )

) ( ( ) (

=

=

=

=

α

α λ α α λ

λ αλ

λ αλ t

z

t R t z e

dt t t R

e t R

weibull t

t weibull

式2-4

其中α為時期參數(Phase parameter),它可以決定 Weibull 失敗率函 式 的 生 命 週 期 為 何 , 其 中 如 果 α <1 則 為 Burn-in 、 α = 1 則 為 Useful-life、α>1 則為 Wear-out。λ為失敗率(Failure rate),代表的意 義是每小時會有多少個元件發生故障。Weibull 失敗率函式分布圖以及 其累積分佈函數(Cumulative distribution function)分佈圖如圖 2-2(a)、(b) 所示,最後藉由Weibull 失敗率函式即可獲得錯誤發生時間。

(26)

t2 λ

Time t2

λ

Time

Failure rate functionz(t)Failure rate functionz(t)

Wear - out α >1 Wear - out

α >1 Useful -life

α =1 Useful -life

α =1 Burn - in

α <1 Burn - in

α <1

tt11

CDF ofz(t)CDF ofz(t)

x y x y

t2 t2 tt11 TimeTime

Useful -life α=1 Useful -life

α=1

Wear - out α > 1 Wear - out

α > 1 Burn-in

α <1 Burn-in

α <1

(a) (b)

圖2-2:(a) Weibull 失敗率函式分布圖 (b) Weibull 失敗率函式數累 積分佈圖

6. 錯誤維持時間(Fault duration):

錯誤發生到錯誤結束這段時間即為錯誤維持時間,它可以決定所要 注入錯誤存在的時間為多久,若存在時間沒有限制或是大於模擬時間,

在本論文中則判斷為永久性錯誤。

7. 注入的錯誤總數(Total fault numbers):

顧名思義,注入的錯誤總數即為發生錯誤的總數,它與模擬時間以 及錯誤維持時間之間的關係會影響到錯誤分佈密度(Fault distribution density),如果錯誤注入總數高的話那錯誤分佈密度就會偏高,反之則 會降低。

8. 模擬時間(Simulation workload):

錯誤模擬時間代表的是這次模擬實驗的時間長度,它是受到測試程 式(Benchmark)長度的影響,同時也會影響錯誤分佈密度。

(27)

2-2 錯誤模擬(Fault Simulation)

在錯誤模擬階段,主要是利用錯誤注入階段所產生的無錯誤注入描述檔(Fault free command script)以及錯誤注入描述檔(Fault injection command script),使用模 擬器產生模擬實驗結果,無錯誤描述檔以及錯誤描述檔的敘述如下示:

z 無錯誤注入描述檔:

沒有錯誤(fault free),正常執行的命令描述檔,以便在錯誤模擬 (Fault Simulation)階段產生一個正常的模擬實驗結果,以做為錯誤模擬 比較的依據。

z 錯誤注入描述檔:

包含一次實驗所有錯誤的命令描述檔,用來在錯誤模擬(Fault Simulation)階段產生一個有錯誤注入的模擬實驗結果。

模擬實驗結束後,將兩個實驗結果由波形格式紀錄檔(Wave log format)轉換成 文字格式紀錄檔(ASCII log format),以利於錯誤分析程式的讀入與分析,詳細的 錯誤模擬流程圖如圖2-3 所示。

VHDL simulator VHDL simulator

VHDL SourceCodes Fault Free

command Script

Fault injection command Script

Fault Free simulation result

Fault Injection simulation result

Fault Injection ASCII file Fault Free

ASCII file

2-3:錯誤模擬流程圖

(28)

2-3 錯誤分析(Fault Analysis)

在執行錯誤分析之前必須先了解錯誤的行為與特性,這樣子才能有效的分析 錯誤發生到錯誤結束所會產生的行為有哪些,而這些行為特性會導致怎樣的結果 發生,我們將在下列兩個章節詳細說明錯誤行為與特性以及錯誤分析的流程。

2-3.1 錯誤行為與特性

一個錯誤行為從錯誤發生到對系統產生實際影響,甚至使系統發生 無法恢復的嚴重性錯誤,其主要的行為示意圖如圖2-4 所示:

Fault Error Error Detection Recovery or Failure

Fault Latency Error Latency Recovery Latency

Inject fault Effect System result

Error detection scheme detect fault

Service continues or distupted

圖2-4:錯誤行為示意圖

以錯誤注入的角度來看,假設系統注入一個錯誤(Fault),錯誤產生 到實際影響系統結果發生故障(Error)的這段時間稱為錯誤潛伏時間 (Fault latency),故障發生到被偵測到的時間稱為故障潛伏期(Error latency),當系統偵測到故障到系統成功恢復因故障而產生的錯誤結果 這段時間稱為恢復時間(Recovery latency)。在錯誤行為意示圖中錯誤以 及故障兩種行為還可以在細分成下列四種類型:

(1). 無活動性錯誤(Inactive fault):

當錯誤注入到錯誤結束,如果注入錯誤的值與被注入點原 始訊號的值相同,對真實系統而言這個錯誤是不存在,此種錯 誤稱為無活動性錯誤。

(29)

(2). 活動性錯誤(Active fault):

當錯誤注入到錯誤結束,如果注入錯誤的值與被注入點原 始訊號的值不同時,則該錯誤為一活動性錯誤。

(3). 無效性故障(Noneffective Error):

當一個活動性錯誤產生,而該錯誤並不會讓元件產生執行 上的錯誤,或是該錯誤會讓元件產生執行上的錯誤但不會讓系 統發生故障,這類的錯誤統稱為無效性故障。

(4). 有效性故障(Effective Error):

當一個活動性錯誤產生,且該錯誤會導致系統執行結果錯 誤發生故障,這一類的錯誤被稱為有效性故障。

這四種錯誤類型的關係圖如圖2-5 所示,圖 2-6 為四種錯誤類型的 範例:

Inject fault Active

fault

Inactive Fault

Effective Error

Noneffective Error

圖2-5:錯誤關係圖

1 1 0

1 1

Inject fault: value=1

Active fault/Effective error 1 0

0

1 0

Inject fault: value=0

Active fault/Noneffective error

1 1 0 1

Inject fault: value=1

Inactive fault 1 0

1 0

1 0

Fault free circuit

(30)

而這四類錯誤類型和容錯系統架構之間的關係如圖2-7 所示,一開 始系統是處於初始狀態,此時系統本身沒有錯誤發生,在錯誤被注入之 後,如果與原始信號的值相等則為無活動性錯誤,如果不相等則為活動 性錯誤。當活動性錯誤有影響到系統結果實則錯誤為一個有效性故障,

若是該活動性錯誤並不會影響元件運算,或是影響元件運算但不會影響 系統結果,則此錯誤為一非有效性故障,若是會影響系統結果則為有效 性故障。

故障產生時有可能被容錯系統故障偵測技術所偵測到,此時系統會 嘗試去恢復錯誤的運算結果,若是可以恢復則系統還是處於可正常運作 的狀態,如果系統不能恢復錯誤的運算結果,則會進入系統容錯失敗但 是安全的狀態。如果故障不能被容錯系統的故障偵測技術偵測到,則系 統會進入系統容錯失敗且不安全的狀態。

Initial

Active fault

Escaped Effective

error

Correct

Failed safe

Noneffective error

Detected

Inactive

fault Failed unsafe

Fault actavate

inactava te injected

effective detect

recovered

non re covered non

detect none

ffective Stop

圖2-7:容錯系統架構狀態敘述圖

(31)

2-3.2 錯誤分析流程

錯誤分析流程是將錯誤模擬階段所產生的兩組結果:無錯誤注入波 形紀錄檔以及錯誤注入波形紀錄檔,轉換成文字儲存檔案(ASCII file),

匯入錯誤分析程式,分析比較兩者之間的差異,依據各種容錯參數定義 將分析完的結果加以歸類、統計並輸出容錯參數值,容錯分析的基本概 念如圖2-8 所示:

Fault free simulation result (ASCII file)

Faulty simulation result (ASCII file)

Fault injection command Scritp

Data analyzer Analysis Report

圖2-8:錯誤分析概念圖 本論文所用到的容錯參數如下所述:

z 活動性錯誤比例(Active fault rate):

當注入錯誤總數為 N(injection),其中有 N(active)個錯誤為活 動性錯誤,則活動性錯誤比例能以式2-5 表示之,此一比例還可以 表示錯誤注入的有效性。

) (

) (

injected N

active

P

active =

N

式2-5

z 有效性故障比例(Effective error rate):

若是有 N(active)個活動性錯誤,其中有 N(effective)個錯誤為 有效性故障,則有效性故障比例能以式2-6 表示之,式 2-6 還可以 表示實際的錯誤上會對系統發生影響的機率。

) (

effevtive

P

=

N

式2-6

(32)

z 故障偵測覆蓋率(Error detection coverage)

故障覆蓋率代表了一個故障偵測技術的優劣,可由式2-7 統計 之,其中N(effective)表示故障發生個數,N(detected)代表有多少個 故障能被故障偵測技術偵測到,而故障遺漏覆蓋率(Error escape coverage)可以用 Pmiss=1-Cdet表示之,如果故障被偵測技術遺漏掉,

此時系統會進入非安全的容錯失敗狀態(Failed unsafe ),此一狀態 表示目前系統有錯誤發生且故障偵測技術沒有偵測到,而系統會在 此一狀態下繼續執行。

) (

) (det

det

N effective ected

C

=

N

式2-7

z 故障恢復覆蓋率(Error-recovery coverage)

假設系統偵測到N(detected)個故障,其中有 N(recovered)個故 障是可恢復,則故障恢復覆蓋率如式2-8 所示,若該故障無法由故 障恢復技術恢復,此時系統會進入安全的容錯失敗狀態,此一狀態 表示目前系統有錯誤發生且故障偵測技術有偵測到但無法克服該 錯誤,此時系統因爲無法保證執行結果的正確性而停止運作。

) (det

) cov (

ected N

ered re

C

rec =

N

式2-8

錯誤分析的第一個步驟是利用無錯誤注入波形文字紀錄檔案以及 錯誤注入波形文字紀錄檔案兩者波形的相互比較,找出波形有所差異的 地方並紀錄相關的參數,例如:波形有所差異的起始時間以及結束時 間、訊號線的名稱、訊號線的值…等,以便在下一個步驟分析注入的錯 誤是否為有活動性錯誤(Active fault)、有效性故障(Effective fault)、故障 偵測(Error detection)技術是否有偵測到錯誤、故障恢復技術是否能恢復 此一故障所產生的錯誤結果…等。

(33)

錯誤分析的第二個步驟是將是將第一步驟所儲存的資料與錯誤注 入命令描述檔(Fault injection command script)比較,找出注入的錯誤是 否為有活動性錯誤、是否有影響系統輸出產生故障、故障發生的時間 點、故障是否有被偵測到、偵測到的時間點…等,最後則是將第二步驟 的結果做一匯整動作,統計所有容錯參數結果。錯誤分析流程如圖2-9 所示:

Store data of compare result

Active fault?

Fault injection command script

Effective error?

Detect error?

Recover error?

Inactive fault

Active fault Noneffective error

Active fault Effective error

Escape error Fail safe

Active fault Effective error

Detect error Fail unsafe Active fault

Effective error Detect error

Compare Waveforms

Faulty simulation result Fault free simulation

result

yes no

yes no

yes no

yes no

圖2-9:錯誤分析流程圖

(34)

第3章 工具開發與整合

本篇論文依據錯誤驗證模環境流程開發錯誤注入、錯誤模擬以及資料分析工 作環境。整個實驗工作環境整合了錯誤注入(Fault injection)、錯誤模擬(Fault simulation)以及資料分析(Data analysis),它提供了一個能快速操作錯誤注入、錯 誤模擬以及資料分析的整合性平台,圖3-1 即為整個錯誤注入、錯誤模擬、資料 分析工作環境架構圖,該架構圖表示此一整合性工具的主要功能定義以及每一項 功能之間的關係。

Weibull Distribution

Parser Target Lists

Fault Model Fault density

analysis Fault

Injector VHDL

Source Files

Simulator Fault

injected Descriptions

Faulty WLF Results Golden WLF Results

Comparison File

Data Analysis

Experiment results

Injection phase Simulation phase Analysis phase

圖3-1:錯誤注入、錯誤模擬、資料分析工作環境架構

此一整合性工具主要可以分三個階段:注入階段(Injection phase)、模擬階段 (Simulation phase)、分析階段(Analysis phase),每一個階段都包含其它重要的副 程序(Sub-process),每一個副程序都能產生各階段所需要的重要資訊。

3-1 注入階段

在這一個階段,主要的目標是由VHDL 原始碼當中擷取錯誤注入目標(Fault target list)以及產生實驗所需要的參數,例如:錯誤的值、錯誤的起始時間、結束 時間…等,而這一階段主要的子程序包含有錯誤注入目標分析(Parser)、Weibull 分佈、錯誤密度分析(Fault density analysis)、錯誤注入檔產生器(Fault injector),

下面將針對每項副程序做一詳細說明:

1. 錯誤注入目標分析(Parser)

錯誤注入目標分析主要目的為了由 VHDL 原始碼當中擷取錯誤注

(35)

入目標,經由此一副程序可以在原始碼當中找出所有可以注入錯誤的地 點,包含了輸出/輸入(I/O)、訊號線(Signal)、變數(Variable),在找出所 有錯誤注入地點之後會根據個別元件所佔的面積比例以及錯誤注入總 數決定錯誤注入目標(Fault injection target)。

在使用硬體描述語言在撰寫電路時,可能會採用架構式(Structure) 的寫方法,因此我們採用物件導向的方式來處理以及分析VHDL 檔案,

首先,以一個具有分析能力的物件來處理一個 VHDL 檔案的原則來作 設計,當一個分析物件在遇到外部引用檔案的時候,隨即產生一個一樣 的物件去處理這一個被參考到的檔案,如此遞迴、循環的方式,即可以 產生一個檔案由一個分析物件來處理的功能,而每一個物件在經過分析 之後,隨即回傳這個檔案中所定義的輸入、輸出接腳(I/O pin)、訊號 (Signal) 及 變 數 (Variable) 的 名 稱 還 有 這 一 個 檔 案 的 實 體 名 稱 (Entity name),而上一層的分析物件即可以得到該層所有的相關訊息,如此一 來,最上層的分析物件將會得到所有的詳細相關資料,而這些資料包括 被分析系統中的所有接腳名稱、訊號名稱、變數名稱,以及所有相對應 的路徑,如圖3-2 所示。

V H D L C o d e

E x tr a c t I/O

Q u o te o th e rs V H D L c o d e

P ro d u c e n e w o b je c t to p r o c e s s q u o te d V H D L c o d e

E x tra c t d a ta a s f o llo w in g 1 .E n tity n a m e 2 .S ig n a ls 3 .V a ria b le

E x tra c t d a ta a n d re tu rn to its p a r e n t y e s

n o

圖3-2:錯誤注入目標流程圖

(36)

2. Weibull 錯誤分佈

此一副程序主要目的是為了求得錯誤發生時間,由於Weibull 失敗 率函數(Failure rate function)的表現較符合晶片從成品出來到報廢為止 所呈現出來的錯誤發生機率。其失敗率函式

z

(

t

)=

αλ

(

λ

)α1,因為錯誤 發生時間(Fault instant time)不容易直接由失敗率函式求得,因此將 z(t) 函數轉換成累積分布函式(CDF),然後利用累積分布函式的特性求得錯 誤發生的時間點,Weibull 失敗率累積分布函式如式 3-1 所示:

( ) ( )

( )

( )

α

( ) ( )

α

α α α

α α

λ λ

λ α αλ

λ αλ

λ λ

λ αλ λ

αλ

t t z CDF t

du du u

u dt

t

t dt du dt du t u let

dt t dt

t t

z CDF

t

t t

t

t t

=

=

=

=

=

=

=

=

=

) ( ,

)) ( (

0

0 1 0

1 0

1

1 0 1

0

式3-1

利用CDF(z(t))在 Y 軸等份切割,切割出來的每一個點可以利用反 函 式 (Inverse function) 計 算 出 時 間 點 , CDF(z(t)) 的 反 函 式 為

( )

λ

1α

) ) (

(

_ CDF

t t z CDF

Inver = =

,對應到時間軸(X 軸)上即可求得錯誤

發生時間點,然後在正規化(Normalize)將時間轉換成[0,1]區域,最後將 時間轉換到實驗所需要的模擬時間[0,Tworkload]區域,這樣子就可以推算 出每一個錯誤在模擬時間內可能發生的時間點

Failure rate functionz(t)Failure rate functionz(t)

0.001 0.001 0.004 0.004 0.008 0.008 0.012 0.012 0.016 0.016 0.020 0.020 0.024 0.024 0.028 0.028

0.25

0.25 0.500.50 Time

Time 0.750.75 1.001.00 Wear-out

α >1 Wear-out

α >1 Useful -life

α=1 Useful -life

α=1 Burn-in

α <1 Burn-in

α <1

1.00 1.00 0.75

0.75 Time Time 0.50 0.50 0.25

0.25 0.1

0.1 0.2 0.2 0.3 0.3

CDF ofz(t)CDF ofz(t)

0.4 0.4 0.5 0.5 0.6 0.6 0.7 0.7 0.9 0.9 1.0 1.0 0.8

0.8 Burn - in α < 1 Burn - in

α < 1

Useful-life α =1 Useful-life

α =1

Wear -out α > 1 Wear -out

α > 1

(a) (b)

圖3-3:(a)Weibul 失敗率函式 (b)Weibul 失敗率累積分布反函式

(37)

因為階段參數(Phase parameter)α 的關係,每一次只能產生一個階段 的錯誤分佈狀態(α<1 為 Burn-in 階段,α=1 為 Useful-life 階段,α>1 為Wear-out 階段),因此在本論文中藉由連結的方式來表示部份的階段 組合(Burn-in 和 Useful-life 或是 Useful-life 和 Wear-out),甚至於全部的 階段組合(Brun-in、Useful-life 以及 Wear-out)。利用α=1 時 z(t)=λ的特 性,分別將 z(t)=λ 代入 α<1 以及 α>1 的 Weibul 失敗率反函式中,

( )

λ αλ

α11

) ) (

(

_ = = z t

t t z

Inver

,分別可以求得時間臨界值t1以及t2,在將t1

以及t2帶入CDF(z(t))可求得 CDF 臨界值 x 以及 y,所以當 CDF(z(t))<

x 時為 Burn-in 階段,x≤CDF(z(t))≤y 時為 Useful-life 階段,CDF(z(t)) > y 為 Wear-out 階段。

t2 λ

Time t2

λ

Time

Failure rate functionz(t)Failure rate functionz(t)

Wear - out α >1 Wear - out

α >1 Useful -life

α =1 Useful -life

α =1 Burn - in

α <1 Burn - in

α <1

tt11

CDF ofz(t)CDF ofz(t)

x y x y

t2 t2 tt11 TimeTime

Useful -life α=1 Useful -life

α=1

Wear - out α > 1 Wear - out

α > 1 Burn-in

α <1 Burn-in

α <1

圖3-4:Weibul 失敗率函式階段臨界值 3. 錯誤密度分析(Fault density analysis)

在這一個整合性工具中,我們針對了錯誤注入技術提供了一個新的 想法,一般的錯誤注入技術產生錯誤注入檔後在實驗結束後須經由資料 分析得到實驗數據,但是有時候因為實驗參數:錯誤持續時間(fault duration)、模擬工作時間(simulation workload)、錯誤發生頻率(fault frequency)…等設定不佳,以至於實驗結果不理想,此時就必須重新設 定參數並且重新模擬、分析,因為每一次的模擬以及分析都會浪費大量

(38)

density analysis)來判斷錯誤環境的好壞以及避免重複太多次同樣的錯 誤環境模擬,它可以提早在產生錯誤注入檔案時就能根據錯誤密度分析 結果,判斷出該次模擬的錯誤環境的優劣,而且藉由該技術能有效的調 整實驗參數產生較佳的錯誤注入檔、獲得較完整的錯誤環境模擬以及更 精確的實驗數據。

所謂錯誤密度即為某個時間單位內同時存在多少個錯誤,當一個時 間點同時存在越多個錯誤時,則錯誤密度越高,因此錯誤密度會受到下 列五項實驗參數的影響:

z 錯誤發生時間(Fault instant time) z 錯誤結束時間(Fault end time) z 模擬工作時間(Simulation workload) z 錯誤類型(fault type)

z 錯誤的值(fault value)

錯誤發生時間以及錯誤結束時間可以決定一個錯誤的維持(Fault duration)時間的長短,假設模擬工作時間固定且錯誤維持時間越長則同 一時間點出現錯誤的個數也就會越多,錯誤密度也就會越高。同理如果 模擬工作時間變短、錯誤持續時間固定,那麼同一時間點出現錯誤的個 數也就會越多,錯誤密度也就會越高。錯誤類型會影響錯誤密度的關係 是因為如果錯誤被歸類為永久性錯誤(Permanent fault),此時錯誤結束時 間將會持續到模擬工作時間結束。錯誤值會影響錯誤密度的原因是因為 當錯誤的值為高阻抗,在實際電路上這種錯誤類似於斷路(Open-line)的 狀況,所以這種錯誤會被歸類於永久性錯誤類型,因此會影響到錯誤結 束時間。在說明錯誤密度分析演算法之前必須先定義下面幾個參數:

(39)

z Fi(fsi, fei):Fi表示第i 個被注入的錯誤,其中 fsi表示錯誤發生 時間,fei 表示錯誤結束時間,fsi- fei 為錯誤維持時間(Fault duration)。

z PAj(psj, pej):PA 表示有同樣個數錯誤存在的區間,psj表示區 間的起始點,pej表示區間的結束點。

z Fi:一個PAj(psj, pej)區間內存在 i 個錯誤。

z Fi_time: 一 個 PAj(psj, pej) 區 間 內 存 在 i 個 錯 誤 的 時 間 ,

j j time

i

ps pe

F

_

= −

z Ti:所有同一時間有i 個錯誤存在的時間總和,

T

i

=F

i_time

z LT : 在 模 擬 時 間 有 發 生 錯 誤 的 時 間 長 度 , max

1 ,

max 1

=

=

i T LT

i

i ,max 為一個區間內可能同時存在最多 錯誤的數量,max≦注入錯誤總數。

z Pi:在模擬時間中同時有 i 個錯誤存在的機率,

LT P

i

= T

i 。 錯誤密度分析有一共有四的步驟:

步驟一:將所有的fsi以及fei排序成一組由小到大的數列。

步驟二:由步驟一所排好的數列中循序選擇一對相鄰的數字,此對 (Pair)數字被標記為 PAj(psj, pej),若是 psj=pej則忽略該 對數字不予計算。

步驟三:將所有的Fi(fsi, fei)以及 PAj(psj, pej)作比較,如果 fsi≦psj

而且 psj≧pej,則代表此一錯誤存在於該區間,最後的 到每一個區間存在幾個錯誤。

步驟四:由步驟三統計的結果計算LT、Ti以及Pi。

(40)

圖3-5 為錯誤密度分析的圖例,在圖 3-5(a)的例子中一共注入六個 錯誤,在這一個例子中,區間存在錯誤的狀況有四種,分別為沒有錯誤、

一個錯誤、兩個錯誤、三個錯誤,3-5(b)為錯誤密度分析的結果,以一 個錯誤的狀況居多,也就是在整個模擬時間如果有發生錯誤,會有58%

的機會是只一個錯誤發生,25%是同時有兩個錯誤發生,17%是同時有 3 個錯誤發生。

1 2 3 4 5 6

5 10 15 20 25 30 35 40 45 50 55 60 65 70

1 2 1

0 0 1 2 3 1 2

Fault inje ction seg u ence

Time

(a)

1 (40,70)

(55,65)

2 (40,70),(65,70)

(65,70)

3 (30,55) , (40,70), (45,55) (45,55)

2 (30,55),(40,70)

(40,45)

1 (30,55)

(30,40)

0 Null

(25,30)

1 (15,25)

(20,25)

2 (5,20) ,(15,25)

(15,20)

1 (5,20)

(5,15)

Amount of )) (F

Pair

1 (40,70)

(55,65)

2 (40,70),(65,70)

(65,70)

3 (30,55) , (40,70), (45,55) (45,55)

2 (30,55),(40,70)

(40,45)

1 (30,55)

(30,40)

0 Null

(25,30)

1 (15,25)

(20,25)

2 (5,20) ,(15,25)

(15,20)

1 (5,20)

(5,15)

Amount of faults (Fi

Overlap faults F(fs,fe)) Pair Overlap faults

faults (PA(ps,pe))

(PA(ps,pe)) (( (( ))))

70 70 65 55 55 45 40 30 25 20 15 5

70 70 65 55 55 45 40 30 25 20 15 5

0.17 10

F

0.25 15

F

0.58 35

F

T F

0.17 10

F

0.25 15

F

0.58 35

F

T

F

ii

3 2 1

3 2 1

P

ii

P

(45,55) )

(65,70) (40,70) (30,55) (15,25) (5,20)

(45,55) F(fs,fe)

(65,70) (40,70) (30,55) (15,25) (5,20) F(fs,fe

F(fs,fe i ii

圖3-5:(a)錯誤密度分析範例 (b)錯誤密度分析步驟與結果

(41)

4. 錯誤注入檔產生器(Fault injector)

錯誤注入檔產生器是利用錯誤注入目標分析(Parser)以及錯誤密度 分析(Fault density analysis)的結果產生錯誤注入檔,錯誤注入檔案主要 是依據模擬器內建指令撰寫而成,它根據輸出/輸入腳位(I/O pin)、訊號 線(Signal)、變數(Variable)…等不同的表現特性而有變化,訊號線以及 變數的錯誤注入方式如圖3-6 所示:

Signal manipulation for a stuck at fault [1] SimulateUnil <fault injection time>

[2]FreezeSignal <signal name> <signal value>

[3]SimulateFor <fault duration>

[4]UnFreezeSignal <signal name>

[5]SimulateFor <observation time>

Variable manipulation for a stuck at fault [1] SimulateUnil <fault injection time>

[2]Assignvariable <variable name> <variable value>

[5]SimulateFor <observation time>

圖3-6:模擬器內建指令錯誤注入方式

3-2 模擬階段

在模擬階段,它會將錯誤注入階段所產生的錯誤注入檔以及容錯電路的 VHDL 原始檔讀入加以模擬之,在每一次模擬實驗結束後,模擬器會將實驗 結果依據WLF(Wave log format)檔案格式儲存下來,在執行完模擬階段之後 會得到兩組實驗結果,分別為無錯誤注入波形紀錄檔案以及含有錯誤注入的 波形紀錄檔案。

在本論文中我們使用的模擬器為 Modelsim,這是一個相當功能強大且 流行的模擬器,它所提供的內建指令也可以被用於錯誤注入技術。

(42)

3-3分析階段

分析階段主要的目的是為了求得容錯參數,例如:活動性錯誤比例 (Active fault rate)、有效性故障比例(Effective error rate)、故障偵測覆蓋率 (Error detection coverage)、故障偵測潛伏時間(Error detection latency)…,為 了求得上述的這些容錯參數,我們根據容錯系統架構狀態敘述圖,訂定了一 個錯誤分析流程,流程的基本架構如圖3-7 所示:

Inject fault

Activate fault

Compare system output

Equal

Non-effective error

Detected

Detected error Escape error In-activae fault

No

Yes

No Yes

Effective error

No

Yes

圖3-7:容錯分析流程基本架構

在執行錯誤分析之前,必須先比較為無錯誤的波形紀錄檔案以及含有錯誤注 入的波形紀錄檔案之間的差異,然後參考錯誤注入描述檔和系統輸出結果,依據 容錯分析流程計算各項容錯參數。比較無錯誤的波形紀錄檔案以及含有錯誤注入 的波形紀錄檔案之間的差異有兩種方法,第一種方法是利用Modelsim 本身所提 供的波形比較工具,這種方法的變通性較低,所以能應用的範圍並不大只能分析 一些簡單的波形,例如:沒有故障恢復(Error recovery)技術的錯誤模擬實驗結果,

因為這一類實驗的無錯誤波形紀錄檔以及有錯誤注入波形紀錄檔,它的記錄資料 是同步的,而有故障恢復技術的錯誤模擬通常因為有錯誤注入的實驗必須付出一 些時間冗餘(Time Redundancy),所以實驗波形紀錄資料會與無錯誤波形紀錄檔不 同步,此時就無法使用Modelsim 本身所提供的波形比較器。

(43)

第二種方式是將無錯誤的波形紀錄檔案以及含有錯誤注入的波形紀錄檔案 轉換成類似VCD(Value Change Dump)的紀錄格式檔案,在藉由兩個檔案的比較 找出波形有所差異的地方,這種波形比較的方法就可以被使用於有錯誤恢復技術 的波形比較。該檔案主要是紀錄每一個單位時間內有變化的波形值,它的紀錄方 式如圖3-8 所示:

Time slot

Signals, which have value change

delta_time 30 ;

assign O1 '0' ; assign O2 '1' ; delta_time 30 ;

assign O1 '1' ; assign O4 28 ; assign O21 "00000" ; assign O19 '0' ; assign O2 '0' ; assign O6 '1' ;

assign O5 "00000000000000000000000000011100" ; assign O20 "00000000000000000000000000000000" ; assign O9 "11111100000000000000000000000000" ; delta_time 30 ;

圖3-8 模擬波形檔案紀錄格式

由容錯分析流程基本架構得知,錯誤分析的第一步驟是判斷所注入的錯誤是 否為活動性錯誤(Active fault),活動性錯誤的判斷方式是利用錯誤注入敘述檔中 所有錯誤注入訊號與無錯誤注入波形紀錄檔以及錯誤波形注入檔中的結果比 較,若是無錯誤注入波形紀錄檔以及錯誤注入波形紀錄檔中的錯誤注入訊號值有 發生差異則該錯誤為有效性錯誤,而發生差異的狀況有下列三種:

(1) 在錯誤發生時間以及錯誤結束時間之間,無錯誤注入波形紀錄檔以及 錯誤注入波形紀錄檔的值不相等,則該錯誤為活動錯誤(Active fault)。

(2) 在錯誤發生時間以及錯誤結束時間之間,無錯誤注入波形紀錄檔找不 到任何變化值,這代表這段期間該訊號在無錯誤注入波形紀錄檔中沒 有值的轉換,此時向前尋找該訊號在無錯誤注入波形紀錄檔變化值,

如果找到的值與錯誤注入波形紀錄檔於錯誤發生時間至錯誤結束時 間之間的值相等則該錯誤為無活動性錯誤(Inactive fault),若是不相等 則活動性錯誤。

(44)

(3) 在錯誤發生時間以及錯誤結束時間之間,無錯誤注入波形紀錄檔的值 有發生變化,則該錯誤為活動錯誤,這是因為錯誤注入波形紀錄檔在 這段時間必定只有一個值(所注入的錯誤值),而無錯誤注入波形紀錄 檔的值在這段期間有發生變化,所以無錯誤注入波形紀錄檔以及錯誤 注入波形紀錄檔的值一定不相等。

若以波形表示則如圖3-9 所示:

Fault start time

Inject value =1

Fault end time

Fault free value=0

Fault free value=0 Fault free value have switch Case 1

Case 2

Case 3

圖3-9:活動性錯誤的三種通例波形圖示

然後藉由三種活動性錯誤通例推導活動性錯誤的演算法,活動錯誤演算法有 兩種狀況如圖3-10 所示,一開始在錯誤發生時間(Fault instant time)以及錯誤結束 時間(Fault end time)內判斷該錯誤是否為活動性錯誤,為 Case A 演算法,如果 Casa A 演算法無法判斷則利用 Case B 演算法判斷。活動性錯誤演算法:Case A、

Case B,如圖 3-11 以及圖 3-12 所示。

Case B Case A

Fault start time Fault end time

圖3-10:活動性錯誤的 Case A 與 Case B 演算法使用時機

(45)

Fault instant time

Compare with original value?

Continuous compare

Compare with switch value

Fault end time

Non-equal

No value No

Yes

No value

Continuous compare

Compare with switch value Equal

Fault end time No value

No

Active fault

Non-equal Non-equal

or equal

CaseB

Yes

In-active fault

3-11:活動性錯誤演算法(Case A)

A ctive fault

F orw ard com pare

C om pare w ith sw itch value

Program beginning?

In-active fault N on-equal

N o

Y es E qual

N o value E scape from C ase A

圖3-12:活動性錯誤演算法(Case B)

(46)

判斷完注入的錯誤是否為活動性錯誤之後,接下來的動作就是判斷該錯誤是 否為一有效性故障(Effective error),有效性故障的判斷方式是利用容錯技術所保 護 的 元 件 輸 出 作 為 比 較 的 基 準 , 例 如 : 看 門 狗 錯 誤 偵 測 技 術(Watchdog processor),此一錯誤偵測技術是為了偵測系統控制流程是否有出錯的錯誤偵測 技術,換句話說該技術的主要目的就是監視指令記憶體(Instruction memory)是否 有異常的輸出,因此看門狗錯誤偵測技術是利用無錯誤的波形紀錄檔案以及含有 錯誤注入的波形紀錄檔案中的指令記憶體輸出比較,來判斷所注入的錯誤是否為 有效性故障。有效性故障判斷流程如圖3-13 所示:

Active fault

Compare with protected component

output

Effective error Noneffective error

圖3-13:有效性故障分析流程圖

在判斷完注入錯誤是否為有效性故障後根據無錯誤的波形紀錄檔案以及含 有錯誤注入的波形紀錄檔案的比較,判斷容錯技術是否有偵測到故障發生,若有 偵測到錯誤則將偵測到的時間與有效性故障發生的時間相減,即可求得故障偵測 潛伏時間(Error detection latency)。最後經由大量的實驗統計即可獲的活動性錯誤 比例(Active fault rate)、有效性故障比例(Effective error)、故障偵測比例(Error detection coverage)、平均故障偵測潛伏時間(Average error detection latency)。整個 錯誤分析統計詳細的演算法如圖3-14 所示:

(47)

Inject fault

Active fault?

Effective error?

Error indicator active?

Algorithm of error detection coverage

Faultnumb = Fn

Erroreffective error = Ee e Errorescapes = Ee Errordetect = Ed (1) Fn = Fn + 1 (2) Ee e= Ee e + 1 (3) Ee = Ee + 1 (4) Ed = Ed + 1

Statistics complete?

Output statistics result

No Yes

No

Yes (2) No (3)

Yes (4)

No (1) Yes

圖3-14:錯誤分析統計演算法

參考文獻

相關文件

substance) is matter that has distinct properties and a composition that does not vary from sample

Wang, Solving pseudomonotone variational inequalities and pseudocon- vex optimization problems using the projection neural network, IEEE Transactions on Neural Networks 17

volume suppressed mass: (TeV) 2 /M P ∼ 10 −4 eV → mm range can be experimentally tested for any number of extra dimensions - Light U(1) gauge bosons: no derivative couplings. =&gt;

Define instead the imaginary.. potential, magnetic field, lattice…) Dirac-BdG Hamiltonian:. with small, and matrix

incapable to extract any quantities from QCD, nor to tackle the most interesting physics, namely, the spontaneously chiral symmetry breaking and the color confinement.. 

• Formation of massive primordial stars as origin of objects in the early universe. • Supernova explosions might be visible to the most

Akira Hirakawa, A History of Indian Buddhism: From Śākyamuni to Early Mahāyāna, translated by Paul Groner, Honolulu: University of Hawaii Press, 1990. Dhivan Jones, “The Five

The difference resulted from the co- existence of two kinds of words in Buddhist scriptures a foreign words in which di- syllabic words are dominant, and most of them are the