• 沒有找到結果。

中  華  大  學

N/A
N/A
Protected

Academic year: 2022

Share "中  華  大  學"

Copied!
81
0
0

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

全文

(1)

中  華  大  學 

   

碩  士  論  文 

 

題目:以 SystemC 為基礎開發系統設計環境中使 用 FMEA 技術實行系統層級之危險性評估  SoC‐Level Risk Assessment Using FMEA Approach 

in System Design with SystemC   

     

系  所  別:資訊工程學系碩士班  學號姓名:M09402067    許仲      指導教授:陳永源      博  士 

 

中華民國九十八年八月

(2)

中文摘要

系統晶片(system-on-chip) 運用在智慧型的系統應用程式裡變得流行,當系 統晶片的製程進入了深次微米(submicron) 技術時,系統晶片的可靠度議題正在 設計工業界中得到更多的注意,由於輻射(radiation-induced)引起的軟性錯誤(soft errors)比率迅速增加。

因此,系統晶片可靠度成為一個關鍵的問題尤其是有關安全上的應用。在系 統晶片要使用之前需要驗證,確認系統迫切需要保證其可靠度。而且,如果要有 效預估系統晶片的可靠度是需要在早期設計階段中就要考慮才能節省時間與避 免重新再設計。為了滿足上述的需求,在本論文研究過程中使用失效模式與效應 分析(failure mode and effects analysis)方法為基礎提出是用於 IP-based 且是 transaction-level modeling (TLM)設計階層的系統晶片風險模型。

此風險模型可以很容易得知此系統的穩定性和失敗的危險程度,找出系統中 關鍵元件和較嚴重的故障類型加以保護以便把失敗的影響降到最低。

此篇論文會使用CoWare 設計平台作範例來證明提出的風險模型。在一個系 統驗證工具中可以幫助我們驗證測量系統的穩定性。在找到系統的弱點過程中,

可以在系統晶片設計期間理解錯誤對系統失效的影響。這項研究的貢獻是能促進 系統提高到TLM 高抽象層級作驗證模擬。當系統的應用對安全性非常重視時,

可提供有效的分析數據,以便在設計初期驗證系統的可靠度。

(3)

Abstract

As system-on-chip (SoC) becomes prevalent in the intelligent system applications, the reliability issue of SoC is getting more attention in the design industry due to the rapid increasing rate of radiation-induced soft errors while the SoC fabrication enters the very deep submicron technology. Therefore, the SoC dependability becomes a critical issue in safety-critical applications. Validating such systems is imperative to guarantee the dependability of the systems before they are being put to use.

Moreover, it is beneficial to assess the SoC robustness in early design phase in order to significantly reduce the cost and time of re-design. To fill such needs, in this study, we propose a useful IP-based SoC-level risk model using failure mode and effects analysis (FMEA) method to assess the robustness of a SoC in SystemC transaction-level modeling (TLM) design level.

The proposed risk model is able to facilitate the measure of the robustness and scales of failure-induced risks in a system, which can be used to identify the critical components and major failure modes for protection so as to effectively reduce the impact of failures to the system.

A case study is used to demonstrate our risk model under CoWare Platform Architect environment. A system verification tool was created to assist us in measuring the robustness of the system, in locating the weaknesses of the system, and in understanding the effect of faults on system failure behavior during the SoC design phase. The contribution of this work is to promote the dependability verification to TLM abstraction level that can significantly enhance the simulation performance, and provide the comprehensive results to validate the system dependability in early design phase for safety-critical applications.

(4)

致 謝

本篇論文能夠順利的完成,在此先需要特別感謝指導教授陳永源老師,老師 不管在課業上、研究領域中、生活上的心靈開導都給予我最大的協助。也特別感 謝父母、親戚、家人及女友洪彩容的全力支持,讓我能專心的完成學業。

在研究所的生活中,有許多師長、學長、同學、朋友一直陪伴與支持我,讓 我在研究所的生涯中學習到很多寶貴的人生經驗與知識。在此特別感謝陳永源老 師、顏金泰老師、的教導與幫助,以及實驗室中的學長-呂昆龍、陳志偉、張坤 鈞、石孟儒、吳耿偉、吳名原、黃詩芩、彭建閔、汪碩彥、陳信宇、許書豪、周 義翔、胡淳皓,以及同學與學弟呂凱平、汪宜強、宋東彥、柯祥霖、方仁杰、陳 威志、高佳涵、鍾明清、張育誠、陳科銓、柯忠位在實驗上的討論與鼓勵。謹將 本篇論文獻給師長、家人、女友、同學及朋友們,共同分享這份得來不易的榮耀。

許仲 謹致 中華民國九十八年八月於新竹

(5)

目 錄

 

中文摘要 ... I  Abstract ... II 

致 謝 ... III  目 錄 ... IV  圖表目錄 ... V 

第一章  簡介 ... 1 

1-1 背景介紹 ... 2 

1-2 錯誤注入簡介 ... 2 

第二章  相關研究、研究動機及問題描述 ... 10 

2-1 相關研究 ... 10 

2-2 研究動機 ... 12 

2-3 問題描述 ... 15 

第三章  ARM、AMBA 及錯誤注入模組簡介 ... 17 

3-1 ARM、AMBA 簡介 ... 17 

3-2 錯誤注入模組簡介 ... 24 

第四章  系統匯流排脆弱模型 ... 32 

4-1 系統匯流排脆弱模型 ... 32 

4-2 SoC 層級風險評估 ... 36 

第五章  實驗環境與實驗結果 ... 42 

5-1 實驗環境 ... 42 

5-2 AMBA AHB 脆弱度分析 ... 46 

5-3 Memory 子系統脆弱度分析 ... 62 

5-4 SoC 層級風險評估 ... 69 

第六章  結論與未來展望 ... 71 

參考文獻 ... 72   

(6)

圖表目錄

圖 1‐ 1 Weibull 失敗率函式分佈圖 ... 8

圖3- 1 三階管線型(three-stage pipeline) ... 17

圖3- 2 五階管線型(five-stage pipeline) ... 18

圖3- 3 Master to Slaver Multiplexor ... 19

圖3- 4 AHB 的 bus interconnection 和 Arbiter、Decoder 之間的關係 ... 20

圖3- 5 AHB Bus 與 PV Bus 訊號轉換架構圖 ... 25

圖3- 6 AHB Bus 與 PV slave 訊號轉換架構圖 ... 25

圖3- 7 APB Bus 與 PV Bus 訊號轉換架構圖 ... 25

圖3- 8 APB Bus 與 PV slave 訊號轉換架構圖 ... 25

圖3- 9 AHB Bus 與 PV Bus 、PV slave 混合訊號轉換架構圖 ... 26

圖3- 10 Transactor ... 28

圖3- 11 OPM ... 28

圖3- 12 FIM ... 29

圖3- 13 OPM 可收集的傳輸模式與訊號種類 ... 29

圖5- 1 正常圖片解壓縮&圖 5- 2 圖片反白中 ... 43

圖5- 3 反白後圖片&圖 5- 4 反白圖片還原中 ... 43

圖5- 5 還原後圖片 ... 43

圖5- 6 以 CoWare 為平台建立 JPEG 的架構連接圖 ... 44

圖5- 7 模擬 AHB BUS 上的錯誤架構圖 ... 45

圖5- 8 模擬單一 slave 上的錯誤架構圖 ... 46

圖5- 9 address 與 Hsize 讀取資料圖 ... 47

圖5- 10 位址在 0x3 則 Hsize 為 16 讀取狀況圖 ... 47

圖5- 11 位址在 0x2 則 Hsize 為 32 讀取狀況圖... 48

圖5- 12 位址發生錯誤後還落在原本的 Slave 的 address 範圍中 ... 48

圖5- 13 位址發生錯誤後卻落在其他 Slave 的 address 範圍中 ... 49

圖5- 14 位址發生錯誤後卻落在沒有定義的範圍位址中 ... 49

圖5- 15 資料雖不相同,但 Size 上的關係讀寫到的有效資料卻相同 ... 50

圖5- 16 原本資料長度為 32bit,卻被更改為 8 bit ... 51

圖5- 17 原本資料長度為 32bit,卻被更改為 8 bit ... 51

圖5- 18 原本資料長度為 8bit,卻被更改為 16、32bit) ... 52

圖5- 19 當下再傳輸的資料只有使用到 8bit ... 52

圖5- 20 JPEG_ahb_burst_read_haddr_FE 失效模式變動率 ... 54

 

(7)

表格目錄

表1- 1 硬體錯誤注入與軟體錯誤注入比較表 ... 6 

表3- 1 HBURST[2:0]訊號描述 ... 22 

表3- 2 HPROT[3:0] 訊號描述 ... 22 

表3- 3 HSIZE[2:0]訊號描述 ... 23 

表 3‐ 4 Group  四種傳輸種類 ... 30 

表 3‐ 5 Burst Length  四種資料長度 ... 30

表5- 1 測試程式的資料傳輸與平均統計表 ... 53

5- 2 JPEG benchmark 的 P (FM(K)) | SC(i), TM(j)結果 ... 55

5- 3 Matrix benchmark 的 P (FM(K)) | SC(i), TM(j)結果 ... 55

