芯片測試的目的是快速了解它的體質(zhì)。對大公司來說,這是需要幾千名員工協(xié)作的工作。大公司的每日流水的芯片就有幾萬片,測試的壓力是非常大。當(dāng)芯片被晶圓廠制作出來后,就會進(jìn)入WaferTest的階段。這個階段的測試可能在晶圓廠內(nèi)進(jìn)行,也可能送往附近的測試廠商代理執(zhí)行。生產(chǎn)工程師會使用自動測試儀器(ATE)運(yùn)行芯片設(shè)計(jì)方給出的程序,粗暴的把芯片分成好的/壞的這兩部分,壞的會直接被舍棄,如果這個階段壞片過多,基本會認(rèn)為是晶圓廠自身的良品率低下。如果良品率低到某一個數(shù)值之下,晶圓廠需要賠錢。
WT的測試結(jié)果多用這樣的圖表示:
通過了WaferTest后,晶圓會被切割。切割后的芯片按照之前的結(jié)果分類。只有好的芯片會被送去封裝廠封裝。封裝的地點(diǎn)一般就在晶圓廠附近,這是因?yàn)槲捶庋b的芯片無法長距離運(yùn)輸。封裝的類型看客戶的需要,有的需要球形BGA,有的需要針腳,總之這一步很簡單,故障也較少。由于封裝的成功率遠(yuǎn)大于芯片的生產(chǎn)良品率,因此封裝后不會測試。
封裝之后,芯片會被送往各大公司的測試工廠,也叫生產(chǎn)工廠。并且進(jìn)行FinalTest。生產(chǎn)工廠內(nèi)實(shí)際上有十幾個流程,F(xiàn)inalTest只是第一步。在FinalTest后,還需要分類,刻字,檢查封裝,包裝等步驟。然后就可以出貨到市場。
FinalTest是工廠的重點(diǎn),需要大量的機(jī)械和自動化設(shè)備。它的目的是把芯片嚴(yán)格分類。以Intel的處理器來舉例,在FinalTest中可能出現(xiàn)這些現(xiàn)象:
1.雖然通過了WaferTest,但是芯片仍然是壞的。
2.封裝損壞。
3.芯片部分損壞。比如CPU有2個核心損壞,或者GPU損壞,或者顯示接口損壞等
4.芯片是好的,沒有故障
這時,工程師需要和市場部一起決定,該如何將這些芯片分類。打比方說,GPU壞了的,可以當(dāng)做無顯示核心的“賽揚(yáng)”系列處理器。如果CPU壞了2個的,可以當(dāng)“酷睿i3”系列處理器。芯片工作正常,但是工作頻率不高的,可以當(dāng)“酷睿i5”系列處理器。一點(diǎn)問題都沒有的,可以當(dāng)“酷睿i7”處理器。
(上面這段僅是簡化說明“芯片測試的結(jié)果影響著產(chǎn)品最終的標(biāo)簽”這個過程,并不是說Intel的芯片量產(chǎn)流水線是上文描述的這樣。實(shí)際上Intel同時維持著多個產(chǎn)品流水線,i3和i7的芯片并非同一流水線上產(chǎn)品。)
那這里的FinalTest該怎樣做?
以處理器舉例,F(xiàn)inalTest可以分成兩個步驟:1。自動測試設(shè)備(ATE)。2。系統(tǒng)級別測試(SLT)。2號是必要項(xiàng)。1號一般小公司用不起。
ATE的測試一般需要幾秒,而SLT需要幾個小時。ATE的存在大大的減少了芯片測試時間。
ATE負(fù)責(zé)的項(xiàng)目非常之多,而且有很強(qiáng)的邏輯關(guān)聯(lián)性。測試必須按順序進(jìn)行,針對前列的測試結(jié)果,后列的測試項(xiàng)目可能會被跳過。這些項(xiàng)目的內(nèi)容屬于公司機(jī)密,我僅列幾個:比如電源檢測,管腳DC檢測,測試邏輯(一般是JTAG)檢測,burn-in,物理連接PHY檢測,IP內(nèi)部檢測(包括Scan,BIST,F(xiàn)unction等),IP的IO檢測(比如DDR,SATA,PLL,PCIE,Display等),輔助功能檢測(比如熱力學(xué)特性,熔斷等)。
這些測試項(xiàng)都會給出Pass/Fail,根據(jù)這些Pass/Fail來分析芯片的體質(zhì),是測試工程師的工作。
SLT在邏輯上則簡單一些,把芯片安裝到主板上,配置好內(nèi)存,外設(shè),啟動一個操作系統(tǒng),然后用軟件烤機(jī)測試,記錄結(jié)果并比較。另外還要檢測BIOS相關(guān)項(xiàng)等。
圖為測試廠房的布置
而所有的這些工作,都需要芯片設(shè)計(jì)工程師在流片之前都設(shè)計(jì)好。測試工作在芯片內(nèi)是由專屬電路負(fù)責(zé)的,這部分電路的搭建由DFT工程師來做,在流片后,DFT工程師還要生成配套輸入矢量,一般會生成幾萬個。這些矢量是否能夠正常的檢測芯片的功能,需要產(chǎn)品開發(fā)工程師來保證。此外還需要測試工程師,產(chǎn)品工程師,和助手來一同保證每天能夠完成幾萬片芯片的生產(chǎn)任務(wù)不會因?yàn)闇y試邏輯bug而延遲。
考慮到每一次測試版本迭代都是幾十萬行的代碼,保證代碼不能出錯。需要涉及上百人的測試工程師協(xié)同工作,這還不算流水線技工,因此測試是費(fèi)時費(fèi)力的工作。實(shí)際上,很多大公司芯片的測試成本已經(jīng)接近研發(fā)成本。
1、為什么要進(jìn)行芯片測試?
芯片復(fù)雜度越來越高,為了保證出廠的芯片沒有問題,需要在出廠前進(jìn)行測試以確保功能完整性等。而芯片作為一個大規(guī)模生產(chǎn)的東西,大規(guī)模自動化測試是唯一的解決辦法,靠人工或者說benchtest是沒法完成這樣的任務(wù)的。
2、芯片測試在什么環(huán)節(jié)進(jìn)行?
芯片測試實(shí)際上是一個比較大的范疇,一般是從測試的對象上分為wafertest和finaltest,對象分別是尚未進(jìn)行封裝的芯片,和已經(jīng)封裝好的芯片。為啥要分兩段?簡單的說,因?yàn)榉庋b也是有cost的,為了盡可能的節(jié)約成本,可能會在芯片封裝前,先進(jìn)行一部分的測試,以排除掉一些壞掉的芯片。而為了保證出廠的芯片都是沒問題的,finaltest也即FT測試是最后的一道攔截,也是必須的環(huán)節(jié)。
3、怎么樣進(jìn)行芯片測試?
這需要專業(yè)的ATE也即automatictestequipment。以finaltest為例,首先根據(jù)芯片的類型,比如automotive,MixedSignal,memory等不同類型,選擇適合的ATE機(jī)臺。在此基礎(chǔ)上,根據(jù)芯片的測試需求,(可能有專門的testspecification的文檔,或者干脆讓測試工程師根據(jù)datasheet來設(shè)計(jì)testspec),做一個完整的testplan。在此基礎(chǔ)上,設(shè)計(jì)一個外圍電路loadboard,一般我們稱之為DIBorPIBorHIB,以連接ATE機(jī)臺的instrument和芯片本身。同時,需要進(jìn)行test程序開發(fā),根據(jù)每一個測試項(xiàng),進(jìn)行編程,操控instrument連接到芯片的引腳,給予特定的激勵條件,然后去捕捉芯片引腳的反應(yīng),例如給一個電信號,可以是特定的電流,電壓,或者是一個電壓波形,然后捕捉其反應(yīng)。根據(jù)結(jié)果,判定這一個測試項(xiàng)是pass或者fail。在一系列的測試項(xiàng)結(jié)束以后,芯片是好還是不好,就有結(jié)果了。好的芯片會放到特定的地方,不好的根據(jù)fail的測試類型分別放到不同的地方。
所以樓主的問題里,對于各種功能的測試,確實(shí)可能需要一行一行寫代碼來做測試開發(fā),這也是我日常工作的一大部分。
4、一般的芯片測試都包含哪些測試類型?
一般來說,包括引腳連通性測試,漏電流測試,一些DC(directcurrent)測試,功能測試(functionaltest),Trimtest,根據(jù)芯片類型還會有一些其他的測試,例如AD/DA會有專門的一些測試類型。
芯片測試的目的是在找出沒問題的芯片的同時盡量節(jié)約成本,所以,容易檢測或者比較普遍的缺陷類型會先檢測。一般來講,首先會做的是連通性測試,我們稱之為continuitytest。這是檢查每個引腳的連通性是否正常。