- XJTAG Insights | Testing Times
- Posts
- Understanding Boundary Scan I/O Cells
Understanding Boundary Scan I/O Cells
I/O, Let’s Go! What exactly are I/O cells?
Welcome reader!
Digital integrated circuits (ICs) use input/output (I/O) cells to connect their internal logic to the outside world – all signals that leave or enter the IC will pass through an I/O cell. These cells are placed along the periphery of the chip and are designed to handle a diverse range of requirements including electrical compatibility, signal integrity, timing, and anything else that’s needed between the internal logic and the external pin.
These factors can include providing protection against electrostatic discharge (ESD), controlling impedance, and level-shifting the voltage on the pin. These I/O cells can be configured as an input, output, or both input and output (bidirectional), and some also have specialised functions depending on their application.
Basic FPGA I/O Cell
This example, Figure 1, considers a simple bidirectional I/O cell in a field programmable gate array (FPGA).

Figure 1: Basic FPGA I/O Cell
This example bidirectional cell possesses the following characteristics:
Input/Output buffers to receive/transmit signals from/to the pad (external pin).
Control signals from the write/read logic to tristate the output/input buffer.
ESD protection, in this example via the two diodes. In normal operation (reverse-biased), no current flows through either diode, but during a large enough voltage spike (VDD + Diode Threshold, or VSS - Diode Threshold) current will be shunted from the pad to either the supply or ground, depending on the polarity of the spike, protecting the internal circuit.
Brief Boundary Scan Overview
There is a more verbose explanation of boundary scan on the XJTAG website, but as a brief overview, the relevant IEEE standard (1149.1, JTAG), provides methodology to test interconnects on printed circuit boards (PCBs) and within ICs without requiring physical access to the pins. This is achieved by using some more silicon at the periphery or the ’boundary’ of the IC, on each of the I/O cells the IC designer chooses. This extra silicon is referred to as ’JTAG Cells’ or ’Boundary Scan Cells’.

Figure 2: Boundary Scan implementation in a JTAG device
XJTAG can use its access to these JTAG cells to set their state or read input signals from them, performing both interconnection tests between JTAG devices and functionality-based testing on non-JTAG devices in a circuit. This can be achieved with no firmware or images required on the devices.
Boundary Scan I/O Cells
Boundary Scan Cells in your ICs!
Boundary Scan Cells are added to the I/O cells between the pads of the device and the buffers to the internal logic in an IC. The JTAG TAP (Test Access Port) has a data in pin (TDI) which is connected to the first boundary scan cell. Each boundary scan cell is connected to the next one, until the signal gets to the final cell which connects to the data out pin (TDO) of the TAP. This forms a ’scan chain’ which acts like a shift register from TDI to TDO with all the Boundary Scan Cells in-between and can be extended across multiple devices by connecting one device’s TDO pin to the next device’s TDI.
Boundary Scan cells are standardised configurations of several logic devices that can be connected and used for different functions in a scan chain. Multiple Boundary Scan Cells can be assigned to the same pad to achieve a particular function.
Moving round the JTAG State Machine, the chain can be put into different modes so that the Boundary Scan Cells:
’Capture’ the data from the pads.
’Shift’ the data through the chain.
’Update’ the driving values on the pads.
Using these three instructions, test data can be serially loaded in to and out of the device, enabling testing on any Boundary Scan enabled pin without needing direct access.
This example in Figure 3 considers a simple bidirectional I/O cell in an FPGA that has JTAG Boundary Scan implemented.

