可測試性設計:為什麼晶片出廠前要自檢

modern%20workspace%20with%20laptop%2C%20smartphone...
發表時間:2026 年 10 月 25 日 | 更新日期:2026 年 10 月 25 日 | 編輯:雅寶社區編輯團隊
可測試性設計:為什麼晶片出廠前要自檢 - 雅寶社區 · 頂客論壇

業界有一句半開玩笑的話:「測試工程師的工作,是在良率與品質之間走鋼索。」而可測試性設計,就是那條鋼索上最關鍵的平衡桿。

二、可測試性設計(DFT)到底是什麼?

DFT 不是某一種特定電路,而是一種「設計哲學」:在設計階段,刻意加入額外邏輯,讓晶片在測試模式下變得容易控制與觀察,而在正常工作模式下,這些額外邏輯幾乎不影響功能與效能。

打個比方。假設你要檢查一棟大樓裡每一間房間的燈泡是否正常。如果沒有事先規劃,你得逐層逐間開門進去檢查,費時又費力,有些房間甚至根本進不去。但如果建商在設計時就拉好一條「測試匯流排」,讓每間房的燈泡狀態可以集中顯示在警衛室的儀表板上,同時能從警衛室統一開關——檢查就變成幾分鐘的事。DFT 做的就是這條匯流排。

2-1 可控制性與可觀察性

