Scan Chains
Scan Chains
Scan Chains
What are scan chains: Scan chains are the elements in scan-based designs that are
used to shift-in and shift-out test data. A scan chain is formed by a number of flops
connected back to back in a chain with the output of one flop connected to another. The
input of first flop is connected to the input pin of the chip (called scan-in) from where
scan data is fed. The output of the last flop is connected to the output pin of the chip
(called scan-out) which is used to take the shifted data out. The figure below shows a
scan chain.
A scan chain
Purpose of scan chains: As said above, scan chains are inserted into designs to shift
the test data into the chip and out of the chip. This is done in order to make every point
in the chip controllable and observable as discussed below.
How normal flop is transformed into a scan flop: The flops in the design have to be
modified in order to be put in the scan chains. To do so, the normal input (D) of the flip-
flop has to be multiplexed with the scan input. A signal called scan-enable is used to
control which input will propagate to the output.
If scan-enable = 0, data at D pin of the flop will propagate to Q at the next active edge
If scan-enable= 1, data present at scan-in input will propagate to Q at the next active
edge
Scan terminology: Before we talk further, it will be useful to know some signals used in
scan chains which are as follows:
Scan-in: Input to the flop/scan-chain that is used to provide scan data into it
Scan-out: Output from flop/scan-chain that provides the scanned data to the next
flop/output
Scan-enable: Input to the flop that controls whether scan_in data or functional
data will propagate to output
Purpose of testing using scan: Scan testing is carried out for various reasons, two most
prominent of them are:
To test stuck-at faults in manufactured devices
To test the paths in the manufactured devices for delay; i.e. to test whether each
path is working at functional frequency or not
How a scan chain functions: The fundamental goal of scan chains is to make each
node in the circuit controllable and observable through limited number of patterns by
providing a bypass path to each flip-flop. Basically, it follows these steps:
1. Assert scan_enable (make it high) so as to enable (SI -> Q) path for each
flop
2. Keep shifting in the scan data until the intended values at intended nodes
are reached
3. De-assert scan_enable (for one pulse of clock in case of stuck-at testing
and two or more cycles in case of transition testing) to enable D->Q path so that
the combinational cloud output can be captured at the next clock edge.
4. Again assert scan_enable and shift out the data through scan_out
The PDF (How does scan work) provides a very good explanation to how scan chains
function.
How Chain length is decided: By chain length, we mean the number of flip-flops in a
single scan chain. Larger the chain length, more the number of cycles required to shift
the data in and out. However, considering the number of flops remains same, smaller
chain length means more number of input/output ports is needed as scan_in and
scan_out ports. As
Since for each scan chain, scan_in and scan_out port is needed. Also,
Keeping almost equal number of flops in each scan chain is referred to as chain
balancing.