5- 4 Quicksort benchmark 的 P (FM(K)) | SC(i), TM(j)結果 ... 56

5- 5 FFT benchmark 的 P (FM(K)) | SC(i), TM(j)結果 ... 57

5- 6 每個測試程式的 Pf (i, j)|SC(i),TM(j), Pf (i)|SC(i) 和 Pf (j)| TM(j) ... 58

5- 7 JPEG 的 P (FM(K))|SC(i) and P (NE)|SC(i) ... 59

5- 8 M-M 的 P (FM(K))|SC(i) and P (NE)|SC(i) ... 59

5- 9 QS 的 P (FM(K))|SC(i) and P (NE)|SC(i) ... 59

5- 10 FFT 的 P (FM(K))|SC(i) and P (NE)|SC(i) ... 60

5- 11 各個不同測試程式的 P (FM(K))|SC(i), P (FM(K)) ... 60

5- 12 P (burst | error) vs P (single | error)和 P (read | error) vs. P (write | error) . 61 表5- 13 四個測試程式的平均可考度統計 ... 62

5- 14 Aerror 包含位址範圍 ... 65

表5- 15 錯誤傳遞的機率 ... 65

表5- 16 Type 1 + 2 與 Type 2 時間比較... 67

表5- 17 Type 2 實驗結果 ... 67

5- 18 P (2, FM(K)), P (2, SF) 和 P (2, NE) ... 68

表5- 19 各個測試程式讀寫次數比率統計表 ... 68

(8)

第一章 簡介

現今科技進步快速,且無所不在的運算(Ubiquitous) 的觀念被人們所需求,

因此系統晶片(System-On Chip)運用越來越廣泛,並且運用在各式各樣的地方如:

智慧型手持裝置、數位家電、電子娛樂產品、汽車電子、航太系統、機器人,由 於運用相當廣泛,且有些應用是屬於需要高安全性且高可靠度,相對也會較有可 能有高風險性的危害到人身生命的安全,所以系統的可靠度是一個相當重要的課 題。

當系統晶片(System-On Chip)變得越來越錯綜複雜時,特別是當系統晶片的 製造技術進入了深次微米的技術時[1]-[3],系統晶片上的電晶體密度越來越高,

元件與元件中的連線也越來越靠近,因此系統晶片上的錯誤可能會由宇宙射線或 是輻射線所造成軟性錯誤(Soft Errors)而影響了系統晶片整體的可靠度。自從系統 晶片流行運用在智慧型的運用系統上,例如:智慧型的汽車電子或是智慧型的機 器人上,此時系統晶片在運作中對可靠度的要求就變得相當的嚴苛,因為可能會 危及到人的生命危險。因此作系統的失效模式與效應分析(Failure Mode and Effects Analysis,FMEA)方法是非常必要的,因其能找到系統晶片上脆弱的部分且 提出實際能做到容忍錯誤(Fault-Tolerant)的機制來改進系統的可靠度與安全性[4]。

不過由於原本的系統晶片的複雜度就很高,在加上系統晶片要加入失效模式與效 應分析和容忍錯誤的機制將會繼續使系統晶片設計變得更為複雜。但是目前在晶 片設計大多是用一般熟悉的硬體描述語言(Hardware Description Language)以 VHDL(Very High Speed Integrated Circuit HDL)與 Verilog HDL 為兩大主流。但是 以上兩種描述語言主要的設計階層都是以暫存器轉換階層(Register Transfer Level,RTL)為主,故目前晶片複雜度越來越高,使得目前這兩種與描述語言逐漸 無法應付如此複雜晶片架構。因此本篇論文採用行為層級描述或是較高層級的抽

(9)

象層描述來設計或是模型系統晶片,並且 SystemC 擁有矽智產(Intellectual Property,IP)整合及模組重複再利用(Module Reuse)的特性,方便設計者可以快速 的完成系統晶片的初步設計。

在本篇論文中,就使用SystemC 來設計和驗證複雜性較高的系統晶片。在系 統晶片設計過程中有一個很重要且重大的問題是;如何在系統設計初期驗證系統 的可靠度以降低設計的成本和降低設計時間。因此系統晶片層級可靠度驗證的平 台必須具有效率且方便容易讓設計者評估系統晶片的可靠度。一般來說可透過失 效模式與效應分析和錯誤注入(Fault Injection)來模擬失敗的系統並且分析測量系 統風險性。

1-1 背景介紹

當系統需要加入容錯系統或是需要做失效模式與效應分析與風險模型分析,

則需要做錯誤注入的動作來觀察系統經由錯誤的注入後反應與現象,以下將說明 錯誤注入目前有哪些可實踐的方法並說明本篇論文為何要選取模擬基礎錯誤注 入(Simulation-Base Fault Injedtion)的方法,並且說明錯誤注入後會有哪些錯誤型 態,並且了解這些錯誤型態的背景與嚴重性。

1-2 錯誤注入簡介

錯誤注入的方法目前可分為三大類:硬體錯誤注入(Physical fault injection)、

軟體實現錯誤注入(Software-implemented fault injection)、模擬基礎錯誤注入 (Simulation-based fault injection)。常見的錯誤注入方式分為直接人為決定與 間接人為決定兩種。直接人為決定是設計者根據經驗或錯誤模型(Fault model) 來判斷元件會發生錯誤的型式,例如傳遞錯誤的資料或是未在規範內的時間 內傳遞資料等;而間接人為決定則是設計者利用輔助設備對元件的內部產生

(10)

干擾,使得元件最後的輸出產生錯誤。前者又可分為軟體實踐錯誤注入 (Software-Implemented Fault Injection)與模擬錯誤注入(Simulation-based Fault Injection),後者中以實體錯誤注入(Physical Fault Injection)為其代表。以下針 對這三種注入錯誤的方式做簡單的介紹與分析比較。

1、硬體錯誤注入

硬體錯誤注入是將已經設計好完成的系統,以晶片或是可規劃的邏輯陣列 (FPGA)實做出來後,再直接進行錯誤注入。硬體錯誤注入是以實際硬體實驗出 結果,也代表著真實系統所反映出的結果,但是若發現系統的可靠度不如預期或 是嚴重的錯誤型態所佔的比例過高,並且需要修改原始的系統設計,此時整體系 統修改會非常耗時且大幅增加製造成本的過程。硬體錯誤注入還可分為三種錯誤 注入方法如下:

[1] 晶片腳位層級錯誤注入(IC pin level fault injection)

將製造出來的晶片透過測試晶片的平台對晶片的Pin 腳做錯誤的注入,

藉此觀察當錯誤發生後晶片會有何種反應[5]。

[2] 輻射照射錯誤注入(Radiation fault injection)

將設計好的晶片放置在一個特殊的平台上,此平台會產生出雜訊或是輻 射線來干擾晶片,藉此觀察當晶片受到雜訊或是輻射的干擾後所產生的何種 反應[6]。

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

是利用正在初步開發系統雛型時,使用到可規劃邏輯陣列(FPGA)硬體 輔助設備開發硬體系統,並且此平台可以以讓系統設計者在此平台上面直接 進行錯誤注入。

(11)

以上的晶片腳位層級錯誤注入和輻射線照射錯誤注入的方法都需要把整體 完整的晶片設計完成,並且還需要高成本和專業的錯誤注入平台設備中執行錯誤 注入,並且此兩種方法的錯誤注入只能在Pin腳位上或是外部環境上做錯誤注入 干擾,因此錯誤注入的控制性(Controllability)相對較低,而且錯誤注入後所產生 的錯誤是在晶片內部,其可觀察性(Observability)也相對較低。因此實體錯誤注入 無法針對特定晶片中的元件與特定的訊號傳輸模式下做錯誤注入,也無法觀察錯 誤對其他元件所造成的影響。因此使用實體錯誤注入時需要去考慮其上述的優缺 點。

2、軟體實踐錯誤注入(Software-implemented fault injection)

此種錯誤注入方法是利用程式再編譯或是程式執行中,執行事先設計好的錯 誤注入軟體程式,去修改硬體中的記憶體或是暫存器內部的資料,因此藉由此方 法讓硬體在執行運作時發錯誤,因此錯誤注入的目標可以是實際的硬體或是軟體 部分,但是進行錯誤注入實驗的時間較長。

軟體實踐錯誤注入可以透過應用程式或是作業系統來進行錯誤的注入,如果 運用應用程式錯誤注入的方法,錯誤注入產生器必需實踐在應用程式當中,或是 透過程式與作業系統層級之間的應用程式介面,也就是系統函式庫來實踐,如果 是選擇作業系統錯誤注入的方法,則必需修改作業系統核心,將錯誤注入嵌入作 業系統中。

3、模擬基礎錯誤注入(Simulation-base fault injection)

在模擬基礎錯誤注入的方法中,可以不需要像硬體錯誤注入方法一樣,需要 先將晶片製造出來,也不需要特別建置高單價的錯誤注入環境,也可以不需要像 軟體實踐錯誤注入方法中去修改原有複雜且龐大的應用程式或是作業系統程式,

因此可以節省硬體錯誤注入方法中高單價錯誤注入環境的額外的花費和軟體實

(12)

踐錯誤注入中修改複雜且龐大的程式。

