1. 程式人生 > 其它 >故障模型和故障建模

故障模型和故障建模

1 什麼是故障模型

晶片在製造時難免出現各種問題,晶片製造的缺陷可能導致晶片出現非預期的行為。故障模型 Fault Model 是在開發、製造或者使用晶片時,描述晶片某處錯誤行為的抽象表示。通過故障模型,設計者或使用者能夠有效地得知發生錯誤的資訊。

圖1:晶片中的製造缺陷

下面用一個例子來解釋製造時的缺陷是如何導致電路中的故障:

上圖是一個 Physical Level 的 CMOS 反相器。在製造時,由於腐刻的缺陷 defect,正常電路(紅色)被多延長了一塊(灰色),導致輸入端與 GND 短路,值永遠為0。這個缺陷可以用(門級)故障模型 Fault Modeling表示,此處為一個Stuck-at-0 Fault

。因此,這個反相器的輸出會保持為1,即輸出端出現了Stuck-at-1 Fault。這部分電路出現了Failure

注意,故障模型不是給故障歸類,而是給故障導致的行為歸類。因為故障可以層出不窮,但是故障導致的行為就那麼些。對行為進行歸類是故障模型的精髓。

2 使用故障模型的好處

如上文所述,IC生產過程中存在各種各樣的缺陷,會導致各種各樣的錯誤。對每一種故障歸類是非常困難的,但是將電晶體/電路的故障抽象為電路輸入輸出的邏輯錯誤,會帶來若干好處:

  • 減少需要考慮的情況
  • 便於針對性地生成測試用例和故障模擬
  • 便於評估錯誤覆蓋率,比較 ATPG 生成的測試集效果

3 抽象等級

VLSI晶片有多種抽象級別:

譯者注:作為軟體專業的學生,“抽象”這個詞可以說是令人感到振奮。抽象是一個偉大的思想,理解抽象可以幫助你理解工程領域的各種奇妙構思,甚至瞭解人類社會執行的一些規律。。。

3.1 Physical Level

如上圖所示,抽象等級越低(向右),參與故障建模的單元越多,故障模型會變得更加具體,錯誤建模更加困難。例如,電晶體(in Transistor Level)的數量要大於功能模組(in Functional Level)的數量,出錯時分析起來也就更麻煩。此外,高等級的故障在 Physical Level 變得區域性化,並且可以相互等價,即一個低階故障可能對映為多種高階故障,這也增加了在 Physical Level 抽象的難度。

Physical Level 的故障跟製造工藝緊密貼合,並不具有普適性(比如CMOS的模型無法與TTL模型通用)。

3.2 System Level

我們再來看最高等級的抽象,System Level 抽象。這一級的故障模型非常容易理解,因為我們不需要考慮很多細節,但難以對出現的問題進行準確定位。假某塊8k記憶體中出現了一個錯誤,在 Physical Level,我們要明確錯誤的型別,並在8192個可能出錯的位置進行尋找。但是在 System Level,我們可以直接說這個晶片就是壞掉了。由於這種模型過於簡單,不利於生產的質量改進,因此工業界很少直接使用這一級別的故障模型。

綜上,我們看到了抽象等級高低的兩種極端抽象,這兩種模型在實踐中均有自己的不足。因此,常用的故障模型集中在 Gate Level, Switch Level, 和 Functional Level 這些抽象等級上。

3.3 Functional Level

如之前所提到的,高階抽象的故障可能無法直接與 Physical Level 的故障相對應,一個高級別的故障可能由多種低階的故障導致,這使得我們難以更進一步地定位問題的所在。然鵝,在 Functional Level, Memory Fault Mode 體現了本級抽象的優越性。

  1. Memory Fault Model

    儲存器是數字系統設計的基本組成部分。每個儲存位置上的儲存單元都非常相似。因此專門為儲存器設計了一類特殊的故障模型。這類模型就叫做 Memory Fault Model,可分為如下幾種型別:

    • Memory Stuck-at Faults
    • Memory Transition Faults
    • Memory Coupling Faults
    • Address Decoder Faults

3.4 Structural/Gate Level Fault Model

在 Structural Level 抽象上,電路被轉化為門和FF表示的網表結構。我們在本層的分析有這樣的假設:網表中的門不會出現故障,僅有互連線會出現故障。(門當然會出錯,但是在 Structural Level 抽象中,門的故障被視為互連線的故障。所以我們看到測試相關的 paper 中,對 fault 的描述都是“某條 line 上的 fault”)

門級故障模型的目標是,確保互連線能夠正確傳輸門發出的0/1激勵。常見的門級故障模型有:

  1. Stuck-at Faults

    Stuck-at 故障是最常用的故障模型。我們假設某些互連線出現了問題,導致線上的電平永遠固定在0或者1(s-a-0, Stuck-at 0 和 s-a-1, Stuck-at 1)。Stuck-at故障可進一步分為:

    1. Single Stuck-at faults

      在任何時候,電路中只會有一跟導線出現故障。如果電路中有n條互連線,那麼我們的 fault list(fault 的集合)的容量為 2n。Single Stuck-at fault model 也是工業界中最常用的故障模型。

    2. Multiple Stuck-at faults

      在任何時候,電路中任意導線都可能存在故障。如果電路中有n條互連線,那麼我們的 fault list 的容量為 3^n -1

    在實踐中,只考慮 Single Stuck-at faults 可以極大地簡化測試向量,並可以達到非常好的測試準確性。根據一項研究(Schertz, D. (1969). ON THE REPRESENTATION OF DIGITAL FAULTS.),能夠完全檢出 Single Stuck-at faults 的測試向量可以同時檢出超過95%的 Multiple Stuck-at faults。這種故障模型的優勢在於能夠遮蔽晶片製造技術這樣的細節,抽象出的電路資訊足夠用於生成測試向量。

  2. Bridging Faults

    當電路中的兩條或更多條互聯線意外連線在一起時,就會發生 Bridging Fault。

  3. Delay Faults

    門的引腳對特定刺激集以及特定轉換的轉換響應太慢。可進一步細分為 Path delay fault 和 Transition delay fault。

3.5 Switch Level Fault Model

Switch Level 抽象在電晶體的層面分析電路,例如 CMOS 門的網表。在該模型中,MOS電晶體被認為是一種理想的開關。根據電晶體導通與否的情況,有兩種常見的故障模型:

  1. Stuck-Short Fault Model
  2. Stuck-Open Fault Model

4 小結

本文中,我們討論了VLSI電路中的物理缺陷是如何被各級故障模型表示的。在晶片生產中,對所有電晶體進行檢測是不現實的,但通過故障模型設計EDA和檢測工具,我們可以高效地找到出錯的晶片,定位問題,而不用去糾結硬體的實現細節,從而快速開發晶片。