A method for generating a March - type algorithm for memory testing
By constructing a state transition descriptor for memory access operation and the simplest detection sequence synthesis method, a March-like algorithm suitable for a given fault dictionary is generated, which solves the shortcomings of fault coverage and test time in memory testing, and realizes flexible fault detection.
Patent Information
- Application Number
- CN202211660776.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2022-12-23
- Publication Date
- 2025-07-29
- Estimated Expiration
- 2042-12-23
AI Technical Summary
Existing memory test March algorithms have shortcomings in fault coverage and test time, and it is difficult to flexibly apply to different fault types.
By constructing a state transition descriptor for the memory access operation, the simplest detection sequence corresponding to the fault primitive is determined, and the simplest detection sequence is used to synthesize the March-like algorithm that is adapted to the fault type, including grouping, intra-group merging and inter-group merging, to generate a March-like algorithm suitable for a given fault dictionary.
It realizes flexible use of March-like algorithms, improves fault coverage and reduces test time.
Smart Images

Figure CN115954038B_ABST
Abstract
Description
Technical Field
[0001] The present invention belongs to the technical field of integrated circuit testing. More specifically, it relates to a method for generating a March - type algorithm for memory testing. Background Art
[0002] With the development of integrated circuit technology, integrated circuit products are evolving towards smaller size, faster speed, and lower power consumption. In integrated circuit products, memory, as a memory device for storing data, is one of the fastest - developing technologies. The proportion of memory on the chip is increasing, the integration degree of transistors in the memory is getting higher, and the probability of defects occurring during the manufacturing process is increasing. Therefore, memory testing is becoming increasingly important.
[0003] A good test algorithm in memory testing can reduce the testing time and ensure the fault coverage rate. Among them, the March - type algorithm occupies an important position in memory testing because of its high fault coverage rate and low testing time. Summary of the Invention
[0004] The purpose of the present invention is to overcome the deficiencies of the prior art and provide a method for generating a March - type algorithm for memory testing, so as to obtain a suitable March - type algorithm for a given fault dictionary and make the use of the March algorithm more flexible.
[0005] To achieve the above - mentioned invention purpose, the method for generating a March - type algorithm for memory testing according to the present invention is characterized by including the following steps:
[0006] (1) Construct a memory - access operation state transition descriptor
[0007] The expression of the memory - access operation state transition descriptor is <las cas has>a o1 <las cas has>Among them, LAS represents the state of the low-address unit in the memory, CAS represents the state of the current address unit, HAS represents the state of the high-address unit, LAS, CAS, HAS ∈ {x, 0, 1}, where x indicates that the state of the storage unit is not concerned, 0 indicates that the state of the storage unit is 0, 1 indicates that the state of the storage unit is 1, a represents the address increment direction, o1 represents a memory access operation, and in the memory access operation state transition descriptor expression <las cas has>Called a state tuple, the first <las cas has>is called the memory access operation pre-state tuple FST, the second <las cas has>It is called the post - memory - access operation state tuple LST. Both FST and LST in the expression can be omitted according to specific situations;
[0008] (2) Determine the simplest detection sequence corresponding to the fault primitive and construct the simplest detection sequence list
[0009] Use the memory - access operation state transition descriptor and special symbols to describe the simplest detection sequence. Among them, the special symbol "*" represents that zero or more memory - access operations can be added, as long as the added additional memory - access operations do not change the fault - sensitization 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 it can choose not to split the current March element. ";" indicates that the March element must be split into two March elements at the current position. Among them, the special symbols "^", "#", and ";" all modify the memory - access operation immediately following them, and the special symbol "*" does not modify any memory - access operation. The simplest detection sequence is a memory - access operation descriptor for fault sensitization and detection determined according to the fault type and the initial state of the storage unit. For a coupling fault, the relative address direction between the attacking unit and the victim unit also needs to be considered;
[0010] The combination of the memory - access operation state transition descriptor and special symbols that describes fault sensitization is called the sensitization path, and the combination of the memory - access operation state transition descriptor and special symbols that describes fault detection is called the detection path;
[0011] 2.1) Determination of the sensitization path in the simplest detection sequence for coupling faults
[0012] 2.1.1) Determine the operations or states of the attacking unit and the victim unit during sensitization;
[0013] 2.1.2) Determine the relative address direction between the attacking unit and the victim unit;
[0014] 2.1.3) Determine the pre - and post - memory - access operation state tuples in the sensitization path, which are divided into the following three cases:
[0015] a. The sensitization operation of the attacking unit is an operation. If the sensitization operation of the attacking unit is a write operation, then use the current address unit to represent the attacking unit, and write the state of the current address unit in the pre - memory - access state tuple into the state before the write operation. If the sensitization operation of the attacking unit is a read operation, use the current address unit to represent the attacking unit, and the state of the current address unit in the pre - operation state tuple is the state after the read operation; then determine whether the high - address unit is the victim unit or the low - address unit is the victim unit according to the relative address direction between the attacking unit and the victim unit, write the state of the victim unit at the corresponding position, and for the remaining states, write x if there are no special requirements; combine the address - increment direction and the sensitized memory - access operation with the pre - memory - access state tuple, and at the same time, according to the memory - access operation, write out the post - memory - access state tuple to obtain the sensitization path;
[0016] b. The sensitization operation of the victim unit is an operation. If the sensitization operation of the victim unit is a write operation, then use the current address unit to represent the victim unit, and write the state of the current address unit in the pre - memory - access state tuple into the state before the write operation. If the sensitization operation of the victim unit is a read operation, use the current address unit to represent the victim unit, and the state of the current address unit in the pre - operation state tuple is the state after the read operation; then determine whether the high - address unit is the attacking unit or the low - address unit is the attacking unit according to the relative address direction between the attacking unit and the victim unit, write the state of the attacking unit at the corresponding position, and for the remaining states, write x if there are no special requirements; combine the address - increment direction and the sensitized memory - access operation with the pre - memory - access state tuple, and at the same time, according to the memory - access operation, write out the post - memory - access state tuple to obtain the sensitization path;
[0017] c. The sensitization operations of both the attacking unit and the victim unit are states. Then, when describing the sensitization path, omit the address - increment direction and the memory - access operation in the memory - access operation state transition descriptor, and only use one state tuple to represent the sensitization path; the current address unit can be either the attacking unit or the victim unit. If the current address unit is the victim unit, then write the state when the victim unit is sensitized into the current address unit in the state tuple, and then according to the relative address relationship between the victim unit and the attacking unit, write the state when the attacking unit is sensitized at the corresponding position in the state tuple, and write x in the remaining positions. And if the current address unit is the victim unit, then the detection path and the sensitization path can be in one March element; if the current address unit is the attacking unit, then write the state when the attacking unit is sensitized into the current address unit in the state tuple, and then according to the relative address relationship between the victim unit and the attacking unit, write the state when the victim unit is sensitized at the corresponding position in the state tuple, and write x in the remaining positions. And if the current address unit is the attacking unit, then the detection path and the sensitization path should be split into two March elements;
[0018] 2.2) Determination of the sensitization path in the simplest detection sequence for a single unit failure
[0019] 2.2.1) Determine the operation or state of the faulty unit during sensitization.
[0020] 2.2.2) Determine the state tuples in the sensitization path: There are two cases:
[0021] a. If the sensitization of the faulty unit is a state, use the current address unit to represent the faulty unit, and only use one state tuple to represent the sensitization path of the fault. Write the state of the faulty unit during sensitization in the current address unit of the state tuple, and write x in the remaining positions;
[0022] b. If the sensitization of the faulty unit is an operation, it is divided into a read operation and a write operation. If it is a read operation, save the state after the read operation in the current address unit of the state tuple before the memory access operation, and write x in the remaining positions; if it is a write operation, then the state in the current address unit of the state tuple before the memory access operation is the state before the write operation, and write x in the remaining positions; 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 sensitization path;
[0023] 2.3) Determination of the detection path in the simplest detection sequence
[0024] The detection path can be completed with only one read operation, and this read operation is determined according to the victim unit;
[0025] 2.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;
[0026] 2.3.2) If the sensitization of the victim unit is an operation, the detection path is determined according to the state after the operation. If the state after the operation is 0, then the detection path is r0, and if the state after the operation is 1, then the detection path is r1;
[0027] 2.4) Concatenate the sensitization path and the detection path in sequence, and according to the characteristics represented by the special symbols, modify the corresponding memory access operations with special symbols to form the simplest detection sequence corresponding to the fault primitive. The simplest detection sequences corresponding to all fault primitives form the simplest detection sequence list;
[0028] (3) Use the simplest detection sequence to synthesize a March - type algorithm adapted to the fault type
[0029] 3.1) List the faults to be detected, and retain the fault primitives in one address increment direction: that is, either all retain the fault primitives in the ↑ direction or all retain the fault primitives in the ↓ direction;
[0030] 3.2), find the simplest detection sequence corresponding to the fault primitive in the simplest detection sequence list according to the fault primitive;
[0031] 3.3), divide the simplest detection sequences with the same memory access operations into a group;
[0032] 3.4), view the status tuples of the simplest detection sequences in the same group. At this time, two situations will occur. One is that the status tuples of the simplest detection sequences do not match, that is, the relationship between the two status tuples is not an equal relationship or an inclusion relationship, and they cannot be merged. Then, the simplest detection sequences that cannot be merged are divided into different groups; the other is that the status tuples are in an equal relationship or an inclusion relationship, and the simplest detection sequences are merged. The merging rule is to retain the memory access operations and retain the status tuple with the most constraints. The most constraints means that the most states are determined in the status tuple;
[0033] 3.5), after the merging of the simplest detection sequences in the same group is completed, perform the merging between different groups. The merging between different groups needs to consider two factors, namely the status tuple and the memory access operation sequence, and there are the following two situations: one is that the status tuples are in an equal or inclusion relationship. At this time, check whether the memory access operations after the equal or included status tuples are equal, or a read operation that does not change the status tuple. If the above relationship exists and the address increment directions before the two memory access operations are equal, perform the merging, that is, retain the status tuple and merge the memory access operations in the same March element; the other is whether there are March elements in an equal or inclusion relationship in the March elements of the simplest detection sequence. If there are, and the address increment directions of the two March elements are the same, check whether the status tuples before and after each memory access operation satisfy the equal or inclusion relationship. If they satisfy, perform the merging, that is, retain the March element and merge the status tuples, retaining the status tuple with the most constraints;
[0034] Repeat this step until all groups can no longer be merged;
[0035] 3.6) After merging different groups, list the initial and end states of each March element. If for two March elements M1 and M2, the end state of M1 is the same as the initial state of M2, then append M2 after M1 to ensure the initial state of M2. Add a write operation before the first March element to ensure the initial state of the first March element. If there is a situation where they cannot be concatenated, add a March element that only contains one write memory access between the two March elements. The state after the write operation is the initial state of the subsequent March element. The initial state of a March element refers to the state that the storage unit should ensure before the March element is executed, that is, the state value of the current address unit in the state tuple before the first memory access operation in the March element. The end state of a March element refers to the state after the operations in the March element are completed, which is the state value of the current address unit in the state tuple after the last memory access operation in the March element.
[0036] 3.7) The above steps obtain a March - type algorithm in the address - increasing direction. Convert the address - increasing direction of the obtained March - type algorithm to the opposite address - increasing direction to obtain the March - type algorithm for detecting the other address - increasing direction. Concatenate the two parts of the March - type algorithms together to obtain the final March - type algorithm.
[0037] The invention object of the present invention is achieved as follows:
[0038] The method for generating a March - type algorithm for memory testing of the present invention first constructs a memory - access operation state transition descriptor, then determines the simplest detection sequence corresponding to the fault primitive and constructs a simplest detection sequence table, and finally synthesizes a March - type algorithm adapted to the fault type using the simplest detection sequence: list the faults, find the simplest detection sequence, group, merge within the group, merge between groups, splice to obtain a March - type algorithm, obtain a March - type algorithm in the opposite address - increasing direction, and finally concatenate the two parts of the March - type algorithms together to obtain the final March - type algorithm. In this way, a suitable March - type algorithm for a given fault dictionary is obtained, making the use of the March algorithm more flexible. Description of the Drawings
[0039] Figure 1 is a flowchart of a specific implementation manner of the method for generating a March - type algorithm for memory testing of the present invention;
[0040] Figure 2 is a flowchart for determining the sensitization path in the simplest detection sequence of a coupling fault;
[0041] Figure 3 It is a flowchart for determining the sensitization path in the simplest detection sequence of a single unit failure;
[0042] Figure 4 It is a flowchart for determining the detection path in the simplest detection sequence;
[0043] Figure 5 It is a flowchart for synthesizing a March - type algorithm adapted to the fault type using the simplest detection sequence. Detailed implementation manners
[0044] The following describes the detailed implementation manners of the present invention with reference to the accompanying drawings, so that those skilled in the art can better understand the present invention. It should be particularly noted that in the following description, when the detailed description of known functions and designs may dilute the main content of the present invention, these descriptions will be omitted here.
[0045] Figure 1 It is a flowchart of a specific implementation manner of an optimization method for the March - type algorithm for memory testing of the present invention.
[0046] In this embodiment, as Figure 1 shown, the optimization method for the March - type algorithm for memory testing of the present invention includes the following steps:
[0047] Step S1: Construct a memory access operation state transition descriptor
[0048] The expression of the memory access operation state transition descriptor is <las cas has>a o1 <las cas has>Among them, LAS represents the state of the low-address unit in the memory, CAS represents the state of the current address unit, HAS represents the state of the high-address unit, LAS, CAS, HAS ∈ {x, 0, 1}, where x indicates that it doesn't matter what state the storage unit is in, 0 indicates that the state of the storage unit is 0, 1 indicates that the state of the storage unit is 1, a represents the address increment direction, o1 represents a memory access operation, and in the memory access operation state transition descriptor expression <las cas has>Called a state tuple, the first <las cas has>is called the memory access operation pre-state tuple FST, the second <las cas has>It is called the post - memory - access operation status tuple LST. Both FST and LST in the expression can be omitted according to specific situations.
[0049] Step S2: Determine the simplest detection sequence corresponding to the fault primitive and construct the simplest detection sequence list
[0050] Use the memory - access operation state transition descriptor and special symbols to describe the simplest detection sequence. Among them, the special symbol "*" represents that zero or more memory - access operations can be added, as long as the added additional memory - access operations do not change the fault - sensitization 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 it can choose not to split the current March element. ";" indicates that the March element must be split into two March elements at the current position. Among them, the special symbols "^", "#", and ";" all modify the memory - access operation immediately following them, and the special symbol "*" does not modify any memory - access operation. The simplest detection sequence is the memory - access operation state transition descriptor for fault sensitization and detection determined according to the fault type and the initial state of the storage unit. For coupled faults, the relative address directions of the attacking unit and the victim unit also need to be considered.
[0051] The combination of the memory - access operation state transition descriptor describing fault sensitization and special symbols is called the sensitization path, and the combination of the memory - access operation state transition descriptor describing fault detection and special symbols is called the detection path.
[0052] Step S2.1: Determination of the sensitization path in the simplest detection sequence for coupled faults
[0053] In this embodiment, the specific determination process is as Figure 2 shown and includes the following steps:
[0054] Step S2.1.1: Determine the operations or states of the attacking unit and the victim unit during sensitization.
[0055] Step S2.1.2: Determine the relative address directions of the attacking unit and the victim unit.
[0056] Step S2.1.3: Determine the pre - and post - memory - access operation status tuples in the sensitization path, which are divided into the following three cases:
[0057] a. The sensitization operation of the attacking unit is an operation. If the sensitization operation of the attacking unit is a write operation, then the current address unit is used to represent the attacking unit, and the state of the current address unit in the pre - memory - access state tuple is written into the state before the write operation. If the sensitization operation of the attacking unit is a read operation, the current address unit is used to represent the attacking unit, and the state of the current address unit in the pre - operation state tuple is the state after the read operation; then, according to the relative address direction between the attacking unit and the victim unit, it is determined whether the high - address is the victim unit or the low - address is the victim unit, and the state of the victim unit is written in the corresponding position. For the remaining states, if there are no special requirements, write x; combine the address - increment direction and the sensitized memory - access operation with the pre - memory - access state tuple, and at the same time, according to the memory - access operation, write out the post - memory - access state tuple to obtain the sensitization path.
[0058] b. The sensitization operation of the victim unit is an operation. If the sensitization operation of the victim unit is a write operation, then the current address unit is used to represent the victim unit, and the state of the current address unit in the pre - memory - access state tuple is written into the state before the write operation. If the sensitization operation of the victim unit is a read operation, the current address unit is used to represent the victim unit, and the state of the current address unit in the pre - operation state tuple is the state after the read operation; then, according to the relative address direction between 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, and the state of the attacking unit is written in the corresponding position. For the remaining states, if there are no special requirements, write x; combine the address - increment direction and the sensitized memory - access operation with the pre - memory - access state tuple, and at the same time, according to the memory - access operation, write out the post - memory - access state tuple to obtain the sensitization path;
[0059] c. If the sensitization operations of both the attacking unit and the victim unit are states, then when describing the sensitization path, the address - increment direction and the memory - access operation in the memory - access operation state transition descriptor are omitted, and only one state tuple is used to represent the sensitization path; the current address unit can be either the attacking unit or the victim unit. If the current address unit is the victim unit, then the state when the victim unit is sensitized is written into the current address unit in the state tuple, and then, according to the relative address relationship between the victim unit and the attacking unit, the state when the attacking unit is sensitized is written in the corresponding position of the state tuple. For the remaining positions, write x, and if the current address unit is the victim unit, then the detection path and the sensitization path can be in one March element; if the current address unit is the attacking unit, then the state when the attacking unit is sensitized is written into the current address unit in the state tuple, and then, according to the relative address relationship between the victim unit and the attacking unit, the state when the victim unit is sensitized is written in the corresponding position of the state tuple. For the remaining positions, write x, and if the current address unit is the attacking unit, then the detection path and the sensitization path should be split into two March elements.
[0060] Step S2.2: Determination of the sensitization path in the simplest detection sequence for a single unit failure
[0061] In this embodiment, the specific determination process is as Figure 3 shown, and it includes the following steps:
[0062] Step S2.2.1: Determine the operation or state of the faulty unit during sensitization.
[0063] Step S2.2.2: Determine the state tuples in the sensitization path: There are two cases:
[0064] a. If the sensitization of the faulty unit is a state, use the current address unit to represent the faulty unit, and only use one state tuple to represent the sensitization path of the fault. Write the state of the faulty unit during sensitization in the current address unit of the state tuple, and write x in the remaining positions;
[0065] b. If the sensitization of the faulty unit is an operation, it is divided into a read operation and a write operation. If it is a read operation, save the state after the read operation in the current address unit of the state tuple before the memory access operation, and write x in the remaining positions; if it is a write operation, then the state in the current address unit of the state tuple before the memory access operation is the state before the write operation, and write x in the remaining positions. 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 sensitization path.
[0066] Step S2.3: Determination of the detection path in the simplest detection sequence
[0067] In this embodiment, the specific determination process is as Figure 4 shown, and it includes the following steps:
[0068] The detection path can be completed with only one read operation, and this read operation is determined according to the victim unit;
[0069] Step S2.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.
[0070] Step S2.3.2: If the sensitization of the victim unit is an operation, the detection path is determined according to the state after the operation. If the state after the operation is 0, then the detection path is r0, and if the state after the operation is 1, then the detection path is r1.
[0071] Step S2.4: Concatenate the sensitization path and the detection path in sequence, and according to the characteristics represented by the special symbols, modify the corresponding memory access operations with special symbols to form the simplest detection sequence corresponding to the fault primitive. The simplest detection sequences corresponding to all fault primitives form the simplest detection sequence table.
[0072] Determination of the simplest detection path for coupling faults: Taking the fault primitive CFst<0; 1 / 0 / ->↑ as an example, from the fault primitive, it can be seen that the sensitization operations of the attacking unit and the victim unit are both states. When the victim unit is in state 0 and the attacking unit is in state 1, this fault is sensitized, and the address of the attacking unit is higher than that of the victim unit. So in the state tuple, the state of the current address unit is written as the state 1 of the victim unit, the state of the high-address unit is written as the state 0 of the attacking unit, and the state of the low-address unit is written as x. The state tuple of the coupling fault CFst<0; 1 / 0 / ->↑ is <x, 1, 0>. The current address unit can also be written as the state 0 of the attacking unit, the state of the low-address unit is written as the state of the victim unit, and the state of the high-address unit is written as x. The state tuple of the coupling fault CFst<0; 1 / 0 / ->↑ is <1, 0, x>. The detection path is determined according to the state of the victim unit, so the detection path is r1. In this way, the simplest detection sequence of the fault primitive CFst<0; 1 / 0 / ->↑ is <x, 1, 0>↑r1 or <x, 1, 0>↓r1, or it can also be <1, 0, x>↑r1 or <1, 0, x>↓r1.
[0073] Considering the case where the sensitization operation of the attacking unit is a state while the sensitization operation of the victim unit is an operation, for the fault primitive CFtr<0; 0w1 / 0 / ->↑, the sensitization operation of the attacking unit is 0, the sensitization operation of the victim unit is 0w1, and the address of the attacking unit is higher than that of the victim unit. Since the sensitization operation of the victim unit is a write operation, the state of the current address unit of the FST is 0 before the victim unit writes. According to the relative address relationship between the attacking unit and the victim unit, the state of the high-address unit can be obtained as 0, so the FST is <x, 0, 0>. Combining the upper access operation, it is <x, 0, 0>↑w1<x, 1, 0>. The address increment direction of the access operation can also be ↓, which will not be elaborated here. The detection path needs to be determined according to the state after the victim unit's write operation, which is r1. From the fact that the current address unit represents the state of the victim unit, it can be seen that the detection path can be split from the sensitization path into two March elements, but it can also not be split. So the simplest detection path of CFtr<0; 0w1 / 0 / ->↑ is
[0074] From the fault primitive CFdsrx<r0; 1 / 0 / ->↑, it can be seen that the sensitization operation of the attacking unit is the read operation r0, the sensitization operation of the victim unit is the state 1, and the address of the attacking unit is higher than that of the victim unit. Therefore, the state 0 is written in the current address unit of the FST in the sensitization path, and the state 1 is written in the lower address units, obtaining the FST as <1, 0, x>. Combining with the sensitized memory access operation, the sensitization 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 sensitization path should be in two different March elements, and <1, 0, x>↑r0; ↑r1 can be obtained. At the same time, if some elements that do not change the sensitization state are added after r0, this fault can also be detected. Therefore, the simplest detection sequence of the fault primitive CFdsrx<r0; 1 / 0 / ->↑ is <1, 0, x>↑r0*; ↑r1.
[0075] Determination of the simplest detection sequence for single - cell faults: For the fault primitive <1w0 / 1 / ->, its sensitization operation is a write operation. Then, the current address unit of the state tuple before the memory access operation is set to the state 1 before the write - 0 operation, and the states of the other two address units are written as x. So, the state tuple before the memory access operation is <x, 1, x>. Combining with the sensitized write operation, the sensitization path of the fault primitive <1w0 / 1 / -> is According to the generation rule of the detection path, the detection path is r0. The detection path of this fault can be in two different March elements from the sensitization path, but it is not necessary to be in different March elements. Based on the above analysis, we obtain the simplest detection sequence of this fault primitive as
[0076] Some of the simplest detection sequences in the simplest detection sequence table are shown in Table 1 as follows:
[0077]
[0078]
[0079] Table 1
[0080] Step S3: Use the simplest detection sequence to synthesize a March - type algorithm adapted to the fault type
[0081] In this embodiment, the specific synthesis process is as Figure 5 shown, including the following steps:
[0082] Step S3.1: List and retain the fault primitives in one direction
[0083] List the faults to be detected and retain the fault primitives in one address - increasing direction: that is, either all the fault primitives in the ↑ direction are retained, or all the fault primitives in the ↓ direction are retained.
[0084] Step S3.2: Find the simplest detection sequence corresponding to the fault primitive in the simplest detection sequence list
[0085] According to the fault primitive, find the simplest detection sequence corresponding to the fault primitive in the simplest detection sequence list.
[0086] Step S3.3: Grouping
[0087] Group the simplest detection sequences with Same memory access operation into one group.
[0088] Step S3.4: Merge within the same group
[0089] Check the status tuples of the simplest detection sequences within the same group. At this time, two situations will occur. One is that the status tuples of the simplest detection sequences do not match, that is, the two status tuples are not in an equal relationship or an inclusion relationship and cannot be merged. Then, the non-mergable simplest detection sequences are split into different groups; the other is that the status tuples are in an equal relationship or an inclusion relationship. Merge the simplest detection sequences. The merging rule is to retain the memory access operations and retain the status tuple with the most constraints. The most constraints means the most determined statuses in the status tuple.
[0090] Step S3.5: Merge between different groups
[0091] After the simplest detection sequences within the same group are merged, merge between different groups. When merging between different groups, two factors need to be considered, namely the status tuple and the memory access operation sequence. There are the following two situations: One is that the status tuples are in an equal or inclusion relationship. At this time, check whether the memory access operations after the equal or included status tuples are equal, or whether a memory access operation is a read operation that does not change the status tuple. If it is the above relationship and the address increment directions before the two memory access operations are equal, merge them, that is, retain the status tuple and merge the memory access operations in the same March element; the other is whether there are March elements in an equal or inclusion relationship in the March elements of the simplest detection sequence. If there are, and the address increment directions of the two March elements are the same, check whether the status tuples before and after each memory access operation satisfy the equal or inclusion relationship. If they satisfy, merge them, that is, retain the March element and merge the status tuples, retaining the status tuple with the most constraints;
[0092] Repeat this step until all groups can no longer be merged;
[0093] Step S3.6: Concatenation
[0094] After merging different groups, list the initial state and the end state of each March element. If for two March elements M1 and M2, the end state of M1 is the same as the initial state of M2, then append M2 after M1 to ensure the initial state of M2. Add a write operation before the first March element to ensure the initial state of the first March element. If there is a situation where they cannot be appended, add a March element that only contains one write memory access between the two March elements, and the state after the write operation is the initial state of the subsequent March element. The initial state of a March element refers to the state that the storage unit should guarantee before the March element, that is, the state value of the current address unit in the state tuple before the first memory access operation in the March element. The end state of a March element refers to the state after the operations in the March element are completed, which is the state value of the current address unit in the state tuple after the last memory access operation in the March element.
[0095] Step S3.7: Reverse the address increment direction to obtain a March - type algorithm in the other direction, and then concatenate the two parts of the March - type algorithm together.
[0096] The above steps obtain a March - type algorithm in one address increment direction. Convert the address increment direction of the obtained March - type algorithm to the opposite address increment direction to obtain a March - type algorithm for detecting in the other address increment direction. Concatenate the two parts of the March - type algorithm together to obtain the final March - type algorithm.
[0097] During the comparison process, there are three relationships between specific state tuples:
[0098] Equality relationship: When the states at the corresponding positions in two state tuples are all the same, the two state tuples are equal.
[0099] Inclusion relationship: When the states at some corresponding positions in two state tuples are in an inclusion relationship and the states at the remaining corresponding positions are equal, then the two state tuples are said to be in an inclusion relationship. The inclusion relationship between states means that state x includes state 0 and state 1.
[0100] Unrelated: When two state tuples have some corresponding positions that are not equal and not in an inclusion relationship, then the two state tuples are said to be unrelated.
[0101] There are also three relationships between March elements:
[0102] Equality relationship: If for two March elements S1 and S2, the address increment directions of S1 and S2 are equal and the ordered memory access sequences are equal, then we say that the two March elements are in an equality relationship.
[0103] Inclusion relationship: For two March elements S1 and S2, if the address increment direction attributes of S1 and S2 are the same, and the ordered memory access operation sequence of S1 is a subset of the ordered memory access operation sequence of S2, then S2 includes S1. Or if the address increment direction attribute of S2 includes the address increment direction attribute of S1 and the ordered memory access operation sequences of S1 and S2 are equal, then S2 includes S1.
[0104] Unrelated: When two March elements S1 and S2 are not equal and not in an inclusion relationship, these two March elements are said to be unrelated.
[0105] The equality and inclusion relationships between address increment directions are as follows:
[0106] Equality relationship: When two address increment directions are exactly the same, we say that the two address increment directions are in an equality relationship.
[0107] Inclusion relationship: When the address increment direction a1 is any element in a2 ∈ {↑, ↓}, then a1 is said to include a2.
[0108] Composite March - type algorithm instances
[0109] First, we list the types of faults we will detect in Table 2.
[0110]
[0111] Table 2
[0112] From Table 2, we can see that each row in the table represents a type of memory fault, and there are multiple fault primitives in one row. Now we find the simplest detection sequences corresponding to the fault primitives in Table 2 and group them. The simplest detection sequences grouped together are combined by combination to obtain Table 3.
[0113]
[0114] Table 3
[0115] After the combination of the simplest detection sequences within the same group is completed, the combination between different groups is carried out. The results after the combination of group numbers 3 and 4 have equal state tuples, and the memory access operations after the state tuple in the combined result of group number 3 are read operations that do not change the state tuple. Therefore, groups 3 and 4 can be combined, and the combined result is Denoted as M1, and "#" represents that the March element can be split into two March elements at the current position. If it is not split at the current position, the pre-operation state tuple of r0 is <x, 0, 1>. If it is split at the current position, the pre-operation state tuple of r0 is <x, 0, x>. In this way, M1 can be merged with the combination result of group number 1, and the merged result is <x, 1, 1>↑(r1, w0)<x, 0, 1>; The combination result of group position 2 r1 can also be split. If it is not split, the pre-operation state tuple of r1 is <x, 0, 1>. If it is split, the pre-operation state tuple of r1 is <x, 0, x>. When splitting, it can be merged with M2, and the merged result is <x, 0, 0>↑w1<x, 1, 0>; <x, 1, 1>↑(r1, w0)<x, 0, 1>; Denoted as M3. The last March element is From M3, it can be seen that the premise for obtaining this March element is that the storage array is initialized to 0, so it can be obtained that
[0116] By converting the address increment direction in M3 to the opposite direction, a March element for detecting the other address increment direction can be obtained, that is Merging them together, we get
[0117] Although the above describes the illustrative specific embodiments of the present invention for the convenience of those skilled in the art to understand the present invention, it should be clear that the present invention is not limited to the scope of the specific embodiments. For those of ordinary skill in the art, as long as various changes are within the spirit and scope of the present invention defined and determined by the appended claims, these changes are obvious, and all inventions and creations using the concept of the present invention are within the scope of protection.< / las> < / las> < / las> < / las> < / las> < / las> < / las> < / las> < / las> < / las>
Claims
1. A method for generating a March - type algorithm for memory testing, characterized in that It includes the following steps: (1). Construct a memory access operation state transition descriptor The expression of the memory access operation state transition descriptor is <las cas has>a o1 <las cas has>Among them, LAS represents the state of the low-address unit in the memory, CAS represents the state of the current address unit, HAS represents the state of the high-address unit, LAS, CAS, HAS ∈ {x, 0, 1}, where x indicates that the state of the storage unit is not concerned, 0 indicates that the state of the storage unit is 0, 1 indicates that the state of the storage unit is 1, a represents the address increment direction, o1 represents a memory access operation, and in the memory access operation state transition descriptor expression <las cas has>Called a state tuple, the first <las cas has>Called the memory access operation pre-state tuple FST, the second <las cas has>which is called the post-memory access operation state tuple LST. Both FST and LST in the expression can be omitted according to specific situations;< / las> < / las> < / las> < / las> < / las> (2). Determine the simplest detection sequence corresponding to the fault primitive and construct a simplest detection sequence list Use the memory access operation state transition descriptor and special symbols to describe the simplest detection sequence. Among them, the special symbol "*" represents that zero or more memory access operations can be added, as long as the added additional memory access operations do not change the sensitization operation of the fault. "^" indicates that the current memory access operation must be the first operation of the March element. "#" means that the March element can be split into two March elements from the current position, but it can be chosen not to split the current March element. ";" means that the March element must be split into two March elements at the current position. Among them, the special symbols "^", "#", and ";" all modify the memory access operation immediately following them, and the special symbol "*" does not modify any memory access operation; The simplest detection sequence is a memory access operation state transition descriptor for fault sensitization and detection determined according to the fault type and the initial state of the storage unit. For a coupling fault, the relative address direction between the attacking unit and the victim unit also needs to be considered; The combination of the memory access operation state transition descriptor describing fault sensitization and special symbols is called the sensitization path, and the combination of the memory access operation state transition descriptor describing fault detection and special symbols is called the detection path; 2.1). Determination of the sensitization path in the simplest detection sequence of a coupling fault 2.1.1). Determine the operations or states of the attacking unit and the victim unit during sensitization; 2.1.2). Determine the relative address direction between the attacking unit and the victim unit; 2.1.3). Determine the pre- and post-memory access operation state tuples in the sensitization path: It is divided into the following three situations: a. If the sensitization operation of the attacking unit is an operation, if the sensitization operation of the attacking unit is a write operation, then use the current address unit to represent the attacking unit, and write the state of the current address unit in the pre-memory access operation state tuple into the state before the write operation. If the sensitization operation of the attacking unit is a read operation, use the current address unit to represent the attacking unit, and the state of the current address unit in the pre-operation state tuple is the state after the read operation; Then, according to the relative address direction between the attacking unit and the victim unit, determine whether the high address is the victim unit or the low address is the victim unit, and write the state of the victim unit at the corresponding position. For the remaining states, if there are no special requirements, write x; Combine the address increment direction and the sensitizing memory access operation with the pre-memory access operation state tuple, and at the same time, write the post-memory access operation state tuple according to the memory access operation to obtain the sensitization path; b. The sensitization operation of the victim cell is an operation. If the sensitization operation of the victim cell is a write operation, then use the current address cell to represent the victim cell, and write the state of the current address cell in the pre - memory - access state tuple into the state before the write operation. If the sensitization operation of the victim cell is a read operation, use the current address cell to represent the victim cell, and the state of the current address cell in the pre - operation state tuple is the state after the read operation; then determine whether the high - address cell or the low - address cell is the attack cell according to the relative address direction between the attack cell and the victim cell, write the state of the attack cell at the corresponding position, and for the remaining states, write x if there are no special requirements; combine the address increment direction and the sensitized memory - access operation with the pre - memory - access state tuple, and at the same time, according to the memory - access operation, write out the post - memory - access state tuple to obtain the sensitization path; c. If the sensitization operations of both the attack cell and the victim cell are states, then when describing the sensitization path, omit the address increment direction and the memory - access operation in the memory - access operation state transition descriptor, and only use one state tuple to represent the sensitization path; the current address cell can be either the attack cell or the victim cell. If the current address cell is the victim cell, then write the state of the victim cell during sensitization into the current address cell in the state tuple, and then according to the relative address relationship between the victim cell and the attack cell, write the state of the attack cell during sensitization at the corresponding position in the state tuple, and write x in the remaining positions. And if the current address cell is the victim cell, then the detection path and the sensitization path can be in one March element; if the current address cell is the attack cell, then write the state of the attack cell during sensitization into the current address cell in the state tuple, and then according to the relative address relationship between the victim cell and the attack cell, write the state of the victim cell during sensitization at the corresponding position in the state tuple, and write x in the remaining positions. And if the current address cell is the attack cell, then the detection path and the sensitization path should be split into two March elements; 2.2) Determination of the sensitization path in the simplest detection sequence for single - cell faults 2.2.1) Determine the operation or state of the faulty cell during sensitization; 2.2.2) Determine the state tuples in the sensitization path: There are two cases: a. If the sensitization of the faulty cell is a state, use the current address cell to represent the faulty cell, and only use one state tuple to represent the sensitization path of the fault. Write the state of the faulty cell during sensitization into the current address cell in the state tuple, and write x in the remaining positions; b. If the sensitization of the faulty unit is an operation, it is divided into a read operation and a 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 for the remaining positions, x is written; If it is a write operation, then the state of the current address cell in the pre - memory - access state tuple is the state before the write operation, and write x in the remaining positions; combine the memory - access operation and the address increment direction with the pre - memory - access state tuple, and according to the memory - access operation, obtain the post - memory - access state tuple to get the sensitization path; 2.3) Determination of the detection path in the simplest detection sequence The detection path can be completed with only one read operation, and this read operation is determined according to the victim cell; 2.3.1) If the sensitization of the victim cell is in state 0, then the detection path is r0; if the sensitization of the victim cell is in state 1, then the detection path is r1; 2.3.2) If the sensitization of the victim cell is an operation, the detection path is determined according to 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; 2.4) Concatenate the sensitization path and the detection path in sequence, and according to the characteristics represented by the special symbols, modify the corresponding memory access operations with special symbols to form the simplest detection sequence corresponding to the fault primitive. The simplest detection sequences corresponding to all fault primitives form the simplest detection sequence list; (3) Use the simplest detection sequence to synthesize a March - type algorithm adapted to the fault type 3.1) List the faults to be detected, and retain the fault primitives in one address - increasing direction: that is, either retain all the fault primitives in the ↑ direction or all the fault primitives in the ↓ direction; 3.2) According to the fault primitive, find the simplest detection sequence corresponding to the fault primitive in the simplest detection sequence list; 3.3) Divide the simplest detection sequences with the same memory access operation into a group; 3.4) Check the state tuples of the simplest detection sequences in the same group. At this time, two situations will occur. One is that the state tuples of the simplest detection sequences do not match, that is, the two state tuples are not in an equal relationship or an inclusion relationship and cannot be merged. Then divide the non - mergable simplest detection sequences into different groups. The other is that the state tuples are in an equal relationship or an inclusion relationship. Merge the simplest detection sequences. The merging rule is to retain the memory access operation and retain the state tuple with the most constraints. The most constraints means that the most states are determined in the state tuple; 3.5) After the merging of the simplest detection sequences within the same group is completed, perform the merging between different groups. The merging between different groups needs to consider two factors, namely the state tuple and the memory access operation sequence, and there are the following two situations: One is that the state tuples are in an equal or inclusion relationship. At this time, check whether the memory access operations after the equal or included state tuples are equal, or whether a certain memory access operation is a read operation that does not change the state tuple. If it is the above relationship and the address - increasing directions before the two memory access operations are equal, perform the merging, that is, retain the state tuple and merge the memory access operations in the same March element. The other is whether there are March elements in an equal or inclusion relationship in the March elements of the simplest detection sequence. If there are, and the address - increasing directions of the two March elements are the same, check whether the state tuples before and after each memory access operation satisfy the equal or inclusion relationship. If they satisfy, perform the merging, that is, retain the March element and merge the state tuples, retaining the state tuple with the most constraints; Repeat this step until all groups can no longer be merged; 3.6) After merging different groups, list the initial state and the end state of each March element. If for two March elements M1 and M2, the end state of M1 is the same as the initial state of M2, then splice M2 after M1 to ensure the initial state of M2. Add a write operation before the first March element to ensure the initial state of the first March element. If there is a situation where splicing is not possible, add a March element that only contains one write memory access between the two March elements. The state after the write operation is the initial state of the subsequent March element. The initial state of a March element refers to the state that the storage unit should ensure before the March element is performed, that is, the state value of the current address unit in the state tuple before the first memory access operation in the March element. The end state of a March element refers to the state after the operations in the March element are completed, which is the state value of the current address unit in the state tuple after the last memory access operation in the March element. 3.7) The above steps result in a March - type algorithm in the address - increasing direction. By converting the address - increasing direction of the obtained March - type algorithm to the opposite address - increasing direction, a March - type algorithm for detecting the other address - increasing direction can be obtained. Splice the two parts of the March - type algorithms together to obtain the final March - type algorithm.
Citation Information
Patent Citations
Method for testing fault of multiposition memorizer inlaid in FPGA
CN102157205A
Storage testing method capable of covering static and dynamic faults
CN103337258A