Improving Memory Repair by Selective Row Partitioning

Similar documents
Exploiting Unused Spare Columns to Improve Memory ECC

Built-in Self-Test and Repair (BISTR) Techniques for Embedded RAMs

AN OPTIMAL APPROACH FOR TESTING EMBEDDED MEMORIES IN SOCS

Scalable Controller Based PMBIST Design For Memory Testability M. Kiran Kumar, G. Sai Thirumal, B. Nagaveni M.Tech (VLSI DESIGN)

Post-Manufacturing ECC Customization Based on Orthogonal Latin Square Codes and Its Application to Ultra-Low Power Caches

Static Compaction Techniques to Control Scan Vector Power Dissipation

RE-CONFIGURABLE BUILT IN SELF REPAIR AND REDUNDANCY MECHANISM FOR RAM S IN SOCS Ravichander Bogam 1, M.Srinivasa Reddy 2 1

Scan-Based BIST Diagnosis Using an Embedded Processor

Efficient Algorithm for Test Vector Decompression Using an Embedded Processor

A Proposed RAISIN for BISR for RAM s with 2D Redundancy

An Integrated ECC and BISR Scheme for Error Correction in Memory

An Integrated ECC and Redundancy Repair Scheme for Memory Reliability Enhancement

An Area-Efficient BIRA With 1-D Spare Segments

3D Memory Formed of Unrepairable Memory Dice and Spare Layer

Block Sparse and Addressing for Memory BIST Application

Near Optimal Repair Rate Built-in Redundancy Analysis with Very Small Hardware Overhead

A Review paper on the Memory Built-In Self-Repair with Redundancy Logic

Reliability of Memory Storage System Using Decimal Matrix Code and Meta-Cure

DESIGN OF PARAMETER EXTRACTOR IN LOW POWER PRECOMPUTATION BASED CONTENT ADDRESSABLE MEMORY

Designing a Fast and Adaptive Error Correction Scheme for Increasing the Lifetime of Phase Change Memories

Optimized Built-In Self-Repair for Multiple Memories

POWERFUL BISR DESIGN FOR EMBEDDED SRAM WITH SELECTABLE REDUNDANCY

Efficient Built In Self Repair Strategy for Embedded SRAM with selectable redundancy

Design and Implementation of Microcode based Built-in Self-Test for Fault Detection in Memory and its Repair

Built-in Self-repair Mechanism for Embedded Memories using Totally Self-checking Logic

An Integrated Built-in Test and Repair Approach for Memories with 2D Redundancy

WITH integrated circuits, especially system-on-chip

Reducing Control Bit Overhead for X-Masking/X-Canceling Hybrid Architecture via Pattern Partitioning

Improving Logic Obfuscation via Logic Cone Analysis

Adaptive Techniques for Improving Delay Fault Diagnosis

Low Power Cache Design. Angel Chen Joe Gambino

FPGA Implementation of Double Error Correction Orthogonal Latin Squares Codes

Efficiently Utilizing ATE Vector Repeat for Compression by Scan Vector Decomposition

GLOBAL JOURNAL OF ENGINEERING SCIENCE AND RESEARCHES A NOVAL BISR APPROACH FOR EMBEDDED MEMORY SELF REPAIR G. Sathesh Kumar *1 & V.

A Low-Power ECC Check Bit Generator Implementation in DRAMs

A Built-In Redundancy-Analysis Scheme for RAMs with 2D Redundancy Using 1D Local Bitmap

DETECTION AND CORRECTION OF CELL UPSETS USING MODIFIED DECIMAL MATRIX

6T- SRAM for Low Power Consumption. Professor, Dept. of ExTC, PRMIT &R, Badnera, Amravati, Maharashtra, India 1

DESIGN AND IMPLEMENTATION OF 8X8 DRAM MEMORY ARRAY USING 45nm TECHNOLOGY

Breaking the Energy Barrier in Fault-Tolerant Caches for Multicore Systems

Modeling and Simulation of Microcode-based Built-In Self Test for Multi-Operation Memory Test Algorithms

Sram Cell Static Faults Detection and Repair Using Memory Bist

An Advanced and more Efficient Built-in Self-Repair Strategy for Embedded SRAM with Selectable Redundancy

Full Custom Layout Optimization Using Minimum distance rule, Jogs and Depletion sharing

