半導體廠商如何做晶片的出廠測試呢,這對晶片來說,是流片後或者上市前的必須環節。
本文引用地址:http://www.eepw.com.cn/article/201710/366411.htm大公司的每日流水的晶片就有幾萬片,測試的壓力是非常大。當晶片被晶圓廠製作出來後,就會進入WaferTest的階段。這個階段的測試可能在晶圓廠內進行,也可能送往附近的測試廠商代理執行。生產工程師會使用自動測試儀器(ATE)運行晶片設計方給出的程序,粗暴的把晶片分成好的/壞的這兩部分,壞的會直接被捨棄,如果這個階段壞片過多,基本會認為是晶圓廠自身的良品率低下。如果良品率低到某一個數值之下,晶圓廠需要賠錢。
WT的測試結果多用這樣的圖表示:
通過了WaferTest後,晶圓會被切割。切割後的晶片按照之前的結果分類。只有好的晶片會被送去封裝廠封裝。封裝的地點一般就在晶圓廠附近,這是因為未封裝的晶片無法長距離運輸。封裝的類型看客戶的需要,有的需要球形BGA,有的需要針腳,總之這一步很簡單,故障也較少。由於封裝的成功率遠大於晶片的生產良品率,因此封裝後不會測試。
封裝之後,晶片會被送往各大公司的測試工廠,也叫生產工廠。並且進行FinalTest。生產工廠內實際上有十幾個流程,FinalTest只是第一步。在FinalTest後,還需要分類,刻字,檢查封裝,包裝等步驟。然後就可以出貨到市場。
FinalTest是工廠的重點,需要大量的機械和自動化設備。它的目的是把晶片嚴格分類。以Intel的處理器來舉例,在FinalTest中可能出現這些現象:
1.雖然通過了WaferTest,但是晶片仍然是壞的。
2.封裝損壞。
3.晶片部分損壞。比如CPU有2個核心損壞,或者GPU損壞,或者顯示接口損壞等
4.晶片是好的,沒有故障
這時,工程師需要和市場部一起決定,該如何將這些晶片分類。打比方說,GPU壞了的,可以當做無顯示核心的「賽揚」系列處理器。如果CPU壞了2個的,可以當「酷睿i3」系列處理器。晶片工作正常,但是工作頻率不高的,可以當「酷睿i5」系列處理器。一點問題都沒有的,可以當「酷睿i7」處理器。
(上面這段僅是簡化說明「晶片測試的結果影響著產品最終的標籤」這個過程,並不是說Intel的晶片量產流水線是上文描述的這樣。實際上Intel同時維持著多個產品流水線,i3和i7的晶片並非同一流水線上產品。)
那這裡的FinalTest該怎樣做?
以處理器舉例,FinalTest可以分成兩個步驟:1。自動測試設備(ATE)。2。系統級別測試(SLT)。2號是必要項。1號一般小公司用不起。
ATE的測試一般需要幾秒,而SLT需要幾個小時。ATE的存在大大的減少了晶片測試時間。
ATE負責的項目非常之多,而且有很強的邏輯關聯性。測試必須按順序進行,針對前列的測試結果,後列的測試項目可能會被跳過。這些項目的內容屬於公司機密,我僅列幾個:比如電源檢測,管腳DC檢測,測試邏輯(一般是JTAG)檢測,burn-in,物理連接PHY檢測,IP內部檢測(包括Scan,BIST,Function等),IP的IO檢測(比如DDR,SATA,PLL,PCIE,Display等),輔助功能檢測(比如熱力學特性,熔斷等)。
這些測試項都會給出Pass/Fail,根據這些Pass/Fail來分析晶片的體質,是測試工程師的工作。
SLT在邏輯上則簡單一些,把晶片安裝到主板上,配置好內存,外設,啟動一個作業系統,然後用軟體烤機測試,記錄結果並比較。另外還要檢測BIOS相關項等。
圖為測試廠房的布置
而所有的這些工作,都需要晶片設計工程師在流片之前都設計好。測試工作在晶片內是由專屬電路負責的,這部分電路的搭建由DFT工程師來做,在流片後,DFT工程師還要生成配套輸入矢量,一般會生成幾萬個。這些矢量是否能夠正常的檢測晶片的功能,需要產品開發工程師來保證。此外還需要測試工程師,產品工程師,和助手來一同保證每天能夠完成幾萬片晶片的生產任務不會因為測試邏輯bug而延遲。
考慮到每一次測試版本迭代都是幾十萬行的代碼,保證代碼不能出錯。需要涉及上百人的測試工程師協同工作,這還不算流水線技工,因此測試是費時費力的工作。實際上,很多大公司晶片的測試成本已經接近研發成本。
1、為什麼要進行晶片測試?
晶片複雜度越來越高,為了保證出廠的晶片沒有問題,需要在出廠前進行測試以確保功能完整性等。而晶片作為一個大規模生產的東西,大規模自動化測試是唯一的解決辦法,靠人工或者說benchtest是沒法完成這樣的任務的。
2、晶片測試在什麼環節進行?
晶片測試實際上是一個比較大的範疇,一般是從測試的對象上分為wafertest和finaltest,對象分別是尚未進行封裝的晶片,和已經封裝好的晶片。為啥要分兩段?簡單的說,因為封裝也是有cost的,為了儘可能的節約成本,可能會在晶片封裝前,先進行一部分的測試,以排除掉一些壞掉的晶片。而為了保證出廠的晶片都是沒問題的,finaltest也即FT測試是最後的一道攔截,也是必須的環節。
3、怎麼樣進行晶片測試?
這需要專業的ATE也即automatictestequipment。以finaltest為例,首先根據晶片的類型,比如automotive,MixedSignal,memory等不同類型,選擇適合的ATE機臺。在此基礎上,根據晶片的測試需求,(可能有專門的testspecification的文檔,或者乾脆讓測試工程師根據datasheet來設計testspec),做一個完整的testplan。在此基礎上,設計一個外圍電路loadboard,一般我們稱之為DIBorPIBorHIB,以連接ATE機臺的instrument和晶片本身。同時,需要進行test程序開發,根據每一個測試項,進行編程,操控instrument連接到晶片的引腳,給予特定的激勵條件,然後去捕捉晶片引腳的反應,例如給一個電信號,可以是特定的電流,電壓,或者是一個電壓波形,然後捕捉其反應。根據結果,判定這一個測試項是pass或者fail。在一系列的測試項結束以後,晶片是好還是不好,就有結果了。好的晶片會放到特定的地方,不好的根據fail的測試類型分別放到不同的地方。
所以樓主的問題裡,對於各種功能的測試,確實可能需要一行一行寫代碼來做測試開發,這也是我日常工作的一大部分。
晶片fail可以是下面幾個方面:
1.功能fail,某個功能點點沒有實現,這往往是設計上導致的,通常是在設計階段前仿真來對功能進行驗證來保證,所以通常設計一塊晶片,仿真驗證會佔用大約80%的時間
2.性能fail,某個性能指標要求沒有過關,比如2G的cpu只能跑到1.5G,數模轉換器在要求的轉換速度和帶寬的條件下有效位數enob要達到12位,卻只有10位,以及lna的noise figure指標不達標等等。這種問題通常是由兩方面的問題導致的,一個是前期在設計系統時就沒做足餘量,一個就是物理實現版圖太爛。這類問題通常是用後仿真來進行驗證的。
3.生產導致的fail。這個問題出現的原因就要提到單晶矽的生產了。學過半導體物理的都知道單晶矽是規整的面心立方結構,它有好幾個晶向,通常我們生長單晶是是按照111晶向進行提拉生長。但是由於各種外界因素,比如溫度,提拉速度,以及量子力學的各種隨機性,導致生長過程中會出現錯位,這個就稱為缺陷。缺陷產生還有一個原因就是離子注入導致的,即使退火也未能校正過來的非規整結構。這些存在於半導體中的問題,會導致器件的失效,進而影響整個晶片。所以為了在生產後能夠揪出失效或者半失效的晶片,就會在設計時加入專門的測試電路,比如模擬裡面的testmux,數字裡面的scan chain(測邏輯),mbist(測存儲),boundry scan(測io及binding),來保證交付到客戶手上的都是ok的晶片。而那些失效或半失效的產品要麼廢棄,要麼進行閹割後以低端產品賣出。這個就叫做dft測試。通常dft測試會按照需求在封裝前或封裝後進行測試,工廠裡有專門的ate測試機臺,用探針來連接測試的io進行dft測試。通常dft測試不會測試功能,因為這貨是按時間收錢的..測試用例越簡潔有效越好。而且用例太複雜,會影響出貨速度,比如出100w的貨,一塊晶片測試一秒,單dft測試24小時不停就要11天多。
4、一般的晶片測試都包含哪些測試類型?
一般來說,包括引腳連通性測試,漏電流測試,一些DC(directcurrent)測試,功能測試(functionaltest),Trimtest,根據晶片類型還會有一些其他的測試,例如AD/DA會有專門的一些測試類型。
晶片測試的目的是在找出沒問題的晶片的同時儘量節約成本,所以,容易檢測或者比較普遍的缺陷類型會先檢測。一般來講,首先會做的是連通性測試,我們稱之為continuitytest。這是檢查每個引腳的連通性是否正常。