拉遠鏡頭:從一顆電晶體到一塊焊好的板子
整整五階,我們都活在一顆晶粒裡面。我們學到:要測一個埋在深處的閘,你必須能控制它的輸入、觀察它的輸出,於是我們把正反器串成一條可以像移位暫存器那樣移位的掃描鏈。我們讓 ATPG 算出能撥動每個節點的精確向量,把結果量化成一個故障覆蓋率百分比,而對於那些龐大規整的區塊——幾百萬位元組的 SRAM——我們讓晶片用 BIST 自己測自己。這一切都是可測試性的設計。但它們至今還沒抓到任何一顆壞晶片。要抓到,這些樣式得真的跑起來——在真實的矽上、在一台機器上。而且晶片從不孤單:它最終會被焊到板子上,旁邊還有十幾顆鄰居,這時一顆裂掉的錫球,和一顆卡死的電晶體一樣致命。
所以這一階要把鏡頭拉遠兩次。先拉到晶片層級:自動測試設備(ATE)——也就是測試機——抓住你的晶粒,把前面幾階的掃描、ATPG 與 BIST 樣式打進去,判定這顆晶粒是好是壞。再拉到電路板層級:好晶粒封裝、焊死之後,當你連一根能碰到接腳的探針都找不到時,又該怎麼測晶片之間的連線?這第二個問題,被一個聰明到變成國際標準的點子解掉了——[[ic-boundary-scan|邊界掃描]],它的委員會代號是 IEEE 1149.1,日常名字則是 JTAG。
邊界掃描:繞在每顆晶片外緣的一圈間諜
想像一下催生 JTAG 的那場 1980 年代惡夢。電路板越來越密,表面黏著封裝取代了穿孔接腳,而老測試法——一塊「釘床」治具,用一根鋼針壓上每一條網路——快要沒地方放針了。細間距 QFP 的接腳只隔 0.4 公釐;BGA 底下的錫球更是躲在封裝正下方,任何探針都搆不著。你可能有一塊完全沒問題的板子,卻因為一個焊點裂了,使晶片 A 的資料匯流排根本沒接到晶片 B,而世上沒有任何探針看得見這件事。聯合測試行動小組(JTAG)的解法很激進:別再試圖從外面碰接腳了,把測試點放進晶片內部,就藏在每個 I/O 後面。
具體來說:每根標準接腳都配上一個小小的邊界掃描單元——一個正反器加上幾個多工器——坐在接腳與核心邏輯之間。正常運作時這個單元是隱形的,訊號直接穿過去;測試模式下,所有單元手挽著手連成一條繞著晶片外緣的長移位暫存器(這正是「邊界」掃描之名的由來)。現在你不用任何探針,就能做兩件魔法般的事:擷取每根輸入接腳上當下的電壓並把它移出來讀,以及把你想要的任何樣式移進去、驅動到每根輸出接腳上。要測晶片 A 與晶片 B 之間那條銅線,你讓 A 驅動一個 1,再檢查 B 有沒有擷取到 1。焊點裂了?B 擷取到的是 0。板子的連線剛剛自己測了自己。
Two chips on a board, viewed in JTAG test mode
========================================================
Chip A Chip B
+-----------------------+ +-----------------------+
| core logic | | core logic |
| +----+ drive | PCB | capture +----+ |
| ......>| BS |---->[pin]======[pin]---->| BS |>...... |
| +----+ | trace | +----+ |
+----------|------------+ +-----------|-----------+
| boundary-scan shift register |
TDI ---->o--->o--->o--- ... --->o--->o--->o---> TDO
(one cell behind every package pin)
Test: A drives 1 -> good trace -> B captures 1
A drives 1 -> CRACKED -> B captures 0 (FAIL, no probe needed)整套機構只靠四根(選配是五根)專用接腳來操控,也就是測試存取埠(TAP):TCK(測試時脈)、TMS(測試模式選擇——它驅動一台 16 狀態的控制器狀態機)、TDI(資料輸入)、TDO(資料輸出),以及選配的 TRST(重置)。因為標準把協定釘死了,這同樣四根線可以菊鏈串過板子上每一顆 JTAG 晶片:一顆的 TDO 接到下一顆的 TDI,於是一條測試機纜線就能把樣式移過整塊板子的外緣。這個 TAP 後來遠遠超出了板級測試——你用它來燒錄 FPGA、用一個二十美元的小轉接頭除錯嵌入式 CPU、燒斷晶片上的保險絲,甚至伸進前幾階講的內部掃描鏈與 BIST 控制器。
ATE:一台跑你樣式、要價百萬的機器
現在來見見這些樣式當初是為誰而寫的機器。[[ic-automatic-test-equipment|自動測試設備]] 是一台冰箱大小的測試機——愛德萬(Advantest)與泰瑞達(Teradyne)是家喻戶曉的名字——售價從數十萬到數百萬美元不等。它透過一塊負載板(測封裝好的零件)或一張帶著數百根探針的探針卡(測還在晶圓上的裸晶粒)連到矽上。機器內部,每接腳的電子電路都能各自驅動或感測一根接腳、施加精準的電壓與電流,並把訊號邊緣的時序控制到皮秒等級。它的工作說起來殘酷地簡單:把 DFT 流程產生的樣式灌進去、用時脈推過晶片、把輸出和預期回應比對,然後在每個零件上蓋章——通過或失敗。
一個真實的量產測試程式,是一連串測試,在幾秒內跑完,大致照這個順序。看看前面每一階如何在這個腳本裡各佔一行:
- 接觸/連通與開短路檢查——把每根接腳稍微撥動一下,確認探針真的接上了、且沒有兩根接腳短路。接觸沒過,後面一切都不可信。
- 參數/直流測試——量測漏電流(IDDQ)、電源電流、輸出驅動準位。這些抓的是任何邏輯樣式都抓不到的嚴重製造瑕疵。
- 掃描/[[ic-atpg|ATPG]] 測試——把結構性的卡住型與轉態型樣式移過掃描鏈,再比對擷取到的回應。你辛苦掙來的故障覆蓋率,就是在這裡變成真正抓到的瑕疵。
- [[ic-built-in-self-test|BIST]] 測試——叫晶片上的記憶體與邏輯 BIST 控制器開跑(通常透過 JTAG TAP),等它回報「完成」,然後讀一個通過/失敗位元,而不必串流數百萬個向量。
- 功能/全速測試——讓晶片在它真正的時脈下運轉,抓出慢速結構測試漏掉的時序瑕疵;再依零件能通過的最高頻率分箱(速度分箱)。
- 分箱與打點——把最終裁決寫進晶圓圖:第 1 箱=良品,其他箱=特定的失效類型。壞晶粒會被點上一個小墨點(或記在軟體圖裡),封裝時就跳過它。
其中有兩個階段發生在兩個不同的時刻。晶圓分選(探針測試) 在晶粒還在晶圓上時、針對裸晶粒進行,於是你絕不會把封裝的錢花在一顆已知是壞的晶粒上——「已知良品晶粒(known-good-die)」這個詞就是這麼來的,而在你把小晶片堆疊進一個封裝之前,這一步至關重要。最終測試 則在封裝之後進行,因為切割、打線與封裝本身都可能引入新瑕疵。至於這套流程的板級版本,靠的就是邊界掃描——等到那些封裝好的零件被永久焊死之後,它才得以成真。
測試時間就是金錢:成本的取捨
這裡有一把擠壓每一個測試決策的經濟老虎鉗。那台 ATE 要價數百萬,所以晶粒在它上面待的每一秒都有標價——以每秒測試機時間幾美分來計。乘上一年數億顆晶粒,測試成本輕易就佔了總製造成本的 5~15%。於是 DFT 的核心張力就是:更多樣式能抓到更多瑕疵(品質更高),卻要花更久才移得進去(成本更高)。 前面幾階那些聰明的 DFT 結構,骨子裡都是這場成本賽局裡的一步棋。
Why shift time dominates -- a rough scan-test cost model
========================================================
test_time = (patterns x scan_chain_length) / shift_clock
Example: 10,000 ATPG patterns, longest chain = 4,000 FFs
shift clock = 50 MHz
cycles = 10,000 x 4,000 = 40,000,000 shift cycles
time = 40,000,000 / 50e6 Hz = 0.8 seconds (scan only)
Levers that cut this number:
+ split 1 chain of 4,000 into 8 chains of 500 -> ~8x shorter shift
+ on-chip compression (decompress in / compress out) -> 10-100x fewer pins/cycles
+ BIST a 16 Mb SRAM on-chip -> read 1 pass bit instead of streaming vectors
+ run at-speed only where timing defects actually hide這就是為什麼現代晶片不只有一條掃描鏈——它們把正反器拆成數十甚至數百條平行鏈,再用掃描壓縮把它們包起來:一個小小的晶片上解壓器,把測試機的少數幾個通道扇出到許多內部鏈,再由一個壓實器把回應擠回來。把測試資料與時間縮減 50~100 倍是家常便飯。同一枚硬幣的品質那一面,就是[[ic-fault-coverage|故障覆蓋率]]:以 99% 而非 95% 的覆蓋率出貨,可能讓你的現場瑕疵率從每百萬顆數百個掉到數十個。對一顆攸關安全的車用晶片來說,這個差距就是召回與清白紀錄之別——所以覆蓋率目標、進而樣式數、進而測試成本,歸根結柢是一個商業決策,而不只是工程決策。
DFT 住在哪裡:從流片到量產
退一步,看著整座階梯收攏成一條時間軸。DFT 不是測試團隊事後補的東西——它是在任何矽存在之前好幾個月,就蓋進設計裡的結構,正是為了讓最後的測試這一步成為可能。掃描與 BIST 插得太晚,你就交出了一顆你根本無法篩選的晶片。
Where each rung fires in the IC realization flow
========================================================
RTL -> Synthesis -> SCAN INSERTION -> Place & Route -> TAPEOUT
| | (rungs 1-3: |
| | scan chains, BIST inserted |
| | into the netlist) v
| mask making
| |
v v
ATPG run (rung 4) ----------------- patterns ------------> wafer fab
test-bench / fault sim -> coverage % |
v
WAFER SORT (ATE + probe card)
scan + BIST + parametric
-> known-good-die map
|
assembly / package
|
v
FINAL TEST (ATE + load board)
|
board assembly
|
v
BOARD TEST (JTAG boundary scan)
-> ship the system從左到右讀這條時間軸,這條相依鏈無可否認。可測試性設計結構(掃描、BIST、JTAG TAP)在合成前後插入;ATPG 接著針對這個備好掃描的網表算出樣式、回報覆蓋率——這一切都在 流片之前,也就是設計被凍結、以光罩形式送進晶圓廠的那一刻。幾個月後,晶圓回來了,ATE 才終於在晶圓分選時跑那些樣式,把已知良品晶粒和報廢品分開。封裝好的零件接受最終測試;組好的板子則跑一輪邊界掃描。每一支箭頭都倚賴上游做過的某個決策——這正是為什麼,一根漏掉的 scan-enable 接腳、或一個設得太低的覆蓋率目標,若在流片之後才發現,會是這個產業裡最昂貴的錯誤之一。