Reconfigurable Linear Decompressors Using Symbolic Gaussian Elimination

DIRECT Rambus DRAM has a high-speed interface of

Minimizing Power Dissipation during Write Operation to Register Files

AN EFFICIENT DESIGN OF VLSI ARCHITECTURE FOR FAULT DETECTION USING ORTHOGONAL LATIN SQUARES (OLS) CODES

RELIABILITY MEASUREMENT OF MEMORY SYSTEM USING SPARE BLOCKS

Efficient Implementation of Single Error Correction and Double Error Detection Code with Check Bit Precomputation

An Efficient Parallel Transparent Diagnostic BIST

Efficient Majority Logic Fault Detector/Corrector Using Euclidean Geometry Low Density Parity Check (EG-LDPC) Codes

Very Large Scale Integration (VLSI)

Generating Burst-error Correcting Codes from Orthogonal Latin Square Codes a Graph Theoretic Approach

International Journal of Digital Application & Contemporary research Website: (Volume 1, Issue 7, February 2013)

Jin-Fu Li Dept. of Electrical Engineering National Central University

Test/Repair Area Overhead Reduction for Small Embedded SRAMs

AUTONOMOUS RECONFIGURATION OF IP CORE UNITS USING BLRB ALGORITHM

COE 561 Digital System Design & Synthesis Introduction

Design of Low Power Wide Gates used in Register File and Tag Comparator

Modeling and Simulation of Multi-Operation Microcode-based Built-in Self Test for Memory Fault Detection and Repair

FAULT TOLERANT SYSTEMS

An Energy-Efficient Scan Chain Architecture to Reliable Test of VLSI Chips

Faults. Abstract. 1. Introduction. * Nur A. Touba is now with the Department of Electrical and Computer Engineering, University of Texas, Austin, TX

Error Detection and Correction by using Bloom Filters R. Prem Kumar, Smt. V. Annapurna

Error Correction Using Extended Orthogonal Latin Square Codes

Complex test pattern generation for high speed fault diagnosis in Embedded SRAM

Efficient BISR strategy for Embedded SRAM with Selectable Redundancy using MARCH SS algorithm. P. Priyanka 1 and J. Lingaiah 2

TESTING OF FAULTS IN VLSI CIRCUITS USING ONLINE BIST TECHNIQUE BASED ON WINDOW OF VECTORS

Diagnostic Testing of Embedded Memories Using BIST

Survey on Stability of Low Power SRAM Bit Cells

Design of Delay Efficient Carry Save Adder

LPRAM: A Novel Low-Power High-Performance RAM Design With Testability and Scalability. Subhasis Bhattacharjee and Dhiraj K. Pradhan, Fellow, IEEE

Optimal Built-In Self Repair Analyzer for Word-Oriented Memories

Architecture as Interface

Design and Implementation of Improved BISR Strategy for Systems-on-a-Chip (SoC)

Concept of Memory. The memory of computer is broadly categories into two categories:

TEST cost in the integrated circuit (IC) industry has

Incorporating Heterogeneous Redundancy in a Nanoprocessor for Improved Yield and Performance

Logic and Computer Design Fundamentals. Chapter 8 Memory Basics

Applying March Tests to K-Way Set-Associative Cache Memories

Soft-Core Embedded Processor-Based Built-In Self- Test of FPGAs: A Case Study

Algorithms for Efficient Runtime Fault Recovery on Diverse FPGA Architectures

Efficient Repair Rate Estimation of Redundancy Algorithms for Embedded Memories

International Journal of Scientific & Engineering Research, Volume 4, Issue 5, May-2013 ISSN

Low-Power Weighted Pseudo-Random BIST Using Special Scan Cells

SELF CORRECTING MEMORY DESIGN FOR FAULT FREE CODING IN PROGRESSIVE DATA STREAMING APPLICATION

HDL IMPLEMENTATION OF SRAM BASED ERROR CORRECTION AND DETECTION USING ORTHOGONAL LATIN SQUARE CODES

Three DIMENSIONAL-CHIPS

Parallelized Network-on-Chip-Reused Test Access Mechanism for Multiple Identical Cores

Implementation of Efficient Ternary Content Addressable Memory by Using Butterfly Technique

Reducing Power Dissipation During Test Using Scan Chain Disable

Content Addressable Memory performance Analysis using NAND Structure FinFET

