【導(dǎo)讀】隨著半導(dǎo)體工藝不斷地進(jìn)步,那些原本存在芯片中的大型存儲器會轉(zhuǎn)變成數(shù)十或數(shù)百個小型的存儲器陣列,并且散布在芯片中各個角落。針對這種類型的小型陣列,如果想要偵測出與速度相關(guān)的瑕疵以及固定邏輯(stuck-at)故障,其實并不是一件容易的事。
傳統(tǒng)上,測試數(shù)字集成電路可以采用功能性向量,或是由自動測試向量生成(ATPG)工具所產(chǎn)生的向量。此類軟件工具主要為隨機(jī)邏輯生成基于掃描的測試向量,對于待測組件(DUT)的存儲器部分,卻無法提供測試方案。得依賴存儲器內(nèi)建自測試(BIST)的方法來測試寄存器。
尤其是那些采用先進(jìn)工藝的存儲器陣列,存在著許多難以預(yù)測的潛在瑕疵。傳統(tǒng)的存儲器BIST方案會利用March或其它算法重復(fù)簡單的測試序列來偵測大部分的寄存器故障。在一種存儲器BIST方法中,DUT中的狀態(tài)機(jī)自身能產(chǎn)生和分析那些測試存儲器中的每一個地址所需用到的測試向量,免去了外部 ATE機(jī)的測試工作。另一種方法,則是讓片上處理器來測試存儲器,其缺點(diǎn)在于通常得等到DUT設(shè)計接近完成的時候,才能判斷出這種方法的有效性。
由于會影響芯片的面積與性能,小型存儲器陣列通常并不適合增加存儲器BIST邏輯。那些地址空間很少但端口很多的存儲器尤其不適合BIST。因為相對于陣列大小,存儲器端口數(shù)量對BIST控制電路規(guī)模的影響更大,所以,可能導(dǎo)致實現(xiàn)BIST控制電路所需的門數(shù)甚至?xí)痛鎯ζ鞅旧硪粯哟?。同時,BIST還要求所有存儲器的輸入引腳都有一個多路選擇器來選擇BIST信號與系統(tǒng)信號。對多端口存儲器而言,多路選擇電路會引起布線擁擠,并且導(dǎo)致性能的嚴(yán)重下降。
圖1:宏測試采用向量轉(zhuǎn)換的技術(shù)
圖1 宏測試采用向量轉(zhuǎn)換的技術(shù),在掃描單元與內(nèi)部宏單元,如嵌入式存儲器陣列之間傳遞測試向量。
嵌入式存儲器測試方案
考慮到BIST對小型存儲器陣列造成的負(fù)面影響,一個簡單的選擇便是不去測試 — 但用戶極有可能會收到瑕疵品。或者,在辦公室里花更多的時間,為每一個存儲器陣列,手工生成完成測試算法所需的向量。好在還有一種更有效的選擇 ─ 那就是利用ATPG工具和待測組件的掃描儀單元,在每一個嵌入式存儲器的輸入端生成測試向量,并從輸出端得到響應(yīng)。這項新技術(shù),有時候被稱為“向量轉(zhuǎn)換”,或者是“宏測試”(macro testing)(見圖1)。如此一來,工程師便可以運(yùn)用一組宏向量序列,來測試獨(dú)立的嵌入式模塊(也可以稱之為宏)。一些EDA 公司可以提供有此功能的軟件工具。這些工具可以把那些為獨(dú)立的嵌入式存儲器(宏模塊) 所設(shè)計的宏向量自動轉(zhuǎn)化成芯片級掃描向量,并把結(jié)果傳送到掃描單元,供作驗證之用。
宏測試完成嵌入式模塊所需的測試不需要附加測試邏輯電路。其次,最終的嵌入式存儲器掃描向量還可以像標(biāo)準(zhǔn)的阻塞掃描向量一樣,具有簡單的測試協(xié)議,因此能夠減少在產(chǎn)品測試機(jī)臺上向量的調(diào)試時間。有些公司應(yīng)用宏測試技術(shù)平行測試100多個存儲器。如此一來,宏測試掃描向量也不過是與最長的向量長度相同。這項技術(shù)可用于測試任何嵌入式模塊,即便是所謂的“黑盒子”(black box)。只要在模塊的I/O端定義向量,那么這些向量便可以傳遞通過外圍的邏輯電路。
圖2:流水線處理能夠讓連續(xù)的讀/寫操作在連續(xù)的時鐘周期內(nèi)完成
圖2 流水線處理能夠讓連續(xù)的讀/寫操作在連續(xù)的時鐘周期內(nèi)完成,提供全速存儲器BIST功能。
嵌入式存儲器中的時序故障
如同一般的隨機(jī)邏輯,嵌入式存儲器也需要測試靜態(tài)故障和“實速”(at-speed)故障。由于存儲器BIST通常在系統(tǒng)時鐘下運(yùn)行,因此也被稱之為實速存儲器BIST。然而,即使BIST控制邏輯利用系統(tǒng)時鐘來設(shè)定測試序列,卻需要數(shù)個時序周期去完成單獨(dú)的讀/寫操作。因此,實速存儲器BIST電路雖然采用系統(tǒng)時鐘頻率,其實并無法如同芯片在正常模式運(yùn)作下那樣,執(zhí)行讀寫周期。運(yùn)用流水線(pipelining)讀寫操作,則可產(chǎn)生較為有效的測試,稱之為“全速”(full-speed) 存儲器BIST(見圖2)。簡言之,便是在連續(xù)的時鐘周期里,執(zhí)行連續(xù)(back-to-back)的讀寫操作,如同在正常系統(tǒng)操作模式下的存儲器一般。
對于大型存儲器而言,測試那些與速度相關(guān)的故障時,全速存儲器BIST其實是個不錯的選擇。但是對于小型或時序要求很高的存儲器而言,同樣的測試方法可能會有問題。宏測試工具要把每組功能性向量轉(zhuǎn)換成掃描向量,所以每組向量的測試速度則必然變慢。不僅如此,有些嵌入式存儲器完全同步,并使用與掃描鏈相同的時鐘信號。當(dāng)時鐘信號觸發(fā)其模塊時,掃描單元上先前的設(shè)定值便會被新值所取代。如此一來,便無法傳遞模塊輸出端的期待值。因此,傳統(tǒng)的宏測試方式無法適用于不具有門控時鐘的同步存儲器。
不過,同步宏測試可以解決這個問題。簡言之,便是執(zhí)行連續(xù)的全速測試,而不需要重復(fù)載入掃描鏈。同步宏測試會決定掃描單元上用來產(chǎn)生第一個宏向量的值,并載入掃描鏈。同時,也會決定用來產(chǎn)生第二個宏向量的值,并且在掃描單元的輸入端以管道方式傳輸。當(dāng)掃描鏈被載入時,不同的時鐘信號即可以實速觸發(fā)。如此一來,好幾組的全速向量便被傳送到模塊。全速測試可以不受干擾地應(yīng)用于設(shè)計中的幾乎任一模塊。不僅如此,全速測試只用到功能邏輯電路,而非測試邏輯電路,因此,可以執(zhí)行更接近實際狀況的全速測試。
結(jié)語
在實際測試中總是得面臨測試工具的成本,測試開發(fā)時間,測試機(jī)臺的時間,測試向量的調(diào)試時間,以及測試覆蓋率之間的考量與抉擇。宏測試是可以有效地對那些與日俱增的小型嵌入式模塊進(jìn)行靜態(tài)與實速故障測試的工具。它甚至可以應(yīng)用到較大的存儲器,透過芯片的功能邏輯,自動執(zhí)行全速測試。