在測試理論中,一個節點「好不好測」由兩個指標決定:

  • 可控制性(Controllability):你能不能從外部接腳,把這個節點設定成你想要的邏輯值(0 或 1)?設定一層閘很簡單,但如果這個節點藏在二十層邏輯之後,要讓它變成 1,可能得同時滿足幾十個輸入條件。
  • 可觀察性(Observability):當這個節點的值不對時,你能不能從外部接腳「看到」差異?如果訊號要穿過一連串邏輯才會到達輸出,而且可能被其他訊號遮蔽,那麼即使內部壞了,外部也看不出來。
  • DFT 的所有技術,本質上都在做同一件事:提高可控制性與可觀察性。掃描鏈讓你直接「寫入」與「讀出」正反器的值;邊界掃描讓你能觀察每一根接腳;內建自我測試讓晶片自己產生測試向量、自己判斷結果。方法不同,目標一致。

    2-2 從「功能測試」到「結構測試」

    測試策略大致可以分兩類:

  • 功能測試(Functional Test):給晶片一組「真實」的輸入,檢查輸出是否符合規格。例如讓處理器執行一段程式,檢查結果是否正確。這種測試直觀、貼近實際使用情境,但覆蓋率有限——你很難用功能測試涵蓋到晶片內部每一個邏輯閘的所有可能狀態。
  • 結構測試(Structural Test):不在乎晶片「做什麼」,只在乎內部電路的連線與邏輯是否完好。測試向量是根據電路結構自動產生的,目標是讓每一個可能的故障(fault)都被「激發」並「傳播」到可觀察的輸出。
  • 現代晶片的主力測試是結構測試,因為它可以被自動化、可以被量化(覆蓋率)、可以針對特定故障模型。功能測試則退居輔助角色,通常只用來驗證少數關鍵功能或啟動流程。

    2-3 常見的故障模型

    要測「壞掉」,得先定義什麼叫壞掉。實體缺陷(如金屬連線斷裂、短路、閘極氧化層漏電)種類繁多,測試工程師用「故障模型」來抽象化這些缺陷,讓 ATPG 工具可以系統性地產生測試向量。常見模型如下:

    故障模型

    物理意義

    測試重點

    Stuck-at(固定值故障)

    某條線永遠固定在 0 或 1

    最基礎、覆蓋率最高,業界通常要求 95% 以上

    Transition Delay(轉態延遲故障)

    訊號該變換時變得太慢,導致時序錯誤

    需要 at-speed 測試,抓「慢速缺陷」

    Bridging(橋接故障)

    兩條不該相連的線短路在一起

    需要特定的向量組合來激發

    Path Delay(路徑延遲故障)

    整條時序路徑累積延遲超過時脈週期

    針對關鍵路徑進行驗證

    Cell-aware(單元感知故障)

    針對標準元件內部電晶體層級的實體缺陷

    先進製程常採用,能抓到傳統模型漏掉的缺陷

    值得注意的是,沒有任何一種故障模型能涵蓋所有實體缺陷。這也是為什麼業界會同時使用多種模型、多種測試階段,形成「多層防禦」的測試策略。

    三、晶片自檢的核心機制:BIST 家族

    「BIST」是 Built-In Self-Test 的縮寫,中文常譯為「內建自我測試」。它的核心概念非常漂亮:把測試機的一部分功能,搬到晶片裡面去。晶片不再被動等待外部測試機餵向量,而是自己產生測試向量、自己施加、自己收集結果、自己判斷通過與否。

    這樣做的好處顯而易見:外部測試機只需要下一個「開始測試」的指令,然後讀一個「通過/失敗」的結果。測試時間大幅縮短、測試資料量大幅降低、測試機台的成本壓力也減輕。更重要的是,BIST 可以在晶片的整個生命週期中使用——不只是出廠前,還包括每次開機、甚至運行中的定期檢查。

    3-1 掃描鏈與 ATPG:結構測試的骨幹

    在談各種 BIST 之前,得先講掃描鏈(Scan Chain),因為它是絕大多數結構測試的基礎。

    傳統的正反器(Flip-Flop)在正常工作時,只負責儲存資料。掃描版本的設計會在每個正反器前面加一個多工器,讓它在「掃描模式」下,把上一級正反器的輸出當作輸入,於是所有正反器串連成一條巨大的移位暫存器。

    // 簡化示意:掃描式 D 型正反器

    module scan_dff (

    input clk,

    input rst_n,

    input scan_en, // 1 = 掃描模式,0 = 正常工作

    input d, // 功能資料輸入

    input si, // 掃描資料輸入(來自前一級)

    output reg q // 輸出(同時也是下一級的 si)

    );

    wire mux_out = scan_en ? si : d;

    always @(posedge clk or negedge rst_n) begin

    if (!rst_n)

    q <= 1'b0;

    else

    q <= mux_out;

    end

    endmodule

    有了掃描鏈,測試流程就變成三個步驟:

  • Shift(移入):透過掃描輸入腳,把測試向量一位一位推進所有正反器。
  • Capture(擷取):切回功能模式,打一個或兩個時脈,讓組合邏輯的結果被正反器捕捉。
  • Shift out(移出):把正反器的值一位一位移出來,與預期的「黃金簽章」比對。
  • ATPG(Automatic Test Pattern Generation)工具的工作,就是自動算出「要移入什麼向量,才能讓某個故障被激發並傳播到輸出」。這是一個 NP 完全問題,實務上靠啟發式演算法與大量運算資源解決。對先進晶片而言,一顆晶片可能需要數萬到數百萬條測試向量,測試資料量以 GB 計,因此業界還得搭配測試壓縮(Test Compression,如 EDT、DFTMAX)技術,把向量壓縮幾十倍到上百倍。

    3-2 MBIST:記憶體自我測試

    現代系統單晶片(SoC)裡,記憶體(SRAM、DRAM、ROM)往往佔據超過一半的面積。記憶體的缺陷型態與邏輯電路完全不同:可能有單一元件的 stuck-at、相鄰單元的耦合干擾、位元線的靈敏度問題、解碼器故障等等。

    記憶體通常用「March 演算法」來測。以常見的 March C- 為例,它會對每一個位址依序執行「寫 0、讀 0、寫 1、讀 1」等動作,並以不同方向(升冪、降冪)掃過整個記憶體陣列。這種規律性的動作,非常適合用內建的有限狀態機來實現。

    MBIST 的典型架構包含:

  • BIST 控制器:產生位址、資料、控制訊號,執行 March 序列。
  • MUX 邏輯:在測試模式下,把記憶體的位址/資料匯流排從系統切換到 BIST 控制器。
  • 比對器:把讀出的資料與預期值比較,記錄錯誤。

  • 診斷暫存器:失敗時記錄是哪個位址、哪個 bit 出錯,方便後續分析。
  • MBIST 的價值不只在出廠測試。對許多高可靠性應用(車用、伺服器、基地台),晶片開機時會執行一次 MBIST,確認記憶體沒有因為老化或環境因素而損壞;有些系統甚至會在運行中定期執行「透明式」的記憶體測試。

    3-3 LBIST:邏輯自我測試

    LBIST(Logic BIST)針對的是隨機邏輯。它的做法是:內建一個偽隨機樣式產生器(PRPG,通常是線性回饋移位暫存器 LFSR),持續產生看似隨機的測試向量,送入受測邏輯;輸出則送入一個多輸入簽章暫存器(MISR),把大量輸出壓縮成一個「簽章」。測試結束後,只要比對簽章是否等於預期的黃金簽章,就能判斷邏輯是否正常。

    LBIST 的優點是外部設備需求極低,非常適合系統層級的自我檢測;缺點是隨機向量對某些難以激發的故障(random-resistant faults)覆蓋率不足,通常需要搭配「加權」或「測試點插入」等技巧來提升覆蓋率。因此實務上,LBIST 常與掃描式 ATPG 並用:出廠時用掃描測試追求高覆蓋率,系統運行時用 LBIST 做快速健康檢查。

    比較項目

    掃描式 ATPG

    MBIST

    LBIST

    主要目標

    邏輯電路缺陷

    記憶體陣列缺陷

    邏輯電路快速自檢

    向量來源

    外部 ATE 提供

    內建控制器

    內建 PRPG

    覆蓋率

    高(可達 95% 以上)

    依演算法而定

    中(需輔助技巧)

    典型用途

    晶圓測試、成品測試

    出廠測試+開機自檢

    系統層級健康檢查

    3-4 邊界掃描與 JTAG:從晶片到電路板

    晶片裝上電路板之後,測試的難度又提升一個層級:你很難用探針去碰 BGA 封裝底下的焊球。於是 IEEE 1149.1 標準(俗稱 JTAG)應運而生。它在每根接腳的邊界上放置掃描單元,串成邊界掃描鏈,讓測試機可以透過少數幾根腳(TCK、TMS、TDI、TDO),控制並觀察晶片的所有 I/O。

    JTAG 後來被大幅擴充,成為晶片上各種測試與除錯機制的統一入口:

    讀寫掃描鏈、啟動 MBIST/LBIST

    存取晶片內部的除錯電路(on-chip debug)

    透過 IEEE 1687(IJTAG)存取嵌入式儀器

    進行邊界掃描的互連測試(interconnect test),檢查 PCB 上的焊接是否良好

    可以說,JTAG 是「晶片自檢」對外的遙控器。沒有它,BIST 的結果就只能鎖在晶片裡,無法被系統層級使用。

    四、為什麼「出廠前自檢」不可省略:五個關鍵理由

    談完機制,回到本文的主題:為什麼非得在出廠前做自檢?以下五個理由,分別對應品質、成本、可靠度、安全與商業現實。

    理由一:良率學習與缺陷篩選

    晶圓製造是一個數百道步驟的過程,任何一道出問題,都可能造成局部缺陷。這些缺陷不一定會立刻讓晶片「死掉」——很多是「潛在缺陷」(latent defect),當下功能正常,但在溫度變化、電壓波動或長時間使用後才失效。這種「早夭」現象在半導體可靠度工程中有個經典曲線叫「浴缸曲線」:初期故障率高,中期穩定,後期老化。

    出廠前的結構測試(尤其是 at-speed 的轉態測試與 burn-in 後的測試),目的就是把這些潛在缺陷提早篩掉,讓客戶拿到的是走過「早期失效期」的產品。業界用 DPM(Defective Parts Per Million,每百萬顆不良數)來衡量出貨品質,而測試覆蓋率直接決定 DPM 的高低。

    理由二:測試成本與資料量的現實壓力

    如前所述,ATE 機台時間非常昂貴。若沒有 DFT,測試工程師只能用功能向量硬測,向量數量會爆炸,測試時間拉長,成本直線上升。有了掃描鏈與 BIST,測試可以平行化(多條掃描鏈同時移位)、可以壓縮、可以在晶片內部完成,測試時間與資料量都能有效控制。

    換句話說,DFT 不是「額外的負擔」,而是讓測試在經濟上可行的必要投資。業界常見的取捨是:多花 5%~10% 的面積做 DFT,換取測試時間減少數十倍、測試覆蓋率提升到 95% 以上。這筆帳怎麼算都划算。

    理由三:不可測試就等於不可保證

    在車用、醫療、航太、工業控制等領域,「保證」是有法律與合約意義的。ISO 26262(道路車輛功能安全)要求晶片必須能偵測自身的潛在故障(latent fault),並且在規定時間內達到一定的診斷覆蓋率(Diagnostic Coverage)。這些要求無法靠「出廠時抽樣」達成,必須靠晶片內建的自我測試與週期性診斷機制。

    沒有 DFT,就沒有診斷覆蓋率;沒有診斷覆蓋率,就拿不到安全認證。這已經不是成本問題,而是能不能賣的問題。

    理由四:系統層級的可維護性

    一顆晶片裝進伺服器、基地台或電動車之後,可能會連續運作好幾年。這段期間,它會經歷溫度循環、電壓應力、輻射粒子撞擊(soft error)等考驗。當系統出現異常時,維運人員需要快速判斷「是晶片壞了,還是軟體、電源、散熱出問題」。

    內建自檢提供了這種「分級診斷」能力:開機時跑一次 POST 與 MBIST,若能通過,代表硬體基本健康;運行中定期跑 LBIST,可以提早發現退化趨勢。這種可維護性,對資料中心與電信設備的營運成本影響極大。

    理由五:防止「良品中的劣品」流入市場

    最可怕的不是明顯壞掉的晶片,而是「看起來正常、實際上有隱性缺陷」的晶片。這類晶片可能在客戶端使用三個月後才失效,造成的退貨、維修、品牌損害,遠遠超過一顆晶片的售價。對車用或醫療應用而言,甚至可能涉及人身安全。

    出廠前的完整自檢,就是最後一道防線。它同時也是法律責任的證明:當事故發生時,能提出完整的測試紀錄與覆蓋率報告,是廠商自保的重要依據。

    五、從晶片到系統:自檢概念如何延伸到你的日常裝置

    DFT 與 BIST 的觀念,其實早就透過各種形式,出現在你我每天使用的 3C 產品裡。只是它們通常很低調,低調到你幾乎不會注意到。

    5-1 開機自我測試(POST)

    你按下電腦電源鍵的那幾秒鐘,主機板上的 BIOS/UEFI 正在執行 POST(Power-On Self-Test):檢查 CPU、記憶體、匯流排、週邊裝置是否正常。這其實就是系統層級的「自檢」概念。

    在筆電與手機裡,這個概念更進一步:SoC 內部的電源管理單元會在開機時依序啟動各個子系統,並執行記憶體測試、時脈檢查、溫度感測器校正。若某個子系統自檢失敗,系統可能會降頻、關閉部分功能,或直接拒絕開機——這都是為了避免在不穩定的狀態下執行使用者資料。

    5-2 車規與安全關鍵系統的「持續自檢」

    電動車與先進駕駛輔助系統(ADAS)對晶片可靠度的要求,遠高於消費性電子。一顆負責煞車或轉向的微控制器,必須能在行駛過程中持續監控自身狀態。常見做法包括:

    開機時:執行完整的 MBIST 與邏輯測試,確認硬體完好。

  • 運行中:定期執行 LBIST 或軟體式自我測試(software-based self-test),偵測潛在故障。
  • 錯誤偵測:搭配 ECC、CRC、看門狗計時器、鎖步核心(lockstep core)等機制,形成多層防護。
  • 這些機制的共同精神,就是「不要假設晶片永遠健康,而是假設它隨時可能出錯,並設計出能即時發現錯誤的方法」。這正是可測試性設計的延伸。

    5-3 消費性裝置的隱形自檢

    即使是一般消費性電子,也有許多隱形的自檢行為。例如:

    固態硬碟(SSD)控制器在閒置時執行背景掃描,檢查 NAND 儲存單元的錯誤率。

    無線耳機的藍牙晶片在配對前進行射頻校正與自我檢測。

    手機的電源管理 IC 監控電池電壓、溫度,必要時限制充電電流。

    這些功能之所以能實現,背後都依賴晶片設計階段預留的感測器、測試模式與診斷介面——也就是 DFT 的功勞。

    六、DFT 的代價與取捨:沒有白吃的午餐

    講了這麼多好處,也該談談代價。DFT 不是免費的,工程團隊必須在以下幾個面向做取捨:

    6-1 面積與效能開銷

    每個掃描式正反器都要加一個多工器,每條掃描鏈都要額外的繞線,BIST 控制器、MISR、PRPG、JTAG TAP 控制器也都需要面積。整體而言,DFT 邏輯通常佔晶片面積的 3%~15%,視設計複雜度與測試策略而定。

    效能方面,掃描多工器會被放在正反器的資料路徑上,雖然通常影響很小,但在超高頻設計中仍需謹慎處理。部分設計會採用「多工器內嵌於正反器」的特殊元件(scan flip-flop),把延遲降到最低。

    6-2 測試模式下的功耗與時序

    掃描測試時,所有正反器會同時翻轉,造成的瞬間切換功耗(shift power)可能遠高於正常工作狀態。若不加控制,可能導致測試時電壓下降、時序錯誤,甚至損壞晶片。因此業界發展出低功耗測試技術,例如分組移位、掃描鏈分割、時脈閘控等。

    此外,at-speed 測試需要晶片內部產生高速時脈,對時脈樹設計與電源完整性都是一大挑戰。

    6-3 安全性與測試模式的濫用風險

    測試模式是一把雙面刃。它能讓工程師讀寫晶片內部狀態,但也可能被惡意人士利用,成為側通道攻擊或竊取金鑰的入口。因此現代晶片通常會加入測試模式的保護機制,例如:

    測試模式需要特定金鑰或序列才能解鎖

    晶片離開工廠後永久關閉部分測試功能(fuse-based disable)

    通過安全認證的除錯介面(如 ARM CoreSight 的認證機制)

    如何在「可測試」與「安全」之間取得平衡,是近年 DFT 領域的熱門課題。

    七、實務入門:工程師可以怎麼開始理解 DFT

    如果你是電子、電機或資工背景的學生,或是一位想深入了解晶片設計的 3C 愛好者,以下幾個方向可以作為切入點:

    7-1 從理論到工具

  • 先理解故障模型與 ATPG 的基本原理,讀懂「fault coverage」與「test coverage」的差異。
  • 熟悉掃描鏈的 shift/capture 流程,並嘗試用 Verilog 寫一個簡單的掃描式正反器與測試平台。
  • 了解 JTAG 的 TAP 狀態機(16 個狀態),這是所有邊界掃描操作的基礎。

  • 若有機會接觸商用 EDA 工具(如 Synopsys DFT Compiler、Siemens Tessent),可以試著對小型設計跑一次掃描插入與 ATPG。
  • 7-2 從系統角度看測試

    除了電路層面,也建議從系統層面理解測試流程:晶圓測試(Wafer Sort/CP)→ 封裝 → 成品測試(Final Test/FT)→ 燒機(Burn-in)→ 系統級測試(SLT)。每個階段測什麼、為什麼要測、成本如何,都是 DFT 工程師日常要考慮的問題。

    7-3 閱讀標準與文獻

    IEEE 1149.1(JTAG)、IEEE 1500(核心包裝)、IEEE 1687(IJTAG)、IEEE 1838(3D IC 測試)是幾個重要的測試標準。此外,國際測試會議(ITC)、亞洲測試會議(ATS)的論文集,以及各家 EDA 廠商的白皮書,都是很好的進修資源。

    八、常見問答

    Q1:所有晶片都需要 BIST 嗎?

    不一定。小型、低複雜度、低成本晶片(如簡單的電源管理 IC、感測器介面)可能只用基本的掃描測試或功能測試就足夠。但對大面積、高複雜度、高可靠度要求的晶片(處理器、SoC、車用 MCU),BIST 幾乎是標準配備。

    Q2:BIST 通過就代表晶片絕對沒問題嗎?

    不是。任何測試都有覆蓋率上限。BIST 能抓到的故障,取決於測試向量與故障模型的設計。理論上仍可能存在未被覆蓋的缺陷,這稱為「逃逸」(escape)。因此業界會用多種測試方法互補,並持續改進故障模型(如 cell-aware、timing-aware),以降低逃逸率。

    Q3:測試會不會傷晶片?

    測試過程確實會對晶片施加應力(電壓、電流、溫度、時脈切換)。設計不良的測試流程可能造成過度應力,反而降低可靠度。因此測試工程師必須控制測試條件,確保「測試不會比使用更傷晶片」。這也是為何測試模式下的功耗與時序分析如此重要。

    Q4:為什麼不能只靠軟體測試?

    軟體測試只能透過晶片對外暴露的介面進行,無法觸及內部的掃描鏈、記憶體陣列與邊界掃描單元。對於內部節點的缺陷,軟體測試的覆蓋率極低。硬體層級的 DFT/BIST 才能有效偵測這些缺陷。

    Q5:DFT 工程師的日常工作是什麼?

    大致包括:在 RTL 階段規劃掃描架構、插入測試邏輯、產生與驗證測試向量、分析覆蓋率、除錯測試失敗案例、與設計團隊協調時序與面積影響、支援量產測試程式開發。這是一個橫跨設計、驗證、測試與製造的跨領域角色。

    結語:自檢,是晶片對自己負責的方式

    回到最初的問題:為什麼晶片出廠前要自檢?答案其實很樸素——因為我們無法從外部看清它的內部,所以只好讓它自己說出真相。

    可測試性設計,本質上是一種「誠實的工程」:在設計階段就承認晶片可能會壞,並且預先準備好發現壞掉的方法。它不是事後補救,而是從第一天就納入設計流程的思維。掃描鏈、MBIST、LBIST、JTAG,這些聽起來生硬的縮寫,背後都是同一個信念:能被測量的,才能被信任;能被信任的,才能交到使用者手上。

    下次當你按下電源鍵,看著裝置在幾秒內完成開機,不妨想想那幾秒鐘裡發生的事:數以億計的電晶體正在接受檢查,數以萬計的測試向量正在流過掃描鏈,而結果只有一個位元——通過,或不通過。那個位元,就是現代晶片工業對品質最簡潔、也最沉重的承諾。

    對 3C 科技愛好者而言,理解 DFT 與 BIST,不只是多背幾個名詞,而是多了一層看待產品的眼光:當你看到「通過 AEC-Q100 認證」、「支援 ISO 26262 ASIL-D」、「內建 ECC 與 BIST」這些規格時,你會知道它們代表的不只是行銷詞彙,而是一整套讓晶片敢於自我檢驗的工程實力。

    🏠 返回首頁