Analysis of 8T SRAM Cell Using Leakage Reduction Technique

BUILT IN REDUNDANCY ALGORITHMS FOR MEMORY YIELD ENHANCEMENT

Embedded Static RAM Redundancy Approach using Memory Built-In-Self-Repair by MBIST Algorithms

Embedded SRAM Technology for High-End Processors

Majority Logic Decoding Of Euclidean Geometry Low Density Parity Check (EG-LDPC) Codes

Outline. Parity-based ECC and Mechanism for Detecting and Correcting Soft Errors in On-Chip Communication. Outline

A Strategy for Interconnect Testing in Stacked Mesh Network-on- Chip

Transcription:

200 24th IEEE International Symposium on Defect and Fault Tolerance in VLSI Systems Improving Memory Repair by Selective Row Partitioning Muhammad Tauseef Rab, Asad Amin Bawa, and Nur A. Touba Computer Engineering Research Center Department of Electrical and Computer Engineering University of Texas, Austin, TX 12-104 Email: {mrab, bawa, touba}@ece.utexas.edu Abstract A new methodology for improving memory repair is presented which can be applied in either manufacture time repair or built-in self-repair (BISR) scenarios. In traditional memory repair, one spare column can only replace one column containing a defective cell. However, the proposed method allows a single spare column to be used to repair multiple defective cells in multiple columns. This is done by selectively decoding the row address bits when generating the control signals for the column MUXes. This logically segments the spare column allowing it to replace different columns in different partitions of the row address space. The hardware is the same for all chips, but fuses are used to customize the row decoding circuitry on a chipby-chip basis. An algorithm is described for choosing which row address bits to decode given the defect map for a particular chip. This additional degree of freedom allows customization based on the defect map of a chip and increases the effectiveness of the proposed scheme in comparison to traditional memory repair. Experimental results show that, when compared with traditional schemes of similar complexity, the proposed scheme achieves a higher probability of repairing defects. 1. Introduction Yield loss in integrated circuits (ICs) due to SRAM-based memory failures are expected to increase as transistor sizes shrink to smaller dimensions and voltage levels are reduced. Caches constitute in excess of 0% of modern SOC and processors area and account for more than 0% of the transistor count [Roelke 0]. In addition to the fact that the SRAM cell is the most frequently used cell, it also uses the smallest geometry transistors to increase area utilization which makes it more susceptible to both device electrical and geometrical variation [Mukhopadhyay 0]. To reduce yield loss due to defects in memory cells, the conventional approach is to add spare rows and columns to a memory [Schuster ], [Zorian 03]. A test procedure is used to generate a defect map which indicates which cells in the memory are defective. Based on the defect map, the memory is reconfigured to use the spare rows and columns to bypass defective cells [Kuo ], [Wey ], [Hemmady ]. If it is not possible to bypass all the defective cells, then the repair process fails. The memory reconfiguration can be done either at manufacture time with fuses, or it can be done with a built-in self-repair (BISR) scheme [Kim ]. Fig. 1 shows a small example of a 4x4 memory with a spare row and spare column. Note that a spare column can only be used to repair a single defective memory cell unless there are multiple defective memory cells in the same column. This paper proposes a way to enhance the repair capability of a memory with a given number of spare columns. It allows a single spare column to be used to repair multiple defective cells in different columns. This is done by 10-4/0 $2.00 200 IEEE DOI 10.110/DFT.200.20 211

decoding a small number of row address bits when determining which column will be replaced by the spare column. Effectively, this logically segments the spare column and increases the number of defective cells that it can repair. The row address bits that are decoded are selected based on the defect map for the memory. Given the defect map, an algorithm is described for selecting the best set of row address bits to decode in order to repair as many defective cells as possible. The additional degree of freedom in selecting which row address bits to decode on a chip by chip basis greatly enhances the efficiency of the proposed method and increases the probability of being able to repair a memory and thereby improves overall yield. The cost for the proposed method is some additional fuses and logic to select which row address bits to decode. The proposed method can be used for manufacture time reconfiguration as well as for BISR schemes. The proposed method provides a way to deal with rapidly increasing defective bit rates as geometries are scaled down and voltage levels are reduced. It also has applications in future nanoelectric technologies where defect rates are expected to be very high. This paper is organized as follows. In Sec. 2, an overview of the proposed scheme and how the memory segmenting is performed is given. In Sec. 3, the repair algorithm is explained. Experimental results are presented in Sec. 4, and Sec. is a conclusion. Figure 1. 4 Rows x 4 Memory Block 212