Figure 3: Basic FPGA I/O Cell with Boundary Scan Implementation
Common issues during test: false positives often arise due to internal logic programming and I/O cell configuration. When the logic in an FPGA is programmed, it can affect the device beyond the internal logic, connecting or disconnecting pull resistors and changing the pin’s behaviour. This can lead to unexpected results during testing and cause tests to fail when there’s no problem.
Additionally, some ICs require specific I/O cell configurations to power the Boundary Scan Cells — details that are often poorly documented. For instance, most devices’ Boundary Scan Cells will use the voltage domain assigned to their respective I/O bank and certain devices mandate configuration (e.g. configure differential FPGA pins to be differential in an image) before Boundary Scan Cells operate per the JTAG standard.
It is recommended, unless specified otherwise in documentation, to always have a fully erased/blank JTAG device for testing.
The types of Boundary Scan Cells
The first JTAG standard 1149.1 (1990) introduced Boundary Scan Cell types for pins that operate with DC signals, while 1149.6 (2003) extended and modified these cells for AC operation such as differential pairs and AC-coupling. It is up to the IC designer to select and connect appropriate cell-types for the function of the pin in the device.
Boundary Scan Cells are assigned functions describing the purpose they serve in the scan chain. Different cell types can be configured for different functions, with some overlap, and have their own characteristics. Before we look at the types of Boundary Scan Cells, let’s review what functions we can assign to them:
INTERNAL - Internal cell, not associated with a system pin.
OBSERVE ONLY - Observe-only cell, associated with a system pin.
CLOCK - Observe-only cell for clock pins (supports INTEST instruction)
INPUT - Control-and-observe input cell
OUTPUT2 - 2-state (1, 0,) output cell
OUTPUT3 - 3-state (1, 0, Hi-Z) output cell
CONTROL - Output enable or direction control cell
CONTROLR - CONTROL with pre-set/clear at Test-Logic-Reset
BIDIR - Cell on a bidirectional pin acting as either an output or an input. Below shows a table on what functions can be assigned to each Boundary Scan Cell type:
Cell Type | Functions | Comment |
---|---|---|
BC_0 | Any | Special cell type generally used for INTERNAL cells or cells where device behaviour is not fully understood. |
BC_1 | INPUT, OUTPUT2, OUTPUT3, INTERNAL, CONTROL, CONTROLR | General purpose cell which can be used for many functions. |
BC_2 | INPUT, OUTPUT2, OUTPUT3, INTERNAL, CONTROL, CONTROLR | Similar to BC_1 but does not support the INTEST instruction for OUTPUT2 . |
BC_3 | INPUT, INTERNAL | |
BC_4 | INPUT, OBSERVE ONLY, CLOCK, INTERNAL | Simpler cell commonly used for inputs; INTEST instruction not supported for inputs. |
BC_5 | CONTROL, INPUT | Combined Input/Control cell type. |
BC_6 | BIDIR | This cell-type is deprecated - BC 7 is the preferred replacement cell-type. |
BC_7 | BIDIR | Standard Bidirectional cell type: captures the signal at the corresponding pin even while operating in output mode. |
BC_8 | BIDIR | Simpler version of BC_7: INTEST instruction not supported. |
BC_9 | OUTPUT2, OUTPUT3 | Output that observes its corresponding signal. |
BC_10 | OUTPUT2, OUTPUT3 | Simpler version of BC_9: INTEST instruction not supported. |
Table 1: Boundary Scan Cell Types and their Assignable Functions
Some Boundary Scan Cells replace the BC prefix with AC to show that they are 1149.6 compliant cells. Additionally, some silicon vendors have defined custom cell types that don’t strictly follow the standard. One common example of this is the LV prefix, used to designate LVDS (Low Voltage Differential Signalling) compatible pins.
Journey to the centre of a Boundary Scan Cell
Now that the basics of Boundary Scan Cells have been covered, let’s consider a real compliant example from the JTAG standard, using ’BC_2’ and ’BC_7’ cells working together to add boundary scan to a single pin.
In Figure 4, each cell is encapsulated by a dashed line; the top cell is a ’BC_2’ cell and the bottom one is a ’BC_7’ cell. The ’BC_7’ cell observes the output/input data and drives the D-Type flip-flop that outputs onto the external pin. The ’BC_2’ cell controls the output enable of the output flip-flop. The 2:1 multiplexers are controlled by various ’Mode’ signals. Depending on the currently loaded JTAG instruction, e.g. ’EXTEST’ or ’SAMPLE’, appropriate values will be set on each ’Mode’ signal. The expected values per instruction are defined in the standard.

Figure 4: Boundary Scan Cells at a bidirectional pin, IEEE 1149.1 (2013)
Conclusions
In short, boundary scan enabled devices have some extra logic between the functional circuitry of the device and the pins that connect to the rest of the circuit. With this extra logic, a JTAG controller can read or set values on many of the pins, although the exact capabilities vary between different pins and different devices. This extra control allows systems such as XJTAG to apply specific signals to the circuit, giving you the capacity to test and debug boards, program devices and trial parts of the board, even if the code hasn’t been written for them yet.
If you would like more information on XJTAG or would like to sign up for a free trial, please get in touch with us here: XJTAG.com/contact
Explore free XJTAG resources
From an Electronics Test Method Finder to Free Trials and Webinars.
Visit the website to see a range of free resources.
Enjoyed this update? Forward to a colleague or friend who may find it interesting!