模擬錯誤注入只需要使用硬體描述語言(Hardware Description Language)對應 原本設計層級上並在相同層級上描述出錯誤注入方法來執行錯誤注入,因此模擬 基礎錯誤注入在技術成本上是比較節省的,除此之外模擬基礎錯誤注入還可以應 用在各個不同的設計層級上像是:邏輯閘層級(Gate Level)、暫存器傳輸層級 (Register Transfer Level)、或是更高的系統層級(System Level)、及抽象層級 (Abstraction Level)…等不同層級,因此可以根據各個不同的層級去設計符合的模 擬基礎錯誤注入。模擬基礎錯誤注入的技術是在進行電路模擬時,利用模擬器內 建的指令(Build-in commands),或是在電路中加入錯誤注入的電路,在系統中實 現錯誤注入的目的,因此可以在系統設計的初期就可以對系統的容錯能力進行測 試與規劃,因此可以在最短的時間內判斷系統的容錯能力,並且針對不足的部分 進行修改。

在硬體錯誤注入、軟體實踐錯誤注入、模擬基礎錯誤注入三種不同類型的錯 誤注入技術中可以比較出如表1-1,則模擬基礎錯誤注入擁有較高的可控制性、

觀察性,且錯誤注入平台成本較低及從設計完成到錯誤注入整體時間較短,因此 本篇論文選取了模擬基礎錯誤注入技術(Simulation-base fault injection),除了有高 觀察性與高控制性、低成本的開發外,主要原因是可以要高階層SystemC 的系統 層級或是抽象層級中方便快速描述語言描述硬體,且有現成方便的IP 可以運用,

使得可以快速的建立起實驗的硬體架構。

(13)

錯誤注入 類型

間接人為決定 直接人為決定

硬體錯誤注入 軟體實現 模擬基礎

項目 晶片腳位 輻射照射 硬體基礎 錯誤注入 錯誤注入

可觀察性 低 低 中 中 高

可控制性 低 低 中 中 高

可移植性 低 低 低 高 中

實體電路相似性 高 高 高 中 中

開發成本 高 高 中 低 低

注入整體時間 長 長 中 長 短

表1- 1 硬體錯誤注入與軟體錯誤注入比較表

在執行錯誤注入時有幾個重要的參數須要考量,包括:

[1] 錯誤注入目標(Fault Target)

當執行錯誤注入模擬實驗時,第一步重要的是決定在哪些目標上執行錯 誤注入,本篇論文中系統建立是使用SystemC 的 IP 建置而成,因此不能對 IP 內部進行修改,所以只能對 IP 與 IP 之間的連線訊號進行錯誤注入的動作,

本篇論文針對 AMBA BUS 訊號中可以分為 Burst-Read (BR)、Burst-Write (BW)、Single-Read (SR)、Single-Write (SW)四種傳輸模式,每種傳輸模式中 裡面資料又包含了位址線(HADDR)、資料長度(HSIZE)、資料(HDATA)。

(14)

[2] 錯誤注入的觸發方式(Fault Trigger)

決定了錯誤注入的目標後再來就要決定在哪個時間點或是空間點才觸 發錯誤注入的動作,因此如果沒有決定此參數,錯誤注入平台就無法正確把 錯誤注入,所以必須透過不同的設定參數來決定觸發點,觸發點目前可以分 為時間與空間兩種;

z 時間點:在整體系統中先不執行錯誤注入的動作內執行系統一次,即可 得知整體系統會花多少時間執行完成,因此錯誤注入演算法中透過系統 時間或是計時計數器來決定隔多少時間或是指令週期來觸發進行錯誤 注入。

z 空間點:在整體系統中可能會分很多的應用程式的程式區段或是特定的 位址,因此錯誤注入演算法中需要預先知道整體程式總共有哪些城市區 段或是位址範圍,當程式執行到了特定的程式區段或是特定的位址錯誤 注入才觸發把錯誤注入。

[3] 錯誤類型(Fault Type)

錯誤類型主要是來決定錯誤注入時要注入哪種類型的錯誤型態,目前錯 誤類型包含相當的廣泛,如:Stack-at-0 錯誤模組、Stack-at-1 錯誤模組、Stack-at 錯誤模組、高組抗(High-impedance)錯誤模組、未知值(Unknown) 錯誤模組、

位元翻轉(Bit-flip)錯誤模組…等。在本篇論文中是使用位元翻轉(Bit-flip)錯 誤模組來模擬晶片受到輻射線照射、漏話干擾(crosstalk)、溫度變化…等現 象會造成錯誤發生的情形。

(15)

[4] 錯誤注入時間分佈模組(Fault instant time distribution model)

錯誤分佈模組主要是用來決定錯誤注入的時間點,目前錯誤分佈模組可 以分為兩大類: Uniform 錯誤分佈模組和 Weibull 錯誤分佈模組。Uniform 錯 誤分佈模組下,是將電子產品每一個時間點發生錯誤的機率都是一樣的。

Weibull 錯誤分佈主要是模擬出電子產品生命週期每一個時間點所會發生錯 誤的機率,主要可以分為三個階段:Burn-in、Useful-life、Wear-out,如圖 1-1 所示,電子產品剛開發完成時會先經過Burn-in 的動作,利用高溫、高電壓 先將不穩定、不正常或是發生錯誤機率過高的電子產品淘汰;在Useful-life 階段是電子產品已經趨向穩定,此階段通常是客戶端在使用的階段,因此發 生錯誤的機率較低;最後 Wear-out 階段是電子產品已經經過一段長時間使 用後,其內部零件或連線已經漸漸老化,導致發生錯誤的機率逐漸升高。由 於Weibull 是屬於實際硬體測試後的結果,但是本篇論文比較屬於在 Weibull 中的Useful-life 發生錯誤機率的探討,因此採用 Uniform 錯誤分佈模組。

圖1- 1 Weibull 失敗率函式分佈圖

t1 Time t2

λ

Useful-life Wear-out Burn-in

Failure rate function

α>1 α=1 α<1

(16)

[5] 錯誤持續時間(Fault duration)

錯誤持續時間是代表從錯誤發生到錯誤消失這段時間,因此設定此參數 可以決定錯誤要存在停留多久時間,因此錯誤停留的長短可以分為三類:暫 時 性 錯 誤(transient fault) 、 永 久 性 錯 誤 (permanent fault) 、 週 期 性 錯 誤 (intermittent fault)三類。暫時性錯誤是代表錯誤只發生一段時間,當一段時 間結束後錯誤就會消失恢復正常;永久性錯誤是不論經過多長的時間此錯誤 不會消失都會一直存在著;週期性錯誤是每隔一段時間錯誤就會重複的出現,

一直反覆出現與消失。

[6] 錯誤注入總數(Number of total fault)

此參數到代表是在整個錯誤注入實驗中整體會注入錯數的總個數,也就 是會發生錯誤的總數量。

(17)

第二章 相關研究、研究動機及問題描述

2-1 相關研究  

先 前 研 究 在 系 統 晶 片 作 風 險 評 估 很 少 在 特 別 是 在 SystemC 的 Transaction-Level 的設計平台。大部份的先前錯誤注入研究把重心集中在 VHDL 設計平台。只有一些文獻[7]-[11]在 SystemC 設計平台做錯誤注入,但是只有針 對位址的錯誤注入。在[7]-[8]提出的錯誤注入的方法比較屬於中央集權式的錯誤 注入方法,且只能在Register-Transfer-Level 和互相可以溝通使用的層級上做錯誤 注 入 。 因 此 在[10] 提 出 比 較 屬 於 分 散 式 的 錯 誤 注 入 方 法 且 在 較 為 精 準 的 Bus-Cycle-Level 和 Untimed-Functional Transaction-Level Modeling 作錯誤注入。

[11]提出在 SystemC 的 AMBA bus 中有分成許多不同訊號傳輸的類型,根據其實 驗結果可發現有些訊號傳輸的類型特別敏感,特別比較容易造成錯誤。

在系統上所使用的Bus 最常見的就是 AMBA AHB,在系統晶片中大多都是 由不同的IP-Based 所組成,IP 之間就是由 AMBA AHB 互相連接。因此可以很 明顯的看出系統的 Bus 是否夠可靠或是對於錯誤敏感度強弱,可以決定此系統 晶片的可靠度。因此在系統 Bus 上做失效模式與效應分析是非常必要並且能有 效的分析此系統晶片的可靠度。在先前的研究中除了[11]以位其他文獻並沒有針 對 SystemC 層級中分析系統 Bus 的可靠度。在[11]中說明了在 SystemC 的 Cycle-Accurate Level 中,AMBA bus 在不同的訊號傳輸是相當敏感容易出錯的。

可是在[11]中只有提出 Cycle-Accurate Level,因此可能在錯誤注入或是模擬上比 較花費時間。另外先前研究都以時間作為觸發當作錯誤注入的時機與基準,當有 些系統描述提升到 Untimed Functional Transaction-Level Modeling 或是 Timed Functional Transaction-Level Modeling 時,卻還是使用 Cycle-Accurate Level 作錯 誤 注 入 則 會 顯 得 比 較 不 適 合 也 較 不 恰 當 。 因 此 如 果 變 更 為 事 件 觸 發

(18)

