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