0 引言
隨著集成電路的發(fā)展,越來越多的ASIC和SoC開始使用嵌入式SRAM來完成數(shù)據(jù)的片上存取功能。但嵌入式SRAM的高密集性物理結(jié)構(gòu)使得它很容易在生產(chǎn)過程中產(chǎn)生物理故障而影響芯片的良率,所以,SRAM的測試設計顯得尤為重要。對于單片或者數(shù)量很小的幾片嵌入式SRAM,常用的測試方法是通過存儲器內(nèi)建自測試MBIST來完成,實現(xiàn)時只需要通過EDA軟件選取相應的算法,并給每片SRAM生成MBIST控制邏輯。但現(xiàn)實中,大型ASIC和SoC設計常常需要使用很多片SRAM,簡單采用這種MBIST方法會生成很多塊MBIST控制邏輯,從而增大芯片面積,增加芯片功耗,甚至加長芯片測試時間。
本文基于MBIST的一般測試方法來對多片SRAM的可測試設計進行優(yōu)化,提出了一種通過一個MBIST控制邏輯來實現(xiàn)多片SRAM的MBIST測試的優(yōu)化方法。
1 MBIST介紹
MBIST意即存儲器內(nèi)建自測試(Memory Build In Self Test),是目前業(yè)界用來測試存儲器的一種常見方法,其原理是通過多次反復讀寫SRAM來確定其是否存在制造中的缺陷。MBIST的EDA工具可針對內(nèi)嵌存儲器自動創(chuàng)建BIST邏輯,它支持多種測試算法的自動實現(xiàn)(常用算法為March C+),并可完成BIST邏輯與存儲器的連接。此外,MBIST結(jié)構(gòu)中還可包括故障自動診斷功能,方便故障定位和特定測試向量的開發(fā)。MB-IST的基本結(jié)構(gòu)如圖1所示。
整個SRAM和MBIST控制邏輯構(gòu)成的整體只是在原有SRAM端口的基礎上增加了復位信號rst_n和bist_start信號(為高表示開始測試)兩個輸入信號,同時增加了test_done(為高表示測試完成)、fail_h(為高表示出現(xiàn)故障)、addr_er(fail_h為高時輸出的故障地址有效)等三個輸出信號。
2 多片SRAM的MBIST測試結(jié)構(gòu)
基于SMIC 0.13um工藝的OSD (On Screen Display)顯示芯片需嵌入地址位寬為8-bit、數(shù)據(jù)位寬為512-bit。即大小為256x512bit的SRAM來存儲大量的客戶定制字符。由于Artisan的SPSRAM Generator支持的SRAM模型的最大數(shù)據(jù)位寬為64 bit,故可通過8片大小為256×64 bit的SRAM來實現(xiàn)。
利用Mentor公司的MBIST Architect選取March3算法可產(chǎn)生兩種MBIST結(jié)構(gòu)。其一為每片256x64 bit的SRAM各生成一套MBIST邏輯,以構(gòu)建MBIST并行結(jié)構(gòu),圖2所示為其并行結(jié)構(gòu)示意圖。該方法可對所有MBIST的test_done(完成標志)進行“與”操作,以保證所有SRAM都測試結(jié)束;fail_h(失效標志)可進行“或”操作來實現(xiàn)(高有效),只要有一個SRAM出現(xiàn)故障即停止測試,否則表明所有SRAM測試都通過。
第二種方法是針對256×64bit大小的SRAM只生成一套MBIST,然后通過附加的狀態(tài)機和數(shù)字邏輯來對多片SRAM逐一進行測試,即構(gòu)建如圖3所示的MBIST串行結(jié)構(gòu)。當所測的某一個SRAM出現(xiàn)故障即停止測試,若所有SRAM測試結(jié)束都未有error信號輸出,則表明所有SRAM測試均通過。
3 結(jié)果比較
對于串行MBIST結(jié)構(gòu),在前端設計時需要考慮到所有SRAM的大小等情況,而多數(shù)設計中,嵌入的SRAM大小各不相同,所以,前端實現(xiàn)較復雜;復用同一套MBIST結(jié)構(gòu)(如激勵產(chǎn)生結(jié)構(gòu)和比較電路等)雖然節(jié)省面積,但為了有利于時序收斂及繞線,往往需要SRAM靠近與之有邏輯關(guān)系的功能單元,但這會對芯片整體物理版圖的設計帶來一定束縛;SRAM數(shù)量較大時,逐一測試顯然能使功耗降到最低,但可能導致測試時間增長,測試成本上升。
對于并行MBIST結(jié)構(gòu),由于SRAM各成體系,互不相擾,前后端實現(xiàn)都很容易,芯片測試時間短,但較之串行MBIST結(jié)構(gòu),則會增加芯片面積和功耗,而且其功耗還有可能超過電源網(wǎng)供電容限而導致芯片燒掉;
兩種實現(xiàn)方法的結(jié)果比較如表1所列。
基于表1,該OSD芯片應采用并行MBIST結(jié)構(gòu)。對多個不同大小的SRAM MBIST架構(gòu),采用串行MBIST結(jié)構(gòu)可以大幅降低面積與功耗,但無論對于串測還是并測來說,隨著數(shù)據(jù)位寬較大的SRAM (如位寬64 bit)數(shù)量的增多,與SRAM直接相連的邏輯會顯著影響掃描測試的覆蓋率。
4 MBIST對掃描測試覆蓋率的影響
DFT設計有可控制性和可觀測性兩個基本原則,即對DFT設計要求所有輸入邏輯是可控的和輸出邏輯是可測的。不可控邏輯和不可測邏輯對測試覆蓋率提出了很大的挑戰(zhàn)。通??梢酝ㄟ^適當添加測試點的方式,使原來不可控和不可測的邏輯變化反映到掃描鏈上,使之變得間接可控和可觀測,以提高整個芯片的測試覆蓋率和測試效率。
Svnopsys公司的TetraMAX ATPG定義的故障覆蓋率(fault coverage)如下:
若測試覆蓋率較低,首先應分析DRC(design rule constraint)Violations,并盡量消除DRCViolations。再分析AU(ATPG untestable)報告,減少AU的數(shù)量。按照模塊層次來報告測試覆蓋率時,應找到覆蓋率低的模塊重點分析。該項目的AU報告中和RAM有關(guān)的部分占了很大一部分。RAM自測試模塊的測試覆蓋率只有6%。分析工具把RAM當做black box,由于這些SRAM的數(shù)據(jù)位很寬,故SRAM數(shù)據(jù)端口不可控和不可測的邏輯(稱為陰影邏輯)更多,芯片的測試覆蓋率也更低。給RAM加旁路(bypass)邏輯,測試模式下將輸入和輸出連起來,可使原來不可控和不可觀測的邏輯變化反映到掃描鏈上,使之變得間接可控和可觀測,從而提高整個芯片的測試覆蓋率。RAM的輸入比輸出多,故可用XOR連接。對于XOR/XNOR門,為了將故障響應從它的一個輸入傳播到它的輸出,可根據(jù)方便程度設置所有其他的輸入為0或1。而對于AND/NAND門,為了將系統(tǒng)的故障響應從它的一個輸入傳播到它的輸出,則必須通過將其他輸入設置為l來實現(xiàn),其中“l”對于AND/NAND門是一個非控制值。同理,“0”對于OR/NOR門也是一個非控制值。圖4所示是旁路RAM的電路示意圖。圖中,多路選擇器由test_mode信號控制,與RAM的輸入輸出連接的邏輯可測,RAM模塊的測試覆蓋率可提高到98.3%,相應的整個芯片的測試覆蓋率提高了4個百分點。
由此可見,MBIST結(jié)構(gòu)可直接實例化地用在數(shù)字設計部分。該系統(tǒng)的功能邏輯部分含有萬余寄存器,為了提高測試覆蓋率添,加幾個寄存器及很少組合邏輯作為測試點后,即可將測試覆蓋率提高且不會增加太大的面積開銷,因而這種方法是很有效率的。如果前期設計時就能考慮這種測試結(jié)構(gòu),DFT設計過程中就會減少反復,減少測試設計周期。
5 結(jié)束語
本文基于一個實際項目,分別用常用的并行與串行兩種方式來實現(xiàn)MBIST的構(gòu)架,并對其開銷進行了定量與定性討論,結(jié)果是對于不同的設計,應當靈活構(gòu)建測試結(jié)構(gòu)以達到設計目的。對于在嵌入式存儲器數(shù)量較少,位寬較小的情況下,MBIST對掃描測試覆蓋率的影響并不明顯,易被人們忽視,一旦這種影響顯著發(fā)生,比較高效的方法是插入旁路電路,這樣,在提高覆蓋率的同時也不會增加太大的面積開銷??梢?,對于一個嵌入多片SRAM的SOC進行DFT設計時。應從多維度靈活處理,折中考慮。