(Event-Triggering)來當作錯誤注入的基準時,可以比較容易且有效率的正確把錯 誤注入也不會受到是否為Untimed/Timed Functional Transaction-Level Modeling 影響,特別是在系統Bus 上做失效模式與效應分析。在[11]中也缺少 Burst-Read and Burst-Write Transaction Modes 分析說明。

在[4]中作者在符合 IEC61508 的規範前提下以 Register-Transfer-Level 描述 系 統 晶 片 並 設 計 失 效 模 式 與 效 應 分 析 的 方 法 。 但 如 果 繼 續 使 用 Register-Transfer-Level 來設計越來越複雜的系統晶片可能需要花更多的時間與 心力才能完成設計。在[12]中作者提出對汽車引擎控制的運用進行可靠度測試。

主要使用可行性高且被推薦為可運用在柴油引擎上的 Electronic Control Unit 的 高可靠度的標準測試程式,並在此系統上做錯誤的注入且分析、測量所使用的標 準測試程式。在[12]所提出的標準測試程式都是由商業界花費取得,所以當真實 硬體系統都建立完成才作可靠度與風險的評估,如果評估出結果不符合預期必須 重新設計,其成本會非常可觀且非常花費時間。

對 於 要 解 決 上 述 所 提 出 的 問 題 , 本 論 文 提 出 在 SystemC [13] 中 的 Transaction-Level 來設計系統晶片。因為在 Transaction-Level 上可以快速且有效 率的設計複雜性較高的系統晶片並可以加快模擬的速度,也可降低成本且開發出 安 全 且 具 有 可 靠 性 較 高 的 系 統 晶 片 。 在 本 篇 論 文 中 , 針 對 以 SystemC Transaction-Level 設計系統晶片並提出一個整合失效模式與效應分析流程透過 IP-base 系統層級的錯誤注入實驗以及風險預估模型,來找出必須加以保護的失 效模式,並且測量各式各樣的失效模式的危險規模。因為系統晶片設計階層被提 高到Transaction-Level 抽象層級,因此錯誤注入與模擬時間效能會大幅的提升。

在設計階段中就開始做風險評估和失效模式與效應分析,才能加強保護較為嚴重 的失效模式或是最容易發生錯誤的元件,因此不需要等到全部開發結束才做失效

(19)

模式與效應分析,才不會需要重新設計,浪費時間與成本。本篇論文會提出一個 風險模型能快速評估出系統晶片的可靠度,如果評估出結果不能滿足可靠度的需 求,則失效模式與效應分析可以幫助提出具體可行且節省成本的可靠度改善流 程。

系統的BUS,如 AMBA AHB,是連接所有 SOC 整個平台上的每個 IP 元件,

因此很明顯的發現此系統的BUS 會影響到整體的可靠度,所以對 SOC 的 BUS 作可靠度的分析和FMEA 的評估是非常必須與必要的工作。先前在 SystemC 平 台上對BUS 作深入的研究探討分析極為少數,唯有對 Hadder 作一些提議[11] [12]。

在[11]只有描述在 AHB 精確的周期(cycle-accurate level)中不同的傳輸對錯誤的敏 感度,且提出在cycle-accurate level 上作錯誤注入的方式,故需要精確的時間點,

會造成許多的不方便及複雜度,況且沒有做FMEA 的分析也沒有對 burst-read and burst-write 的傳輸模式作探討,也沒有對不同的測試程式(benchmark)作測試。 [11]

則提出在 SystemC 的模擬平台上有效率錯誤注入方法以在抽象層級中非時間層 級與時間層級為主。因為系統被提升到TLM 抽象的階層,因此錯誤注入也同時 要提升到同樣較高的層級。

2-2 研究動機

之前在SystemC 的錯誤注入方法與可靠度測試驗證研究中,有以下幾項 缺失:

z 錯誤注入的模型層級大部分還是集中在 RTL 或是 cycle-accurate 層級,對於 越來越複雜的系統晶片,錯誤模擬效能也是一項重要的考量因素。

z 缺少多樣化的錯誤注入啟動條件,除了時間啟動錯誤注入之外,是不是還有 其他可能的啟動條件可以使用。(例如某些特定的事件)

z 缺少完整的高階系統層級系統晶片可靠度測試驗證與分析平台,包含失效模 式與強韌度分析,FMEA 的實踐與應用以及如何提升系統晶片的可靠度。

(20)

動機一:再SystemC 較高層級執行錯誤注入以加快模擬時間。

因為 SystemC 提供了多種不同的設計層級,而在之前的相關研究當中,所實 行錯誤注入的層級,大多是固定在某一個層級,或是SystemC 較低的層級。一旦 所要面對的實驗系統是在SystemC 更高層級的實驗時,就無法直接快速的執行錯 誤注入。並且SystemC 亦支援了混合多種不同設計層級的實驗平台,此時使用較 高層級的描述即可方便快速的執行錯誤注入,因此本篇論文提升到Programmers View(PV) 和 Programmers View with Timing (PV+T)的傳輸層級執行錯誤注入。

動機二:減少錯誤注入模組的複雜度。

在過去的相關研究中,所使用的方法接是設計一個模組,利用這一個模組去 截斷原本的連線(interconnection)上的原始資料,並且根據錯誤注入控制單元 所送出來的控制訊號,將錯誤注入在該條連線上,我們稱這樣的方法為中央集權 式錯誤注入方式。這樣的方法最複雜的地方就是錯誤注入控制單元,一旦錯誤注 入的目標點越來越多,這樣是否就會影響到錯誤注入控制單元的處理能力?為了 減少錯誤注入控制單元的複雜度,讓設計者可以更方便的去執行錯誤注入實驗,

我們提出一種分散式的錯誤注入方法。主要就是將錯誤注入控制單元的工作打散 至各個錯誤注入模組之內,而每一個錯誤注入模組,都不需要等待外部的控制訊 號,就可以自行判斷是否為要執行錯誤注入的時間點,藉由這樣的方法來達成減 少錯誤注入控制單元的複雜度。

動機三:更多樣化的錯誤注入啟動條件。

在之前的相關研究中,所使用的錯誤注入啟動條件,大多都是使用“時間”

這一個條件。然而一旦所要實驗的環境是屬於 SystemC 中較高的層級, 像是

(21)

Untimed Functional Level,這樣的層級是沒有時間觀念可以使用的。在這樣的情 況下就無法使用時間當作依據執行錯誤注入。因此在本篇論文中,提出一種新的 錯誤注入啟動條件,當在沒有“時間”的環境因素下,可以使用一種替代時間的方 式,就是利用事件(event)的概念,做為錯誤注入的啟動條件依據。

動機四:提供一套計算系統匯流排脆弱度預估模型。

因為目前使用SoC 系統中都是使用 IP 互相組合而成,則 IP 與 IP 之間、或 是CPU 與 IP 之間的溝通都是透過系統匯流排做資料的傳輸溝通,因此如果系統 匯流排上發生的錯誤可想而知會造成整體系統發生失敗的機率也會大幅提升,因 此本篇論文希望能提出一個可以預估系統匯流排的脆弱度模型。

動機五:提供一套計算系統中的Memory 子系統脆弱度預估模型。

因為一般系統中都會使用到 Memory 元件,且不同的系統對於 Memory 的 使用率、容量大小、資料重複使用率都不盡相同,因此不同的系統對於Memory 的風險脆弱度也不盡相同,本篇論文希望能提出一個可以針對Memory 預估脆弱 度的模型,才能使設計者了解此系統是否需要對Memory 設計保護機制。

動機六: 提供系統晶片的失效模式與強韌度分析,建立相對的 FMEA 模型幫 助設計者提出提升系統晶片的可靠度的具體措施。

運用動機四、動機五的模型計算後的結果,整合分析整體系統的失效模式與 強韌度;且使用 FMEA 的模型方法,分析整體系統以達到了解系統的失敗分佈 情況,使設計者了解要從何著手去保護整體系統,以便達到提升系統晶片的可靠 度。

(22)

2-3 問題描述

在介紹完相關研究及研究的動機之後,接著針對設計風險脆弱度預估模 型時會遇到的情況作問題的描述。在設計風險脆弱度預估模型時會遇到及需要解 決的問題有下列幾項:

1. 風險脆弱度模型參數取得:

風險模型分析是需要參數作運算後得到結果,如:系統匯流排上有可能 會發生錯誤的訊號種類個數、系統匯流排中會發生的傳輸模式種類個數、系 統中可能產生的失敗類型個數…等,因此取得此類參數需要先執行過 fault free ,並在執行中做收集參數的動作且參數需要非常的精確,才不會造成最 後分析模型結果的可信度。

2. 錯誤注入取樣數量:

由於每個程式的運算量、執行時間、資料傳輸量都不一樣,若是每一個 時間點或是事件都執行錯誤注入的實驗則會需要非常龐大的時間與資料分 析量。雖然最後分析的結果會比較精準但是卻花費的太多的時間與成本,因 此折衷的方法就是選取適當的錯誤注入次數。當錯誤注入的取樣數量達到一 定的統計量時,即使錯誤注入的個數再增加,也不會對其造成不同失效模式 的機率會太大的影響,因此可找到適當的錯誤注入實驗量。