2. Overview of Proposed Scheme The main motivation behind the proposed scheme is the inherent inefficiency of the conventional approach. Typically an additional spare column is used in its entirety when repairing a defective cell. This implies that in order to repair multiple defects, the SRAM memory should typically have as many number of spares available as there are defects in the memory. This is generally true unless a single column in the memory has more than one defect; in which case the spare, when swapped out with the faulty column, ends up repairing both of the defects. Such scenarios are rare, thus multiple spares are added to SRAMs when more defects need to be tolerated. This linear dependency will lead to excessive overhead as SRAMs continue to be scaled and have increasingly higher defect rates. The proposed approach increases the effectiveness of spare columns by allowing a single spare column repair defects in multiple columns by partially decoding the row address when determining which column is replaced by the spare. The proposed approach makes use of existing chip repair methodologies. The new aspect is given the defect map, the proposed approach selects n row address bits to decode so as to allow all defective cells in the memory to be bypassed. Moreover, the proposed scheme requires the ability to store the information on-chip as to which row addresses to decode and which column to replace in each partition of the row address space. This is illustrated in the high level block diagram of the proposed scheme given in Fig. 2. Figure 2. Block Diagram 3. Repair Algorithm The memory is initially designed with a certain number of spare columns (maybe one, but can be more than one) and the ability to decode a certain number of row address bits (n). This hardware is fixed for all chips. Given the defect map for a particular chip, the proposed repair algorithm is used to configure the hardware to bypass the defective cells. The algorithm first selects the n row address bits to decode based on the defect map and the number of spare columns available. Decoding the n row address bits effectively partitions the row address 213

space into 2 n different partitions. The spare column can be used to replace one column in each of the 2 n different partitions. So the goal is to do the partitioning in such a way as to have only a single column in each partition having a defect. So if there are multiple defects in different columns, the partitioning should be done such that each partition contains only one defect. This is done by representing each defect s row address as a binary number, and then forming a matrix of the XORs of all the pairwise row address combinations. This is illustrated in Figure 3 where the row addresses of four defects are {000, 010, 100, 111}. Each of the rows in the table correspond to one of the pairwise combinations of the row addresses of the defects, and each column corresponds to a row address bit. An entry in the matrix is a 1 if the pair of row addresses of the defects differ in that bit, and a 0 if they are the same. For example, the row addresses for the defect at 000 and at 010 differ in bit 1, but not in bits 0 and 2. The goal is to select n row address bits to decode such that each defect is in a different partition. This corresponds to finding a column cover for the matrix in which a set of columns is selected such that it contains at least one 1 in each row. A column cover of this matrix ensures that the selected row address bits will distinguish every defective row such that no partition will contain more than one defect. If it is not possible to find a column cover with n or fewer columns, then the memory is irreparable. Many efficient column covering algorithms exist [Beasley ]. Once the n row address bits have been selected, The fuses are programmed to hardcode which row address bits to decode as well as the column that is replaced by the spare in each partition. This can be done by implementing a small ROM or fuse box. The ROM drives the select lines of the column muxes which do the actual swapping of the faulty cell(s) with the good cell(s) from the spare element. The repair procedure is now illustrated with a small example. Assume that n=2, so two row address bits are used to partition the spare column in a manner that it can map each defect in a unique partition of the spare column. The memory used in this example has rows and columns (C). The row addresses for the defects are {D0, D1, D2, D3} -> {000, 010, 100, 111}. The XOR between each pair of the row addresses with defects is performed and stored in a matrix as shown in Fig. 3. A column covering procedure is then performed which identifies a two bit column cover using bit 2 and bit 1. Those two row address bits are connected (with fuses) to a ROM (fuse box). The contents of the ROM are set so that columns, 4, 2, 1 are bypassed when the row address bits are 00, 01, 10, 11, respectively. The output of the ROM goes to a decoder which decodes the column to bypass and generates the appropriate set of MUX select signals. For example, if column 2 is to be bypassed, then the MUX select signals for leftmost 3 MUXes are set to select their right input, and the rest of the MUX select signals select their left input. This uses the spare column and skips column 2. The additional circuitry required to implement the proposed scheme for the above example is illustrated in Fig. 3. The fuse box is 2 n (n=2) by log 2 C (C=) wide. Additionally a log 2 C to C (3 to ) decoder is needed to generate the C () bit MUX select signals. 214

