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)