3. 失敗類型參數定義:

因為不同的執行程式會有不同的執行結果,則如何去精準正確的定義失 敗的類型,如: Deadlock (DL)程式需要執行超過原本沒有錯誤注入的時間多久才 能來判定為進入無窮迴圈。

(23)

4. 模擬時間過長:

因使用模擬軟體模擬硬體的執行程序還是需要較長的時間,且錯誤注入 的次數也必須有一定的統計量才能有精準具較趨近真實狀況的結果,所以花 費的時間會更多,因此在本篇論文會先使用軟體工具先來判斷此錯誤會不會 影響到系統,再將有機會造成系統失效的錯誤注入,並觀察其失效情形。

(24)

第三章 ARM、AMBA 及錯誤注入模組簡介

3-1 ARM、AMBA 簡介

ARM 晶片目前是在世界上授權最多 32 位元精簡指令集(RISC)計算核心的業 者,因為它提供低電壓、低耗電,且有很好的計算能力(MIPS/Watt)和快速、有 效率的匯流排協定,整體晶片面積不大,因此適合需要耗電量小、體積小和不錯 的計算能力的產品使用。而且ARM 為了方便嵌入式系統使用,在架構上特別支 援高階程式語言和作業系統,在 ROM 可以放入作業系統載入程式(bootstrap loader)或是作業系統啟動部分,但是需要設定輸出輸入的相關設定以及執行模式 相關設定資料,大多以 C 語言撰寫程式,或是自行撰寫特定的作業系統,另一 方面也可以不需要作業系統(non-OS)。

ARM 也提供協同處理器(coprocessor )的擴充介面,常見的有記憶體管理元 件、浮點運算器…等,最多能接到 16 個協同處理器。有 ARM 核心控制資料的 傳送,協同處理器則專門執行特定的資料處理運算及相關記憶體存取,因此可以 大幅增加整體效能及縮短執行時間。

ARM 處理器架構是屬於管線型(pipeline)架構。將指令執行過程分為如圖 3-1 擷 取指令(fetch)、解碼(decode)和執行(execute)三階管線型(three-stage pipeline)或是 如圖 3-2 擷取指令(fetch)、解碼(decode)、執行(execute)、緩衝/資料(buffer/data) 和寫回(write-back) 五階管線型(five-stage pipeline)兩種,五階處理效能會高於三 階處理。

圖3- 1 三階管線型(three-stage pipeline)

(25)

圖3- 2 五階管線型(five-stage pipeline)

ARM 系統晶片[14]是以 AMBA(Advanced Microcontroller Bus Architecture)為 主要的匯流排協定,AMBA 協定是由 ARM 公司發表的匯流排標準,AMBA 協 定包含了四大部分: AHB(Advanced High-performance Bus)、ASB(Advanced System Bus)、APB(Advanced Peripheral Bus)、Test Methodology,最常見的匯 流排為AHB 和 APB 。一個以 AMBA 為架構的系統晶片上通常包含了 AHB 高 效能的系統匯流排和APB 低電壓周邊匯流排,AHB 通常是負責連接 ARM 處理 器、DMA 控制器、記憶體或是其他介面;而 APB 是連接系統的周邊元件,因 APB 的通訊協定比起 AHB 相對簡單,並且可以與 AHB 互相連接,APB 主要是 可以接速度比較慢的周邊原件如:GPIO、UART、中斷控制器…等,來幫忙減輕 AHB 的匯流排的負擔。

AHB 匯流排有以下特點:支援爆發式傳送(Burst Transfers)、支援分割傳送 (Split Transfers)、不使用三態閘架構、支援多個 Master、邊緣觸發(edge-triggered)…

等。AHB 系統是由 Master、Slave、Infrastructure 三部分所組成,而 AHB 匯流 排上的資料傳輸都是由Master 所發出,由 Slave 負責回應。Infrastructure 則是由 arbiter 、master to slave multiplexor、slave to master multiplexor、decoder、dummy slave、dummy master 所組成。如圖 3-3 multiplexor 與 master/slave 透過 AHB 連 接,之所以會需要仲裁器(arbiter),是因為圖 3-3 中有多個 Master,因此需要 arbiter 來仲裁。而解碼器(decoder) 則是負責位址的解碼,從數個 slave 中選擇要回應傳

(26)

輸的 slave。而兩個多工器(multiplexor) 則是負責匯流排的路徑,因此不使用三 態閘匯流排(tristate bus),將 bus 上的訊號在 master 和 slave 中傳送,其操作順 序為Master 先送出要求使用匯流排的訊號,仲裁器回應允許訊號後 Master 送出 位址與控制訊號。

圖3- 3 Master to Slaver Multiplexor

圖3-3 只是概略介紹了 AHB 匯流排是由 Multiplexor 來控制 master 和 slave 的讀取寫入動作,圖3-4 則大略介紹 AHB bus interconnection、Arbiter 和 Decoder 之間的關係。當master 要送出讀取寫入動作時,會先經由 Arbiter 來決定優先權 與使用權,並且啟動 Multiplexor 讓訊號通過。之後會再經由 Decoder 來解碼告 知是哪一個slave 被讀取或是被寫入,並且啟動 Multiplexor 讓訊號通過。

(27)

圖3- 4 AHB 的 bus interconnection 和 Arbiter、Decoder 之間的關係

在 AHB 匯流排的訊息傳送上可以分為兩個階段:Haddress phase 和 Hdata phase。Haddress phase 主要是傳送位址(address)訊號和控制訊號(control signal),

Hdata phase 主要是傳送讀寫資料(write/read data)和回覆訊號(response signal),當 AHB 寫入匯流排傳送資料給 Slave 時,由讀取匯流排將資料傳送給 Master,Slave 會以HRESP[1:0]訊號表示傳送的狀態,狀態可以分為:

z OKAY:表示此次傳送成功。

z ERROR:表示此次傳送失敗,失敗的原因可能有要寫入 read-only 的 memory 或是讀取/寫入不存在的 memory。

z RETRY/SPLIT: 則是當 slave 判斷目前的傳送資料需要很多的匯流排週期 (bus cycle)來完成。為了避免因為目前的傳送將匯流排一直鎖住,而回應 RETRY/SPLIT response 給 master,表示目前的傳送尚未完成,master 需要

(28)

重新發出相同的重送資料再試一次,而此時 arbiter 就能將匯流排的使用權 給其他有需要的master 使用。

AHB 上的控制訊號可以分為五類:

z HTRANS[1:0] : 屬於傳送型態(Transfer Type)的控制訊號。

00 (IDLE):當 Master 沒有資料需要傳送時會送出 IDLE 狀態,表示不需要資料的 傳送,Slave 需忽略目前傳送的資料,並且立刻回應 OKAY 的訊號。

01 (BUSY):當 master 在處理資料、或是資料還在運算或是某些原因無法及時將資 料準備好,則會發出此訊號告知slave,此時 slave 會回應 OKAY。

10 (NONSEQ):表示目前傳送的位址訊號和控制訊號與上一筆所傳送的資料無關,

代表目前為第一筆資料。

11 (SEQ): 表示目前傳送的位址訊號和控制訊號與上一筆所傳送的資料有相關,

通常會在爆發式傳送下發生。

z HBURST[2:0] : 屬於爆發式傳送型態(Burst Type)的控制訊號。

Burst 模式是用來讓 AHB master 發出位址訊號彼此有相關且 control 訊號相同的 連續資料。又可以分為遞增傳送(Incrementing burst ):會依照上一筆的位址來遞增 和包裝傳送(Wrapping burst):如包裝長度為 4;每 4 個位元組要對齊在 16 位元組 的範圍內,如:0x64、0x68、0x6C、0x60。

(29)

AHB 支援八種的 burst type,用來指示 burst 的長度與位址訊號之間的關係,

如表3-1:

HBURST[2:0] Type Description

000 SINGLE Single transfer

001 INCR Incrementing burst of unspecified length 010 WRAP4 4-beat wrapping burst

011 INCR4 4-beat incrementing burst 100 WRAP8 8-beat wrapping burst

101 INCR8 8-beat incrementing burst 110 WRAP16 16-beat wrapping burst

111 INCR16 16-beat incrementing burst 表3- 1 HBURST[2:0]訊號描述

z HPROT[3:0] : 屬於匯流排協定保護(Protection Control) 的控制訊號。

HPROT[3:0]為匯流排協定提供額外的訊號保護,如指令存取(opcode Fetch)或是 資料存取(data access),表 3-2:

HPROT[3] HPROT[2] HPROT[1] HPROT[0] Description - - - 0 指令提取 - - - 1 資料存取 - - 0 - 使用者存取 - - 1 - 特權存取 - 0 - - 不可有緩衝區 - 1 - - 可有緩衝區 0 - - - 不可有快取 1 - - - 可有快取

表3- 2 HPROT[3:0] 訊號描述

(30)

z HSIZE[2:0] : 屬於匯流排資料大小(Transfer Size) 的控制訊號。

AHB 提供了八種不同傳送資料大小(Transfer Size),如表 3-3:

HSIZE[2] HSIZE[1] HSIZE[0] Size Description

0 0 0 8bit Byte

0 0 1 16bit Halfword

0 1 0 32bit Word

