Hey everyone! This week, I started taking the first steps to implement the PODEM algorithm. But before digging deep into the implementation and design, let me first briefly discuss how PODEM actually works and what it aims to do.
To understand the goal of PODEM it is important to understand the difference between a Fault-Oriented and Fault-Independent test pattern generation algorithms. Fault-oriented ATPG is the process of choosing a certain fault in the circuit then looking for the appropriate test vector that can unveil this fault. On the other hand, fault-independent ATPG algorithms do not target specific faults, instead, test vectors are generated independent on any specific fault and then fault simulation is applied to discover all the faults such test vector can uncover.
PODEM (Path-oriented Test Generation) is one of many deterministic fault-oriented ATPG algorithms, which is characterized by activating faults only be manipulating a circuit’s primary inputs.
PODEM is a very straight forward algorithm as compared to other deterministic fault-oriented ATPG algorithms. It utilizes the idea of manipulating primary inputs while “controlling and observing” their effects on the circuit to unravel specific hidden faults in the circuit at hand.
To be able to understand the technicalities behind it, let us first define some important terminologies. The following terms are taken from the amazing book “Digital System Test and Testable Design” by Zainalabedin Navabi.
Imagine at a certain point in time you have a circuit with a potential fault. To detect this fault, some of the primary inputs have already been set to activate it. This leaves you with a circuit that has the following two conditions:
a) The fault is activated (represented by a D or D’ in the circuit).
b) There’s at least one path of all Xs (unknown values) from the fault site (where D or D’ is located) to a primary output.