Row Address # Bit 2 Bit 1 Bit 0 (000 010) 0 1 0 (000 100) 1 0 0 (000 111) 1 1 1 (010 100) 1 1 0 (010 111) 1 0 1 (100 111) 0 1 1 Figure 3. XOR Table and Example 21

4. Experimental Results Several simulations were performed to evaluate yield improvements using the proposed selective row partitioning. For the first set of simulations, two, three and four random defects were injected across different memory block sizes and compared the traditional probability of repair with a single spare column versus the proposed scheme using a single spare column and two row address bits for decoding. Fig. 4, & show the results of these simulations. These simulations were mainly done to see the effectiveness of the proposed scheme in fixing multiple defects, and also to investigate if the size of the memory had any impact on the effectiveness of the proposed scheme. As clearly seen from the results shown in Fig. and Fig. the proposed scheme is close to 100% effective for two and three defects and there is almost no dependency on the memory block size. However for four defects, shown in Fig., the effectiveness of our approach is clearly dependent on the number of rows. This result is understandable and expected since the more rows in a block, the more likely it is to find two row bits to partition the memory with one defect in each partition. Note that for the case of a traditional single spare, the chance of repairing multiple defects is very low as it depends on the defects all being in the same column. The probability of this decreases as there are either more columns or more defects. Fig. summarizes the comparison between the traditional and proposed scheme for a -rowaddress-bit and -column-bits memory block using one spare column and 2-address bits for decoding (n=2). As can be seen below the proposed scheme is close to 100% effective for two or three defects, the reason it is not a 100% effective is due to the small chance of defects in the same row. Such defects can obviously not be distinguished using row address bits for decoding. For four defects the proposed scheme still achieves close to 0% probability of repair. This reduction in the probability of repair going from three to four defects is also expected since partitioning the memory using 2-row-address-bits requires that each of the four partitions have exactly one defect and there are cases where a solution does not exist. % Fixable Defects (2 defects) (Proposed Scheme) % Fixable Defects (2 defects) (Traditional) 10.0%.21%.0%.%.0%.4%.%.22%.%.4%.%.1%.21%.1%.0%.4%.2%.%.3%.% 10 4 4 3 2 1 No. of Address bits 3 2 1 1.3% 1.% 3.3% 1.% 3.1% 1.%.33% 12.% 3.00% 1.4%.13% 12.10% 3.2%.00% 12.30% 3.23%.0% 12.1%.00% 12.12% No. of Address bits Figure 4. Repairable Defects across Different Memory Block Sizes (2 Defects) 2

% Fixable Defects (3 defects) (Proposed Scheme) % Fixable Defects (3 defects) (Traditional) 10.3%.%.1%.3% 0.0%.3%.2%.%.3% 1.12%.10%.01%.%.4% 0.%.4%.%.1%.3% 0.2% 10 4 4 3 2 1 No. of Address bits 3 2 1 1.% 0.3% 0.0% 1.4% 0.02% 0.3% 0.0% 0.02% 1.% No. of Address bits Figure. Repairable Defects across Different Memory Block Sizes (3 Defects) 0.31% 0.11% 0.02% 1.% 0.40% 0.12% 0.04% 1.0% 0.40% 0.12% 0.04% % Fixable Defects (4 defects) ( Proposed Scheme ) % Fixable Defects (4 defects) (Traditional) 4 3 2 1 4.2% 4.42% 0.3%.4%.3% 4.% 1.1%.0%.2% 4.%.% 4.1%.%.4% 4.1%.3% 4.% No. of Row Address bits.3% 0.23% 0.3% 10 4 3 2 1 0.01% 0.01% 0.01% 0.01% 0.01% 0.01% 0.10% 0.03% 0.2% 0.0% 0.12% 0.04% 0.22% 0.1% No. of Row Address bits Figure. Repairable Defects across Different Memory Block Sizes (4 Defects) 10 Memory block ( row address bits) columns Proposed Yield Traditional Yield 4 3 2 1 0 1 2 3 4 No. of Defects Figure. Repairable Defects Comparison Summary Decoding 2 Row Bits 21

