單向雙端口SRAM的測(cè)試算法
單向雙端口SRAM是一種專用的存儲(chǔ)器,它具有獨(dú)立的寫地址總線和讀地址總線,不僅可以實(shí)現(xiàn)單端口的讀寫,還可以對(duì)不同地址的存儲(chǔ)單元進(jìn)行同時(shí)讀寫操作,提高了SRAM的性能。本文分析了單向雙端口SRAM的失效模式,并描述了相應(yīng)的基于字的檢測(cè)算法。
存儲(chǔ)器模型
圖1表示了3×3的單向雙端口SRAM模塊的結(jié)構(gòu)示意圖,輸入為讀地址總線、寫地址總線和輸入數(shù)據(jù)總線,輸出為輸出數(shù)據(jù)總線。每一個(gè)存儲(chǔ)單元都有四個(gè)端口,分別是數(shù)據(jù)寫入(BW),數(shù)據(jù)讀出(BR),寫地址端口(WA)和讀地址端口(RA)。在這種結(jié)構(gòu)中,同一列單元的數(shù)據(jù)寫入端和讀出端連到總線上,輸出采用了線與的方式。對(duì)于字長(zhǎng)大于1的存儲(chǔ)器來說,讀地址和寫地址一次選中一行,一行中所有的存儲(chǔ)單元 組成字,讀寫都是基于字的操作。由于讀寫總線分離,可以通過讀地址和寫地址選中不同的字,實(shí)現(xiàn)同時(shí)讀寫。
失效模型
存儲(chǔ)器的失效表現(xiàn)為單元不能被正確地寫入和讀出,失效模型表示引起失效的原因。設(shè)計(jì)不當(dāng)、制造工藝引入的缺陷和硅片上的點(diǎn)缺陷都會(huì)引起存儲(chǔ)器的失效。失效使電路的結(jié)構(gòu)發(fā)生變化,通過模擬分析出電路失效行為,上升到功能級(jí),總結(jié)出功能失效模型。單向雙端口SRAM的失效模型可以分為單元失效,單元耦合失效,地址譯碼失效,同時(shí)讀寫失效和復(fù)合失效。
單個(gè)存儲(chǔ)單元失效
固定0/1失效(SAF),單元存儲(chǔ)值固定為0/1。固定開路失效(SOF),單元不能被讀寫,由于輸出線與,讀出數(shù)據(jù)為固定值。轉(zhuǎn)換失效(TF),單元存儲(chǔ)值不能由0 變?yōu)?,或由1變?yōu)?。
存儲(chǔ)單元間的失效
對(duì)一個(gè)單元的讀寫操作改變了另一單元存儲(chǔ)值,稱為耦合失效(CF),兩個(gè)單元分別被稱為耦合單元和被耦合單元。相鄰單元,同一行和同一列單元更易于發(fā)生耦合失效。由于讀寫是基于字的操作,耦合失效又可以分為字間耦合失效和字內(nèi)耦合失效。
地址譯碼失效
地址譯碼失效(AF)包括了四種情況:1. 對(duì)某一地址,沒有單元被存??;2. 對(duì)某一單元,沒有地址可以對(duì)其存??;3. 對(duì)某一地址,多個(gè)單元被同時(shí)存??;4. 對(duì)某一單元,同時(shí)被多個(gè)地址存取。由這四種失效子模式組合引起的失效可以等效成固定0/1
失效和單元耦合失效。
同時(shí)讀寫失效
由于同時(shí)讀寫操作的相互影響,導(dǎo)致寫入或讀出錯(cuò)誤的值而引起的失效。
復(fù)合失效
多個(gè)耦合失效,或耦合失效和地址譯碼失效復(fù)合在一起。復(fù)合失效可以相互掩蓋而可能通過檢測(cè),必須合理地選擇測(cè)試算法,以小的測(cè)試復(fù)雜度,達(dá)到大的失效覆蓋率。
單向雙端口SRAM的檢測(cè)算法
目前對(duì)存儲(chǔ)器的檢測(cè)算法主要基于功能級(jí)的失效模型,測(cè)試算法必須滿足失效發(fā)生的條件,通過寫入或讀出測(cè)試向量激活失效,并通過讀操作檢測(cè)出來。當(dāng)讀出值與預(yù)期值不同時(shí),可以判定存儲(chǔ)器失效。
隊(duì)列測(cè)試方法具有測(cè)試時(shí)間短、結(jié)構(gòu)簡(jiǎn)單、易于用自檢測(cè)電路實(shí)現(xiàn)而被普遍采用。它包含了一組測(cè)試元素,時(shí)間復(fù)雜度為O (n),n表示存儲(chǔ)單元的容量。以MATS+法為例,表示方法為{ (Write0)m1;( read0,Write1)m2;( read1,Write0)m3},包括了3組測(cè)試元素M1、M2、M3,其中T ( read1,Write0)表示以地址遞減的順序?qū)γ恳粋€(gè)單元進(jìn)行讀1和寫0操作,總的時(shí)間復(fù)雜度為5n。
由于讀寫操作都是基于字的,因此采用基于字的檢測(cè)方法,把失效檢測(cè)劃分成三部分,字間失效檢測(cè)、字內(nèi)失效檢測(cè)和同時(shí)讀寫失效檢 測(cè)。下面以3位字長(zhǎng)的單向雙端口存儲(chǔ)器為例來說明測(cè)試算法。
字間失效檢測(cè)
字間檢測(cè)采用傳統(tǒng)的隊(duì)列測(cè)試算法,March C+算法覆蓋了固定0/1失效,固定開路失效和轉(zhuǎn)換失效,地址失效和字間耦合失效,基于字的MarchC+算法表示為:
時(shí)間復(fù)雜度為14B,B為存儲(chǔ)器字的容量。
字內(nèi)失效檢測(cè)
字內(nèi)檢測(cè)針對(duì)字內(nèi)各存儲(chǔ)位之間的耦合失效,考慮字內(nèi)任意一位會(huì)受到兩側(cè)相鄰位的耦合,可以構(gòu)造出圖2中的狀態(tài)圖。圖2覆蓋了所有的狀態(tài)和相鄰位之間的耦合失效,圓圈表示相鄰三位的狀態(tài),連線上的符號(hào)表示由狀態(tài)轉(zhuǎn)換引起的失效類型,以〈W1,W1:↓〉為例,表示了對(duì)兩側(cè)相鄰位寫入1時(shí)置中間位為0,則時(shí)寫入111并讀出可以檢測(cè)這一失效。因此,對(duì)相鄰三位執(zhí)行下列操作序列,
Write000,Write111,read111,read111,Write000,read000,read000,
Write001,Write110,read110,read110,Write001,read001,read001,
Write010,Write101,read101,read101,Write010,read010,read010,
Write011,Write100,read100,read100,Write011,read011,read011,
可以檢測(cè)出相鄰位之間的耦合失效。在測(cè)試序列中包括了兩次連續(xù)的讀出,第一次讀出檢測(cè)由前一次寫操作引起的失效,第二次讀出檢測(cè)由第一次讀出引起的失效。
將上述的檢測(cè)序列轉(zhuǎn)化成隊(duì)列測(cè)試的形式,得到如下的結(jié)果:
時(shí)間復(fù)雜度為35B,B為存儲(chǔ)器字的容量。字內(nèi)失效檢測(cè)算法和字間失效檢測(cè)算法包含了相同的測(cè)試元素,因此對(duì)兩種算法進(jìn)行合并,在失效覆蓋率相同的情況下,減小測(cè)試的時(shí)間復(fù)雜度??梢缘玫饺缦陆Y(jié)果:
時(shí)間復(fù)雜度為41B,B為存儲(chǔ)器字的容量。
同時(shí)讀寫失效檢測(cè)
單向雙端口存儲(chǔ)器允許同時(shí)讀寫不同單元。假定這種失效模型僅僅在相鄰的字間發(fā)生,檢測(cè)同時(shí)讀寫失效的測(cè)試算法為:
表示對(duì)當(dāng)前地址寫入111,同時(shí)對(duì)下一地址讀出000。通過對(duì)相鄰單元分別寫入和讀出,判定這種操作方式是否會(huì)引起失效。時(shí)間復(fù)雜度為10B,B為存儲(chǔ)器字的容量。
與傳統(tǒng)測(cè)試算法的比較
以上以3位字長(zhǎng)為例,介紹了單向雙端口存儲(chǔ)器的檢測(cè)方法,包括了字間失效的檢測(cè)、字內(nèi)失效的檢測(cè)和同時(shí)讀寫失效的檢測(cè),總的時(shí)間復(fù)雜 度為51B。對(duì)于由任意位組成的字,可以對(duì)上述算法中的3位測(cè)試向量拓展成相應(yīng)字長(zhǎng)的測(cè)試向量,測(cè)試的時(shí)間復(fù)雜度不變。上述算法中對(duì)字間失效和字內(nèi)失效的測(cè)試時(shí)間復(fù)雜度為41B,傳統(tǒng)的測(cè)試方法采用了March C+算法檢測(cè),使用多個(gè)不同的測(cè)試向量,如0000,0101,0011等,實(shí)現(xiàn)對(duì)字間失效和字內(nèi)失效的檢測(cè),這種測(cè)試方法不能保證對(duì)字內(nèi)失效檢測(cè)的覆蓋率,March C+測(cè)試算法的時(shí)間復(fù)雜度為14B,因此當(dāng)使用的測(cè)試向量大于3個(gè)時(shí),測(cè)試的時(shí)間復(fù)雜度將大于上述針對(duì)字間失效和字內(nèi)失效設(shè)計(jì)的測(cè)試算法。
結(jié) 論
分析了單向雙端口SRAM的失效,描述了基于字的隊(duì)列檢測(cè)算法,可以有效地檢測(cè)字間失效、字內(nèi)失效和同時(shí)讀寫失效,具有失效覆蓋率高和測(cè)試時(shí)間復(fù)雜度低的優(yōu)點(diǎn)。
評(píng)論