Just like Timing is built on two pillars: Setup & Hold, entire DFT is built on two pillars: Controllability & Observablity.
Very often you would find DFT folks cribbing that they can't control a
particular node, or don't have any mechanism to observe a particular
node in question. You may like to review the previous post: DFT Modes: Perspective before proceeding further.
Shifting our attention to the pillars of DFT, let's define the two.
- Controllability: It is the ability to have a desired value (which would be one out of 0 or 1) at any particular node of the design. If the DFT folks have that ability, they say that that particular node is 'controllable'. Which in turn means that they can force a value of either 0 or 1, on that node!
- Observability: It is the ability to actually observe the value at a particular node whether it is 0 or 1 by forcing some pre-defined inputs. Note that, unlike the circuit that we make on paper, the SoC is a colossal design and one can observe a node only via the output ports. So, DFT folks actually need a mechanism to excite a node and then fish that value out of the SoC via some output port and then 'observe' it!
Ideally, it is desired to have each and every node of the design
controllable and observable. But reality continues to ruin the life of
DFT folks! (Source: Calvin & Hobbes). It is not always possible or
rather practical to have all the nodes in a design under your control,
because of the sheer complexity that modern SoCs possess. And therefore,
it is the reason you would hear them talk about 'Coverage'. Let's
say coverage is 99%, this means that we have the ability to control and
observe 99% of the nodes in the design (A pretty big number, indeed!).
Now let's take some simple examples.
In the above example, if we have control the flops such that the combo
cloud results in 1 at both the inputs of AND gate, we say that the node X
is controllable for 1. Similarly, if we can control any input of AND gate for 0, we say that node X is controllable
for 0. Similarly, let's say we wish to observe the output of FF1. If we
can somehow replicate the value of FF1 by making the combo clouds and
AND gate transparent to the value at FF1, we say that output of FF1 is
observable. Intuition tells us that for AND gate to be transparent, we
should have the controllability of other node for 1. Because when one
input of AND gate is 1, whatever is the value at the other input, it is
simply passed on!!