• 沒有找到結果。

工具開發與整合

在文檔中 摘要 本 (頁 34-48)

本篇論文依據錯誤驗證模環境流程開發錯誤注入、錯誤模擬以及資料分析工 作環境。整個實驗工作環境整合了錯誤注入(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 原始碼當中擷取錯誤注

入目標,經由此一副程序可以在原始碼當中找出所有可以注入錯誤的地 點,包含了輸出/輸入(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:錯誤注入目標流程圖

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 失敗率累積分布反函式

因為階段參數(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)…等設定不佳,以至於實驗結果不理想,此時就必須重新設 定參數並且重新模擬、分析,因為每一次的模擬以及分析都會浪費大量

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)的 狀況,所以這種錯誤會被歸類於永久性錯誤類型,因此會影響到錯誤結 束時間。在說明錯誤密度分析演算法之前必須先定義下面幾個參數:

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。

圖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)錯誤密度分析步驟與結果

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,這是一個相當功能強大且 流行的模擬器,它所提供的內建指令也可以被用於錯誤注入技術。

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 本身所提供的波形比較器。

第二種方式是將無錯誤的波形紀錄檔案以及含有錯誤注入的波形紀錄檔案 轉換成類似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),若是不相等 則活動性錯誤。

在文檔中 摘要 本 (頁 34-48)

相關文件