0 1 1 64bit

1 0 0 128bit 4-word line

1 0 1 256bit 8-word line

1 1 0 512bit 1 1 1 1024bit

表3- 3 HSIZE[2:0]訊號描述

HWRITE[31:0] : 屬於匯流排讀或寫(Transfer Direction) 的控制訊號。

當 HWRITE 為 HIGH,則 master 會在 Hdata phase 時將資料放在 write data bus HWDATA[31:0],讓 slave 去 sample 資料。當 HWRITE 為 LOW 時,slave 會 在Hdata phase 將資料放在 read data bus HRDATA[31:0],讓 master 去讀取資料。

(31)

3-2 錯誤注入模組簡介

SystemC 是一個在系統層級的設計語言,可以利用廣泛多樣化且抽象化的模 型層級,或是利用一種至數種不同的抽象層級模型混合設計而成。在 SOC 的模 組中使用 SystemC 設計各種不同抽象層級的模型是相當普遍的。因為主要是在 TLM 層級中降低模組化的複雜度和增加模擬的速度,當然也能提供設計足夠的 精確度和方便性。在Open SystemC Initiative (OSCI)[15]-[17]的 TLM 層級分類可 以分成三大類: Programmers View (PV)、Programmers View with Timing (PV+T) 和 Cycle Callable (CC),這三種層級中以 PV 最為抽象模擬速度最快,而 Cycle Callable 最不抽象且模擬速度最慢。PV 層級等同於 TLM 中的 untimed functional , PV+T 等同於 TLM 中的 timed functional。

本篇論文採取CoWare Platform Architect [18] and AMBA bus[19]來展示在系 統匯流排(system bus),並運用[20]-[22]錯誤注入方法和程式應用。在此平台中主 要提供PV 和 PV+T 兩個模型層級而且允許使用兩種不同層級的 IP 來建立設計 的 SoC 。在此篇論文中我們將在 PV 和 PV+T 層級的系統匯流排中執行錯誤注 入,這能幫助在設計SoC 階段中做 FMEA 的分析,CoWare 平台上提供了許多階 層和許多 protocol,增加了許多設計上的運用,也提供了 Transactor 元件有如 Bridge 的功能,如圖 3-5 所示。圖 3-5 為 ARM 系統的基本模型架構圖,其中包 含了 PV 和 PV+T,和有一個‘Transactor’其功能就好像一個 Bridge,橋接著 PV 和PV+T 兩個層級,並且提供 PV 和 PV+T 兩種不同的通訊協定做轉換。圖 3-5 和圖3-7 中原本 AHB BUS 或 APB BUS 經過 Transactor 轉換成為 PV BUS 再接 上 PV Slave IP,或是圖 3-6 和圖 3-8 中原本為 AHB BUS 或 APB BUS 經過 Transactor 可直接接上 PV Slave IP。相反的當 PV slave 端的模組要與 AHB 或是 APB 溝通也是要經過 Transactor 做通訊協定的轉換溝通。使用 PV 模組的原因 是模擬的速度可以加快許多。

(32)

圖3- 5 AHB Bus 與 PV Bus 訊號轉換架構圖

圖3- 6 AHB Bus 與 PV slave 訊號轉換架構圖

圖3- 7 APB Bus 與 PV Bus 訊號轉換架構圖

圖3- 8 APB Bus 與 PV slave 訊號轉換架構圖

(33)

在 AMBA 平 台 的 函 式 庫 中 有 三 種 不 同 的 ‘Transactor’ , 分 別 為 : AHBLiteTarget_PV 、 APBTarget_PV 和 ScmlPost_AHBInitiator 。 AHBLiteTarget_PV、APBTarget_PV 此兩種類型的‘Transactor’是屬於在 slave 端為 PV 層級與 AHB/APB 的 PV+T 層級連接所使用; ScmlPost_AHBInitiator 是屬於 master 端為 PV 層級與 AHB/APB 的 PV+T 層級連接所使用。在此篇論文中是結 合圖3-5 和圖 3-6 平台來執行系統匯流排錯誤注入方法。

圖3- 9 AHB Bus 與 PV Bus 、PV slave 混合訊號轉換架構圖

在圖 3-9 中展現出本篇論文使用以 AMBA 為基礎來證明錯誤注入方法可行 性。很顯然在transaction 運作當中如果發生通訊傳輸的錯誤,可能因此會造成系 統 匯 流 排 的 錯 誤 。 在 本 篇 論 文 中 transaction 傳輸可以分為四種傳輸模式:

single-read、 single-write、 burst-read 和 burst-write。舉例來說如果發生 burst-read 的錯誤,就是代表當系統匯流排正在做burst-read 的傳輸模式下且傳輸中的資料 發生錯誤。

(34)

因此如果需要做進一步的在特定 transaction 時發生失敗且作系統的失效模 式與效應分析(例如只針對在系統上 burst-read 的失敗做失效模式與效應分析)只 能使用事件觸發方式來精準的判斷transaction 是否為 burst-read 的傳輸。如果是 正在做burst-read 的傳輸即可對此 transaction 做錯誤注入的動作,因此可以當系 統在模擬時正確的在系統匯流排中burst-read 傳輸模式下做錯誤注入。

事件觸發錯誤注入可以在決定在哪種傳輸下或是系統匯流排哪種情況下執 行錯誤注入。本篇論文將執行四種事件觸發錯誤注入(event-driven fault injection),

分別為single-read、single-write、burst-read 和 burst-write 四種觸發事件。使用事 件觸發錯誤注入是非常重要的,因為可以輕易的在系統中所需要的傳輸模式下執 行錯誤注入和觀察在此種傳輸模式下受到錯誤注入後顯示出的結果。因此事件觸 發錯誤注入可以非常方便快速的達成失效模式與效應分析。相較之下時間觸發錯 誤注入則無法精準有效正確的保證在需要指定的傳輸模式下執行錯誤注入。因為 時間觸發錯誤注入是等時間到了就執行錯誤注入,無法判斷是否為需要指定的傳 輸下才執行錯誤注入,因此如果使用時間觸發錯誤注入來作失效模式與效應分析 則會無法有效精準的分析系統的強韌度。

在本篇論文主要的就是在系統匯流排旁放入錯誤注入模組(fault injection module ,FIM)且互相連接,並且加入事件觸發錯誤注入機制,由錯誤注入模組來 控制錯誤注入的動作。因此錯誤注入模組會負責監看系統匯流排上的訊息資料,

確認是否有事件觸發,如果事件觸發了則會將錯誤注入到系統匯流排上。

FIM 產生器主要是由兩個階段所組成:

第一階段:

為了錯誤注入模組能夠精確的使用事件激發錯誤注入的動作,需要先在沒有 錯誤注入的環境(fault-free)下執行一次全部的程式流程,以便收集系統匯流排的相

(35)

關資料,包含:讀寫資料、位址資料和控制訊號…等。而後這些資料才能成為錯 誤注入時的啟動條件依據。

為 了 要 收 集AHB 匯 流 排 上 的 資 料 , 又 因 所 有 的 資 料 都 會 如 圖 3-9 經 過 Transactor,因此本篇論文在Transactor內部增加了收集資料的Operational_profiler module (OPM) 其中Operational_profiler部分是利用Platform Architect所提供的 AMBA bus專用的Application Programming Interface (API)來實現。原本Transactor 如圖3-10只有做PV與PV+T的通訊協定轉換,而圖3-11就是把Operational_profiler module 加 入 Transactor 的 方 塊 圖 後 的 結 果 , 最 後 則 是 把 PV Protocol Transformation、Fault injection 和Event Check元件整合成為圖3-12的錯誤注入模 組(Fault injection module ,FIM),Event_check 主要是確認是否該為注入錯誤時機,

舉 例 來 說: 某 次 實 驗 希 望 能 在 burst-read 的 傳 輸 模 式 下 執 行 錯 誤 注 入 , 則 Event_check 就會判斷現在是否為burst-read的傳輸模式,如果現在不是burst-read 的傳輸模式則不會執行錯誤注入,如果是burst-read模式則Event_check會告知 Fault injection元件執行錯誤的注入。

圖3- 10 Transactor

圖3- 11 OPM

(36)

圖3- 12 FIM

接下來此篇論文使用OPM 可以收集到如圖 3-13 的資料與訊號,當作事件觸 發的條件,基本上可以分為讀取或是寫入的型態,如圖 3-13 所展現出的第一個 階層。第二個階層包含了單一傳送類型(Single)和爆發式傳送(Burst)兩種方式。第 三階層可以細分到內部,爆發式傳送(Burst)類型內有位址訊號(Haddress)、資料 訊號(Hdata)、爆發式傳送的長度(Burst Length)、群組(Group)、資料大小(Hsize),

單一傳送類型(Single)內有位址訊號(Haddress)、資料訊號(Hdata)、資料大小 (Hsize)。

圖3- 13 OPM 可收集的傳輸模式與訊號種類

事件觸發組合可以選擇將事件組合起來,單一事件觸發可以選擇第一階層的 讀取(Read)或是寫入(Write)的傳輸類型,而組合事件則可在第一階層選擇一種事 件和在第二階層也選擇一種事件。也可以在每一個階層挑選出想要觸發的事件。

