而所有的這些工作,都需要芯片設(shè)計工程師在流片之前都設(shè)計好。測試工作在芯片內(nèi)是由專屬電路負(fù)責(zé)的,這部分電路的搭建由DFT工程師來做,在流片后,DFT工程師還要生成配套輸入矢量,一般會生成幾萬個。這些矢量是否能夠正常的檢測芯片的功能,需要產(chǎn)品開發(fā)工程師來保證。此外還需要測試工程師,產(chǎn)品工程師,和助手來一同保證每天能夠完成幾萬片芯片的生產(chǎn)任務(wù)不會因為測試邏輯bug而延遲。
考慮到每一次測試版本迭代都是幾十萬行的代碼,保證代碼不能出錯。需要涉及上百人的測試工程師協(xié)同工作,這還不算流水線技工,因此測試是費時費力的工作。實際上,很多大公司芯片的測試成本已經(jīng)接近研發(fā)成本。
1、為什么要進(jìn)行芯片測試?
芯片復(fù)雜度越來越高,為了保證出廠的芯片沒有問題,需要在出廠前進(jìn)行測試以確保功能完整性等。而芯片作為一個大規(guī)模生產(chǎn)的東西,大規(guī)模自動化測試是唯一的解決辦法,靠人工或者說benchtest是沒法完成這樣的任務(wù)的。
2、芯片測試在什么環(huán)節(jié)進(jìn)行?
芯片測試實際上是一個比較大的范疇,一般是從測試的對象上分為wafertest和finaltest,對象分別是尚未進(jìn)行封裝的芯片,和已經(jīng)封裝好的芯片。為啥要分兩段?簡單的說,因為封裝也是有cost的,為了盡可能的節(jié)約成本,可能會在芯片封裝前,先進(jìn)行一部分的測試,以排除掉一些壞掉的芯片。而為了保證出廠的芯片都是沒問題的,finaltest也即FT測試是最后的一道攔截,也是必須的環(huán)節(jié)。
3、怎么樣進(jìn)行芯片測試?
這需要專業(yè)的ATE也即automaTIctestequipment。以finaltest為例,首先根據(jù)芯片的類型,比如automoTIve,MixedSignal,memory等不同類型,選擇適合的ATE機臺。在此基礎(chǔ)上,根據(jù)芯片的測試需求,(可能有專門的testspecificaTIon的文檔,或者干脆讓測試工程師根據(jù)datasheet來設(shè)計testspec),做一個完整的testplan。在此基礎(chǔ)上,設(shè)計一個外圍電路loadboard,一般我們稱之為DIBorPIBorHIB,以連接ATE機臺的instrument和芯片本身。同時,需要進(jìn)行test程序開發(fā),根據(jù)每一個測試項,進(jìn)行編程,操控instrument連接到芯片的引腳,給予特定的激勵條件,然后去捕捉芯片引腳的反應(yīng),例如給一個電信號,可以是特定的電流,電壓,或者是一個電壓波形,然后捕捉其反應(yīng)。根據(jù)結(jié)果,判定這一個測試項是pass或者fail。在一系列的測試項結(jié)束以后,芯片是好還是不好,就有結(jié)果了。好的芯片會放到特定的地方,不好的根據(jù)fail的測試類型分別放到不同的地方。
所以樓主的問題里,對于各種功能的測試,確實可能需要一行一行寫代碼來做測試開發(fā),這也是我日常工作的一大部分。
芯片fail可以是下面幾個方面:
1.功能fail,某個功能點點沒有實現(xiàn),這往往是設(shè)計上導(dǎo)致的,通常是在設(shè)計階段前仿真來對功能進(jìn)行驗證來保證,所以通常設(shè)計一塊芯片,仿真驗證會占用大約80%的時間
2.性能fail,某個性能指標(biāo)要求沒有過關(guān),比如2G的cpu只能跑到1.5G,數(shù)模轉(zhuǎn)換器在要求的轉(zhuǎn)換速度和帶寬的條件下有效位數(shù)enob要達(dá)到12位,卻只有10位,以及l(fā)na的noise figure指標(biāo)不達(dá)標(biāo)等等。這種問題通常是由兩方面的問題導(dǎo)致的,一個是前期在設(shè)計系統(tǒng)時就沒做足余量,一個就是物理實現(xiàn)版圖太爛。這類問題通常是用后仿真來進(jìn)行驗證的。
3.生產(chǎn)導(dǎo)致的fail。這個問題出現(xiàn)的原因就要提到單晶硅的生產(chǎn)了。學(xué)過半導(dǎo)體物理的都知道單晶硅是規(guī)整的面心立方結(jié)構(gòu),它有好幾個晶向,通常我們生長單晶是是按照111晶向進(jìn)行提拉生長。但是由于各種外界因素,比如溫度,提拉速度,以及量子力學(xué)的各種隨機性,導(dǎo)致生長過程中會出現(xiàn)錯位,這個就稱為缺陷。缺陷產(chǎn)生還有一個原因就是離子注入導(dǎo)致的,即使退火也未能校正過來的非規(guī)整結(jié)構(gòu)。這些存在于半導(dǎo)體中的問題,會導(dǎo)致器件的失效,進(jìn)而影響整個芯片。所以為了在生產(chǎn)后能夠揪出失效或者半失效的芯片,就會在設(shè)計時加入專門的測試電路,比如模擬里面的testmux,數(shù)字里面的scan chain(測邏輯),mbist(測存儲),boundry scan(測io及binding),來保證交付到客戶手上的都是ok的芯片。而那些失效或半失效的產(chǎn)品要么廢棄,要么進(jìn)行閹割后以低端產(chǎn)品賣出。這個就叫做dft測試。通常dft測試會按照需求在封裝前或封裝后進(jìn)行測試,工廠里有專門的ate測試機臺,用探針來連接測試的io進(jìn)行dft測試。通常dft測試不會測試功能,因為這貨是按時間收錢的..測試用例越簡潔有效越好。而且用例太復(fù)雜,會影響出貨速度,比如出100w的貨,一塊芯片測試一秒,單dft測試24小時不停就要11天多。