Information Technology Reference
In-Depth Information
Tabl e 1 . Diagnosis results
Test case
Static Analysis
Dynamic Analysis
Correction-Based
Bit0
Bit1 (1) (2) (3) (4) (5) LOC (1) (2) (3) (4) (5) LOC (1) (2) (3) (4) (5) LOC
0
0
x
x
x
x
x
12
x
x
x
6
x
x
4
1
0
x
x
x
x
x
12
x
x
x
6
x
x
4
0
1
x
x
x
x
x
12
x
x
x
x
10
x
x
x
8
1
1
x
x
x
x
x
12
x
x
x
x
10
x
x
x
8
Single fault
x
x
x
x
x
12
x
x
4
x
2
Multiple fault
x
x
x
x
x
12
x
x
x
x
x
12
x
2
to Bit
)areBooleans
and the output ( ByteV alue ) is a byte of bit-width 8. The program checks
each input bit separately and adds the corresponding value to ByteV alue .
The program is faulty at checking the value of Bit
7
) into a byte ( ByteV alue ). The inputs ( Bit
0
to Bit
7
(Line 3, marked bold).
Here, the logical AND ( A ) is used instead of the (correct) NAND operator
( AN ). Therefore, the least significant bit ( Bit
0
0
) is not interpreted correctly
and the condition in code block
inverts. The computed ByteV alue is
either too high or too low with a delta of one.
To demonstrate the techniques, the program is partially defined and re-
quires input values for Bit
(2)
, only. The primary output ByteV alue
is the observation point in the example. Simulating the test case Bit
0
and Bit
1
0=1
and Bit
1=0
leads to the faulty value v faulty (
ByteValue
)=0
whereas
v expected (
is expected.
Figure 1 (center) shows an abstract CDFG for the IL program. The num-
bers in brackets are referencing the corresponding code block in IL (Fig-
ure 1 (left)). For example, the two instructions in code block
ByteValue
)=1
(1)
initialize
ByteV alue with
.
The details of the register changes of the CPU are exemplarily shown for
the instructions in block (1) and block (2) on the right-hand side of Figure 1.
The internal registers of the CPU are enclosed in '<' and '>'. For example, the
two accumulators are denoted by '<ACCU1>' and '<ACCU2>'. As shown
in Figure 1, the operations use and modify different registers. Thus, a fault
candidate gives additional information to the internal registers where the
fault is observable best. Moreover, a fine granular component model may
further increase the accuracy of diagnosis by highlighting value changes on
register level as potential fault candidates.
Table 1 compares the quality of the debugging results with respect to all
possible test cases (
0
2 2 = 4) (Column Test case ). The rest of the columns
give the diagnosed code blocks (
)forthealgorithmsandthecorre-
sponding number of lines in the IL program (Column LOC ). An 'x' marks
the diagnosis with respect to the test case. The final diagnosis results for the
consideration of all four test cases with respect to a single fault assumption
and a multiple fault assumption is given in the last two rows. Note, code
blocks are highlighted, but the diagnosis is itself performed on instruction
(1)
, ..,
(5)
 
Search WWH ::




Custom Search