(37)

在事件中有些事件還可以設定特定的參數如表3-3 :Hsize 可以分為 8、16、

32、64…等不同長度的資料,如表 3-4:Group 可分為 Single、Burst Start、Burst Cont、

Burst Idle 四種不同傳輸狀態,如表 3-5: Burst Length 可分為 4、8、16、1023 四 種不同資料長度。

Group Value (HTRANS=0x02) and(HBURST=0x00) Single

(HTRANS=0x02) and (HBURST!=0x00) BurstStart (HTRANS=0x03) and (HBURST!=0x00) BurstCont

HTRANS=0x01 BurstIdle 表3- 4 Group 四種傳輸種類

Burst Length Value

(HBURST=0x02) or (HBURST=0x03) 4 (HBURST=0x04) or (HBURST=0x05) 8 (HBURST=0x06) or (HBURST=0x07) 16

HBURST=0x01 1023 表3- 5 Burst Length 四種資料長度

第二階段:

接下來都收集好資料後,這部份會分成 Event_check 以及 Fault_injection 兩 個部分,Event_check 是用來判斷事件是否觸發,可以進行錯誤注入的檢查部份,

先進行第一階段的原因主要就是為了Event_check 所用,當確定此觸發事件正確 後,Event_check 元件會啟動 Fault_injection 元件執行錯誤注入的動作。假使我們 隨意定義觸發的條件,可是該條件卻是程式執行時所不會發生的事件,那這部份

(38)

的Event_check 將不會有任何動作。

(39)

第四章 系統匯流排脆弱模型

4-1 系統匯流排脆弱模型

通 常 在 系 統 匯 流 排 上 主 要 有 四 種 傳 輸 資 料 的 模 式: 單 一 筆 讀 取 資 料 (single-read)、單一筆寫入資料(single-write)、爆發式讀取資料(burst-read)和爆發 式寫入資料(burst-write)。很顯然的如果在系統匯流排上發生錯誤,不管是資料發 生錯誤或是傳輸模式發生錯誤都會有可能影響到最後系統發生故障、失敗…等。

因此在系統匯流排中的脆弱度研究中,本篇論文主要針對下列三個觀點:

1. 在不同系統匯流排訊號中注入錯誤後來探討系統匯流排的失敗敏感度。

2. 在不同系統匯流排傳輸模式中注入錯誤後來探討系統匯流排的失敗敏感 度。

3. 探討不同的測試程式(benchmarks)對系統匯流排和系統的可靠度的影響力。

系統匯流排脆弱度模型中使用的參數定義如下:

z x: 在系統匯流排上有可能會發生錯誤的訊號種類個數,如:Haddr、Hdata、

Hsize;

z y: 在系統匯流排中可能的傳輸模式種類個數,如: single-read、single-write、

burst-read 和 burst-write;

z z: 在系統中可能產生的失敗類型個數,如: fatal failure (FF)、silent data corruption (SDC)、correct data/incorrect time (CD/IT)和 deadlock (DL);

z SC(i): ith是在指定系統匯流排其中一個訊號且 1 i x,如在匯流排上有Haddr、

Hdata、Hsize 三種訊號類型可能發生錯誤,因此 x=3則 SC(1)= Haddr、SC(2)=

Hdata、SC(3)= Hsize;

z W(SC(i)): 訊 號 SC(i) 的 bit 數 , 如 :SC(1) 為 Haddr 則 HADDR[31:0] 表 示 W(SC(1))=32SC(2)為 Hdata 則 HDATA[31:0]表示 W(SC(2))=32SC(3)為 HsizeHSIZE[2:0]表示 W(SC(2))=3;

z TW: 所有訊號的總 bit 數,如: W(SC(1))+ W(SC(2))+ W(SC(3))=32+32+3=67;

(40)

single-read、single-write、burst-read 和 burst-write 四種傳輸模式,因此 y=4,

則 TM(1)= single-read、TM(2)= single-writeTM(3)= burst-readTM(4)=

burst-write;

z N(TM(j)): 在第 TM(j)傳輸模式下所會發生的傳輸次數;

z TN: 在此系統匯流排中全部傳輸模式下的傳輸次數總合;

z FM(k): kth是指系統匯流排會發生的某種失敗類型且 1 i z,如: 如在匯流排 上有fatal failure、silent data corruption、correct data/incorrect time 和 deadlock 四種失敗類型,因此 z=4,則 FM(1)= fatal failureFM(2)= silent data corruptionFM(3)= correct data/incorrect timeFM(4)= deadlock;

z NE: 沒有影響(No effect),表示當錯誤發生在系統匯流中卻不會影響到此系統 整體運作;

z P (SC(i)): 當如果有錯誤發生在系統匯流排中,此錯誤發生在第 ith個訊號上的 機率,如:在 SC(1)Haddr 匯流排訊號的錯誤發生機率是 80.6%;

z P (TM(j)): 在系統匯流排中使用第 ith種傳輸模式的機率;

z P (FM(K)): FM(K)的發生機率,如: FM(1)fatal failure 錯誤發生機率是 28.87%;

z Pf (i, j) | SC(i), TM(j): 在系統匯流排中錯誤發生在第 ith個訊號上且是在第 j th 種 傳 輸 模 式 下 會 造 成 系 統 發 生 失 敗 的 機 率 , 如: 在 系 統 中 發 生 錯 誤 在 SC(1)Haddr 的訊號線上且是在 TM(1) single-read 的傳輸模式下會造成系統發 生失敗機率是94.4%;

z Pf (i) | SC(i): 不管在何種傳輸模式下系統匯流排中錯誤發生在第 ith個訊號上 且會造成系統發生失敗的機率,如: 在系統中發生錯誤在 SC(1)Hadd 包含四 種傳輸模式下會造成系統發生失敗的機率是93.36%;

z Pf (j) | TM(j):不管在哪一條訊號線上系統匯流排中錯誤發生在第 j th的傳輸模 式 下 且 會 造 成 系 統 發 生 失 敗 的 機 率 , 如: 在 系 統 中 發 生 錯 誤 在 TM(1) single-read 包含所以有的訊號線上會造成系統發生失敗的機率是 73.99%;

z P (FM(K)) | SC(i): 在 SC(i)中會發生 FM(K)的機率,如:在 SC(1)Haddr 中會發 生 FM(1)fatal failure 的機率是 38.87%;

z P (FM(K)) | SC(i), TM(j): 在系統匯流排中發生在第 ith種訊號上且是在第 j th

(41)

傳輸模式下會造成系統發生 FM(K)的失敗機率,如: 在系統匯流排中發生在 SC(1)Haddr 訊號上且是在 TM(1) single-read 傳輸模式下會造成系統發生 FM(1)fatal failure 失敗機率是 34.67%;

z P (NE): 錯誤不會對系統造成任何影響的機率;

z P (NE) | SC(i): 當錯誤發生在 SC(i)訊號上卻不會對系統造成影響的機率,如:

SC(1)Haddr 訊號線上 發生錯誤卻不會造成系統失敗機率是 6.64%;

z P (NE) | SC(i), TM(j):當錯誤發生在 SC(i)訊號上且是在 TM(j)的傳輸模式下卻 不會對系統造成影響的機率,如: 當錯誤發生在 SC(1)Haddr 訊號上且是在 TM(1) single-read 的傳輸模式下卻不會造成影響的機率是 24.83%;

本篇論文推導出下列式子來計算系統匯流排的脆弱度:

=

= x

i

i SC W TW

1

)) (

( ;

=

= y

j

j TM N TN

1

)) (

( ……….….……(1)

P (SC(i)) = TW

i SC W( ( ))

; P (TM(j)) =

TN j TM N( ( ))

……… …………..…...(2)

Pf (i, j) | SC(i), TM(j) =

= z |

k

TM(j) i

SC P (FM(K))

1

, )

( ………....….………(3)

Pf (i) | SC(i) = ( ( )) (, ) ( ), ( )

1

j TM i SC j i P j TM P

y

j

f |

×

=

……….……..………….(4)

Pf (j) | TM(j) = ( ( )) (, ) ( ), ( )

1

j TM i SC j i P i SC P

x

i

f |

×

=

………..….……..…..(5)

P (FM(K))|SC(i) =

=

|

y ×

j

TM(j) i

SC P (FM(K)) j

TM P

1

, ) ( ))

