An optimization method of memory test march class algorithm
By constructing a memory access operation state transition descriptor and a minimal detection sequence, and optimizing the March-type algorithm, the problems of long testing time and insufficient fault coverage in existing technologies are solved, achieving more efficient memory testing.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2022-12-23
- Publication Date
- 2026-03-24
AI Technical Summary
Existing March-type algorithms lack mature analysis and optimization methods in memory testing, resulting in long testing times and insufficient fault coverage.
By constructing memory access operation state transition descriptors, the simplest detection sequence corresponding to the memory access operation state transition descriptors and fault primitives of March elements is determined. The simplest detection sequence table is constructed, and access operations that do not affect fault detection are deleted, thus optimizing the March-type algorithm.
Effectively analyze the fault types of March-type algorithms, reduce access operations during the testing process, and further reduce testing time.
Smart Images

Figure CN115938454B_ABST
Abstract
Description
Technical Field
[0001] This invention belongs to the field of integrated circuit testing technology, and more specifically, relates to an optimization method for a March-type algorithm for memory testing. Background Technology
[0002] With the development of integrated circuit technology, integrated circuit products are evolving towards smaller size, higher speed, and lower power consumption. Among integrated circuit products, memory, as a storage device for data, is one of the fastest-growing technologies. Memory occupies an increasingly larger proportion of the chip, and the integration density of transistors within memory is becoming increasingly higher. This leads to a greater probability of defects occurring during the manufacturing process; therefore, memory testing is becoming increasingly important.
[0003] In memory testing, a good testing algorithm can reduce testing time and ensure fault coverage. March-type algorithms play a crucial role in memory testing due to their high fault coverage and low testing time. However, analysis and optimization methods for March-type algorithms are not yet mature. Therefore, we propose an analysis and optimization method for March-type algorithms in memory testing. This method can analyze the types of faults that March-type algorithms can detect and optimize based on whether the faults are repeatedly detected. Summary of the Invention
[0004] The purpose of this invention is to overcome the shortcomings of the prior art and provide an optimized method for March-type algorithms in memory testing. By analyzing the faults that March-type algorithms can detect and optimizing them, the access operations during the testing process are reduced, further reducing the testing time.
[0005] To achieve the above-mentioned objectives, the present invention provides an optimization method for a memory testing March-type algorithm, characterized by comprising the following steps:
[0006] (1) Construct memory access operation state transition descriptors
[0007] The expression for the memory access operation state transition descriptor is <LAS / CAS / HAS>a o1<LAS / CAS / HAS>, where LAS represents the state of the low-address memory cell, CAS represents the state of the current address cell, HAS represents the state of the high-address memory cell, and LAS, CAS, and HAS ∈ {x, 0, 1}. Here, x indicates that the state of the memory cell is irrelevant, 0 represents the state of the memory cell being 0, and 1 represents the state of the memory cell being 1. 'a' indicates the direction of address increment, and 'o1' represents a memory access operation. <las cas has>Called a state tuple, the first one <las cas has>This is called the pre-memory access state tuple FST, the second one. <las cas has>This is called the post-memory access state tuple LST. FST and LST in the expression can be omitted depending on the specific situation.
[0008] (2) Determine the memory access state transition descriptor for March elements in the March class algorithm.
[0009] 2.1) Determine the initial state of the March element.
[0010] The initial state of the March element is consistent with the final state of the March element preceding the current March element in the entire March algorithm. The final state of the March element is equal to the CAS value of the current address unit of the state tuple LST after the last memory access operation of the March element. If the current March element is the first March element in the entire March algorithm, the initial state is determined according to the set initial state or the initial state is recorded as x.
[0011] 2.2) Determine the state of the state tuple FST before the memory access operation.
[0012] If it is the first memory access operation, the state of its pre-access state tuple FST is determined based on the last write memory access operation in the March element. If the address increment direction is ↑, then the low address unit state LAS of the pre-access state tuple FST of the first memory access operation is the state written by the last write operation; if the address increment direction is opposite, then the high address unit state HAS of the pre-access state tuple FST of the first memory access operation is the state written by the last write operation, and the remaining positions are the same as the initial state.
[0013] If it is not the first operation, that is, the memory access operation starting from the second memory access operation, the state tuple before the memory access operation is the state tuple after the memory access operation of the previous memory access operation.
[0014] 2.3) Determine the state of the LST tuple after the memory access operation.
[0015] If the current memory access operation is a read operation, then the state tuple LST after the memory access operation is the same as the state tuple FST before the memory access operation. If the current memory access operation is a write operation, the low address unit state LAS and the high address unit state of the state tuple LST after the memory access operation are consistent with the state tuple FST before the memory access operation, and the current address unit state CAS is equal to the value written in the write operation.
[0016] 2.4) Obtain the before and after state tuples of all memory access operations for the March element in sequence;
[0017] (3) Determine the simplest detection sequence corresponding to the fault primitive and construct the simplest detection sequence table.
[0018] The simplest detection sequence is described using memory access operation state transition descriptors and special symbols. The special symbol "*" indicates that zero or more memory access operations can be added, as long as the added operations do not change the fault sensitivity operation. "^" indicates that the current memory access operation must be the first operation of the March element. "#" indicates that the March element can be split into two March elements at the current position, but splitting the current March element is optional. ";" indicates that the March element must be split into two March elements at the current position. The special symbols "^", "#", and ";" modify the memory access operation immediately following them, while the special symbol "*" does not modify any memory access operation. The simplest detection sequence is determined by the fault type and the initial state of the memory unit, using fault sensitivity and the memory access operation state transition descriptors for detection. For coupled faults, the relative address direction between the attacking and victim units must also be considered.
[0019] The combination of memory access operation state transition descriptors describing fault sensitivity and special symbols is called the sensitivity path, and the combination of memory access operation state transition descriptors describing fault detection and special symbols is called the detection path.
[0020] 3.1) Determination of the sensitization path in the simplest detection sequence for coupled faults
[0021] 3.1.1) Determine the operation or state of the attacking and victim units during sensitization;
[0022] 3.1.2) Determine the relative address direction of the attacking unit and the victim unit;
[0023] 3.1.3) Determine the state tuples before and after memory access operations in the sensitivity path: This is divided into the following three cases:
[0024] a. The sensitivity operation of the attack unit is a write operation. If the sensitivity operation of the attack unit is a write operation, then the current address unit is used to represent the attack unit, and the state of the current address unit in the state tuple before the memory access operation is written into the state before the write operation. If the sensitivity operation of the attack unit is a read operation, the current address unit is used to represent the attack unit, and the state of the current address unit in the state tuple before the operation is the state after the read operation. Then, based on the relative address direction of the attack unit and the victim unit, it is determined whether the high address is the victim unit or the low address is the victim unit. The state of the victim unit is written into the corresponding position. The remaining states are written into 'x' unless otherwise specified. The address increment direction and the sensitivity memory access operation are combined with the state tuple before the memory access operation. At the same time, based on the memory access operation, the state tuple after the memory access operation is written to obtain the sensitivity path.
[0025] b. The sensitivity operation of the victim unit is an operation. If the sensitivity operation of the victim unit is a write operation, then the victim unit is represented by the current address unit, and the state of the current address unit in the state tuple before the memory access operation is written into the state before the write operation. If the sensitivity operation of the victim unit is a read operation, the victim unit is represented by the current address unit, and the state of the current address unit in the state tuple before the operation is the state after the read operation. Then, based on the relative address direction of the attacking unit and the victim unit, it is determined whether the high address is the attacking unit or the low address is the attacking unit. The state of the attacking unit is written into the corresponding position. The remaining states are written into 'x' unless otherwise specified. The address increment direction and the sensitivity memory access operation are combined with the state tuple before the memory access operation. At the same time, based on the memory access operation, the state tuple after the memory access operation is written to obtain the sensitivity path.
[0026] c. Since both the attack unit and the victim unit's sensitization operations are states, the sensitization path description omits the address increment direction and memory access operation in the memory access operation state transition descriptor, representing the sensitization path with only a state tuple. The current address unit can be either an attack unit or a victim unit. If the current address unit is a victim unit, the victim unit's sensitization state is written into the current address unit of the state tuple. Then, based on the relative address relationship between the victim unit and the attack unit, the attack unit's sensitization state is written into the corresponding position of the state tuple. The remaining positions are filled with "x". If the current address unit is a victim unit, the detection path and the sensitization path can be in one March element. If the current address unit is an attack unit, the attack unit's sensitization state is written into the current address unit of the state tuple. Then, based on the relative address relationship between the victim unit and the attack unit, the victim unit's sensitization state is written into the corresponding position of the state tuple. The remaining positions are filled with "x". If the current address unit is an attack unit, the detection path and the sensitization path must be separated into two March elements.
[0027] 3.2) Determination of the sensitization path in the simplest detection sequence for a single unit fault
[0028] 3.2.1) Determine the operation or state of the faulty unit during sensitization.
[0029] 3.2.2) Determine the state tuples in the sensitization path: This involves two cases:
[0030] a. If the sensitivity of the fault unit is a state, the fault unit is represented by the current address unit. Only one state tuple is used to represent the sensitivity path of the fault. The state of the fault unit when sensitivity is applied is written to the current address unit of the state tuple. The remaining position is written as x.
[0031] b. If the sensitivity of the fault unit is an operation, it is divided into read operation and write operation. If it is a read operation, the current address unit of the state tuple before the memory access operation saves the state after the read operation, and the remaining positions are written with x. If it is a write operation, then the state of the current address unit of the state tuple before the memory access operation is the state before the write operation, and the remaining positions are written with x. Combine the memory access operation and the address increment direction with the state tuple before the memory access operation, and obtain the state tuple after the memory access operation according to the memory access operation to obtain the sensitivity path.
[0032] 3.3) Determination of the detection path in the simplest detection sequence
[0033] The detection path can be completed with only one read operation, which is determined based on the victim unit;
[0034] 3.3.1) If the victim unit's sensitization is state 0, then the detection path is r0; if the victim unit's sensitization is state 1, then the detection path is r1.
[0035] 3.3.2) If the sensitization of the victim unit is an operation, the detection path is determined based on the state after the operation. If the state after the operation is 0, then the detection path is r0; if the state after the operation is 1, then the detection path is r1.
[0036] 3.4) Concatenate the sensitization path and detection path in sequence, and modify the corresponding memory access operation with special symbols according to the characteristics represented by the special symbols to form the simplest detection sequence corresponding to the fault primitive. All the simplest detection sequences corresponding to the fault primitives constitute the simplest detection sequence table.
[0037] (4) Delete one or more access operations that do not affect the detection of fault types.
[0038] 4.1) The entire March class algorithm is split into parts, and the memory access operation state transition descriptor for each March element is obtained according to the method in step (2).
[0039] 4.2) Based on the simplest detection sequence list obtained in step (3), determine which simplest detection sequences can match the memory access operation state transition descriptor of the March element in the March algorithm. In this way, the fault types that can be detected for each March element are obtained, and the fault detection table is obtained.
[0040] 4.3) Compare the fault types that each March element in the fault detection table can detect. If two or more memory access operations can detect the same fault, delete one or more of the access operations that do not affect the detection of fault types. That is, after the memory access operation is deleted, the fault type detected by the March-type algorithm remains unchanged. Otherwise, the access operation is retained.
[0041] The objective of this invention is achieved as follows:
[0042] This invention provides an optimization method for March-type algorithms in memory testing. First, a memory access operation state transition descriptor is constructed. Then, the memory access operation state transition descriptors for March elements in the March-type algorithm are determined, along with the simplest detection sequence corresponding to the fault primitives, and a simplest detection sequence table is constructed (this table is not created every time). Based on the memory access operation state transition descriptors, the fault types that can be detected for each March element are determined, resulting in a fault detection table. Access operations that do not affect the detection of fault types are deleted according to the fault detection table. By analyzing the faults that the March-type algorithm can detect, the March-type algorithm is optimized, reducing access operations during testing and further reducing testing time. Attached Figure Description
[0043] Figure 1 This is a flowchart of a specific implementation method of the optimized March-type algorithm for memory testing according to the present invention;
[0044] Figure 2 This is a flowchart determining the state transition descriptor for March element memory access operations;
[0045] Figure 3 This is a flowchart of the determination of the sensitization path in the simplest detection sequence of coupled faults;
[0046] Figure 4 This is a flowchart of the determination of the sensitization path in the simplest detection sequence for a single unit fault.
[0047] Figure 5 This is a flowchart illustrating the determination of the detection path in the simplest detection sequence;
[0048] Figure 6 This is a diagram showing the results of determining the March C memory access operation state transition descriptor;
[0049] Figure 7 This is a schematic diagram showing how March C can detect some faults. Detailed Implementation
[0050] The specific embodiments of the present invention will now be described with reference to the accompanying drawings to enable those skilled in the art to better understand the invention. It should be particularly noted that in the following description, detailed descriptions of known functions and designs that might obscure the main content of the invention will be omitted here.
[0051] Figure 1 This is a flowchart of a specific implementation method of the optimized March-type algorithm for memory testing according to the present invention.
[0052] In this embodiment, as Figure 1 As shown, the optimization method for the March-type algorithm in memory testing according to the present invention includes the following steps:
[0053] Step S1: Construct the memory access operation state transition descriptor
[0054] The expression for the memory access operation state transition descriptor is: <las cas has>a o1 <las cas has>Where LAS represents the state of the low-address memory cell, CAS represents the state of the current address cell, and HAS represents the state of the high-address memory cell, LAS, CAS, and HAS ∈ {x, 0, 1}, where x indicates that the state of the memory cell is irrelevant, 0 represents the state of the memory cell being 0, 1 represents the state of the memory cell being 1, 'a' indicates the direction of address increment, and 'o1' represents a memory access operation. The memory access operation state transition descriptor expression contains... <las cas has>Called a state tuple, the first one <las cas has>The first is called the pre-memory access state tuple FST, and the second <LAS / CAS / HAS> is called the post-memory access state tuple LST. FST and LST in the expression can be omitted depending on the specific situation.
[0055] Step S2: Determine the memory access state transition descriptor for the March element in the March class algorithm. In this embodiment, the specific determination process is as follows: Figure 2 As shown, it includes the following steps:
[0056] Step S2.1: Determine the initial state of the March element
[0057] The initial state of the March element is consistent with the final state of the March element preceding the current March element in the entire March algorithm. The final state of the March element is equal to the CAS value of the current address unit of the state tuple LST after the last memory access operation of the March element. If the current March element is the first March element in the entire March algorithm, the initial state is determined according to the set initial state or the initial state is recorded as x.
[0058] Step S2.2: Determine the state of the state tuple FST before the memory access operation.
[0059] If it is the first memory access operation, the state of its pre-access state tuple FST is determined based on the last write memory access operation in the March element. If the address increment direction is ↑, then the low address unit state LAS of the pre-access state tuple FST of the first memory access operation is the state written by the last write operation; if the address increment direction is opposite, then the high address unit state HAS of the pre-access state tuple FST of the first memory access operation is the state written by the last write operation, and the remaining positions are the same as the initial state.
[0060] If it is not the first operation, that is, the memory access operation starting from the second memory access operation, the state tuple before the memory access operation is the state tuple after the memory access operation of the previous memory access operation.
[0061] Step S2.3: Determine the state of the state tuple LST after the memory access operation.
[0062] If the current memory access operation is a read operation, then the state tuple LST after the memory access operation is the same as the state tuple FST before the memory access operation. If the current memory access operation is a write operation, the low address unit state LAS and the high address unit state of the state tuple LST after the memory access operation are consistent with the state tuple FST before the memory access operation, and the current address unit state CAS is equal to the value written in the write operation.
[0063] Step S2.4: Obtain the before and after state tuples of all memory access operations for the March element in sequence.
[0064] March-type algorithms consist of a finite number of March elements. Each March element includes an address incrementing direction and an ordered sequence of read and write operations. The March-type algorithm traverses the entire memory cell in this address incrementing direction, and only moves to the next memory cell after all read and write operations in a March element have been completed within that cell. In this embodiment, the March-type algorithm is illustrated using March C as an example. The expression for March C is:
[0065] For the first March element in March C According to step S2.1, the initial state is denoted as x. According to step S2.2, the state tuple FST before the memory access operation is <0,x,x>. Since it is only a write operation, w0 will affect itself. The state of the low address unit in the state tuple LST after the memory access operation of w0 is 0, which is the value written by the last write operation in the current March element. According to step S2.3, the current address unit state CAS is equal to the value written by the write operation, which is <0,0,x>.
[0066] For the second March element in March C, according to step S2.1, the initial state is consistent with the final state of the first March element, which is 0. The address increment direction is ↑. The FST of the state tuple before the operation of r0 is determined based on the last write memory access operation in the March element. The last memory access operation is w1, so the state of the low address unit of r0 is the state written by the w1 write operation, which is 1. The state of the high address unit remains unchanged and is recorded as 0. Therefore, according to step S2.2, the FST of r0 is <1,0,0>. Since the read operation does not change the state tuple, according to step S2.3, the LST of r0 is also <1,0,0>. Then, according to S2.2, the FST of w1 is <1,0,0>. The write operation only changes the current unit state, so according to step S2.3, the LST of w1 is <1,1,0>. Therefore, the memory access state transition descriptor for the second March element is: <1,0,0>↑r0<1,0,0><1,0,0>↑w1<1,1,0>. Similar to the above analysis, the memory access state transition descriptors for the entire March C expression can be obtained, as shown in Table 1:
[0067]
[0068] Table 1
[0069] Step S3: Determine the simplest detection sequence corresponding to the fault primitive and construct the simplest detection sequence table.
[0070] The simplest detection sequence is described using memory access operation state transition descriptors and special symbols. The symbol "*" indicates that zero or more memory access operations can be added, as long as the added operations do not change the fault sensitivity operation. "^" indicates that the current memory access operation must be the first operation of the March element. "#" indicates that the March element can be split into two March elements at the current position, but splitting the current March element is optional. ";" indicates that the March element must be split into two March elements at the current position. The special symbols "^", "#", and ";" modify the memory access operation immediately following them, while the special symbol "*" does not modify any memory access operation. The simplest detection sequence is determined by the fault type and the initial state of the memory unit, using fault sensitivity and the memory access operation state transition descriptors for detection. For coupled faults, the relative address direction between the attacking and victim units must also be considered.
[0071] The combination of memory access operation state transition descriptors describing fault sensitivity and special symbols is called the sensitivity path, and the combination of memory access operation state transition descriptors describing fault detection and special symbols is called the detection path.
[0072] Step S3.1: Determination of the sensitization path in the simplest detection sequence for coupled faults
[0073] In this embodiment, the specific determination process is as follows: Figure 3 As shown, it includes the following steps:
[0074] Step S3.1.1: Determine the operation or state of the attacking unit and the victim unit during sensitization.
[0075] Step S3.1.2: Determine the relative address direction of the attacking unit and the victim unit.
[0076] Step S3.1.3: Determine the state tuples before and after memory access operations in the sensitization path: This is divided into the following three cases:
[0077] a. The sensitivity operation of the attack unit is a write operation. If the sensitivity operation of the attack unit is a write operation, then the current address unit is used to represent the attack unit, and the state of the current address unit in the state tuple before the memory access operation is written into the state before the write operation. If the sensitivity operation of the attack unit is a read operation, the current address unit is used to represent the attack unit, and the state of the current address unit in the state tuple before the operation is the state after the read operation. Then, based on the relative address direction of the attack unit and the victim unit, it is determined whether the high address is the victim unit or the low address is the victim unit. The state of the victim unit is written into the corresponding position. The remaining states are written into 'x' unless otherwise specified. The address increment direction and the sensitivity memory access operation are combined with the state tuple before the memory access operation. At the same time, based on the memory access operation, the state tuple after the memory access operation is written to obtain the sensitivity path.
[0078] b. The sensitivity operation of the victim unit is an operation. If the sensitivity operation of the victim unit is a write operation, then the victim unit is represented by the current address unit, and the state of the current address unit in the state tuple before the memory access operation is written into the state before the write operation. If the sensitivity operation of the victim unit is a read operation, the victim unit is represented by the current address unit, and the state of the current address unit in the state tuple before the operation is the state after the read operation. Then, based on the relative address direction of the attacking unit and the victim unit, it is determined whether the high address is the attacking unit or the low address is the attacking unit. The state of the attacking unit is written into the corresponding position. The remaining states are written into 'x' unless otherwise specified. The address increment direction and the sensitivity memory access operation are combined with the state tuple before the memory access operation. At the same time, based on the memory access operation, the state tuple after the memory access operation is written to obtain the sensitivity path.
[0079] c. Since both the attack unit and the victim unit's sensitization operations are states, the sensitization path description omits the address increment direction and memory access operation in the memory access operation state transition descriptor, representing the sensitization path with only a state tuple. The current address unit can be either an attack unit or a victim unit. If the current address unit is a victim unit, the victim unit's sensitization state is written into the current address unit of the state tuple. Then, based on the relative address relationship between the victim unit and the attack unit, the attack unit's sensitization state is written into the corresponding position of the state tuple. The remaining positions are filled with "x". If the current address unit is a victim unit, the detection path and the sensitization path can be in one March element. If the current address unit is an attack unit, the attack unit's sensitization state is written into the current address unit of the state tuple. Then, based on the relative address relationship between the victim unit and the attack unit, the victim unit's sensitization state is written into the corresponding position of the state tuple. The remaining positions are filled with "x". If the current address unit is an attack unit, the detection path and the sensitization path must be separated into two March elements.
[0080] Step S3.2: Determination of the sensitization path in the simplest detection sequence for a single unit fault
[0081] In this embodiment, the specific determination process is as follows: Figure 4 As shown, it includes the following steps:
[0082] Step S3.2.1: Determine the operation or state of the faulty unit during sensitization.
[0083] Step S3.2.2: Determine the state tuples in the sensitization path: This involves two cases:
[0084] a. If the sensitivity of the fault unit is a state, the fault unit is represented by the current address unit. Only one state tuple is used to represent the sensitivity path of the fault. The state of the fault unit when sensitivity is applied is written to the current address unit of the state tuple. The remaining position is written as x.
[0085] b. If the sensitivity of the faulty unit is an operation, it can be divided into a read operation and a write operation. If it is a read operation, the current address of the state tuple before the memory access operation stores the state after the read operation, and the remaining positions are written with 'x'. If it is a write operation, then the state of the current address of the state tuple before the memory access operation is the state before the write operation, and the remaining positions are written with 'x'. Combine the memory access operation and the address increment direction with the state tuple before the memory access operation, and obtain the state tuple after the memory access operation based on the memory access operation to obtain the sensitivity path.
[0086] Step S3.3: Determining the detection path in the simplest detection sequence
[0087] In this embodiment, the specific determination process is as follows: Figure 5 As shown, it includes the following steps:
[0088] The detection path can be completed with only one read operation, which is determined based on the victim unit;
[0089] Step S3.3.1: If the sensitization of the victim unit is state 0, then the detection path is r0; if the sensitization of the victim unit is state 1, then the detection path is r1.
[0090] Step S3.3.2: If the sensitization of the victim unit is an operation, the detection path is determined based on the state after the operation. If the state after the operation is 0, then the detection path is r0; if the state after the operation is 1, then the detection path is r1.
[0091] Step S3.4: Concatenate the sensitization path and detection path in sequence, and modify the corresponding memory access operation with special symbols according to the characteristics represented by the special symbols to form the simplest detection sequence corresponding to the fault primitive. All the simplest detection sequences corresponding to the fault primitives constitute the simplest detection sequence table.
[0092] Determining the simplest detection path for coupled faults: Taking the fault primitive CFst<0; 1 / 0 / ->↑ as an example, it can be seen from the fault primitive that the sensitization operations of both the attacking and victim units are states. The victim unit is in state 0, and the attacking unit is in state 1, causing this fault sensitization. The address of the attacking unit is higher than the address of the victim unit. Therefore, in the state tuple, the current address unit state is written as the victim unit's state 1, the higher address unit state is written as the attacking unit's state 0, and the lower address unit state is written as x. The resulting state tuple for the coupled fault CFst<0; 1 / 0 / ->↑ sensitization path is:<x,1,0> The current address unit can also write the attacking unit's state 0, the victim unit's state in the lower address unit, and x in the higher address unit, resulting in the state tuple <1,0,x> for the coupled fault CFst<0;1 / 0 / ->↑ sensitive path. The detection path is determined based on the victim unit's state, so the detection path is r1. Thus, the simplest detection sequence for the fault primitive CFst<0;1 / 0 / ->↑ is...<x,1,0> ↑r1 or<x,1,0> ↓r1 can also be <1,0,x>↑r1 or <1,0,x>↓r1.
[0093] Considering that the sensitization operation of the attacking unit is a state, while the sensitization operation of the victim unit is an operation state, the fault primitive CFtr<0; 0w1 / 0 / ->↑ indicates that the sensitization operation of the attacking unit is 0, and the sensitization operation of the victim unit is 0w1. The address of the attacking unit is higher than the address of the victim unit. Because the sensitization operation of the victim unit is a write operation, the current address of FST is the state 0 before the victim unit was written. Based on the relative address relationship between the attacking unit and the victim unit, the state of the higher address unit is 0, therefore FST is...<x,0,0> Combining memory access operations, for<x,0,0> ↑w1<x,1,0> The address increment direction of memory access operations can also be ↓, which will not be elaborated here. The detection path needs to be determined based on the state of the victim cell after the write operation, i.e., r1. Since the current address cell represents the state of the victim cell, the detection path can be separated from the sensitivity path into two March elements, or they can be not separated. Therefore, the simplest detection path is CFtr<0; 0w1 / 0 / ->↑.
[0094] From the fault primitive CFdsrx<r0;1 / 0 / -> As shown above, the sensitivity operation of the attacking unit is a read operation r0, and the sensitivity operation of the victim unit is state 1. The address of the attacking unit is higher than the address of the victim unit. Therefore, in the FST of the sensitivity path, state 0 is written to the current address unit and state 1 is written to the lower address unit, resulting in FST as <1,0,x>. Combining this with the sensitivity memory access operation, the sensitivity path of the fault primitive is <1,0,x>↑r0. The detection path is r1. Since the current address unit stores the attacking unit, the detection path and the sensitivity path must be separated into two March elements, resulting in <1,0,x>↑r0;↑r1. Furthermore, if some elements that do not change the sensitivity state are added after r0, this fault can also be detected. Therefore, the fault primitive CFdsrx...<r0;1 / 0 / -> The simplest detection sequence for ↑ is <1,0,x>↑r0*;↑r1.
[0095] Determining the simplest detection sequence for a single-unit fault: The fault primitive <1w0 / 1 / -> has a write operation as its sensitivity operation. Therefore, the current address of the state tuple before the memory access operation is set to state 1 before the write operation (0), and the states of the other two address units are written as x. Thus, the state tuple before the memory access operation is...<x,1,x> The write operation is sensitiveized in combination, resulting in the sensitiveized path of the fault primitive <1w0 / 1 / ->. Based on the detection path generation rules, the detection path is r0. This fault detection path can be separated from the sensitization path into two different March elements, but they do not necessarily have to be separated into different March elements. Based on the above analysis, we obtain the simplest detection sequence for this fault primitive as follows:
[0096] Table 2 shows some of the simplest detection sequences in the list of simplest detection sequences:
[0097]
[0098]
[0099] Table 2
[0100] Step S4: Delete one or more access operations that do not affect the detection of fault types.
[0101] Step S4.1: Decompose the entire March class algorithm and obtain the memory access operation state transition descriptor for each March element according to the method in step S2, as shown in Table 1.
[0102] Step S4.2: Based on the simplified detection sequence list shown in Table 2 obtained in step S3, determine which simplified detection sequences can match the memory access operation state transition descriptors of the March elements in the March algorithm. This yields the fault types that can be detected for each March element, resulting in a fault detection table.
[0103] Step S4.3: Compare the fault types that each March element in the fault detection table can detect. If two or more memory access operations can detect the same fault, delete one or more access operations that do not affect the detection of fault types. That is, after the memory access operation is deleted, the fault types detected by the March-type algorithm remain unchanged. Otherwise, the access operation is retained.
[0104] If March elements only have opposite address increment directions, then they detect the same fault type. If it's a coupled fault, only the relative address directions of the attacking and victim units are different. Figure 6 As can be seen, with the memory access operation at number 6 as the dividing line, the only difference between the two parts of March elements is the direction of address increment. Therefore, when analyzing the faults that March C can detect, we only need to analyze the first half, and the conclusions can naturally be drawn from the second half as well.
[0105] The detectable faults in the first half are summarized in Table 3:
[0106]
[0107]
[0108] Table 3
[0109] Figure 7 This is a schematic diagram showing that March C can detect some faults. (From...) Figure 7 As shown in Table 3, memory access operations 2 and 6 detect the same faults. Since they can detect the same faults, only one can be retained. However, Table 3 shows that memory access operation 6 can detect faults not only on its own as a simplified detection sequence, but also in combination with memory access operation 5. If we delete memory access operation 6, the faults detected by the combination of memory access operations 5 and 6 will no longer be detected. Therefore, we must delete memory access operation 2. Memory access operations 6 and 7, when combined, can also detect the faults DRDF<r0 / 1 / 0> and CFdrd<0;r0 / 1 / 0>. Therefore, based on the above analysis, we can conclude that March C can omit memory access operation 2, resulting in a simpler March-type algorithm:
[0110] As shown in the examples above, the optimization method for March-type algorithms in memory testing according to the present invention can effectively analyze the fault types of March-type algorithms and optimize them, thereby reducing access operations during the testing process and further reducing testing time.
[0111] Although the illustrative specific embodiments of the present invention have been described above to enable those skilled in the art to understand the invention, it should be understood that the invention is not limited to the scope of the specific embodiments. For those skilled in the art, various changes are obvious as long as they are within the spirit and scope of the invention as defined and determined by the appended claims, and all inventions utilizing the concept of the present invention are protected.< / las> < / las> < / las> < / las> < / las> < / las> < / las>
Claims
1. An optimization method for a memory testing March-type algorithm, characterized in that, Includes the following steps: (1) Construct memory access operation state transition descriptor The expression for the memory access operation state transition descriptor is: <las cas has>a o1 <las cas has>Where LAS represents the state of the low address cell in memory, CAS represents the state of the current address cell, and HAS represents the state of the high address cell. {x, 0, 1}, where x indicates that the state of the memory cell is irrelevant, 0 indicates that the state of the memory cell is 0, 1 indicates that the state of the memory cell is 1, a indicates the direction of address increment, and o1 indicates a memory access operation. The memory access operation state transition descriptor expression contains... <las cas has>Called a state tuple, the first one <las cas has>This is called the pre-memory access state tuple FST, the second one. <las cas has> This is called the post-memory access state tuple LST. FST and LST in the expression can be omitted depending on the specific situation.< / las> < / las> < / las> < / las> < / las> (2) Determine the memory access state transition descriptor for the March element in the March class algorithm; 2.1) Determine the initial state of the March element; The initial state of the March element is consistent with the final state of the March element preceding the current March element in the entire March algorithm. The final state of the March element is equal to the CAS value of the current address unit of the state tuple LST after the last memory access operation of the March element. If the current March element is the first March element in the entire March algorithm, the initial state is determined according to the set initial state or the initial state is recorded as x. 2.2) Determine the state of the state tuple FST before the memory access operation; If it is the first memory access operation, the state of its pre-access state tuple FST is determined based on the last write memory access operation in the March element. If the address increment direction is ↑, then the low address unit state LAS of the pre-access state tuple FST of the first memory access operation is the state written by the last write operation; if the address increment direction is opposite, then the high address unit state HAS of the pre-access state tuple FST of the first memory access operation is the state written by the last write operation, and the remaining positions are the same as the initial state. If it is not the first operation, that is, the memory access operation starting from the second memory access operation, the state tuple before the memory access operation is the state tuple after the memory access operation of the previous memory access operation. 2.3) Determine the state of the state tuple LST after the memory access operation; If the current memory access operation is a read operation, then the state tuple LST after the memory access operation is the same as the state tuple FST before the memory access operation. If the current memory access operation is a write operation, the low address unit state LAS and the high address unit state of the state tuple LST after the memory access operation are consistent with the state tuple FST before the memory access operation, and the current address unit state CAS is equal to the value written in the write operation. 2.4) Obtain the before and after state tuples of all memory access operations for the March element in sequence; (3) Determine the simplest detection sequence corresponding to the fault primitive and construct the simplest detection sequence list; The simplest detection sequence is described using memory access operation state transition descriptors and special symbols. The special symbol "*" indicates that zero or more memory access operations can be added, as long as the added extra memory access operations do not change the fault sensitivity operation. "^" indicates that the current memory access operation must be the first operation of the March element. "#" indicates that the March element can be split into two March elements from the current position, but the splitting of the current March element is optional. ";" indicates that the March element must be split into two March elements from the current position. The special symbols "^", "#", and ";" modify the memory access operation immediately following them, while the special symbol "*" does not modify any memory access operation. The simplest detection sequence is determined by the fault type and the initial state of the memory unit, using fault sensitivity and memory access operation state transition descriptors. For coupled faults, the relative address direction between the attacking and victim units must also be considered. The combination of memory access operation state transition descriptors describing fault sensitivity and special symbols is called the sensitivity path, and the combination of memory access operation state transition descriptors describing fault detection and special symbols is called the detection path. 3.1) Determination of the sensitization path in the simplest detection sequence for coupled faults; 3.1.1) Determine the operation or state of the attacking and victim units during sensitization; 3.1.2) Determine the relative address direction of the attacking unit and the victim unit; 3.1.3) Determine the state tuples before and after memory access operations in the sensitivity path: This is divided into the following three cases: a. The sensitivity operation of the attack unit is a write operation. If the sensitivity operation of the attack unit is a write operation, then the current address unit is used to represent the attack unit, and the state of the current address unit in the state tuple before the memory access operation is written into the state before the write operation. If the sensitivity operation of the attack unit is a read operation, the current address unit is used to represent the attack unit, and the state of the current address unit in the state tuple before the operation is the state after the read operation. Then, based on the relative address direction of the attack unit and the victim unit, it is determined whether the high address is the victim unit or the low address is the victim unit. The state of the victim unit is written into the corresponding position. The remaining states are written into 'x' unless otherwise specified. The address increment direction and the sensitivity memory access operation are combined with the state tuple before the memory access operation. At the same time, based on the memory access operation, the state tuple after the memory access operation is written to obtain the sensitivity path. b. The sensitivity operation of the victim unit is an operation. If the sensitivity operation of the victim unit is a write operation, then the victim unit is represented by the current address unit, and the state of the current address unit in the state tuple before the memory access operation is written into the state before the write operation. If the sensitivity operation of the victim unit is a read operation, the victim unit is represented by the current address unit, and the state of the current address unit in the state tuple before the operation is the state after the read operation. Then, based on the relative address direction of the attacking unit and the victim unit, it is determined whether the high address is the attacking unit or the low address is the attacking unit. The state of the attacking unit is written into the corresponding position. The remaining states are written into 'x' unless otherwise specified. The address increment direction and the sensitivity memory access operation are combined with the state tuple before the memory access operation. At the same time, based on the memory access operation, the state tuple after the memory access operation is written to obtain the sensitivity path. c. Since both the attack unit and the victim unit's sensitization operations are states, the sensitization path description omits the address increment direction and memory access operation in the memory access operation state transition descriptor, representing the sensitization path with only a state tuple. The current address unit can be either an attack unit or a victim unit. If the current address unit is a victim unit, the victim unit's sensitization state is written into the current address unit of the state tuple. Then, based on the relative address relationship between the victim unit and the attack unit, the attack unit's sensitization state is written into the corresponding position of the state tuple. The remaining positions are filled with "x". If the current address unit is a victim unit, the detection path and the sensitization path can be in one March element. If the current address unit is an attack unit, the attack unit's sensitization state is written into the current address unit of the state tuple. Then, based on the relative address relationship between the victim unit and the attack unit, the victim unit's sensitization state is written into the corresponding position of the state tuple. The remaining positions are filled with "x". If the current address unit is an attack unit, the detection path and the sensitization path must be separated into two March elements. 3.2) Determination of the sensitization path in the simplest detection sequence for a single unit fault; 3.2.1) Determine the operation or state of the faulty unit during sensitization; 3.2.2) Determine the state tuples in the sensitization path: This involves two cases: a. If the sensitivity of the fault unit is a state, the fault unit is represented by the current address unit. Only one state tuple is used to represent the sensitivity path of the fault. The state of the fault unit when sensitivity is applied is written to the current address unit of the state tuple. The remaining position is written as x. b. If the sensitivity of the fault unit is an operation, it is divided into read operation and write operation. If it is a read operation, the current address of the state tuple before the memory access operation saves the state after the read operation, and the remaining positions are written to x. If it is a write operation, then the state of the current address unit of the state tuple before the memory access operation is the state before the write operation, and the remaining positions are written as x; combine the memory access operation and the address increment direction with the state tuple before the memory access operation, and obtain the state tuple after the memory access operation based on the memory access operation to obtain the sensitive path. 3.3) Determination of the detection path in the simplest detection sequence; The detection path can be completed with only one read operation, which is determined based on the victim unit; 3.3.1) If the victim unit's sensitization is state 0, then the detection path is r0; if the victim unit's sensitization is state 1, then the detection path is r1. 3.3.2) If the sensitization of the victim unit is an operation, the detection path is determined based on the state after the operation. If the state after the operation is 0, then the detection path is r0; if the state after the operation is 1, then the detection path is r1. 3.4) The sensitization path and detection path are concatenated in sequence, and the corresponding memory access operations are modified with special symbols according to the characteristics represented by the special symbols to form the simplest detection sequence corresponding to the fault primitive. All the simplest detection sequences corresponding to the fault primitives constitute the simplest detection sequence table. (4) Delete one or more access operations that do not affect the detection of fault types; 4.1) The entire March class algorithm is split into parts, and the memory access operation state transition descriptor for each March element is obtained according to the method in step (2); 4.2) Based on the simplest detection sequence list obtained in step (3), determine which simplest detection sequences can match the memory access operation state transition descriptor of the March element in the March algorithm. In this way, the fault types that each March element can detect are obtained, and the fault detection table is obtained. 4.3) Compare the fault types that each March element in the fault detection table can detect. If two or more memory access operations can detect the same fault, delete one or more access operations that do not affect the detection of fault types. That is, after the memory access operation is deleted, the fault types detected by the March-type algorithm remain unchanged. Otherwise, the access operation is retained.
Citation Information
Patent Citations
BIST-based open-circuit test method for TSVs in 3D SRAM
CN105203908A
System and method for efficiently detecting coupling failure of static random access memory
CN106205738A