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.

Fault listing

Each fault type is treated a little differently. For stuck-at faults the fault list looks like:

(1) net I145 stuck at 0

Where (#) is defining the fault number, net means this is a node, as opposed to a primary input/output, I145 is the node name, and stuck at X where X is either a 0 or a 1.

For bridge faults:

(1) Bridge oi3s_oi3s I143 I145 7415.761

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 [3].

Test patterns

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

input:

101011011011101110000100111101011001

output:

1111011

Each test gives the number of patterns, the inputs used, and the outputs generated.

Error sets

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 1, then it is represented by error set 7. While there isnít any compression in this instance, when there are faults observable on multiple outputs, each group is represented by one error set. So if there is an observable error on outputs 1, 4, & 7 then it is represented, as shown here, by error set 61.

7> 1

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.

These files need to be turned into dictionary databases, which are the actual input files. Please see the Tutorial or the Appendix for information on how to create .ddbís.