(

( ……….(6)

P (FM(K)) = ( ()) ( ( )) ()

1

i SC k FM P i SC P

x

i

|

×

=

………(7)

P (NE)|SC(i),TM(j)=1-

= z |

k

TM(j) i

SC P (FM(K))

1

, )

( ………..(8)

P (NE) =

=

z

k

k FM P

1

)) ( (

1 ………...(9)

(42)

W(SC(i))累加起來即可得;TN 代表在此系統匯流排中所有傳輸模式的傳輸次數總 合,因此把全部 TM(j)傳輸模式下所會發生的傳輸次數累加起來即可。

式子(2)中 P (SC(i))是用來求出在系統中如果發生錯誤,會出錯在其中一個訊 號上的機率;P (TM(j))是用來求出其中一個傳輸模式下的傳輸數量佔了全部系統 匯流排的百分比。

式子(3) Pf (i, j) | SC(i), TM(j) 是用來求出系統匯流排中發生在 SC(i)訊號上且 是在 TM(j)的傳輸模式下會造成系統發生失敗機率,因此把 SC(i)訊號上且是在 TM(j)的傳輸模式下所有會發生失敗的機率累加起來,如:在 SC(i), TM(j)下的 fatal failure 的失敗機率加上 SC(i), TM(j)下的 silent data corruption 的失敗機率加上 SC(i), TM(j)下的 correct data/incorrect time 的失敗機率加上 SC(i), TM(j)下的 deadlock (DL) 的失敗機率即為 Pf (i, j) | SC(i), TM(j)

式子(4) Pf (i) | SC(i)是用來求出系統匯流排中同一個 SC(i)訊號中且全部傳輸 模式下發生錯誤會造成系統失敗的機率,因此先求出每一個傳輸模式下在系統匯 流排所佔的百分比後再分別乘上每一個傳輸模式下同一個 SC(i)訊號錯誤後會造 成系統失敗的機率。

式子(5) Pf (j) | TM(j) 是用來求出系統匯流排中同一個 TM(j)傳輸模式中會造 成系統失敗的機率,因此先求出每一個訊號下在系統匯流排所佔的百分比後再分 別乘上每一個傳輸模式下同一個 TM(j)傳輸模式錯誤後會造成系統失敗的機率。

式子(6) P (FM(K))|SC(i) 是用來求出 SC(i)中會發生 FM(K)的機率且不管那 個傳輸模式下,因此先求出每一個傳輸模式下在系統匯流排所佔的百分比再分別 乘上每一個傳輸模式下同一個 SC(i)訊號且相同 FM(K)的失敗機率。

式子(7) P (FM(K))是要求出在系統中 FM(K)失敗總機率,因此先求出每一個 訊號下在系統匯流排所佔的百分比後再分別乘上在 SC(i)中會發生 FM(K)的機 率。

式子(8) P (NE)|SC(i),TM(j) 是用來求出當錯誤發生在 SC(i)訊號上且是在 TM(j)的傳輸模式下卻不會對系統造成影響的機率。

式子(9)P (NE) 則是用來求出整體系統中發生錯誤後不會影響系統失敗的機 率。

(43)

式子(4)、(5)反映在系統匯流排中的訊號或是傳輸模式中發生錯誤的失敗敏 感度與脆弱度,而 N(TM(j))、TN、P (TM(j)、Pf (i) | SC(i)、P (FM(K)) | SC(i)和 P (FM(K))都是與測試程式(benchmark)比較有直接相關的參數,因此系統匯流排的 失敗敏感度、脆弱度都與benchmark 都有相關的關係。

4-2 SoC 層級風險評估

系統晶片運用的越來越廣泛,但是當系統晶片運用在需要高安全性上的運用 上時,對於錯誤的強韌度設計和可靠度的認證就是非常必要的,因此國際安全標 準就有訂定出安全的規範,如IEC61508[23][24],若符合其規範則較能保證此 SoC 在運作當中能有相當可靠度與安全性。

對於使用IP-based 所組合成複雜度高的 SoC 或是嵌入式系統,保護整個 SoC 或是嵌入式系統比較沒有效率而且也不符合成本。分析 SoC 或系統的弱點能幫 助設計者不只在與安全性最有關連的區域上投資有限制軟硬體的資源也能了解 在此區域上做投資保護的效益。

舉例來說現今 SoC 運用越來越廣泛且運用在需要高可靠度的產品也愈來越 多如: 汽車電子、航太運用、智慧型機器人…等,所以如果這些產品被宇宙射線 (cosmic rays)照射到 memory,可能會衝擊 memory 中的每一個電容器,因而改變 它們的電荷狀態,或是晶片組在內部的各種各樣干擾源造成資料的不正確,又因 在SoC 中的 IP 越來越多元化,並且 IP 元件中會共同運用同一資料作處理運算的 讀取機率越來越高,或是對同一個memory 作寫入備份的動作的頻率也越來越高,

因此 memory 的資料錯誤會造成整體系統錯誤的影響會有加乘的影響,所以 memory 的資料正確性也值得實驗觀察。

雖然memory 可以使用 ECC (Error Correcting Code)除錯技術,來檢查儲存在 記憶體中的資料是否正確。但因為多了一重除錯步驟,因此ECC RAM 運行速度 會比Non-ECC memory 稍慢。另外由於 ECC memory 加入了同位檢查編碼,故其 運作位元長度會增加,ECC memory 本身也需要多用一顆晶片作為除錯之用。因

(44)

此帶有ECC 功能的 memory,會多出一顆晶片作 Registered ECC RAM,目的是 確保資料存取時的穩定性與完整性,所以加入ECC 會減慢讀寫的速度並且會增 加memory bit 數和增加一顆晶片的面積,因此以上的缺點對 SoC 中都是非常不 利的缺點。

因此隨意在 memory 直接加入 ECC 技術並不是最好的防護方法,必須透過 failure mode and effects analysis (FMEA)的步驟來確定系統上的脆弱度和實際上 提供的錯誤容忍度和錯誤改善可靠度。

Memory 受到輻射粒子發生錯誤在某個位址上的字元(word)造成錯誤後,系 統卻可能不會馬上讀取並使用到此位址的內部資料,因此不會馬上造成系統的錯 誤,系統之後也有可能不會再次讀取到此位址因此不會影響系統,另一種則是系 統對之前造成錯誤的位址再次做一次重新寫入新資料的動作,因此下一次系統再 次讀取此位址資料就不會讀取到錯誤的資料。

因此在模擬錯誤注入時需要確認此錯誤注入後系統是否會再次直接讀取使 用到錯誤注入的位址,還是系統會再對此錯誤注入的位址寫入新的資料或是之後 系統沒有再次讀取使用,來確認錯誤注入是否有效,且可以分析出每種不同的 benchmark 對錯誤注入的敏感的程度。

在這個部分中,本篇論文提出在SystemC TLM 層級中可以快速評估 SoC 風 險模型。本篇論文的風險模型是使用 FMEA 的方法並加上模擬錯誤注入的實驗 來測量 SoC 的強韌度。從評估的結果可以得知引起系統失敗的風險度與元件弱 點的排名是有相當密切的關係。

本篇論文將使用以下的參數與式子來建立風險模型:

z n:在 SoC 中需要分析的元件數量;

(45)

z z:在 SoC 中會發生的失敗模型數量;

z C(i): ith是指系統其中某個元件且 1 i n;如:在系統上有 ROM、RAM、fream buffer 等多個不同的元件所組成,因此 n=3則 C(1)= ROMC(2)= RAMC(3)= fream buffer;

z FR_C(i):第 ith 元件的失敗機率;

z SFR: SoC 的失敗機率總值;

z SFR_C(i): 由於第 ith元件出錯所導致的 SoC 失敗機率,佔 SoC 失敗機率總 值的百分比;

z R(t): SoC 的可靠度;

z FM(k):在 SoC 中會發生的第 kth種失敗模型,且 1 k z;

z NE: 沒有影響(No effect),表示當錯誤發生在SoC 中卻不會影響到此系統整 體運作;

z P (i, FM(K)):在系統中第 ith元件錯誤導致第 FM(K)的失敗模型發生的機率;

z P (i, NE):在系統中第 ith元件受到錯誤注入後卻不會有影響的機率;

z P(i, SF):在 ith 元件中發生錯誤造成 SoC 失敗的機率;

z S_FM(k):第 kth個失敗模型的嚴重度且 1 k z;

z RPN_C(i):第 ith元件的風險度數值;

z RPN_FM(k):第 kth失敗模型的風險度數值;

可以用錯誤注入的方式來發現隱藏潛在的失敗模型並做分析,因此可以把錯 誤注入到特定一個元件內,導致此元件發生失敗故障後來分析調查此元件失敗會 造成SoC 的整體行為影響。在每個元件都執行錯誤注入後,即可知道 SoC 最容 易發生哪一種失敗模型,並且哪一個元件最容易造成錯誤。參數 z 和 P (i, FM(K)) 可由錯誤注入的實驗得到。

參考文獻

相關文件

• In the present work, we confine our discussions to mass spectro metry-based proteomics, and to study design and data resources, tools and analysis in a research

Abstract—We propose a multi-segment approximation method to design a CMOS current-mode hyperbolic tangent sigmoid function with high accuracy and wide input dynamic range.. The

In this thesis, we propose a novel image-based facial expression recognition method called “expression transition” to identify six kinds of facial expressions (anger, fear,

FMEA, fail mode and effective analysis, which is one of a common method to analysis and find out the fail mode of the product is to dig out the unobservable problem or hidden

In this thesis, we develop a multiple-level fault injection tool and verification flow in SystemC design platform.. The user can set the parameters of the fault injection

The objective of this study is to establish a monthly water quality predicting model using a grammatical evolution (GE) programming system for Feitsui Reservoir in Northern

Failure Mode and Effects Analysis (Failure Modes and Effects Analysis, FMEA) is used to analyze the product / system, the potential failure modes, identify potential trouble spots

IPA’s hypothesis conditions had a conflict with Kano’s two-dimension quality theory; in this regard, the main purpose of this study is propose an analysis model that can