Fig. shows similar results Fig. except in this case 2-spare columns are being used and an attempt is made to solve up to eight defects. This was done to show the scalability of the proposed scheme. Note that in this case, the same row address bit decoder is used for both spares. Alternatively, one could use separate row address bit decoders for each spare, and in that case the effectiveness of each spare would be equivalent to what was shown in Figure. 12 Memory block ( row bits) columns (2 spares) Proposed Yield Traditional Yield 10 %Solved 4 2 0 1 2 3 4 No. of Defects Figure. Repairable Defects Comparison Summary using 2 Spare 10 Comparision of Traditional Vs Proposed Memory blocks size is row address bits Proposed Yield Traditional Yield %Sovled 4 3 2 1 0 1 2 3 4 No. of Defects No. of Column bits for each spare ( for traditional) and ( for proposed) Figure. Repairable Defects using 2-Row-Bit Decoding with Wider Memory Block for Proposed Scheme 21

The first set of experiments, summarized in Fig. clearly showed the effectiveness of the proposed scheme in fixing multiple defects, however there is an area overhead cost associated with implementing the proposed scheme since it requires extra logic to implement (fuses, muxes, etc). An alternative to the proposed approach for improving repair capability would be to simply use the traditional approach with more spares. To compare these two alternatives, experiments were performed considering four memory blocks having -row-address-bits and -column-bits in which the traditional approach has one spare for each block. For the proposed scheme we assumed a single memory block with -row-address-bits, -column-bits and one spare column. The results are shown in Fig.. The probability of fixing defects with the proposed scheme is clearly better with less spare columns. The results for the traditional approach below can also be probabilistically calculated and confirm the numbers obtained through simulations. In this particular example, it has been shown that by reducing four spare columns down to one with the proposed approach, the probability of repairing defects is better. This advantage comes from the ability to select which row address bits to decode on a chip-bychip basis such that the hardware is effectively customized to the defect map for a particular chip.. Conclusions In this paper, a scheme was presented for selectively decoding row address bits to repair multiple defects using a single spare column. This approach is a logical extension to current approaches where a single spare column replaces another column that has a defect. The proposed scheme requires some additional logic and fuses to implement, however it was shown that when comparing the proposed scheme to the traditional approach of increasing the number of spare to tolerate more defects, for similar complexity, the proposed scheme achieves a higher probability of repairing defects (Fig. ). The optimal number of row address bits to decode and memory block size to use would depend on the process, architecture, and defect rate. References [Beasley ] J.E. Beasley, An Algorithm for Set Covering Problem, European Journal of Operational Research, pp. -3, Jul. 1. [Kim ] I. Kim, Y. Zorian, G. Komoriya, H. Pham, F.P. Higgins, and J.L. Lewandowski, Built In Self Repair for Embedded High Density SRAM, Proc. of International Test Conference, pp. 1112-111, 1. [Kuo ] S.-Y. Kuo and K. Fuchs, Efficient Spare Allocation for Reconfigurable Arrays, IEEE Design & Test, Vol. 4, Iss. 1, pp. 24-31, Feb. 1. [Mukhopadhyay 0] S. Mukhopadhyay, H. Mahmoodi, and K. Roy, Modeling of Failure Probability and Statistical Design of SRAM Array for Yield Enhancement in Nanoscaled CMOS, IEEE Trans. on Computer-Aided Design, pp. 1-10, Dec. 200. [Hemmady ] V. Hemmady and S.M. Reddy, On Repair of Redundant RAMs, Proc. of Design Automation Conference, pp. 10-13, June 1. [Roelke 0] G.R. Roelke, R.O. Baldwin, A Cache Architecture for the Extremely Unreliable Nanotechnologies, IEEE Trans. on Reliability, Vol., Jun. 200. [Schuster ] S.E. Shuster, Multiple word/bit line redundancy for semiconductor memories, IEEE Journal of Solid-State Circuits, Vol. SC-13, pp. -03, 1. [Wey ] C.-L. Wey and F. Lombardi, On the Repair of Redundant RAM s, IEEE Trans. on Computer-Aided Design, Vol., No. 2, Mar. 1. [Zorian 03] Y. Zorian, and S. Skoukourian, Embedded-Memory Test and Repair: Infrastructure IP for SOC Yield, IEEE Design & Test of Computers, Vol. 20, Issue 3, pp. -, May 2003. 21