Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

When silicon chips are fabricated, defects in materials (e.g. silicon) and manuf

ID: 3828068 • Letter: W

Question

When silicon chips are fabricated, defects in materials (e.g. silicon) and manufacturing errors can result in defective circuits. A very common defect is for one wire to affect the signal in another. This is called a cross-talk fault. A special class of cross-talk fault is when a signal is connected to a wire that has a constant logical value (e.g. a power supply wire.) In this case, we have a stuck-at-0 or a stuck-at-1 fault and the affected wire always has a logical value of 0 or 1 respectively.

Registers, Source 2, bit 3

ALU, zero

Instruction memory, Address, bit 1

Design a test (by filling the PC, registers, data memory and instruction memory with some values) to detect a stuck-at-0 fault on this wire. Design a test to detect a stuck-at-1 fault on this wire. If we know the processor has a stuck-at-1 fault on this wire, is the processor still usable? To be usable, we must be able to convert any program that executes on a normal MIPS processor into a program that works on this processor. The processor is usable if every instruction “broken” by this fault can be replace with a sequence of working instructions that achieve the same effect.

Explanation / Answer

Ans::

-->To testt for a stuck--at--zeroo fault on a "wire"., we tend to need an "instruction" that puts thatt "wire" to worth|a worth|a price} "1" & includes a diferent 'result' if value on the 'wire' is stuck-at-0;

-->Bit-7 of the 'instruction_word' is just used because the 'part' of an immediatee//offset a part of 'instruction'.,

so one way to test -would be to 'execute' " ADDI $1 "., "zero", "128" that supposed to 'place' a value

of '128' into '' $1 ''. If the instruction_bit-7 is stuck at zero., '$1' will be '0' because value '128' has all

'bits' at '0' except 'bit-7'.

--> the only '' instructions '' that set thiss 'signal' to '1' are loads.

--> we will test by 'filling' the data_memory with 0's & executing a 'load_instruction' from a 'non-zero' address,

example:: lw $1, 1024(zero).

-->After this 'instruction'., the value in '$1' is meant to be '0'. If the "" MemtoReg_signal "" is stuck

at '0'., the 'value' within the registr would be '1024' ---the 'Mux' selects the '' ALU output (1024)'' rather than

value from the " memory ".

**-->The take a look at for "stuck-at-0" want Associate in Nursing 'instruction' that 'sets' the 'signal' to '1'

& the test for 'stuck-at-one' needs an -instruction that sets ' signal to zero '. Because

the signal can'nt be each '0' & '1' within the 'same_cycle', we won't test the same_signl

simultaneously for "stuck-at-zero" & "stuck-at-one" using only 'one' instruction. The test

for "stuck-at-one" is analogous to the "stuck-at-0" test:

--> we will use 'ADDI $1', 'zero', zero that is supposed to place a value of zero in $1. If "Bit-7" of the

instruction word is "stuck -at-one", the immediat_ operand becomes '128' and '$1' becomes '128'

instead of 'zero'.

--> we cannot reliably test for this fault, because all instructions that set the MemtoReg signal

to zero also set the ReadMem signal to zero. If one of these instructions is employed as a test for

MemtoReg stuck-at-1, the worth written to the destination register is “random” (whatever noise

is there at the data output of data Memory). This value might be the same as the value already

in the register, thus if the fault exists the test might not detect it.

--> It's posible to work for this 'fault', however it's very difficult.,we should find all instructions that

have '0' in this little bit of the 'offset' or immediatee 'operand' & 'replace' them with a 'sequnce' of

"“safe"” instruction.

-->For example, a load with such an offset should get replaced with an instruction

that subtracts 128 from the address_registr, then the load --with the offset 'larger' by '128' to set

"bit-7" of the offset to '1'.., then subtract '128' from the address_register.

--> we can not 'work" around this -problema, because it preventts all the instructions from storing their's

result in 'registers'., except for 'load_instructions'.--> Load_instructions can only move the 'data' frm memory to 'registers', in order that they can not be used to emulate "ALU_operations" “broken” by the 'fault'.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote