Abstract-In this paper, we propose a multiphase March-like algorithm for partial and full diagnosis of all simple static faults in static Random Access Memories, ...
A March-Based Fault Location Algorithm with Partial and Full Diagnosis for All Simple Static Faults in Random Access Memories G. Harutunyan
V.A. Vardanian
Virage Logic 15/1 Khorenatsi str., Yerevan 375010, Armenia
Virage Logic 15/1 Khorenatsi str., Yerevan 375010, Armenia
Abstract-In this paper, we propose a multiphase March-like algorithm for partial and full diagnosis of all simple static faults in static Random Access Memories, as well as location of the position of the failed bit. In Phase 1, a March-like algorithm of complexity 2N is proposed for partial diagnosis to differentiate between single-cell and two-cell faults. In phase 2, for two-cell faults, we propose a March-like algorithm of complexity 41N for location of the position of the failed bit. In Phase 3, we used a March-like algorithm of a constant complexity for full diagnosis of all simple static faults.
I.
INTRODUCTION
The problems of fault diagnosis and location in Random Access Memories (RAM) (see [1]) are of prime importance in connection with the increasing density of embedded memories and their dominating portion in system-on-chips (SoC). To improve the product quality, reliability and yield, the manufacturing defects should be detected, partially and/or fully diagnosed and located for further repair. Embedded memories can be designed with local and / or global redundancy elements (rows, columns) for fault repair and yield improvement (see [2]). Not only the redundancy allocation algorithms, but also the memory test algorithms should apply efficient procedures for effective diagnosis and location of defective cells. Traditionally, these two procedures were considered separately, and fault location procedure followed the diagnosis procedure (see [3]). In [4], a method of partial diagnosis with further fault location was proposed for the traditional functional fault models (FFM) [1]. The approach of partial diagnosis [4] was used in [5] and after applying additional March-like algorithms they could fully diagnose and locate all traditional FFMs. In this paper, an efficient March-based fault location algorithm and prtial/full diagnosis is proposed for detection of all simple (unlinked) static faults in bit-oriented Static RAMs. A March algorithm of complexity 18N, N is the number of memory words, is defined in Phase 1 for detection of all unlinked static FFMs [6], [7] and partial diagnosis [4]. March-like algorithms of complexity N+O(1) or O(1) are
1-4244-1161-0/07/$25.00 ©2007 IEEE
Y. Zorian Virage Logic 47100 Bayside Parkway Fremont, CA, 94538
proposed in Phase 2 to split the groups of faults with the same syndrome defined after Phase 1 into smaller subgroups. March-like algorithms of complexity 2N to 5N are used for location of the aggressor bit [1] of each coupling fault (CF) [1]. The March-like algorithm has 100% fault location ability and minimum length for fault location in Static RAMs. Note that the results obtained in this paper can be easily generalized (see [7]) for word-oriented memory devices for any B≥1, B is the number of bits in a word. Note that for word-oriented memories, we will consider only interleaved structure of words with no any two bits in a word being physically adjacent with the probability of any CF between any physically non-adjacent cells (bits) in a word being too small to consider them as realistic. Thus, in the case of interleaved type of word-oriented memories we can skip the phase for detection and location of aggressor bits of intra-word CFs. Also, for word-oriented memories we would need an additional phase to be applied after Phase 3 to detect the aggressor bit in the aggressor word detected after Phase 3. Since for each CF, the number of operations in the mentioned phase will depend only on B and not N, then the length of this phase will not have any influence on the order of the complexity of the first 3 phases with respect to N, the number of memory words. In Phase 1 of the proposed algorithm, we can use a March test algorithm March LD1 of complexity 2N+O(1) that can differentiate between single-cell and two-cell faults, i.e. March LD1 is a partial diagnosis algorithm for finding out the fault is a single-cell or two-cell fault. In Phase 2 we already know that the fault is a single-cell fault or a two-cell fault. In case we have a single-cell fault, the location problem for the aggressor cell is already finished. In case the detected fault is a two-cell fault, we have to locate the position of the aggressor cell. For this purpose, we use March LD2, a March-like algorithm of complexity 41N + O(1). In Phase 3, we already know the positions of the aggressor and victim cells and a March-like algorithm of a constant complexity is used for full diagnosis of all simple static faults.
II.
DEFINITIONS AND NOTATIONS
All necessary definitions of March test algorithms, fault primitives (FPs) and FFMs, can be found in [1], [6]. By a March algorithm M we will understand any test algorithm with a finite number of March elements M={M1, M2, …, Mk} where each March element Mi consists of an addressing direction ∀i and a finite number of Read/Write operations Mi =∀i {O1(D), …, Om(D)}, Oj∈{R, W} is a R (Read) or W (Write) operation, ∀i∈{, , 8}, (respectively,
FFM SF TF WDF RDF DRDF IRF
TABLE I SINGLE-CELL STATIC FFMS Fault primitives
3. 4. 5. 6. 7.
Write Destructive CFs (CFwd), Transition CFs (CFtr), Read Destructive CFs (CFrd), Deceptive Read Destructive CFs (CFdrd), Incorrect Read CFs (CFir). Note that the symbol “~” used in Tables I, II denotes logical negation, and x, y, z∈{0, 1}. For a given March algorithm, the corresponding dictionary of fault syndromes is constructed in the following way (see [3], [4]): Each row (respectively, column) of the dictionary corresponds to a certain fault class (respectively, a Read operation from the March test). If the March test contains r Read operations then is the signature of the ith fault named March syndrome [3], [4] where si(Rk)=0 (respectively, 1), if the kth Read operation of the March test returns a fault-free (respectively, faulty) value. The previously known FFMs of Stuck-at-faults (SAF), Stuck-open faults (SOF), Idempotent CF (CFid) and Inversion CF (CFin) are not considered here since SAF, SOF and CFid can be defined by FPs covered by the already used FFMs, and CFin is considered as non-realistic (see [8]).
) is the ascending (descending) address order; 8 is an arbitrary address order, D∈{0, 1}. Following the notations in [1], [6], [7] for March test algorithms we denote by a FP where S is the sensitizing value or operation, S∈{0, 1, 0W0, 1W1, 0W1, 1W0, R0, R1}, F is the value of the faulty (victim) cell, F∈{0, 1, ↑, ↓}, “↑” (respectively, “↓”) denotes an up (down) transition. R is the logical value on the memory output when the sensitizing operation on the faulty (victim) cell is a Read operation, R∈{0, 1, -} where “-” means the output data is not applicable. For CFs the FPs are described as a,v where Sa (respectively, Sv) is the sensitizing operation applied to the aggressor (victim) cell, Sa, Sv∈{0, 1, 0W0, 1W1, 0W1, 1W0, R0, R1}. Note that if Sa is an operation then Sv should be a state. If Sa is a state then Sv can be a state or operation. “a” (respectively, “v”) denotes the address of the aggressor (respectively, victim) cell of a CF. For a March-like algorithm [3], [4], Wvx (respectively, Wax) is the operation of writing x∈{0, 1} only to the victim (respectively, aggressor) cell, Rvx (respectively, Rax) is the read operation performed only to the victim (respectively, aggressor) cell with expected value x, L is the ascending address order starting at address L and ending at address H. Table I describes all single-cell FFMs [1], [6]: 1. State Fault (SF), 2. Transition Fault (TF), 3. Write Destructive Fault (WDF), 4. Read Destructive Fault (RDF), 5. Deceptive Read Destructive Fault (DRDF), 6. Incorrect Read Fault (IRF). Table II (see [6]) describes all two-cell FFMs: 1. State CFs (CFst), 2. Disturb CFs (CFds), H
TABLE II TWO-CELL STATIC FFMS Fault primitives ,
FFM CFst CFds CFtr CFwd CFrd CFdrd CFir
III.
FAULT LOCATION ALGORITHM
This algorithm is for those cases, when the preliminary March test algorithm for detection of the victim cell is supposed to be unknown, in general, but we suppose that only the failed bit (victim) is known. But, as in future steps for repair, the aggressor cell must be located which in general cannot be located by a detection March test algorithm. The other case is when the fault detection March test is known but it stopped (the performance of the algorithm is done until detection of the first fault) when a fault is detected and therefore the corresponding March syndrome cannot be obtained completely. That is why we propose an algorithm which takes as an input only the address of the failed (victim) bit and without a March syndrome, or by means of an incomplete syndrome it can locate and also diagnose the static faults. In Table III, March LD1, a March-like algorithm of complexity 2N+O(1) is proposed for Phase 1 which finds out whether the fault is a single-cell or a two-cell fault. Note that in Tables III and V by “-” we denoted that the mentioned sequence of operations is applied only to the victim cell and it has no address direction. If the obtained syndrome is in the list shown in Table IV then it is a single-cell fault. Besides location, the algorithm gives a group of faults that can be
present in the bit. This information will be used in the fault diagnosis step.
March element M0 M1 M2 M3
TABLE III PHASE 1. MARCH LD1 (2N) Address Operations direction W0 Wv1; Wv1; Rv1; Rv1; Wv0; Wv0; Rv0; Rv0 W1 Wv0; Wv0; Rv0; Rv0; Wv1; Wv1; Rv1; Rv1
TABLE IV SYNDROMES W.R.T. PHASE 1 AND GROUPS OF FAULTS Syndrome Faults 11000011 SF < 0 / 1 / - > TF < 0W1 / 0 / - > WDF < 1W1 / 0 / - > RDF < R1 / 0 / 0 > IRF < R1 / 1 / 0 > 01000001 DRDF < R1 / 0 / 1 > 00111100 SF < 1 / 0 / - > TF < 1W0 / 1 / - > WDF < 0W0 / 1 / - > RDF < R0 / 1 / 1 > IRF < R0 / 0 / 1 > 00010100 DRDF < R0 / 1 / 0 >
If the syndrome obtained from March LD1 is not in the list shown in Table IV then an additional March-like algorithm March LD2 of complexity 41N + O(1) must be used in Phase 2. Note that in this case information of all Read operations is not needed, i.e a partial syndrome is sufficient. This algorithm works in the following way. If the algorithm has failed in Rv0 of March element M1 (respectively, M6, M11) it continues its work from March element M6 (respectively, M7, M16). If the algorithm failed in Rv0 of March element M16 it means that the faulty bit does not have a static fault. In this case the algorithm finishes its work. In March LD2 there are operations Rx and Rvx, x ∈ {0, 1}. Lets enumerate only operations Rvx starting by 0. March LD2 stops its work, when one of the operations Rvx has failed except operations Rvx which are in March elements M1, M6, M11. In Table VI listed you can find all remained operations Rvx and the corresponding groups of faults which can be present in that faulty bit. When March LD2 has failed in one of operations Rvx listed in Table VI, it means that the aggressor cell is located since at that moment we know where the last operation is performed which brings to sensitization of the fault.
March element M0 M1 M2
TABLE V PHASE 2. MARCH LD2 (41N) Address Operations direction W0 Wv0; Rv0 W1, W1, R1, Rv0 v −1
0
M3
vN+−11
W1, W1, R1, Rv0
M4
0v −1
W0, W0, R0, Rv0
M5
vN+−11
W0, W0, R0, Rv0
M6 M7
-
v −1 0
Wv1; Rv1 W1, W1, R1, Rv1
M8
vN+−11
W1, W1, R1, Rv1
M9
0v −1
W0, W0, R0, Rv1
M10
vN+−11
W0, W0, R0, Rv1
-
Wv0; Rv0 W1, Wv1, Wv1, Rv1, Rv1, Wv0
M11 M12
v −1 0
M13
vN+−11
W1, Wv1, Wv1, Rv1, Rv1, Wv0
M14
0v −1
W0, Wv1, Wv1, Rv1, Rv1, Wv0
M15
vN+−11
W0, Wv1, Wv1, Rv1, Rv1, Wv0
-
Wv1; Rv1 W1, Wv0, Wv0, Rv0, Rv0, Wv1
M16 M17
v −1 0
M18
vN+−11
W1, Wv0, Wv0, Rv0, Rv0, Wv1
M19
0v −1
W0, Wv0, Wv0, Rv0, Rv0, Wv1
M20
vN+−11
W0, Wv0, Wv0, Rv0, Rv0, Wv1
TABLE VI SYNDROMES W.R.T. PHASE 2 AND GROUPS OF FAULTS ith Read operation Fault primitives Don’t care 1 CFst < 1; 1 / 1 / - >a < v CFds < 0W1; 0 / ↑ / - >a < v CFds < 1W1; 0 / ↑ / - >a < v CFds < R1; 0 / ↑ / - >a < v 2 CFst < 1; 1 / 1 / - >a > v CFds < 0W1; 0 / ↑ / - >a > v CFds < 1W1; 0 / ↑ / - >a > v CFds < R1; 0 / ↑ / - >a > v 3 CFst < 0; 1 / 1 / - >a < v CFds < 1W0; 0 / ↑ / - >a < v CFds < 0W0; 0 / ↑ / - >a < v CFds < R0; 0 / ↑ / - >a < v 4 CFst < 0; 1 / 1 / - >a > v CFds < 1W0; 0 / ↑ / - >a > v CFds < 0W0; 0 / ↑ / - >a > v CFds < R0; 0 / ↑ / - >a > v 6 CFst < 1; 1 / 0 / - >a < v CFds < 0W1; 1 / ↓ / - >a < v CFds < 1W1; 1 / ↓ / - >a < v CFds < R1; 1 / ↓ / - >a < v 7 CFst < 1; 1 / 0 / - >a > v CFds < 0W1; 1 / ↓ / - >a > v CFds < 1W1; 1 / ↓ / - >a > v CFds < R1; 1 / ↓ / - >a > v 8 CFst < 0; 1 / 0 / - >a < v CFds < 1W0; 1 / ↓ / - >a < v CFds < 0W0; 1 / ↓ / - >a < v CFds < R0; 1 / ↓ / - >a < v 9 CFst < 0; 1 / 0 / - >a > v CFds < 1W0; 1 / ↓ / - >a > v CFds < 0W0; 1 / ↓ / - >a > v CFds < R0; 1 / ↓ / - >a > v 10 Don’t care 11 CFtr < 1; 0W1 / 0 / - >a < v
12 13
14 15
16 17
18 19 20
21 22
23 24
25 26
27
CFwd < 1; 1W1 / 0 / - >a < v CFwd < 1; R1 / 0 / 0 >a < v CFwd < 1; R1 / 1 / 0 >a < v CFwd < 1; R1 / 0 / 1 >a < v CFtr < 1; 0W1 / 0 / - >a > v CFwd < 1; 1W1 / 0 / - >a > v CFrd < 1; R1 / 0 / 0 >a > v CFir < 1; R1 / 1 / 0 >a > v CFdrd < 1; R1 / 0 / 1 >a > v CFtr < 0; 0W1 / 0 / - >a < v CFwd < 0; 1W1 / 0 / - >a < v CFrd < 0; R1 / 0 / 0 >a < v CFir < 0; R1 / 1 / 0 >a < v CFdrd < 0; R1 / 0 / 1 >a < v CFtr < 0; 0W1 / 0 / - >a > v CFwd < 0; 1W1 / 0 / - >a > v CFrd < 0; R1 / 0 / 0 >a > v CFir < 0; R1 / 1 / 0 >a > v CFdrd < 0; R1 / 0 / 1 >a > v Don’t care CFtr < 1; 1W0 / 1 / - >a < v CFwd < 1; 0W0 / 1 / - >a < v CFrd < 1; R0 / 1 / 1 >a < v CFir < 1; R0 / 0 / 1 >a < v CFdrd < 1; R0 / 1 / 0 >a < v CFtr < 1; 1W0 / 1 / - >a > v CFwd < 1; 0W0 / 1 / - >a > v CFrd < 1; R0 / 1 / 1 >a > v CFir < 1; R0 / 0 / 1 >a > v CFdrd < 1; R0 / 1 / 0 >a > v CFtr < 0; 1W0 / 1 / - >a < v CFwd < 0; 0W0 / 1 / - >a < v CFrd < 0; R0 / 1 / 1 >a < v CFir < 0; R0 / 0 / 1 >a < v CFdrd < 0; R0 / 1 / 0 >a < v CFtr < 0; 1W0 / 1 / - >a > v CFwd < 0; 0W0 / 1 / - >a > v CFrd < 0; R0 / 1 / 1 >a > v CFir < 0; R0 / 0 / 1 >a > v CFdrd < 0; R0 / 1 / 0 >a > v
IV. FULL DIAGNOSIS ALGORITHM After Phase 1 and Phase 2 we know the following information of the fault. • the fault type, i.e., single-cell or two-cell. • if it is a two-cell fault, the aggressor cell location. • the group that indicates that the fault is one of the faults of that group. Using this information, in Phase 3, we can also fully diagnose the fault by applying the sequence of operations which is not depended from the number of memory cells. For example let us assume that March LD2 has failed in the 26th Read operation (taking into account the same enumeration considering above). It means that the fault is one of the following faults. CFtr < 0; 1W0 / 1 / - >a > v, CFwd < 0; 0W0 / 1 / - >a > v,CFrd < 0; R0 / 1 / 1 >a > v,CFir < 0; R0 / 0 / 1 >a > v. For diagnosing the fault special operations for each of the fault must be applied, i.e., Wa0, Wv1, Wv0, Rv0, Wv0, Rv0, Wa1, Wv0, Wa0, Rv0, Wa1, Rv0.
V. CONCLUSIONS In this paper, we proposed a multiphase March-like algorithm for partial and full diagnosis of all simple static faults, a well as location of the failed bit. In Phase 1 we use any partial diagnosis algorithm of complexity 2N + O(1) for differentiation between single-cell and two-cell faults. In phase 2 we use a March-like algorithm of complexity 41N + O(1) for location of the aggressor bit of two-cell faults. In Phase 3 we fully diagnose all simple static faults by applying a March-like algorithm of a constant complexity. REFERENCES [1] A.J. van de Goor, Testing semiconductor memories: Theory and Practice, John Wiley & Sons, 1991. [2] S.K. Shoukourian, V.A. Vardanian, and Y. Zorian, “A Methodology for Design and Evaluation of Redundancy Allocation Algorithms”, Proc. IEEE VLSI Test Symp., 2004, pp. 249-255. [3] J.-F. Li, K.-L. Cheng, C.-T. Huang, and C.-W. Wu, “March based RAM diagnostic algorithms for stuck-at and coupling faults”, Proc. IEEE ITC, 2001, pp. 758-767. [4] V. A. Vardanian, Y. Zorian, “A March-based Fault Location Algorithm for Static Random Access Memories”, Proc. IEEE Int. Workshop MTDT, 2002, pp. 62-67. [5] Jin-Fu Li and Chao-Da Huang, “An Efficient Diagnosis Scheme for Random Access Memories”, ATS 2004, pp. 277-282. [6] S. Hamdioui, A.J. van de Goor, M. Rodgers, “March SS: a test for all static simple faults”, Records of IEEE Int. Workshop MTDT, 2002, pp. 95-100. [7] A.J. van de Goor and I.B.S. Tlili, “March tests for word-oriented memories”, Proc. DATE 1998, pp. 501-508. [8] S. Hamdioui, A.J. van de Goor, M. Rodgers, “Linked faults in Random Access Memories: concept, fault models, test algorithms, and industrial results”, IEEE Trans. CAD, vol. 23, No. 5, May 2004, pp. 737-756.