Pre-Input File: Fault Dictionaries
The basic fault.dictionary format is broken up into four areas: fault listing, test patterns, error sets, and fault signatures.
Each fault type is treated a little differently. For stuck-at faults the fault list looks like:
(1) net I145 stuck at 0
For bridge faults:
Where(#) is defining the fault number, Bridge is the type of fault, oi3s_oi3s are the gate names that are involved, I143 I145 are the names of the bridged nodes, 7415.761 is the weighted critical area as generated by Carafe [4,5]. The weighted critical area isnít important for Sproing itself, but it can be used to generate reduced faultlists that cover most of the likely shorts. (For instance if we take the top 10% of the faultlist, youíll be dealing with 80-90% of the critical area for a given circuit. Actual values will vary.)
For bridgeIDDQ faults:(1) BridgeIDDQ oi3s_xnors I145 I178 14831.521
Where (#) is defining the fault number,BridgeIDDQ is the type of fault, oi3s_xnors are the gates that are involved, I145 I178 are the node names, and 14831.521 is the weighted critical area.
Please see the Nemesis Userís Manual for more information on what I call "fault listing" here, works .
The same test patterns should be used for the creation of each fault dictionary, and they are repeated with their outputs within the dictionary.
1 pattern test
Each test gives the number of patterns, the inputs used, and the outputs generated.
An error set is a form of compression on the set of observed faulty outputs. In the following example, if a test caused a discrepancy on output
61> 1 4 7
21> 1 3 4 5 6 7
BridgeIDDQ faults will always only have one error set line:1> 0
IDDQ tests for current drain, and outputs are not necessarily subject to faulty logic values.
Fault signatures: faults, error sets, vectors
The heart of the dictionary consists of fault signatures. These signatures are composed of faults, error sets, and test vectors. The signatures will look the same for each type of dictionary.
(1) 1: 1 8: 9 51: 15 22 24: 21 27: 34
(2) 1: 1 2 4 6 9 13 15 18 22-24 26-28 31-33 39 45 51-54 58 60-65 68-70 37: 8 10 19 42: 11 43 55 24: 14 21 37 44 10: 40 48 35: 49 66 67 64: 73 31: 80
Faults, the test vectors that detect them, and the error sets make up a signature. Faults are in-between the parenthesis, error sets are a number followed by a ":", and then the test vectors that cause that error set are listed. Test vectors are separated by spaces, or are value-value inclusive. So for fault (1) above, error set 1 is detected by test vector 1; error set 8 is detected by vector 9; set 51 is detected by 15 and 22; and so on.