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