Professional Documents
Culture Documents
Parker
The Boundary-
Scan Handbook
Fourth Edition
The Boundary-Scan Handbook
Kenneth P. Parker
The Boundary-Scan
Handbook
Fourth Edition
Kenneth P. Parker
Fort Collins, CO, USA
It has been 10 years since the third edition of this book first appeared. Since then it
has been translated into the Japanese language by a team of engineers at Fujitsu, led
by Shuichi Kameyama. I was amazed at the effort this required, and greatly appreci-
ated the care and thoroughness that was exhibited by this team.
Also in this decade, a new standard, 1149.8.1, has appeared which is an addition
to the family of supporting test standards. The “Dot-81” standard is aimed at sup-
porting the test of passive components that often surround integrated circuits on
boards. A classic example of such components is connectors that transfer signals to/
from these ICs to other plug-in boards or cables. Boards that possess passive com-
ponents still have to have them tested to assure they are free of open or shorted
connections. A new chapter (10) has been added to describe this new standard.
The base standard, 1149.1, has undergone a very extensive revision and expan-
sion, and this is called IEEE Std 1149.1-2013. This revision is detailed in its own
chapter (12). This reflects the fact that the underlying basic concepts of Boundary-
Scan testing are still the same (those covered in Chaps. 1–4) while new concepts
have been added driven by advancing technology in the electronics industry. This
new revision also has caused some significant changes and additions to the BSDL
language (of Chap. 2). It is expected that well into the future, we will be seeing older
devices (pre-2013) on boards along with newer devices that are compliant with the
2013 revision. Thus it was logical to retain the first chapters of this book in their
largely pre-2013 state, while detailing the 2013 revision later in this book. That said,
references in the earlier chapters are made to specific technology enhancements
found in the new, post-2013 information.
The 23+ years that Boundary-Scan has been with us represents a full generation
of engineers who have benefited from its contributions. As readers will see as they
continue on, “This is not your father’s Boundary-Scan”.
vii
Acknowledgments
I’d like to acknowledge those who contributed to this effort. Significant technical
contributions have been made over several years by Stig Oresjo, Ken Posse, John
McDermid and Rod Browen. Others who influenced this work were Colin Maunder,
Rod Tulloss, Chi Yau, Najmi Jarwala, Lee Whetsel, Gordon Robinson, Frans de
Jong, Peter Hansen, Tom Williams, Luke Girard, Dick Chiles, Larry Saunders,
David Simpson, Grady Giles, Tom Langford, Markus Robinson, C. J. Clark, Carl
Thatcher, Adam Cron, Adam Ley, Steve Sunter, Mani Soma, Keith Lofstrom, Steve
Dolens, Brian Wilkins and Ramaswami Dandapani.
Special mention goes to my friends at Matsushita Electric Industries in Osaka,
Japan, who worked incredibly quickly to produce working silicon containing 1149.4
structures. They are Kozo Nuriya, Katsuhiro Hirayama, Akira Matsuzawa, Atsushi
Kukutsu and Ren Franse.
Additional mention goes to my friends in the IEEE 1532 Working Group, Neil
Jacobson, Kurt Guntheroth, Mark Moyer, Brad Ishihara, Alan Herrmann, Dave
Bonnett, Ray Dellecker and Pat McHugh. Yet more recognition goes to contributors
to the IEEE 1149.6 Working Group, Bill Eklow, Carl Barnhart, Jeff Rearick, John
Rohrbaugh, Mike Gilsdorf, Charles Moore, Robert Schuelke, Benny Lai, Rodger
Schuttert, Sung Chung, Sang Baeg, Greg Jordan, Ted Eaton, Terry Borroz, Harry
Hulvershorn, John Braden and Bob Russell. The recent 1149.8.1 standard was
brought into being by my friends, Jeff Burgess, “JJ” Grealish, Steve Sunter, Adam
Cron, Steve Butkovich, Dave Dubberke, Ted Eaton, Heiko Ehrenberg, Adam Ley,
Sopho Metsis, Skip Meyers and Tony Suto.
The 2013 revision of 1149.1 was a huge effort, and I single out the contributions
of John Braden, Bill Bruce, Adam Cron, Wim Driessen, Dave Dubberke, Heiko
Ehrenberg, Bill Eklow, Peter Elias, Josh Ferry, Jeff Halnon, Roland Latvala, Adam
Ley, Francisco Russi, Brian Turmelle, John Seibold, Roger Sowada, Dharma Konda,
Sankaran Menon, Craig Stephan, Hugh Wallace, Carol Pyron and C. J. Clark. Special
mention goes to Carl Barnhart who took on the massive editing job for this effort.
I am indebted to my wife Jana, and daughters Katherine and Lisa who missed
paternal contact while their father spent all those hours in the basement. Without
their support, I could not have completed this work.
ix
x Acknowledgments
Finally, certain indicated passages and drawings have been reprinted, with per-
mission, from IEEE Standards 1149.1, 1149.4, 1149.6, 1149.8.1 and 1532, and all
revisions thereof, copyrighted by IEEE. The IEEE disclaims any responsibility or
liability resulting from the placement and use in the described manner.
xi
xii Contents
1.5.3 RUNBIST............................................................................. 39
1.5.4 HIGHZ ................................................................................. 40
1.5.5 CLAMP ................................................................................ 41
1.5.6 Exceptions Due to Clocking ................................................ 41
1.6 Extensibility ..................................................................................... 42
1.7 Subordination of IEEE 1149.1 ......................................................... 43
1.8 Costs and Benefits ............................................................................ 43
1.8.1 Costs ................................................................................... 44
1.8.2 Benefits............................................................................... 45
1.8.3 Trends ................................................................................. 47
1.9 Other Testability Standards .............................................................. 48
2 Boundary-Scan Description Language (BSDL) ................................... 49
2.1 The Scope of BSDL ......................................................................... 51
2.1.1 Testing ................................................................................ 52
2.1.2 Compliance Assurance ....................................................... 53
2.1.3 Synthesis ............................................................................ 55
2.2 Structure of BSDL ........................................................................... 57
2.3 Entity Descriptions........................................................................... 60
2.3.1 Generic Parameter .............................................................. 61
2.3.2 Logical Port Description .................................................... 62
2.3.3 Standard USE Statement .................................................... 63
2.3.4 Use Statements ................................................................... 64
2.3.5 Component Conformance Statement ................................. 64
2.3.6 Device Package Pin Mappings ........................................... 65
2.3.7 Grouped Port Identification ................................................ 66
2.3.8 TAP Port Identification....................................................... 67
2.3.9 Compliance Enable Description......................................... 68
2.3.10 Instruction Register Description ........................................ 69
2.3.11 Optional Register Description ............................................ 70
2.3.12 Register Access Description .............................................. 71
2.3.13 Boundary-Scan Register Description ................................. 72
2.3.14 RUNBIST Execution Description ...................................... 76
2.3.15 INTEST Execution Description ......................................... 76
2.3.16 User Extensions to BSDL .................................................. 77
2.3.17 Design Warnings ................................................................ 78
2.4 Some Advanced BSDL Topics......................................................... 78
2.4.1 Merged Cells ...................................................................... 78
2.4.2 Asymmetrical Drivers ........................................................ 81
2.5 BSDL Description of 74BCT8374................................................... 82
2.6 Packages and Package Bodies.......................................................... 85
2.6.1 STD_1149_1_2001 ............................................................ 85
2.6.2 Cell Description Constants................................................. 89
2.6.3 Basic Cell Definitions BC_0 to BC_7................................ 92
2.6.4 Cells BC_8 to BC_10 Introduced in 2001 ......................... 99
2.6.5 User-Defined Boundary Cells ............................................ 101
2.6.6 Definition of BSDL Extensions ......................................... 104
Contents xiii
xix
xx List of Figures
Fig. 11.1 Test Mode Persistence (TMP) state diagram ............................... 385
Fig. 11.2 Classic dual-rank shift/update data register cell
with gated clocks.......................................................................... 388
Fig. 11.3 Revised data cell introduced in 2013, with non-gated
TCK clocking ............................................................................... 388
Fig. 11.4 Example of an output driver with selectable parameters ............. 391
Fig. 11.5 A reset select register for controlling N domains in an IC........... 396
Fig. 11.6 An excludable segment ................................................................ 398
Fig. 11.7 An excludable segment with a domain control cell ..................... 399
Fig. 11.8 Three selectable segments and their control ................................ 400
Fig. 11.9 A test data register and its description ......................................... 417
Fig. 11.10 A re-organized MemTest register................................................. 419
Fig. 11.11 Three registers composed from two segments ............................. 426
Fig. 11.12 A set of selectable segments in three different power domains ... 428
Fig. 11.13 A register assembly with selectable fields ................................... 429
Fig. 11.14 Broadcast data to parallel assemblies .......................................... 430
Fig. 11.15 The PDL scan frame .................................................................... 437
Fig. 11.16 Data flow for the iApply command.............................................. 437
Fig. 12.1 Board with two ICs containing IP blocks A and B ...................... 470
Fig. 12.2 IP block A is a programmable differential driver ........................ 470
Fig. 12.3 IP block B is a programmable differential receiver ..................... 472
List of Tables
xxix
xxx List of Tables
Table 6.1 Node voltages for the circuit in Fig. 6.14 when
the component values vary from nominal ................................... 218
Table 7.1 Comparison of parameters of various switches ........................... 235
Table 7.2 TBIC switching patterns (P0 through P9) for the switches
shown in Fig. 7.7 ......................................................................... 240
Table 7.3 Assignment of TAP instructions to mode signal values
for the TBIC ................................................................................ 240
Table 7.4 Selection of TBIC switch patterns versus Boundary
Register cell content .................................................................... 241
Table 7.5 Logic equations for TBIC switch control .................................... 242
Table 7.6 ABM switching patterns (P0 through P19) for the switches
shown in Fig. 7.9 ......................................................................... 245
Table 7.7 Selection of ABM switch patterns versus Boundary
Register cell content .................................................................... 246
Table 7.8 Logic equations for ABM switch control .................................... 246
Table 7.9 TBIC extension switching patterns for the switches
in Fig. 7.18 for extension k .......................................................... 259
Table 7.10 Selection of TBIC extension switch patterns versus
Boundary Register cell content ................................................... 261
Table 7.11 Logic equations for TBIC extension switch control.................... 261
Table 8.1 Comparison of pin counts for busses in the structures shown
in Figs. 8.1 and 8.4. (Does not account for power pins).............. 274
Table 8.2 Actions of an AC pin driver per instruction versus TAP state ..... 284
Table 8.3 Defects that the 1149.6 standard is designed to detect ................ 290
Table 8.4 Mode settings for Figs. 8.30, 8.31, 8.32, 8.33, 8.34,
and 8.35 ....................................................................................... 306
Table 9.1 Control cell operation for HIGHZ-like behavior......................... 334
Table 9.2 Control cell operation for CLAMP-like behavior ....................... 334
Table 9.3 Sequence of events to program and verify one simple
1532 device .................................................................................. 338
Table 9.4 Sequence of events to program two similar devices
of differing size............................................................................ 339
Table 11.1 Growth in IC density since 1990, as predicted by Moore ........... 382
Table 11.2 New port types and their meanings ............................................. 404
Table 11.3 Input specification keyword meanings ........................................ 408
Table 12.1 Pre-defined PDL procedure names for pin parameters................ 467
Table A.1 Constraint operator definitions .................................................... 523
List of Design-for-Test Rules
DFT-1: Place TDI and TDO pins on the end or the corner
of a package to reduce their likelihood of being bridged
by solder. ......................................................................................... 174
DFT-2: Place power pins between TDI and TDO pins
and other signal pins. ....................................................................... 174
DFT-3: Ensure that worst-case switching of all IC drivers
will not cause power/ground transients that disrupt
the operation of the TAP controller. ................................................ 178
DFT-4: Assure that your ATE system can manage phased release
of overdriven nodes, to minimize slew-rate induced
Ground-Bounce. .............................................................................. 178
DFT-5: Use higher-order bits of the Instruction Register capture
pattern to implement an informal ID code. The bits captured
must be predictable “0”s and “1”s................................................... 178
DFT-6: If design-dependent bits are captured in the Instruction Register,
then any combination of these bits should decode
to the same operation....................................................................... 179
DFT-7: Specify a tolerance period that drivers can withstand shorts
to each other or to Power/Ground voltages. .................................... 180
DFT-8: Use self-monitoring output cells in the Boundary Register
to improve Boundary-Scan diagnosis of shorts and opens.............. 182
DFT-9: For bidirectional pins, utilize a single-cell bidirectional design
with a self-monitoring capability (such as cell BC_7). ................... 182
DFT-10: When the 1149.1 logic executes a pin-permission instruction,
the system logic should be forced into a state that prevents
internal conflicts. ............................................................................. 183
DFT-11: When the 1149.1 logic returns to non-invasive mode,
the system logic should stay in a state that will not conflict
with board level signals. .................................................................. 183
DFT-12: Use formal or informal ID codes to differentiate similar
components or revisions of components. ........................................ 184
xxxi
xxxii List of Design-for-Test Rules
DFT-30: Examine the location of switches for places where the circuit
may be sensitive to parasitic coupling and leakage.
Use enhanced switch designs in these areas to reduce
these effects. .................................................................................... 264
DFT-31: Analyse the layout of the ATn pins with respect to leakage
and parasitic effects between them and other signals...................... 264
DFT-32: Group compatible ATAPs together on common ATn buses.
Be prepared to accommodate more ATAP buses than there
are TAP chains................................................................................. 265
DFT-33: For ATn ports expected to be used in measurements
of very high impedances, place a board-level guard wire
between the ATn signals. ................................................................. 266
DFT-34: Consider which of all ATn ports in a system will be needed
for system test and provide access to them. .................................... 266
DFT-35: Consider if noise-immunity testing of differential signaling
is required in the system. ................................................................. 266
DFT-36: Consider equipping all differential I/O ports
with IEEE 1149.6 resources. ........................................................... 318
DFT-37: Consider equipping all I/O ports that could be AC-coupled
with IEEE 1149.6 resources. ........................................................... 318
DFT-38: Consider integrating AC-coupling, termination
and biasing into receiving ICs. ........................................................ 319
DFT-39: Use 1149.6 in all differential board and system
signal pathways. .............................................................................. 319
DFT-40: Assure that 1149.6 drivers and receivers have compatible
definitions of a “valid” transition. ................................................... 319
DFT-41: When board-level coupling capacitors are present,
use the 1149.1 EXTEST instruction to find shorted capacitors. ..... 319
DFT-42: Document the state of each PLD at the completion
of board power up, for testing purposes. ......................................... 341
DFT-43: Document how PLDs are configured on a board,
and how to trigger or prevent configuration. ................................... 341
DFT-44: Document supporting conditions needed
for device programming. ................................................................. 341
DFT-45: Document what actions should be taken when
a programming process fails while on an ATE system. .................. 341
DFT-46: Plan how non-PLD devices will be disabled
during programming, and avoid using data-intensive
EXTEST disabling. ......................................................................... 342
DFT-47: Consider adding 1149.8.1 resources to IC pins that
will ultimately be connected to pins on passive devices
such as connectors. .......................................................................... 375
DFT-48: Consider adding 1149.8.1 resources to IC pins
that will be connected to IC that do not implement
testability features. .......................................................................... 375
xxxiv List of Design-for-Test Rules
The first ten chapters of this book cover what I call “Pre-2013”, or “Classical”
Boundary-Scan, that is, the Boundary-Scan technology that sprang from the earliest
work that started in the late 1980s. By the mid-2000s, it was becoming obvious that
technology advances and changes in the overall electronics industry, from circuit
design, distribution of Intellectual Property, extreme miniaturization, etc., were
causing major changes to how people implemented and used Boundary-Scan tech-
nology. So, starting with the 2013 release of the base 1149.1 standard, there are
major changes to the base 1149.1 standard to be aware of, and how these propagate
into the rest of the tools and technology of Boundary-Scan. These are covered in
Part II of this book.
Part I is still quite relevant and serves as a useful tutorial about Boundary-Scan.
It starts with the basic concept of Boundary-Scan as provided by the base standard,
1149.1, which has undergone several editions since first appearing in 1990. Those
editions were “additive”, for example, adding the Boundary-Scan Description
Language (BSDL) in 1994. Then a number of subsidiary standards were developed
in the late 1990s into the 2000s. Each of these addressed a set of new capabilities that
could be added to a device to augment its testing capabilities. For example, a device
could be compliant to both 1149.1 and 1149.4, which added new capabilities to sup-
port analog measurements via Boundary-Scan. The first ten chapters of this book
provide this background which will be necessary to understand before reading Part II.
Chapter 1
Boundary-Scan Basics and Vocabulary
1
Informally, the Standard is often referred to as the “JTAG” proposal, due to its history of develop-
ment. JTAG was the Joint Test Action Group made up of companies primarily in Europe and North
America. This group created the foundation for the IEEE work.
that give clarifications and/or corrections to the standard. The original Standard
[IEEE90] was issued in 1990. Supplement A appeared in 1993 [IEEE93a] and con-
tained a thorough rewrite of the fundamental chapter describing the Boundary
Register. Then in 1994, Supplement B issued. This supplement contained the formal
description of the Boundary-Scan Description Language (see Chap. 2) known as
BSDL. The Standard was once again released in 2001, containing both previous
supplements and some smaller changes as well. The remainder of this chapter gives
an overview of the Standard2 upon which subsequent chapters of the book rely. The
IEEE requires the following disclaimer, so please note:
The information presented in this book represents the interpretation of the IEEE 1149.1,
1149.4, 1149.6, 1149.8.1 and 1532 Standards by the author. If you intend to use these
Standards, you should always refer to the official documents provided by the IEEE, taking
care to obtain the latest issue and any Supplements.
First, we give a brief preview of digital test technology before the advent of
Boundary-Scan.
Digital logic testing is nearly as old as the digital system, because it was quickly
realized that volume production of digital boards and systems could not be economi-
cal without some type of formalized testing. Furthermore, this testing should be
accomplished with relatively unskilled labor to free designers for new projects. This
led to the birth, in the 1960s, of the Automatic Test Equipment (ATE) industry.3
The first digital testers were often not ATE systems at all, but rather, “hot mock-ups.”
These consisted of testbeds cobbled together on a designer’s workbench along with
a few instruments such as signal sources, digital word generators, and other rigging
that attempted to approximate the operating environment of the board or system to
be tested. Sometimes, a known-good system was used as a mock-up to test newly
manufactured boards and indeed, this is still widely in use today for final assurance4
2
In this portion of this book, the term “Standard” shall refer to 1149.1. Later we will switch our
attention to 1149.4, 1149.6 and 1532.
3
There were many examples of proprietary test systems in existence well before this time, typi-
cally at the larger, vertically integrated electronics manufacturers.
4
The quality of this “assurance” varies wildly from place to place. In some instances, the effective-
ness is good. In other cases, this last test step may be nearly useless, serving mainly as a psycho-
logical comfort, or the fulfillment of some contractual agreement.
1.1 Digital Test Before Boundary-Scan 5
that a board meets its specifications. The main problem with the hot mock-ups is that
it generally takes a skilled person, very familiar with the design of both the board
and the mock-up, to construct tests and evaluate the results of a failing test.
The commercial ATE industry got started by attempting to provide a universal
environment for testing digital boards or systems. This amounted to providing
power supplies for the device or unit under test (DUT or UUT) and a collection of
programmable digital drivers and receivers operating in parallel under the control of
a test sequencer. These resources were usually fixed in some physical format (a box)
that had to be connected to the DUT via some adaptation scheme. The obvious
method was to provide an interface from the tester to the edge-connector(s) of the
DUT via a “test adapter.” This became known as edge-connector functional test.
Thus, a universal hot mock-up was approximated.
Of course, this approach had problems: it was not really universal and it was not
a good approximation of the ultimate environment of the DUT. For example, edge-
connector functional testers were inevitably slower than the environment of the DUT,
because testers were built from existing components and expected to last a long time
to justify their (high) capital expense. Thus, the circuits they were testing were often
newer generations of higher speed and denser logic. This taxed their abilities. But,
the biggest problem of all was the difficulty in programming the tester. This spawned
the research field of digital test generation, which has kept legions of investigators
busy for decades. (See [Agra88] for a tutorial, history, and many references.)
In attempting to create stimulus and response patterns for assemblies of complex
digital components, whole industries have been created. The most popular tool is
the logic simulator. A logic simulator allows a designer to create an abstract model
of a circuit, then apply stimulus “vectors” to it and let the model produce the output
or response “vectors”. By adding the capability of injecting failure mechanisms
(faults) into the model, it was then possible for a simulator5 to track differences in
how the circuit responds to stimulus; if the differences were visible at an observa-
tion point (like an edge-connector pin), the fault was said to be “detected.”
Clever circuit designers with intimate knowledge of how a circuit behaves still
have some difficulty in deriving stimulus vectors that will detect all the faults possi-
ble6 within a circuit.7 Worse, it is often the case that the original designer was not
available (or motivated) to create tests. Thus a harried, overburdened test engineer
was expected to receive a complex design and create tests with little or no information
on how the design worked.
5
In the early days of simulation (late 1960s) simple gate level models or systems of Boolean logic
equations were used to describe circuits. Now there is a range of technology spanning transistor
level models to high level behavioral models.
6
“Faults” are an abstraction. The most popular fault model is the Single Stuck-at fault model.
Considering multiple Stuck-at faults is explosively combinatorial and quickly become intractable.
Thus, “all faults” means “all faults that are practical to consider.”
7
Automatic Test Generation software has had marginal success in supplanting humans in this task.
In cases where strict design rules are obeyed, automation can be achieved. For many electronics
manufacturers, this has not been practical.
6 1 Boundary-Scan Basics and Vocabulary
Device Under
Test Fixture
Fixture Probe
Wiring
Test System
Actual
D1
Receive R1
Pass/Fail
D2 States
0=Pass
R2 1=Fail
D3
D4 Pass/Fail
Expected
Receive
States
Drive States
ICTDUT
Fig. 1.1 In-Circuit test setup with full nodal access. The component under test may be embedded
within a board and connected to other components
1.1 Digital Test Before Boundary-Scan 7
access internal nodes as well? What if we could observe these nodes AND we could
also stimulate8 these nodes?
With In-Circuit testing, we could now divide and conquer formidable digital
circuits by testing individual components as if they were standing alone. This
reduced the test preparation problem to that of a (significant) one-time investment
of a test per IC, which could then be recalled from a test library for each application
instance of the IC.
If the In-Circuit test for a IC failed, then more relevant diagnosis was possible;
the problem had to be in the vicinity of the IC or its interconnect. A weakness of
In-Circuit IC testing was that opens on IC inputs could not be accurately diagnosed
and could indict the IC itself. This could cause us to replace the (expensive) IC
rather than touching up a faulty solder connection. However, the overall efficiency
of preparing and interpreting tests was overwhelmingly popular. In-Circuit testing
became King. (See [Park87, Coom95] for more detail on the In-Circuit technique.)
But, as technology marched on, problems grew for In-Circuit testing as well. The
In-Circuit approach depends on a bed-of-nails test fixture, such as the one shown in
Fig. 1.2, to gain access to the internal nodes of the DUT. In the 1970s and into the
1980s, IC packaging technology was dominated by dual-inline, through-hole-
mounted packages. This meant that every board signal was visible on the bottom of
a board where they were soldered to through-hole package pins and the majority of
these pins were spaced on tenth-inch (100-mil) centers. It was common to arrange
In-Circuit fixture nails to target the IC pins9 themselves.
With the switch to Surface-Mount Technology (SMT) and much finer packaging
geometries, new problems arose. First, there were no through-hole pin targets for
In-Circuit nails. Second, some board-level signals may never appear on the bottom
side of the board if In-Circuit test access was not a design criterion. Third, for fur-
ther packing density, ICs might be mounted on both sides of the board. This all led
to access problems; some board nodes may be inaccessible to In-Circuit nails.
Notice I did not list fine-pitch package leads as a problem. One of the fallacies
of SMT testing is that fine-pitch packages are automatically inaccessible to nails.
This is a carryover from the days when In-Circuit nails were targeted at package pins.
With fine pitch packages, this is not feasible. What must be done is to target
inter-layer vias10 or deliberately placed test pads. (See [Bull87] for a practical
8
Stimulating embedded nodes requires the ability to overdrive the states that upstream ICs may be
driving. This “backdrive” capability requires tester drivers that can source/sink in excess of 700
milliamperes of current (at speed) for many of today’s logic families.
9
When targeting IC pins, the test probes often do not look like sharpened nails, but instead have a
variety of machined surfaces that are circular and contain a “waffle” pattern of small, sharpened
points that will not slip off the targeted pin/solder surface. This surface, in time will collect solder
flux and other debris leading to contact problems. Today’s nails are usually targeted at specific test
pads and have a single (very) sharp point.
10
A “via” is a cylindrical conductor that makes a physical connection between segments of a node
on different layers of a printed circuit board. Most vias traverse the entire thickness of the board
and are thus visible to In-Circuit nails. These are referred to as “natural” test points [Bull87]. Those
that do not pierce the entire thickness and are not visible from the outside are called “blind” vias.
8 1 Boundary-Scan Basics and Vocabulary
Gasket
Test Probe
Platen
Vacuum Channel
Fixture Personality
Wire Pin
Tester
Interface
Pins
Removeable
Alignment Test Electronics
Plate
ICTVFixt
Fig. 1.2 Cutaway drawing of a board resting on top of an In-Circuit, vacuum-actuated test fixture:
the “bed of nails.” The module interface pins are the mechanical interface to the ATE pin electron-
ics, which are placed very close to reduce path lengths
analysis of SMT probing.) This necessitates having precise X-Y coordinate location
data for all test points and vias, not just the package pins. The development of
“Bead Probe” technology [Park04, Park05a] is a way to facilitate test pads, making
contacts with them more reliable while reducing their overall size. Bead probes
have the important advantage of not disturbing wiring layout and interfering with
high-speed signaling.
Nevertheless, the trend is clear; board-level probing will become increasingly
difficult and costly so that alternatives are needed. Boundary-Scan clearly makes a
contribution to solving this problem. As we shall soon see, Boundary-Scan actually
helps one prolong the life of the In-Circuit approach, because it allows the reduction
of the number of nails needed to test a board while maintaining fault coverage.
This reduction in nail count tracks the increasing difficulty in placing nails.
1.2 The Philosophy of 1149.1 9
11
In the literature, the term “System Logic” has a number of synonyms. Some are “core logic”,
“internal logic”, and “mission logic”. Currently, with the attention attracted by the 1149.4 Analog
Test Bus Standard, there is a move to replace “logic” with “circuitry”.
10 1 Boundary-Scan Basics and Vocabulary
The Standard tends to view itself as a test vehicle that when put to use (that is,
when pin-permission modes are invoked) will do useful test functions. After these
useful things are done, the Standard offers little guidance on what may be neces-
sary12 next. It behooves the user of the Standard to study what after-effects may
occur when the circuit assembly has completed an 1149.1-based operation. It might
be necessary to immediately perform a hard reset or remove the power because bus
driver conflicts could be the result when leaving the pin-permission mode.
Finally, the Standard is highly extensible, allowing designers to add modes of
operation (either non-invasive or pin-permission) in support of functions useful at
any level(s) of assembly. This flexibility is a fundamental contribution. It allows a
variety of testing schemes to be accessed in a standardized manner. Further, as will
be seen in Chap. 4 and also Chap. 9, it allows for other activities not necessarily
recognized as “test.”
12
With the advent of the 2013 version of 1149.1 Boundary-Scan, the concept of “Test Mode
Persistence” has been introduced to give test engineers a tool to manage post-testing activities on
boards. See Sect. 11.3.4.1 in Part 2 of this book.
13
As in the Standard itself, signals that are asserted or active in the low state will have an asterisk
suffix. All others are asserted in the high state.
14
Making TRST* optional allows the tradeoff of having an asynchronous reset for the TAP versus
the cost of adding a fifth pin.
15
This requirement implies the use of internal pull-ups on these pins, which drain current. There
are two negatives to this that sometimes tempt designers to ignore the float-high rule; first, in ultra-
low power systems (for example, battery-powered), the extra power drain is a concern. Second, the
quiescent current consumption in CMOS ICs (IDDQ) is significantly higher which frustrates
IDDQ testing [Hawk85], an example of two testing methodologies in conflict. These negatives can
be mitigated with clever design. For example, as an extension of the standard, a designer could
provide a mode that turns off the pull-ups for IDDQ testing.
1.3 Basic Architecture 11
System I/O
System I/O
System
Circuitry
Device ID Register
Bypass Register
Instruction Register
(Control Signals)
TCK
TMS
TRST*
SmplArch
values on these pins permit fail-safe operation. Second, on the IC die itself, a simple
finite state machine is added called the TAP controller. It recognizes the communica-
tion protocol and generates internal control signals used by the remainder of the
Boundary-Scan logic. The TAP controller is driven by TCK and TMS (and optionally,
TRST*, if it exists) only; no other signals affect the TAP controller.
Third, on the die again, is a Boundary-Scan Instruction Register and decode
logic. This register is controlled by the TAP and can be placed between TDI and
TDO for loading (and unloading) serially shifted instruction data. The Instruction
12 1 Boundary-Scan Basics and Vocabulary
Register is used to set the mode of operation for one or more data registers. Several
instruction modes are mandated by the Standard. Others are described, but are
optional. Rules are also given that allow the addition of user-defined instructions
and modes.
Last, also on the die, is a collection of Boundary-Scan data registers. Two are
always required to be present on an 1149.1 component: the Bypass Register and the
Boundary Register. Several others are described by the Standard such as a Device
Identification Register, but are optional. Finally, rules are given for adding
user-defined data registers.
The TAP controller is a finite state machine with a state diagram containing 16 states.
A transition between states only occurs on a rising edge of the Test Clock (TCK) or
asynchronously with the assertion of Test Reset (TRST*) if it exists. An assertion of
TRST* will always send the machine to the reset state. A synchronizing sequence for
the state machine also exists: five cycles of TCK with TMS held high will set the
machine to the reset state, regardless of its current position in the diagram.
The state transition diagram is shown in Fig. 1.4. It is the fundamental “road-
map” that all 1149.1 applications must follow. Each state contains a label. Each arc
between states is labeled with a 0 or 1 indicating the logic value of TMS that must
be set up before the rising edge of TCK to cause the transition. Falling edges of
TCK do not cause state transitions, but cause other actions within the architecture.
The asynchronous transitions due to TRST* are not shown, but all lead to the
Test-Logic-Reset state.
Looking at Fig. 1.4 you will notice that there are two vertical columns of seven
states each and that they are identical except for the labels they carry. Furthermore,
notice that the labels are quite similar. Indeed, the left vertical column is the data
column and the right vertical column is the instruction column. These two columns
reference data registers (DR) or the Instruction Register (IR) respectively. They
behave in an otherwise identical fashion that greatly simplifies understanding them.
The purpose of each state follows.
1.3.1.1 Test-Logic-Reset
This is the reset state. In this controller state, the test logic is disabled16 so that normal
operation of the IC’s system circuitry can proceed unhindered. The Instruction
Register is initialized to contain the IDCODE instruction (described in Sect. 1.4.2) if
16
An exception to this occurs if the device has “Test Mode Persistence” enabled. See Sect. 11.3.4.1
in Part 2 of this book.
1.3 Basic Architecture 13
Test-Logic-
1 Reset
0
1 1 1
0 Run-Test-Idle Select-DR-Scan Select-IR-Scan
0 0
Capture-DR Capture-IR
1 1
0 0
Shift-DR 0 Shift-IR 0
1 1
Exit1-DR Exit1-IR
1 1
0 0
Pause-DR 0 Pause-IR 0
1 1
0 0
Exit2-DR Exit2-IR
1 1
Update-DR Update-IR
1 0 1 0
1.3.1.2 Run-Test/Idle
Once entered, the controller will remain in the Run-Test/Idle state as long as TMS is
held low. When TMS is high, the controller moves to the Select-DR-Scan state.
17
Upon entering Test-Logic-Reset by means of clocking TCK, it is necessary to return TCK to 0 (a
falling edge) to completely reset certain portions of the 1149.1 logic that are sensitive to falling
edges of TCK. TRST* on the other hand completely resets all 1149.1 circuitry immediately.
14 1 Boundary-Scan Basics and Vocabulary
In the Run-Test/Idle state, activity in selected test logic occurs only when certain
instructions are present. For example, the RUNBIST instruction (described in
Sect. 1.5.3) causes a self-test on the IC’s system circuitry to execute. Self-tests
selected by other instructions can also be designed to execute in this state.18 For
instructions that do not cause functions to execute in this state, all test data registers
selected by the current instruction retain their current states.
1.3.1.3 Select-DR-Scan
The Standard calls this a “temporary controller state”, meaning that it will be exited
on the next rising edge of TCK. Here, a decision is made whether to enter to Data
Register (DR) column, or to continue on to the Instruction Register (IR) column. If
TMS is held low when the controller is in this state, the controller moves into the
Capture-DR state and a scan sequence is initiated for the selected test data register.
If TMS is held high, the controller moves on to the Select-IR-Scan state.
1.3.1.4 Select-IR-Scan
This is a temporary controller state. Here, a decision is made whether to enter the
Instruction Register (IR) column, or to reset the TAP Controller by returning to the
Test-Logic-Reset state. If TMS is held low when the controller is in this state, then
the controller moves into the Capture-IR state and a scan sequence is initiated for
the Instruction Register. If TMS is held high, the controller returns to the Test-
Logic-Reset state.
1.3.1.5 Capture-IR
In this controller state, the shift-register19 contained in the Instruction Register par-
allel loads a pattern of fixed logic values on the rising edge of TCK. The two least
significant bits20 are assigned the values “01”. Any higher-order bits of the Instruction
Register, if they exist, may receive fixed bit values or design specific values. This bit
pattern is not necessarily an instruction; it has significance as a test pattern for the
integrity of the 1149.1 circuitry as will be seen in Chaps. 3 and 5.
When the TAP Controller is in Capture-IR, the controller enters either the
Exit1-IR state if TMS is high or the Shift-IR state if TMS is low.
18
See also the 1149.6 (Chap. 8) and 1532 standards (Chap. 9) which use the Run-Test/Idle state
extensively to control activities related to testing and device programming.
19
Registers are constructed with dual ranks, a shiftable part and a hold part to prevent rippling, due
to shifting, from being visible to downstream logic. When we say a register is selected or shifted,
we mean the shift portion of it which is connected between TDI and TDO.
20
Throughout this book, any pattern of bits will be displayed with the most significant bit on the
left, through to the least significant on the right. The least significant bit would be the first bit
shifted into TDI or out from TDO.
1.3 Basic Architecture 15
1.3.1.6 Shift-IR
In this controller state the Instruction Register is connected between TDI and TDO
and shifts, on each rising edge of TCK, the captured pattern one stage towards its
serial output. It also shifts the new instruction bits into the Instruction Register from
TDI. When the TAP Controller is in this state, the controller enters either the
Exit1-IR state if TMS is high or remains in the Shift-IR state if TMS is low. By stay-
ing in Shift-IR, a long sequence of instruction bits can be shifted into the instruction
register.
As can be seen by examining Fig. 1.4, it is possible to return to Shift-IR by pass-
ing to the Exit1-IR, Pause-IR and Exit2-IR states. This is important if an external
controller (called a Boundary-Scan master, see Sect. 5.2.7) is loading instruction
bits but does not have enough memory depth to complete the entire shift sequence
in one burst. The shift sequence can be broken into manageable pieces by passing to
Pause-IR21 while the next portion of shift data is prepared.
1.3.1.7 Exit1-IR
This is a temporary controller state. At this point, a decision must be made whether
to enter the Pause-IR state, or the Update-IR state. If TMS is held high while in this
state, the controller enters the Update-IR state, which terminates the scanning pro-
cess. If TMS is held low, the controller enters the Pause-IR state.
1.3.1.8 Pause-IR
1.3.1.9 Exit2-IR
This is a temporary controller state. Once again a decision must be made whether to
move on to the Update-IR state, or return to the Shift-IR state. If TMS is held high
while in this state, the scanning process terminates and the TAP Controller enters
the Update-IR state. If TMS is held low, the controller enters the Shift-IR state.
21
Another approach to solving this problem is to simply stop the TCK signal (in the low state)
while in Shift-IR while overhead activities are processed. However, some Boundary-Scan masters
may not be capable of halting TCK.
16 1 Boundary-Scan Basics and Vocabulary
1.3.1.10 Update-IR
1.3.1.11 Capture-DR
In this controller state, data can be parallel-loaded into the shift portion of the test
data register selected by the current instruction on the rising edge of TCK. When the
TAP Controller is in this state, the controller enters either the Exit1-DR state if TMS
is held high or the Shift-DR state if TMS is held low.
1.3.1.12 Shift-DR
In this controller state the test data register connected between TDI and TDO, as
selected by the current instruction, shifts data one stage towards its serial output on
each rising edge of TCK. At the same time, it shifts data into data registers from TDI.
When the TAP Controller is in this state, the controller enters either the Exit1-DR
state if TMS is held high or remains in the Shift-DR state if TMS is held low.
As can be seen by examining Fig. 1.4, it is possible to return to Shift-DR by pass-
ing to the Exit1-DR, Pause-DR and Exit2-DR states. This is important if an external
controller (called a Boundary-Scan master, see Sect. 5.2.7) is loading data bits
but does not have enough memory depth to complete the entire shift sequence in
one burst. The shift sequence can be broken into manageable pieces by passing to
Pause-DR22 while the next portion of shift data is prepared.
1.3.1.13 Exit1-DR
This is a temporary controller state. At this point, a decision must be made whether
to enter the Pause-DR state, or the Update-DR state. If TMS is held high while in
this state, the controller enters the Update-DR state, which terminates the scanning
process. If TMS is held low, the controller enters the Pause-DR state.
22
As before with instruction shifting, we could simply stop the TCK signal (in the low state) while
in Shift-DR while overhead activities are processed if stopping TCK is supported.
1.3 Basic Architecture 17
1.3.1.14 Pause-DR
This controller state allows shifting of the test data register in the serial path between
TDI and TDO to be temporarily halted. It is used, for example, when ATE systems
reload tester memory. The controller remains in this state while TMS is low. When
TMS goes high, the controller moves on to the Exit2-DR state.
1.3.1.15 Exit2-DR
This is a temporary controller state. Once again a decision must be made whether to
move on to the Update-DR state, or return to the Shift-DR state. If TMS is held high
while in this state, the scanning process terminates and the TAP Controller enters the
Update-DR controller state. If TMS is held low, the controller enters the Shift-DR state.
1.3.1.16 Update-DR
Some test data registers might be provided with a latched parallel output to prevent
changes at the parallel output while data is shifted in the associated shift-register path
in response to certain instructions. In Update-DR, data is latched, on the falling edge
of TCK, onto the parallel outputs of these test data registers from the shift-register
path. The data held at the latched parallel output changes only in this state. When the
TAP Controller is in this state, the controller enters either the Select-DR-Scan state if
TMS is high or the Run-Test/Idle state if TMS is low.
A few additional remarks about the actions of the Boundary-Scan test logic are
in order.
• The two shift states Shift-IR and Shift-DR both activate the output driver for the
TDO pin. This driver remains active until the falling edge of TCK in Exit1-IR or
Exit1-DR respectively. At all other times the TDO driver is turned off, that is, in
a high impedance state.
• In either update state (Update-IR or Update-DR), the update process of transfer-
ring data from the shift portion of the shift register to the hold rank occurs on the
falling edge of TCK. Thus, a write operation23 occurs on the falling edge.
• In either capture state (Capture-IR or Capture-DR), the data is captured by the shift
portion of the target register between TDI and TDO on the rising edge of
TCK. Because this edge causes the TAP controller to leave the capture state, the
data is captured on either arc leaving the capture state. We call this a read operation.
Paired with the write operation of updating, these two operations allow a Boundary-
Scan circuit to write data, and later read it in no fewer than 2.5 cycles of TCK.
23
The meaning of “write” operation will become clearer in the description of the Boundary
Register.
18 1 Boundary-Scan Basics and Vocabulary
• Data is shifted out on TDO on the falling edge of TCK when in either of the
two shift states. Note however that data is shifted in from TDI on the rising edge.
This yields two effects:
– Data is shifted out when taking either arc that leaves a shift state. A common
mistake is to associate shifting with the state and not the arc. When you want
to shift one last bit into a register, you must take the arc that goes to Exit1-IR
or Exit1-DR. No data is shifted by the rising edge of TCK that first brings the
TAP controller into a shift state from either Capture-DR or Capture-IR.
– The data that might be present on TDO when first entering a shift state will
not be valid until after the first falling edge of TCK. Data is set up on TDO a
half TCK cycle before TDI is read for the first time.
As of this writing, many TAP circuits have been designed and as might not sur-
prise, their designs are quite different. A problem pointed out by Lavo [Lavo00] is
that you might want to take Boundary-Scan designs from different sources and
merge parts of them together. This may be frustrated by hard-wired designs; simple
things like the assertion polarities might be different. Lavo has suggested that we
develop a “universal”, synthesizable TAP description in a high-level design lan-
guage, and then use it for all new designs. Then it would be easier to re-use 1149.1
designs across our industry. Steps in this direction were taken with the 2013 issue of
1149.1, as seen in Chap. 11, in Part 2 of this book.
The Instruction Register defines the mode in which Boundary-Scan data registers
will operate. As with most other registers in an 1149.1 design, it is composed of a
shift rank and a parallel hold rank as shown in Fig. 1.5. The shift rank can be loaded
in parallel at Capture-IR, shifted between TDI and TDO at Shift-IR, and the contents
of the shift rank are transferred to the hold rank at Update-IR.
Each Instruction Register cell comprises a shift register flip-flop and a parallel
output latch.24 The shift registers hold new instruction bits moving through the
Instruction Register. The latches hold the current instruction in place while any
shifting is done. This prevents “shift ripple” from being observed at the register
parallel hold outputs during shifting. (This ripple-free behavior is important to many
Boundary-Scan applications.)
24
The parallel output stage can be implemented with a simpler latch. The shift register element
must be a full edge-triggered design or equivalent.
1.3 Basic Architecture 19
Parallel Out
Parallel In/Parallel Out
Shift Register Element
Shift In Shift Out
Parallel In
Parallel Hold Data
TDI 5 4 3 2 1 0 TDO
Fig. 1.5 Architecture detail of a typical Boundary-Scan register with shift and parallel hold ranks
Mandatory and optional instructions are defined by IEEE Standard 1149.1; the
instructions will be discussed later in this chapter. Design-specific instructions can
also be added to a component by a designer. The minimum size of the Instruction
Register is two cells. The size of the register dictates the size of the instruction
codes that can be used: code size must match the length of the register.
The two least significant register cells must capture a fixed binary “01” pattern
during controller state Capture-IR. (These bits will be used later for testing the
integrity of the 1149.1 logic. See Sect. 3.2.1 on page 124.) Higher-order bits of this
register, if they exist, may capture fixed bits or variable, design-dependent bits. The
instruction shifted into the shift register flip-flops is latched into the parallel hold
latch outputs at the completion of the shifting process; this must occur during the
Update-IR state only. This requirement ensures that the instruction changes only at
the end of the Instruction Register (IR) scanning sequence. The values latched into
the Instruction Register parallel hold output latches define the test mode to be
entered and the test data register to be accessed.
It is not possible to directly observe the TAP Controller state for the purpose of
testing the TAP itself during IC test. Some designers have elected to have the higher-
order bits of the Instruction Register capture internal states of the TAP Controller,
or to capture instruction decode states of the previously loaded instruction. These
are then shifted out where they can be observed. However, there are good reasons to
20 1 Boundary-Scan Basics and Vocabulary
Table 1.1 Instruction register operation during each TAP controller state
TAP controller state Shift register flip-flops Parallel output latches
Test-Logic-Reset Undefined Set to give the IDCODE instruction if a
Device Identification Register is present, or
BYPASS if no Device ID Register exists
Capture-IR Load “01” into LSBs Retain last state
and design-specific data
into any MSBs
Shift-IR Shifts instruction bits Retain last state
towards the serial output
Exit1-IR Retain last state Retain last state
Exit2-IR
Pause-IR
Update-IR Retain last state Latch data from shift register flip-flops into
the parallel hold latches
All other states Undefined Retain last state
fix at least some of the higher-order bits. (See Sect. 3.2.1 on Integrity Testing in
Chap. 3.) Also, if this technique is used, it is possible for the 1149.1 implementation
to exhibit strange behavior. Consider what happens when the path through the state
diagram is Capture-IR to Exit1-IR to Update-IR. In this instance, design-dependent
bits are captured in the Instruction Register, then latched as the next effective
instruction. While this may be nonsensical to do, it is possible to do.
When a reset is applied to TRST*, or after the controller enters the Test-Logic-
Reset state, one of two instructions must be latched onto the Instruction Register
outputs. If the IC has a Device Identification Register, then the IDCODE instruction
bit pattern must be loaded onto the parallel hold rank. Otherwise, the BYPASS
instruction is loaded. Table 1.1 summarizes the behavior of the Instruction Register
during each TAP Controller state.
Figure 1.6 shows an example of a single Instruction Register cell. The signals labeled
“Capture Data” and “Instruction Bit” are the parallel input and output. The pins
labeled “From Previous Cell or TDI” and “To Next Cell or TDO” are the serial input
and output of the Instruction Register’s shift-register flip-flops. The pin labeled
“ClockIR” is derived from TCK and clocks the shift-register flip-flop for capturing
and shifting data. The pin labeled “UpdateIR” is derived from a negated TCK and
clocks the update latch for updating the hold rank of the Instruction Register. The pin
labeled “ShiftIR” is true only when the TAP Controller is in Shift-IR. The pin labeled
“Reset*” is true only when the TAP Controller is in Test-Logic-Reset. TAP Pin TRST*,
asserted asynchronously, will immediately clear (or preset) the state of the hold latch.
Upon a TRST* or Reset*, all bits in the Instruction Register parallel hold rank will
preset or clear to set up the required initial instruction (BYPASS or IDCODE).
1.3 Basic Architecture 21
TRST*
Reset*
To Next Cell
Shift-IR G
or TDO
Capture Data 0 R
D Q D Q
Instruction
Previous cell or 1
Bit
TDI CK CK
Clock-IR
Update-IR
Instruction Reg
TDI TAP TDO
TCK
TMS
TRST*
IRClDesn
Fig. 1.6 Example of an instruction register cell design. The expanded cell shows several control
signals generated by the TAP state machine
All Boundary-Scan instructions set operational modes that place a selected data
register between TDI and TDO.25 This register is referred to as the target register.
This preserves a fundamental notion of Boundary-Scan; that TDI and TDO always
25
However, if an instruction is marked private then the size and purpose of a target register may or
may not be documented. (See Sect. 2.3.12.)
22 1 Boundary-Scan Basics and Vocabulary
constitute the two ends of a shift register. The function of this register is dictated by
the instruction currently loaded (active) in the Instruction Register. The general
architecture of most data registers is shown in Fig. 1.5 on page 19. Some data reg-
isters are simpler because they do not require a parallel hold rank. This rank may be
omitted for registers that do not control anything with their content.
One mandatory data register is the Bypass Register. The Bypass Register is a simple
register that doesn’t require a parallel hold rank. This register consists of only one
scan cell. When selected by the BYPASS instruction (see Sect. 1.4.1), the Bypass
Register shortens the shift path within an IC to a single cell. This is useful for reduc-
ing shift time when testing other boundary-scan components on a board. Another
important feature of the Bypass Register is that when the TAP passes through
Capture-DR, it captures a fixed binary “0” which is subsequently shifted out. This
will be useful for chain integrity testing (see Sect. 3.2.1).
Most important is the Boundary Register, which has one or more boundary-scan
cells adjacent to each digital system input and digital system output pin (but not the
TAP Pins). This register is used to control and observe activities on the IC’s input
and output pins. The Boundary Register is a mandatory feature of IEEE 1149.1 and
is covered in more detail in Sect. 1.3.4 that follows.
The standard also allows designers to implement user-defined registers. These reg-
isters are used in conjunction with user-defined TAP instructions for proprietary
built-in self-tests, internal scan testing, or other functions. These registers must
form a consistent shift path between TDI and TDO so that when selected, the path
is not broken (a detail sometimes overlooked by designers).
1.3 Basic Architecture 23
Briefly mentioned here are five new data registers added to 1149.1 by the 2013 update
of the standard. These are detailed in Chap. 11, Sect. 11.3.4, in Part 2 of this book.
These registers are: ECID, Init_Data, Init_Status, Bypass_Escape and Reset_Select.
Figure 1.7 shows an example of a single data register cell suitable for use in a
Boundary Register. The cell design shown is flexible enough to permit the cell to be
used as an input or output cell. The “Parallel In” and “Parallel Out” labels in the
signals in Fig. 1.7 are connected to the device pin or system circuitry depending on
the role of the cell. For example, if the cell services an input pin, then the Parallel In
signal is connected to the device pin and the Parallel Output signal is connected to
the system circuitry. For a device output these assignments are reversed. Note the
capture (CAP) and update (UPD) flip-flops; these components (members of the shift
and parallel hold ranks) are important to the functionality of the data register cells
during test functions.
In Fig. 1.7 the signals labeled “Shift In” and “Shift Out” are the serial inputs and
outputs of the Boundary Register forming the shift path. The shift path links the
capture flip-flops into a shift register structure. All other signals route control sig-
nals from the TAP Controller into the cell.
For Boundary Register support of bidirectional pins, you can use one of two
approaches. First, you can use two data register cells: one as an input and one as an
output as shown in Fig. 1.8. Second, you can use a single, somewhat more complex
cell to perform both functions as shown in the lower half of Fig. 1.9. Both figures
show an additional control cell (in their upper halves) that gives the Boundary
Register control over the output enables of the driver. The Standard allows a single
control cell to fan out to multiple driver enables, though when this is done, all driv-
ers must behave identically26 to the value stored in the control cell.
Ignoring the control cell, the reversible data cell shown in the lower part of
Fig. 1.9 has the advantage of creating only one position in the Boundary Register
scan chain rather than two required by the double-cell structure of Fig. 1.8. This
reduction in cell count can be substantial for larger ICs. While the actual reduction
in silicon consumption is likely to be negligible, the reduction in shift length is ben-
eficial. Shorter registers take less time (and disc space!) to load and unload. This can
be an important factor for programming FLASH devices (see Sect. 4.10) and testing
RAM arrays (see Sect. 4.4).
26
The initial release of IEEE 1149.1 [IEEE90] did not have this restriction. Then, it was allowable
to have some drivers enabled and others disabled simultaneously by a single control cell. This
caused problems for test algorithms and decreased fault coverage so in 1993, this restriction was
added [IEEE93].
24 1 Boundary-Scan Basics and Vocabulary
Shift Out
Mode G
Parallel In 0
Parallel
Shift-DR G
Capture Update 1
Out
0 Flip-Flop Flip-Flop
D Q D Q
1
CK CK
Shift Out
Boundary
Parallel Parallel
Register
In Out
Cell
Shift In
Instruction Reg
TDI TAP TDO
TCK
TMS
BRCIDesn TRST*
Inherent in the double-cell structure is the ability for the input cell to capture the
state of the package pin regardless of what the driver is attempting to do. This
allows test software, by noting a discrepancy between what the output cell is pro-
grammed to drive and what the input cells observes, to determine if the output
driver is damaged or is attempting to drive into a short.
On examination of Fig. 1.9 you will notice that it too can monitor the output pin
while the driver is enabled. This allows the state of the pin to be sensed while the
driver is driving it. The original version of the standard [IEEE90] showed a
1.3 Basic Architecture 25
Shift Out
Mode G
Parallel In 0
Parallel
Shift-DR G
Capture Update 1
Out
0 Flip-flop Flip-flop
D Q D Q
1
CK CK
Shift In
To Next
Cell
System
Output Cell as above
Enable
System
Output Cell
Output
System Pin
System
Input Cell
Input
From
Previous Cell 3ClBidir
Fig. 1.8 A Bidirectional pin with separate input and output Boundary Register cells
bidirectional cell design now considered flawed27 because it lacked this important
capability. Supplement A [IEEE93a, IEEE93b] introduced this improved design
that does allow driver monitoring.
It is sometimes the case that signal inversion is an inherent feature of an input or
output buffer. However, the Standard is firm in requiring the data captured in (say) an
input Boundary Register cell to have the same polarity as the data that entered the pin.
27
The flawed cell is named “BC_6” in BSDL. Designers should avoid using it. The improved cell
is called “BC_7”. (See Sect. 2.6.3 on page 97.) Indeed, with the 2013 update of 1149.1, this cell is
officially unsupported, and erased from the supporting BSDL package STD_1149_1_2013.
26 1 Boundary-Scan Basics and Vocabulary
G
Output
0
Control
1
G
0
CAP UPD
D Q D Q
1
CK CK
Control
Cell
G Reversible System
Output
0 Data Cell Pin
Data
1
G
G
0 CAP UPD
0
1 D Q D Q
1
CK CK
G
Input 0
Data
1
From Last
UpdateDR
Mode_2
ClockDR
Cell
2ClBidir
The cell design in Fig. 1.10 for an inverting input buffer shows two compensating
inversions that assure this requirement is met. Similarly, data shifted into an output
Boundary Register cell, upon updating, should produce the same polarity data on the
output pin. The cell design in Fig. 1.11 will compensate for an inverting output buffer.
The Boundary Register may include cells that do nothing, called internal cells.
These cells are not associated with I/O pins, or enables. They are most likely to be
found in field-programmable ICs, FPGAs, and Programmable Logic Devices, PLDs
(see Sect. 1.3.7) where bidirectional Boundary Register resources are allocated to
1.3 Basic Architecture 27
Compensating Compensating
Update-DR
Clock-DR
Inversion Shift In Inversion
BRegInvI
Fig. 1.10 Compensating inversions in an input Boundary Register cell that monitors an inverting
input buffer
Compensating Compensating
Update-DR
Clock-DR
Inversion Inversion
Shift In
BRegInvO
Fig. 1.11 Compensating inversion in an output Boundary Register cell connected to an inverting
output buffer
all pins because it is not known how the IC will eventually be programmed. If, for
example, each pin is configured with three cells (input, output, and output enable),
but one is programmed as a simple input pin, the one cell is used as an input cell and
the other two are not used; they still exist but are just place-holders.
When reading chapter of the Standard titled “The Boundary-Scan Register”, one
finds a number of Boundary Cell designs and rules for designing others as well. We
will use a logical symbols shown in Fig. 1.12 to denote a Boundary Register cell.
Figure 1.12a shows a common cell symbol containing a capture (CAP) flip-flop, an
update (UPD) flip-flop or latch, the parallel input (PI) and output (PO) signals and
the shift in (SI) and shift out (SO) signals. Figure 1.12b shows an “observe-only”
cell that does not have an update flip-flop.
28 1 Boundary-Scan Basics and Vocabulary
Shift Output
(SO) SO
Parallel Parallel
CAP UPD PI CAP PO
Input (PI) Output (PO)
Shift Input SI
(SI)
a b CAPUPD
Fig. 1.12 Two logical symbols for typical boundary cells, one with an Update (UPD) flip-flop (a)
and one without (b)
It is important to note that the 1149.1 Standard is a collection of rules that govern
the implementation of the facilities of the standard. The written rules tell you what
you must do. The figures published in the Standard are not rules, but examples of
ways that the rules could be interpreted. Thus there are myriad conceivable ways
you could interpret the rules to obtain new Boundary Register cell designs.
Many of the figures of Boundary Register cells shown in the Standard are fully
featured. For example, they may support several (or all) optional instructions as
well as those that are mandated. This can lead to additional complexity that could
be stripped out if you decide to support less functionality.
A common mistake made by designers who are implementing 1149.1 is to treat
the figures showing cell designs as if they were rules rather than interpretations of
rules. They look at cell design examples such as shown in Fig. 1.7 and conclude
they must use the circuit elements shown in that figure. A paper by Lee Whetsel
[Whet95] is very useful because it shows how designing from the rules rather than
the figures can lead to some fundamental optimizations. Consider one example from
[Whet95] shown in Fig. 1.13.
This design is essentially the same as that in Fig. 1.7 for the capture portion
(CAP) of the cell, but differs quite a bit in the update (UPD) portion. Whetsel attacks
the inserted delay problem (see Sect. 1.8.1) presented by the output multiplexer by
replacing it with two FET switches S1 and S2. These switches are controlled by two
new signals DC and UC from the TAP controller, replacing Update-DR and Mode.
He then commandeers the output buffer and adds a weak feedback buffer FB, con-
verting it into a latch that serves as the update latch (UPD).28 The claim is made
28
Care must be taken to assure that on transitioning from PRELOAD to EXTEST (at Update-IR),
that the update latch does indeed load the content of the Capture Flip-Flop.
1.3 Basic Architecture 29
Shift Out
DC Update Flip-flop
and Output Driver
From Core Out
S1
Shift-DR G
Capture
Flip-flop
0
S2 FB
D Q
1
CK
UC
Shift In Clock-DR FastDesn
Fig. 1.13 An example (adapted from [Whet95]) of an output cell design that eliminates both a
discrete register stage and a multiplexer delay
(arguably) that if you didn’t know this was the actual implementation, you would
conclude that the structure of Fig. 1.7 was in place. Whetsel points out that this is
true when there are no faults present. However you can determine which of these
two implementations is present if you short the output (even momentarily) since this
will have the effect of setting or clearing the update latch in his design, but not in the
“standard” design. (The 1149.1 Working Group has not taken a stand on whether
this behavior is acceptable, but it is not currently forbidden by a rule.) A desirable
side effect of this resetting/clearing is that the driver only momentarily fights with a
short that stresses the driver, while the “standard” design will persist with this stress-
ful endeavor. However, a momentary glitch presented to the Whetsel output (per-
haps even a line reflection) could conceivably cause the output to toggle.29 This
behavior treads into a gray area, again not addressed by any rules in the Standard.
The point to be made is that the Whetsel design is quite different from a “standard”
figure in 1149.1, but offers significant new advantages. It was arrived at by deliber-
ately ignoring the figures in 1149.1 and synthesizing a cell from the rules alone.
Additional references now exist on the design of the Boundary Register and how
to avoid some pitfalls. See [Cogs02, Kris02] and [Stan02], but remember to keep the
rules of the standard itself foremost in your design.
29
Without proper design care, this driver structure could interact with external circuitry (passive or
active) to form an oscillator. If the output portion of this driver was implemented in stages of suc-
cessively larger buffers, an internal stage could have the latching property and the final stage
would isolate the latch (feedback) from outside influences. This would remove the “anti-stress”
feature of the Whetsel driver however.
30 1 Boundary-Scan Basics and Vocabulary
ArchSum
Test Data Registers
Device Outputs
Device Inputs
Boundary Reg
...
System Circuitry
G
Device ID Reg
Mux
Bypass Reg
Mode1
Mode2
ModeN
Select
...
Field-programmable ICs are the Chameleon of the Integrated Circuit world. They
are “blank pages” that can have logic written into them while they sit on a board.
The writing process is not unlike storing data into a volatile, or non-volatile mem-
ory. If desired, new logic can be programmed in at any time. There is more about
this in Sect. 4.9, and IEEE Standard 1532 (see Chap. 9) has been developed to
codify device programming.
Field-programmable ICs often cause severe testing problems for board test.
Before programming, they have no I/O pin definition and cannot respond to tradi-
tional test techniques. By their very nature, their logic is fluid and changeable.
Preparation of conventional In-Circuit tests for such components may be delayed by
these changes. During the board design, these ICs may be the last to settle into a
“final” configuration. Furthermore, volatile devices must be programmed at the
time power is applied (often from an on-board Read-Only Memory) so there is
plenty of opportunity for board faults to cause confusion and diagnostic difficulties
(see [Park00]).
Field-programmable ICs have come in two flavors: the “blank page” containing
no pre-defined logic; and components that do have a small amount of logic in place.
In the second case, we are interested in the type of IC exemplified by the Xilinx
4005 [Xili90] or the Xilinx XC9500 family [Xili98] which contain a hard-wired
Boundary-Scan facility. Now with the advent of the 1532 standard and its wide
adoption, we have a growing supply of blank devices that can participate in 1149.1
testing before programming. This is because the very first rule in 1532 is a device
compliant with it must also be compliant with 1149.1.
The “blank page” component can always be programmed to have Boundary-
Scan logic [Xili92]. Indeed, it could have only Boundary-Scan logic rather than its
mission logic if Boundary-Scan testing is a one-time event. The mission logic would
later replace the test logic. Of course, before programming, the component is not
compliant with the Standard. The 1149.1 Working Group is also hesitant to declare
anything compliant that can have its Boundary-Scan logic “disappear” on subse-
quent reprogramming. This attitude notwithstanding, a test engineer will certainly
see the value of adding Boundary-Scan to a field-programmable IC whether or not
this facility is permanent.
The Xilinx 4005 has a hard-coded 1149.1 “shell” that is always present as shown
in Fig. 1.15. This is done by placing a TAP, an Instruction Register and a Bypass
Register onto the component infrastructure. What is left to be added is the Boundary
Register itself. This is made part of the Input/Output Blocks (IOBs)30 which are gen-
eral purpose blocks attached to each IC signal pin. Each IOB makes its associated
pin fully bidirectional, including a dedicated control cell for the output buffer enable.
30
See also the notion of a “Digital Boundary Module” introduced in Sect. 7.2.5 on page 246 by the
1149.4 standard.
32 1 Boundary-Scan Basics and Vocabulary
IOB
UC
Programmable
IOB
IOB
Device
Pin
Core
...
...
C U
IOB
IOB
C U
TDI TDO
TAP
Controller
TCK TMS
FPGAIOB
Fig. 1.15 A field-programmable component with Boundary-Scan hard-wired into its I/O Blocks
(IOBs). Each IOB starts out with bidirectional support for a component pin, but subsequent pro-
gramming may reduce each to supporting input or output only
Now all seems to be settled, except that during programming, each system pin
can take on a new personality. A pin can change from bidirectional to simple input
or output. In the case of the Xilinx 4005 this personality change causes certain
Boundary Register cells to become “internal” cells. For example, if an IOB is pro-
grammed to become a simple input, then the two cells that provide data and output
enable control become internal cells, just placeholders. Test engineers do have to
make a basic choice; they can use the full bidirectional resources of the device or
use the restricted resources defined by the system programming. Using the full
resource set gives more flexibility during test, but it may introduce new problems by
adding additional disabling problems to be solved (see Sect. 5.2.5).
Boundary-Scan ICs are designed to link together into chains. A simple chain on a
printed circuit board is shown in Fig. 1.16. Simple chains are a collection of
Boundary-Scan ICs with common TCK and TMS, and with their shift paths linked
together by connecting a TDO pin of one IC to the TDI pin of the following IC.
The parallel system pins of the components may be connected together. When this
is true, the Boundary Register of one component can be set up to communicate with
the Boundary Register of another. In other cases, IC pins may be connected to the
board edge connector. When connected to an edge connector or bed-of-nails, an
external ATE system can be used in conjunction with the Boundary Register to imple-
ment tests. In both cases, we can implement tests and at the same time avoid having
to set up or propagate logic values through the System Logic of the components.
1.3 Basic Architecture 33
System Circuitry
System Circuitry
System Circuitry
Bypass Bypass Bypass
TCK
TMS
SmplChn
31
Exceptions could occur when some of the ICs have an optional TRST* pin. We assume all ICs
are synchronized to Test-Logic-Reset and that no assertions are made to TRST*.
34 1 Boundary-Scan Basics and Vocabulary
The TAP Controller and the four (optionally five) independent TAP Pins may be
operated asynchronously and independently of the System Logic. This allows the
Boundary-Scan TAP to be used without disturbing the normal operation of a chip,
board or system, as long as we utilize only the Non-Invasive modes32 of operation.
These modes are keyed to TAP instructions.
1.4.1 BYPASS
The BYPASS instruction places the single-bit BYPASS data register between TDI
and TDO. Its purpose is to produce a short one-bit shift path through a component,
and for this component to be operating normally. This instruction and its target reg-
ister are mandatory features of any 1149.1 component. Further, the bit pattern of all
1s in the Instruction Register must decode to the BYPASS instruction. Other bit
patterns may also decode to BYPASS33 if desired.
When the BYPASS instruction is in effect, the Bypass Register is parallel loaded
with a 0 upon passing through the Capture-DR state. This initializes the register
with known, predictable data.
1.4.2 IDCODE
The IDCODE instruction places the 32-bit Device Identification Register between
TDI and TDO that contains an identification code. IDCODE is an optional instruction.
The Standard makes no requirement on the instruction bit pattern used for IDCODE.
The Device ID Register is parallel loaded with a hard-coded value upon passing
through the Capture-DR state. The least significant bit (bit 0) of any IDCODE must
be a 1. This bit is the first shifted out via TDO. The other bits of the Device Identification
Register are assigned as shown in Fig. 1.17. Bits 31 to 28 (four bits) are a version
number for the IC. The version number should be changed every time the IC is
revised. Bits 27 to 12 (16 bits) are a part number assigned by the manufacturer.
32
If a Pin-Permission mode has been entered, it may be necessary to perform a reset upon both the
Boundary-Scan logic and the System Logic before the System Logic will operate normally. In
some cases, the surest, safest way of achieving this is by cycling the power.
33
The Standard also states that all unused instruction codes not declared to be private must also
decode to BYPASS.
1.4 Non-Invasive Operational Modes 35
IDAssign
Version Mandatory
(4 bits) "1"
Manufacturer's Manufacturer's
1
Part Number (16 bits) Identification (11 bits)
31 28 27 12 11 1 0
Fig. 1.17 Code bit allocation in a device identification register accessed by IDCODE
Bits 11 to 1 (11 bits) are a manufacturer’s identity number34 derived [IEEE01] from
the JEDEC (the Joint Electron Device Engineering Council) code35 [JEDE86]. The
IDCODE instruction allows a component to be identified via the Boundary-Scan port.
What about second-source manufacturers? It is expected that a second-sourced
IC will have a different IDCODE value36 (at least different in the manufacturer’s
identification) than the original IC. There is provision in the BSDL language (see
Sect. 2.3.11) to specify all IDCODEs that might exist for devices that are otherwise
(supposed to be) identical. Also beware of pin-compatible replacement components
such as we see in the microprocessor world. These devices are reverse-engineered
to have identical pinouts and system behavior, but are not likely to be identical with
respect to their 1149.1 implementation.
In an earlier discussion of the Test-Logic-Reset state (on page 13) we saw that the
Instruction Register is jammed with either BYPASS or IDCODE, if IDCODE exists.
This would allow a test sequence to proceed directly to data shifting via Capture-DR
with one of the two instructions in effect by default. Because the first bit shifted out
is a “0” for BYPASS and a “1” for IDCODE, it is possible to carry out a blind inter-
rogation of a component or chain of components. Blind interrogation can be done
with no knowledge of any Boundary-Scan device’s instruction register implementa-
tion or opcode assignments. Those possessing IDCODEs indicate so by first shift-
ing out a “1” which indicates that the next 31 bits to follow are the remainder of the
IDCODE. A “0” indicates that there is no IDCODE and that the component is in
BYPASS. In principle, blind interrogation could be used to learn the configuration
of a system that comes with a set of options.
34
There is a code (00001111111) reserved by 1149.1 and considered an “illegal” manufacturer’s
code. This code can be fed into the TDI of a chain of devices of unknown composition so that when
it finally appears at TDO, you then know you have scanned out all the devices in the chain.
35
The actual list of manufacturer’s ID numbers maintained by JEDEC has more bits, so this 11-bit
field is a compression and allows for only 2048 unique numbers. It could happen that two unique
devices could appear some day with identical IDCODE values, but the probability is low that this
will ever cause confusion in testing boards and systems.
36
This is much easier to accomplish if a second–source agreement is based upon the exchange of
design data (that can be re-synthesized) rather than based upon exchanging mask data.
36 1 Boundary-Scan Basics and Vocabulary
1.4.3 USERCODE
The USERCODE instruction places the same 32-bit Device Identification Register
between TDI and TDO as IDCODE does, but the value captured upon passing
through the Capture-DR state is user-defined. USERCODE is an optional instruc-
tion and the Standard does not specify a bit pattern for it. However, if a device does
support USERCODE, it must also contain IDCODE.
The purpose of USERCODE is to expand upon IDCODE in situations such as
for programmable ICs, where an IDCODE alone is insufficient for identifying the
IC and its programming. For example, IDCODE would alert you to the fact that an
IC was programmable, but because the programming will occur after the manufac-
ture of the IC (or board or system), the USERCODE function can be used to identify
the version of programming. The user is free to define the 32-bit USERCODE
value; a scheme similar to IDCODE, containing several fields of information would
allow the encoding of several pertinent types of information.
1.4.4 SAMPLE
The SAMPLE instruction is a mandatory instruction,37 but its bit pattern in the
Instruction Register is not specified by the Standard. This is the first instruction to
target the Boundary Register between TDI and TDO. While it does so, it does not
disconnect the System Logic from the IC pins. (See the multiplexer in Fig. 1.7 (page
23); the Mode signal is “0”.)
SAMPLE functionality occurs upon passing through the Capture-DR TAP state.
All the capture flip-flops (CAP) load the states of the signals they are attached to; IC
inputs, or System Logic signals destined for IC outputs. The Boundary Register thus
takes a “snap-shot” of the activity of the IC’s I/O pins. This data sample can then be
shifted out for examination. In principle, one can implement “logic analyzer” func-
tionality in a digital system using SAMPLE. (See the discussion in Sect. 4.2 for
some practical issues regarding the use of SAMPLE.)
37
SAMPLE and PRELOAD, in previous releases of the Standard since the beginning [IEEE90],
were one instruction with one opcode. (It was called “SAMPLE/PRELOAD”.) In a long ranging
debate, the 1149.1 Working Group has now divorced the two instructions so that each can be inde-
pendently encoded and implemented. This lays the groundwork for a possible future demotion of
SAMPLE from mandatory to optional status. (PRELOAD will remain mandatory.) There are sub-
tle implications of this move which are controversial within the Working Group and still subject to
much debate. It is possible and permissible however to merge the design of SAMPLE with
PRELOAD so that the same opcode does both functions. This is likely to be how these instructions
will be treated until SAMPLE is (if ever) demoted.
1.5 Pin-Permission Operational Modes 37
1.4.5 PRELOAD
The PRELOAD instruction is a mandatory instruction, but its bit pattern in the
Instruction Register is not specified by the Standard. This instruction targets the
Boundary Register between TDI and TDO. While it does so, it does not disconnect
the System Logic from the IC pins. (See the multiplexer in Fig. 1.7 (page 23); the
Mode signal is “0”.)
The PRELOAD function is used to initialize the capture (CAP) flip-flops of the
Boundary Register. The CAP flip-flops receive this data, which is then transferred
to the update (UPD) flip-flops upon passing through the Update-DR TAP state.
Because this data is blocked by the multiplexer (see Fig. 1.7, page 23) from being
driven out, it will not affect the IC outputs or System Logic. However, when the
multiplexer Mode line is switched by loading a Pin-Permission instruction (see
Sect. 1.5) at Update-IR, the multiplexer will switch to the update flip-flops as data
source. The PRELOAD function allows us to have proper data set up before this
switching takes place.
The PRELOAD instruction has no requirement for what is captured in the CAP
flip-flops when the TAP passes through the Capture-DR state. This allows the func-
tionality of PRELOAD to be merged with the functionality of SAMPLE such that
the two instructions need only consume one instruction bit pattern. (See the discus-
sion in footnote 37.)
The Pin-Permission instructions provide the next major mode of operation. These
instructions are characterized by the switching of the cell output multiplexers such
that the update flip-flop data bits are selected and passed to the parallel outputs of
the Boundary Register cells. This disconnects the component I/O pins from the
System Logic. It is important that the System Logic not be harmed by this radical
change of configuration. Thus, on component inputs, it may be necessary to add
logic to force specific holding values presented to the System Logic. For example,
the component RESET line might be forced to an asserted state by a Pin-Permission
instruction. This would prevent the System Logic from suffering internal conflicts.
Notice that both BYPASS and IDCODE are not pin-permission modes, so if a pin-
permission instruction is currently active, passing to the Test-Logic-Reset state will
remove this mode and put the IC’s test logic back into non-invasive mode.
What happens to an IC that has been held in a safe RESET state when the Pin-
Permission mode is departed; for example, when Test-Logic-Reset is entered? This
is a serious problem (the Lobotomy problem, see [Park10] and [Park11]) for IC,
board and system designers to consider. What should the System Logic do upon
“waking up” from Pin-Permission mode? One answer would be to assert, as quickly
as possible, some master reset to the entire board or system to force a safe sequence
38 1 Boundary-Scan Basics and Vocabulary
1.5.1 EXTEST
38
The 2013 update of 1149.1 provides an additional resource for this problem called “Test Mode
Persistence”. See Sect. 11.3.4.1 in Part 2 of this book.
39
Also, an input cell on a bidirectional I/O pin will capture that pin’s state.
40
Note the Standard only requires EXTEST to capture IC inputs (and bidirectionals) but does not
specify what must be captured by control or output cells. This will allow us to merge the behavior
of EXTEST with INTEST so that the two instructions can be implemented with a single opcode.
Another option is to implement self-monitoring outputs (see Sect. 5.1.5 on page 180) if INTEST
is not implemented.
1.5 Pin-Permission Operational Modes 39
1.5.2 INTEST
The INTEST instruction is an optional instruction and the Standard does not specify
an instruction bit pattern for it. INTEST targets the Boundary Register between TDI
and TDO.
INTEST is an inward-looking instruction; it puts the System Logic inputs under
control of the update (UPD) flip-flops of the Boundary Register input cells. The
Boundary Register cells connected to System Logic outputs and output enables
sample the states produced by the System Logic at Capture-DR. Thus, at Update-DR,
a test pattern can be applied to the System Logic inputs, and at Capture-DR, the
results of that pattern can be sampled. During shifting, these results can be shifted
out and a new test pattern can be shifted in. While this is happening, the states
driven to the component output pins are controlled one of two ways: first, they may
be under control of the Boundary Register so that they can be held at deterministic
values41 while the System Logic is being tested. The second choice is to place all
system outputs (including 2-state drivers) in a disabled, non-driving state. Whichever
option is chosen, it must be applied uniformly to all IC pins.
INTEST can be used to apply IC tests42 to the System Logic while the IC rests
In-Situ on a board. Board level conflicts can be controlled by assuring that the IC
outputs are held to benign values by the Boundary Register43 if the first output con-
trol option (above) is selected. The second option (disabling all IC outputs) will also
eliminate board level conflicts.
One major problem with INTEST IC testing is that the test is serialized and
delivered via the TAP Port. It is possible for the apparent testing rate to be greatly
reduced, by factors of hundreds or even thousands. The reduction is proportional to
the length of the Boundary Register, plus any other bits contributed by other ICs in
a chain. If the System Logic is dynamic, it might not be possible to maintain a high
enough testing rate to keep the dynamic logic alive.
1.5.3 RUNBIST
The RUNBIST instruction is an optional instruction and the Standard does not spec-
ify an instruction bit pattern for it. RUNBIST has a designer-specified target register.
The purpose of this instruction is to provide users of an IC access to internal built-in
self-tests with a standardized access protocol.
41
This option must be chosen if a merger of EXTEST and INTEST behavior is desired.
42
These tests are not the same as those applied by an IC tester in parallel to the component I/O pins.
The tests must be prepared for the System Logic I/O signals. For each bus or bidirectional pin,
there may be several System Logic I/O signals.
43
Actually, if the outputs are disabled which is an option offered by the Standard, this might not be
perfectly true. Disabled outputs may seem safe but downstream board logic may be confused by
high impedance values on their inputs.
40 1 Boundary-Scan Basics and Vocabulary
While RUNBIST is in effect, the IC output pins are controlled one of two ways
(just as for INTEST); first, under control of the Boundary Register or second, all
(including 2-state outputs) placed in a non-driving state. In the first instance, states
supplied by a PRELOAD sequence executed before loading RUNBIST will be used
to control the IC outputs while the self-test is being performed. Either method
allows us to eliminate potential conflicts that the IC might have with other board-
level components.
RUNBIST is self-initializing; it does not require any seed data (for example, to
initialize counters or signature accumulators) to be loaded in advance of its opera-
tion. Loading the Boundary Register with a PRELOAD process to eliminate board-
level conflicts is not considered part of the initialization of the self-test.
RUNBIST targets some register between TDI and TDO as specified by the IC
designer. It may be a dedicated register or it may be an existing register such as the
Bypass or Boundary Registers. The purpose of this register is to accumulate the
result of the self-test so it can be shifted out for observation. This result must be:
• Deterministic. All bits must be defined.
• Invariant for all versions of the IC.
• Independent of any activity on (non-clock) component I/O pins.
The actual self-test runs when the TAP is placed in the Run-Test/Idle state. The
clocking of the self-test may come from TCK, from the system clock(s), or both.
The production of the self-test result may take many clock cycles, but a further
requirement states that any clocks received beyond this number will not affect the
result. This freezing of the self-test result allows us to execute RUNBIST in several
components in parallel, applying clocks to all, such that the largest number required
by any component have occurred. The test result is captured by the target register in
each component upon passing through Capture-DR. Then all results can be shifted
out for examination.
1.5.4 HIGHZ
The HIGHZ instruction was introduced with the 1993 supplement to the Standard
[IEEE93a, IEEE93b]. It is an optional instruction and the Standard makes no require-
ment on its instruction bit pattern. Its purpose is to enhance the ability of In-Circuit
test ATE systems to test complex boards by reducing the potential for overdrive
damage. By loading an IC with HIGHZ we make it release control of its output
nodes. We can then safely overdrive them with an In-Circuit tester indefinitely.
HIGHZ targets the Bypass Register between TDI and TDO, to shorten the shift
path. It also causes all output and bidirectional pins to go into high-impedance states.
(In the case of asymmetrical drivers such as TTL Open-Collector or ECL Open-
Emitter drivers, the non-driving state is selected.) In this condition, In-Circuit over-
drive is not needed to gain control of the IC’s output pins. This switching to a disabled
state occurs when HIGHZ becomes effective, upon passing through Update-IR.
1.5 Pin-Permission Operational Modes 41
1.5.5 CLAMP
The CLAMP instruction was introduced with the 1993 supplement of the Standard
[IEEE93a, IEEE93b]. This, too, is an optional instruction and the Standard makes
no requirement on its instruction bit pattern.
CLAMP targets the Bypass Register between TDI and TDO, to shorten the shift
path. It also places all output and bidirectional pins under control of the Boundary
Register, which should be previously set up beforehand with a PRELOAD sequence.
These states become effective at Update-IR. This allows a test to set fixed values on
an IC’s output pins without incurring the overhead of its entire Boundary Register.
In other words, this function could have been accomplished by putting the IC in
EXTEST, but the Boundary Register would then be in the shift path (lengthening it)
and it would have to have its clamp values reinstated on every new shifting cycle.
CLAMP is intended for “digital guarding.” When testing a board, it is often nec-
essary to force static “0”s or “1”s on selected nodes in order to set up testable condi-
tions or to block interfering signals. With an In-Circuit tester having full nodal
access, we would simply assign tester drivers to the selected nodes and force the
required values. If the nodes of interest are sourced from Boundary-Scan devices
that possess the CLAMP function, then this digital guarding activity can be per-
formed without nail access or potentially damaging overdrive.
ShiftDR 1
CK
cell may be used and the component may still claim support of INTEST and/or
RUNBIST. This complicates the application of test patterns for INTEST because we
must now coordinate the shifted portions of a test with parallel clocking. In the
previous section on RUNBIST, we saw that clocking of self-tests could be a func-
tion of TCK or system clock pins. Designers might be tempted to categorize other
performance-sensitive pins as “clocks” in order to circumvent the rules, but this will
simply make testing more difficult.
1.6 Extensibility
A powerful feature of the 1149.1 Standard is its extensibility. The architecture can be
extended two ways; by adding user-defined instructions and user-defined registers.
User-defined instructions may be public or private. Public instructions must be prop-
erly documented (see Sect. 2.3.10), but private instructions may be undocumented
except for their instruction bit patterns. This much is required so users will know to
avoid these patterns. User-defined instructions could cause unusual or hazardous con-
ditions to occur so they must be used with care or avoided altogether.
User-defined instructions may target standard registers (such as the Boundary
Register or the Bypass register), portions of standard registers, or concatenations of
registers between TDI and TDO. Alternatively, new user-defined registers may be
targeted.
Consider the Texas Instruments 74BCT824444 [Texa91a]. This IC has a number
of extensions defined by TI. Several of these reference standard registers such as
Boundary or Bypass while others reference a TI-defined Boundary Control Register
(BCR). This 2-bit register can be loaded with control bits that configure the
Boundary Register for special functions that other TI-defined instructions then acti-
vate. For example, the Boundary Register can be configured as a Linear Feedback
Shift Register (LFSR) that can collect a signature of the states seen on the input
pins. Similarly, the outputs can be controlled by the Boundary Register, configured
as a Pseudo-Random Pattern Generator. Both functions can be set up, so that the IC
generates random patterns on its outputs and performs Signature Analysis [Nadi77]
on its inputs. Because octal bus components are often the logical partition points in
a circuit, these functions are attractive; these ICs can be used to perform board-level
Built-In Self-Tests. All of this can be done using the 1149.1 facility as a communi-
cations protocol for accessing a unique test function.
In general, this view of the Standard as a communication protocol for accessing
new functions within an IC is a powerful contribution. Board-level self-tests,
special IC self-tests, hybrid digital/analog tests, emulation support and many other
44
This IC is one of several in a family (called the SCOPE octals) that all implement the same exten-
sions. SCOPE is a trademark of Texas Instruments.
1.8 Costs and Benefits 43
functions can be accessed using the same four-wire port already there for 1149.1
testing. Section 4.9 discusses how the 1149.1 port is being used to define a class of
instructions for programming Field-Programmable ICs.
The 1149.1 Working Group formally recognized, in 1993 [IEEE93a, IEEE93b], that
other testing technologies might exist within an IC. Notably, internal scan method-
ologies may be used that test all the circuitry within an IC, including the 1149.1 test
circuitry.
For example, a single Integrated Circuit could contain 1149.1 and some other
testability technology such as IBM’s Level Sensitive Scan Design (LSSD) [Will83].
Indeed, the first release of the Standard [IEEE90] contains Appendix A, which
shows just such a scenario. Such an intersection of testability approaches can lead
to a problem; does one standard have superiority over the other when it comes to
interpreting the rules of both? For example, must the control signals for LSSD be
governed by the 1149.1 Boundary Register? Does the TAP controller use LSSD
memory elements in its construction? Careful study of Appendix A of the Standard
will reveal that LSSD exercises superiority over 1149.1. It would be impossible to
maintain LSSD rules without this superiority, but it has the effect that that several of
the LSSD controlling pins are not testable by the 1149.1 facility. Further, if these
pins are not held at certain stable levels, then the 1149.1 facility will not work at all.
The solution to this is to recognize certain pins as “compliance enable” pins. These
pins must be conditioned with stable logic states before and during all 1149.1 activities.
If this condition is not met, then the 1149.1 features cannot be used. Such devices are
considered 1149.1 compliant when the compliance enable conditioning is satisfied.
Compliance enable pins do exist on many devices that have been implemented,
many of which do not include a second testing technology. Unfortunately, this was
not always communicated to users of these devices. Hence they spent a great deal
of time trying to get the 1149.1 features to work reliably but they suffered enormous
difficulties. (Compliance enable pins can now be described in BSDL, see Sect.
2.3.9.) Today, compliance enabling is a recognized condition for some ICs and soft-
ware should be able, when notified, to handle many of the implications. See Sect.
5.2.5 for more discussion.
On first examination of the structure in Fig. 1.14 (page 30), it certainly looks like the
System Logic is dwarfed by Boundary-Scan circuit overhead. Indeed, early criti-
cism of the Boundary-Scan effort often centered on the apparent impracticality of
the costs. If you look at some actual ICs in existence today that have Boundary-
Scan, you can get a feel for what the overhead penalties are.
44 1 Boundary-Scan Basics and Vocabulary
1.8.1 Costs
First, consider the Texas Instruments 74BCT8244 Octal Buffer with Boundary-
Scan [Texa91a, Texa91b]. This IC represents an extreme in that the System circuitry
is simply eight buffers while the Boundary-Scan logic is several hundreds of gates.
Note several things however. First, the die contains 24 bonding pads (four dedicated
to Boundary-Scan) for the eight buffers. It is a pad-limited design, meaning there is
a lot of unused silicon space and most of the die is made up of bonding pads. Second,
Texas Instruments has added a number of additional capabilities to the Boundary
Register and a number of additional instructions to the TAP. Thus, it is a rich imple-
mentation. Third, most of this circuitry made use of the unused silicon space and
was much less expensive as a result. A significant cost was simply the additional
four pins needed for the TAP signals and the four additional bonding pads on the
die. This is pad overhead.
Another problem with adding 1149.1 to the 74BCT8244 is potential yield loss;
fewer good die are found per silicon wafer. This is a result of placing active circuitry
in formerly “unused” silicon space. Any silicon defects lurking in these spaces can
cause the die to fail.
Next consider a VLSI component, the Motorola 68040. This IC contains a basic
implementation of Boundary-Scan. It has a large number of pins (174) of which 102
are for System Logic, so five (including TRST*) additional TAP pins is a small
percentage. Indeed, on many VLSI components, pins are often dedicated for testing
purposes anyway to support proprietary testing functions. The 68040 is area-limited
rather than pad-limited, meaning they packed as many gates onto the largest size of
die that was commercially feasible. Thus, every gate expended on Boundary-Scan
subtracted from those available for System Logic. In [Gall90], the percentage of
gates in the 68040 used for Boundary-Scan was listed as 0.3%. For dense IC designs
such as CMOS VLSI, the gate overhead45 due to Boundary-Scan will be small.
Consider the problem of inserted delay. Figure 1.7 (page 23) shows a multiplexer
in the system data path between the I/O pin and the System Logic. This will insert
some delay. Now the Standard allows, in selected cases on input pins, for this
multiplexer to be eliminated.46 However, the multiplexer function must be present
on output pins. Again this caused a lot of concern in the early development of
Boundary-Scan, and was often seized upon by reluctant IC designers as a fatal flaw.
45
Another concern is the routing of global signals such as ClockDR, ShiftDR, UpdateDR and Mode
(see Fig. 1.7 on page 22). These signals must be routed to every Boundary Register cell. Note that
once a routing channel has been found for one signal, adding more is considerably easier.
46
The price for eliminating these multiplexers may be the inability to implement the optional INTEST
instruction. However, the value of INTEST to anyone beyond the original manufacturer is debatable
and many original manufacturers use internal scan techniques rather than INTEST anyway.
1.8 Costs and Benefits 45
In reality, merging its function with the output driver can minimize the multiplexer
delay. That is, the multiplexer shown in Fig. 1.7 (page 23) is a logical representation
of the cell design and not necessarily a preferred implementation. It is interesting to
note that when Intel switched to Boundary-Scan design in their microprocessors, the
first product containing Boundary-Scan [Inte91] was their fastest processor of that
time, the 80486DX, not a slower version. Every Intel processor since has contained
1149.1. The current speed record-holder is the Agilent HDMP-2689 Quad SERDES
device. Its I/O pins run at 2.5 GHz47 and yet it contains a complete Boundary-Scan
implementation. IC designers committed to successfully implementing Boundary-
Scan can greatly reduce the inserted delay penalty by clever design.
Another cost of Boundary-Scan is increased design time. This has been aggra-
vated by the lack of tools that support Boundary-Scan designs. This problem is
solved today, as several EDA design tool vendors such as Cadence, LogicVision,
Mentor Graphics and Synopsys, to name four. The ATE community has been offer-
ing test equipment and supporting software for Boundary-Scan since late 1990.
Examples of proprietary design tools were reported as early as 1991 [Chil91]. When
Boundary-Scan reaches maturity, the goal will be for its design and use to be
“untouched by human hands”; that is, fully automated.
Yet another problem is lack of discipline in the overall manufacturing process.
As stated in the very first sentence in this book, software is a key to success with
Boundary-Scan. Software is highly dependent on the quality of data it uses. A manu-
facturer must have the discipline to assure that 1149.1 devices are compliant, that the
attendant BSDL descriptions are accurate representations, and that board netlist data
really reflects the construction of the boards (complete with engineering changes), to
be successful. However, this hasn’t been the case for all of those attempting to use
1149.1. To be fair, some attempts have been sabotaged by the lack of discipline
amongst vendors of ICs and tools, who have sometimes been sloppy with their
degree of compliance with the Standard. This is changing, but you should be wary.48
1.8.2 Benefits
Critics of 1149.1 often cite the various problems listed above. Although most of
these problems seem individually less significant, they worry about their combined
effects. However, these worries may be balanced by a systematic view of the
economics of producing products. Lab prototypes of a new product may promise
incredible performance for a modest price, but the realities of volume production
47
This device is also an example of one that has special initialization requirements. See Sect. 10.11
for a discussion of this topic, which is becoming more important with System-on-Chip technology.
This device is faster (by a decade) than the upper bound on practical Boundary-Scan implementa-
tions that some have claimed to the author.
48
Indeed, if more people are wary, improvements will come faster!
46 1 Boundary-Scan Basics and Vocabulary
G
Relative Product Performance
F
E
6
D
5
3 4
2
1 C
Company X
A B
Company Y
Fig. 1.19 Product introductions by companies X and Y, and their relative performance
may prove disappointing. Without suitable testability, the product may not be
producible. As product complexities and densities increase, so does the risk of
product failure. A maxim in the industry is:
“Don’t be silicon-wise, but system-foolish.”49
There are many benefits that will be credited to Boundary-Scan. These are often
listed as (1) the automation of test development, (2) the reuse of tests, (3) the
standardization of testability access, and so on. These are all admirable, but it is
interesting to see what affect they may have on the electronics industry while taking
their costs into account as well.
For this purpose, consider two hypothetical electronics companies X and Y that
compete with each other. They are using similar technologies, including Surface-
Mount Technology (SMT), Application Specific ICs, and they are increasing com-
ponent densities on boards. They are both examining 1149.1 testability. Company X
decides to wait while company Y decides to develop Boundary-Scan technology.
Both companies introduced their last products (1) and (A) in 1996. See Fig. 1.19 for
a possible scenario.
In this scenario, company X introduces its next product (2), without Boundary-
Scan, promptly in 1997. These are followed regularly every year by products (3)
through (6). Company Y does not get its next product (B) to market until after product
(2), and its performance is a slightly less than product (2) as well. This is because of
the learning curve for Boundary-Scan, the lack of some tools, and some performance
penalties directly ascribed to Boundary-Scan. But, company Y has learned to use
49
I am told that Vishwani Agrawal originated this phrase. It beautifully sums up the fact that plac-
ing some responsibility for the economic success of a product on the design team can solve many
of our testing problems. This usually requires enlightened management support.
1.8 Costs and Benefits 47
Boundary-Scan, found and developed tools, and is ready to take advantage of this on
its new product (C). Product (C) is introduced in record time due to the advantages of
Boundary-Scan. Company Y’s engineers did not have to spend much time preparing
tests, and were able to react swiftly to last minute design changes. Thus they beat
product (3) from company X to market, although it has a little less performance than
product (3) will eventually have. Now, company Y invests the savings in engineering
due to Boundary-Scan two ways; first, they can get products out faster; second, they
can investigate more aggressive technologies. They begin to use very-high density
boards and a few Multi-chip Modules. Meanwhile company X is still trying to get its
products out the same old way, and has little time to try new approaches. Company Y
introduces products (D) through (F) in rapid succession, which exceed both the per-
formance and the schedule of company X.
Does this scenario seem far-fetched? I think not. Other revolutions in the elec-
tronics industry showed similar patterns, like the move to Surface Mount. With
SMT there was a significant learning curve and a need for advanced automatic
placement machinery and new test procedures. At first these slowed down the pro-
cess of bringing out new products. But the overall improvement in manufacturing
processes eventually paid off in better efficiency. Indeed, as time progressed, SMT
became the more cost-effective process and devices were no longer packaged as
both SMT and through-hole. Thus, even manufacturers who perceived no real need
for SMT were forced to use it. As always, there are no guarantees and no substitutes
for the thoughtful application of technology.
1.8.3 Trends
It has been over two decades since the ratification of the first IEEE 1149.1 Standard
[IEEE01]. Some trends are becoming clear.
• There is a growing list of vendors for 1149.1 devices and tools.
Most larger devices today contain 1149.1. As one example, there is a move in the
Field-Programmable marketplace to support 1149.1. This reflects two facts; first,
these devices, without Boundary-Scan, are inherently difficult to test within their
applications. Second, the vendors of these devices have begun standardizing on the
1149.1 protocol (see Sect. 4.9) as the programming port for these devices, thus
giving (in their view) value to the TAP pins. As already noted, there is an increas-
ing amount of support from the Electronic Design Automation community. This
reflects growing demand from designers for 1149.1 support. This will increase
both the quantities of ICs containing 1149.1, and the uniformity of their quality.
• More people have experience with 1149.1.
While it would be foolish of me to claim that all 1149.1 experiences are good,
many manufacturers have begun to utilize Boundary-Scan. The driver for this trend
is lack of probing access that is threatening the viability of highly valued In-Circuit
test technology. Recently, Matsushita Electric Industries Ltd. (MEI) documented
their adoption of Boundary-Scan technology for their products [Milo95]. Their
marketplace is very cost sensitive, high volume, density driven and fiercely com-
petitive, yet they see Boundary-Scan as a way to get ahead in the long term.
48 1 Boundary-Scan Basics and Vocabulary
IEEE/ANSI Standard 1149.1 is part of an overall effort titled IEEE 1149 Testability
Bus Standards. There are five standardization efforts mapped out under 1149.
Boundary-Scan (1149.1) was the first to complete its mission. The second was IEEE
1149.5, “Standard Module Test and Maintenance (MTM) Bus Protocol” which com-
pleted in 1995. The brand new IEEE 1149.4, is covered later in this book (see Chap. 7).
The P1149.3 (a system test bus) has long been defunct. In 1997 the P1149.2 [IEEE92]
effort decided to end its quest. Recently, in 2000, development started on IEEE
Standard 1149.6 [IEEE03] which released in record time in 2003 (see Chap. 8).
P1149.2 (“Extended Digital Serial Subset”) was similar in many respects to 1149.1.
It was a Boundary-Scan capability in that there was a Boundary Register that could
observe and control component I/O pins. It had a different control design, called a
“stateless” approach. There was no TAP state diagram; to make up for this, more con-
trol pins were needed to control the test facility. Offsetting this price was the ability to
move from one function to another merely by changing the pattern applied to these
pins. One goal of this effort was to supply more direct support for higher testing
speeds and to allow the sharing of certain test logic elements with system logic.
Another goal was for components adhering to both 1149.1 and P1149.2 to be able to
perform tests cooperatively. However this compatibility goal turned out to be a funda-
mental problem. The work done by Lee Whetsel [Whet95] (see Sect. 1.3.5) showed
how clever design might be able to achieve many of these goals within the 1149.1
discipline (though that Working Group still needs to evaluate these ideas). In this light,
the P1149.2 Working Group voted to join with the existing 1149.1 Working Group to
find ways to evolve 1149.1 to address the concerns of the P1149.2 constituency.
The 1149.5 standard is a bus protocol that focuses on high-level systems test-
ability. This standard allows the partitioning of a system into subsystems, modules
or boards. The lower-level items may utilize 1149.1. This gives more organizational
flexibility than 1149.1 has by itself (see Sect. 5.3.1).
Chapter 2
Boundary-Scan Description Language (BSDL)
language and encouraged more development, but strongly recommended that the
proposal take on the syntax of an existing language.
Upon looking about for a suitable language, it was clear that no existing lan-
guage was ideal, at least to all observers. However, one language did exist that was
already an IEEE standard, dealt with describing, modeling and synthesizing digital
logic, and was gaining a growing following in the commercial marketplace. This
was the VHSIC Hardware Description Language, VHDL (IEEE Standard 1076)
[IEEE93b]. Thus, VHDL became the foundation language specification for BSDL,
[Park90b] that after significant additional development was formally balloted and
adopted by the IEEE in 1994 [IEEE94] as IEEE Std 1149.1b-1994.
There are problems with VHDL as indeed there are with other existing lan-
guages. First, it is a huge language.1 Second, not everyone is using it. Therefore,
some applications would be implemented within a VHDL environment and some
would be written to stand alone. Thus, BSDL had to be a subset and standard prac-
tice of VHDL. By keeping the subset small, stand-alone software would not be
burdened with supporting a large VHDL parser. By specifying a standard practice
wherever VHDL allows a choice in syntactic style, we both simplify software and
create a canonical form for BSDL. All of this is accomplished without costing the
ability of a VHDL system to utilize BSDL.
Figure 2.1 shows use models for BSDL within and outside of VHDL environ-
ments. A BSDL source can be consumed by a VHDL analyzer, which converts it into
a compiled design library. From here, tools specific to Boundary-Scan can be created
that access the compiled design information. Other tools are free to access this infor-
mation (as well as any other information present) to perform simulation, logic synthe-
sis, or other tasks. In a non-VHDL environment, tools must analyze BSDL directly.
A few more words on the genealogy of BSDL are in order. The first version of
the language [Park90b] quickly became a de-facto standard near the end of 1990. A
side effect of the development of BSDL was a realization that there were some
unanswered questions about the 1149.1 Standard itself. Most of these questions
centered on the construction of the Boundary Register and the definition of “System
Logic”. In response to these questions, the 1993 revision [IEEE93a] called IEEE
Std 1149.1a-1993 concentrated on improving the clarity of the rules for implement-
ing the Boundary Register. This revision completely re-wrote the chapter on
Boundary Register construction and ushered in other improvements. Later in 1994,
BSDL became a formal part of 1149.1 [IEEE94]. In 2001, the Standard was revised
again. Small changes in silicon implementation are reflected in BSDL. These will
be noted in this chapter and also Appendix A.
There are differences between the initial version of BSDL and the official IEEE
version, but these are relatively minor. These will be pointed out in this chapter, but
this chapter will document only the IEEE version. All important software applica-
tions that I am aware of will accept either version of the language, so one does not
have to write BSDL in both versions. When you create BSDL, it should be in the
1
Even within the VHDL world, there are full and partial implementations of the VHDL
language.
2.1 The Scope of BSDL 51
Boundary-
BSDL
Scan
Source
Tools
Outside VHDL
Environment
Inside VHDL
VHDL Analyser Environment
Test
(Lex, Parse, Programs,
Semantics) Etc.
Compiled Boundary-Scan
Design Tools
Library (Semantics, etc.)
Synthesis
Tools
Simulation
Tools
... Other Tools
BSDLUseM
IEEE version. However, if you have older devices and BSDL files in your inventory,
they should be usable without change.2 IEEE BSDL has an internal mechanism for
documenting its revision level that is covered in Sect. 2.3.3.
BSDL allows the description of the testability features in components that comply
with IEEE/ANSI Standard 1149.1. This language can be used by tools that make use
of those testability features. Such tools include testability analyzers, test generators,
and fault diagnosis routines. With a BSDL description of a component and knowl-
edge of the Standard, software tools can completely understand the data transport
characteristics of the component; that is, how the IC captures, shifts, and updates
data. Note that BSDL itself is not a general-purpose hardware description language.
It is not a “model”. BSDL does not provide architectural, structural or detailed
design information about an 1149.1 implementation.
2
The older version of BSDL lacks certain capabilities that may be crucial to your success. For
example, compliance enable pins (see Sect. 2.3.9) cannot be described. If a device has compliance
enable pins, applications using this device will not condition these pins correctly, leading to com-
plex debugging problems. In such cases, you should convert the older BSDL to the new IEEE form.
52 2 Boundary-Scan Description Language (BSDL)
2.1.1 Testing
BSDL can be used as a test driver. Consider the automatic generation of board tests
as shown in Fig. 2.2. Here, an ATE program generator is provided with a BSDL
description of every unique IC adhering to the Standard. Then, as many such program
Board Topology
ATE Program
(Netlist and
Generator
Parts list)
Testability Changes
Report
Test
Program
BSDLATPG
When one attempts to implement 1149.1 within an IC, one question naturally arises;
“Did I do it right?” Answering this quickly becomes a process for ensuring compli-
ance. One approach for this is shown in Fig. 2.3. In this process, the IC is conceived
and the 1149.1 facility is then added. The full and perfected implementation of the
IC’s System Logic may need much further development, but because the System
I/O assignment, or pinout, of the IC is one of the first items to stabilize, it is often
possible to design the 1149.1 circuitry before the IC design is finalized. When the
1149.1 portion of the IC is designed, a BSDL description may be written.
The process of writing BSDL can uncover errors in the implementation of the
1149.1 circuitry. For example, if System Logic is illegally placed between Boundary
Register cells and the I/O pins, it will not be possible to describe this configuration
within BSDL.
After a BSDL description is written, it may be checked by a program that looks
for specific requirements that must be met for the component to be in compliance.
For example, it might check that the TAP Instruction Register captures a valid pat-
tern at Capture-IR as laid out by the Standard. It may look for more subtle problems,
such as using a Boundary Register cell design that does not support INTEST when
INTEST was listed as one of the instructions the TAP will decode. If an error is
found, then the design must be corrected. If the program approves of the design, then
it may proceed to create an IC test program directly from the BSDL that can then be
used to test the 1149.1 portion of the IC. One important result is that the BSDL will
match the implementation of the 1149.1 circuitry. See Sect. 5.1.10 on page 185 for
more information regarding compliance certification of both 1149.1 and BSDL.
In general, the programmatic verification of compliance is very difficult and a
guarantee is virtually impossible. This is because:
• The Standard offers no formalized rules or procedures for checking compliance.
• The Standard is open; it allows the implementation of user defined extensions of
arbitrary complexity.
• The IEEE does not bestow a seal of approval upon persons or software purport-
ing to judge compliance.
3
The term “node” refers to an interconnection of component pins. Frequently used synonyms for
“node” are “net”, “network”, “signal”, “trace”, “track” and “wire”.
54 2 Boundary-Scan Description Language (BSDL)
Partition System
Circuitry for IC
Complete
Design 1149.1 Design of
Circuitry System
Circuitry
Yes
Problems with Fix 1149.1
Description? Circuitry
Yes
No
Compliance
Errors?
Checker
No
Test Fabricate IC
Program
Test IC
CmplVerf
Fig. 2.3 A process for checking the compliance of an IC with the Standard
• Pass this description through a checker and/or test generator from one or more
independent sources.4
• Physically run any tests created against the real component or simulate them
against a high-quality model.
When success breeds new confidence, you may want to incorporate advanced
features. The next section on synthesis offers hope that much of the risk of a compli-
ance violation can be removed during structured design.
2.1.3 Synthesis
Device Concept
Synthesize 1149.1,
Add to Device Model,
Designer Review,
Optimize
Modifications
BSDL
Editor
Description
SynthBS
Fig. 2.4 An 1149.1 synthesis system that both creates and uses BSDL
4
One such free service is available at http://bsdl.service.keysight.com/.
56 2 Boundary-Scan Description Language (BSDL)
It looks for the required pull-ups on TDI, TRST* and TMS. Finally it checks
TDO generation to assure it is properly handled in each TAP state.
• Phase 2 begins the extraction of the shift register portions of the instruction reg-
ister and various data registers. It does this by a series of deductions driven by
loading the instruction register with required opcodes,5 and by seeing what is
selected when in the Test-Logic-Reset state. Then it checks the lengths of these
registers and their capture patterns, and performs extensive checks on the map-
ping of signal pins to the Boundary Register.
• Phase 3 extracts the instruction decode logic and identifies the various target
registers. SAMPLE and PRELOAD are deduced from this exercise and then
checked for adherence to the rules.
• Phase 4 finds more instructions (INTEST, CLAMP, HIGHZ and so on) and their
data register interactions. It checks that the Boundary Register cell behavior is
appropriate for these instructions and labels the cells per the Standard.
• Phase 5 reads an externally supplied pad-to-pin mapping and then writes out the
BSDL for the IC, provided the rules check out.
Now, commercial tools are available from synthesis vendors such as Cadence,
Mentor Graphics and Synopsys. As you can see, we’ve come a long way since 1991.
5
For example, it loads the all-one opcode to force a BYPASS instruction. It then looks to see what
register was accessed and checks it for the rules concerning BYPASS. Note the recent relaxation
of the former rule that associated the all-zero opcode with EXTEST adds a new complication here.
6
This supplement to the Standard is now Annex B of the 1149.1.
7
This relationship with VHDL was terminated with the 2013 revision of 1149.1. See Chap. 11 in
Part 2 of this book.
8
This is an important point; BSDL is not an executable language, but rather a description.
58 2 Boundary-Scan Description Language (BSDL)
passed formal parameters, again like a subroutine.9 These are called “generic”
parameters. An entity can incorporate external definitions, like the “include” pro-
cess in other languages, with use statements. These items that are “used” are called
packages and are themselves broken into package and package body elements.
The package contains global data type declarations and the body contains more
declarations, enumerating constant data, as will be described later.
BSDL is structured as a VHDL entity supported by VHDL packages and VHDL
package bodies. All BSDL entities reference a standard package and package body
labeled STD_1149_1_2001.10 The standard package contains definitions of the ele-
ments of BSDL such that a VHDL system will understand how to recognize them.
The standard package also contains logical definitions of Boundary Register cell
designs given by the 1149.1 Standard [IEEE01] and likely to be adopted by design-
ers. Figure 2.5 shows this structure.
The following sections describe the elements of the BSDL language. We will use
a real IC as an example, the Texas Instruments 74BCT8374 [Texa91b] octal flip-
flop register. Here are some notes on the lexical structure of the language.
• The language is case insensitive and free form, with statements that may cover
multiple lines, terminated with semicolons.
• Identifiers are made up of alpha, numeric, and underscore “_” characters, with
the first character being alpha. Adjacent or trailing underscores are not allowed
in identifiers.
• A double dash “--” starts a comment, which continues to the end of the current
line. Comments are ignored when BSDL is processed.
• BSDL uses VHDL string structures to contain some information. These strings
may be broken into manageable pieces by concatenation of smaller strings using
the “&” operator. A single string cannot be split across lines.
Here is an example of how BSDL uses strings. (BSDL examples appear in
Courier New Font, a non-proportional typeface, to help differentiate them.)
The following string expression using concatenation takes two lines but it is
otherwise logically identical to the string above. This example also shows
comments between, and following, two concatenated strings. These comments are
logically invisible.
9
Again, BSDL uses a “generic”, but it is used to select among several descriptive options.
10
This is the most recent package. Older BSDLs may refer to STD_1149_1_1994 or the non-IEEE
package STD_1149_1_1990.
2.2 Structure of BSDL 59
entity ttl74bct8374 is
BSDLPack
Fig. 2.5 The relationship of a BSDL entity to the standard package and package body
Strings are used to express certain BSDL structures that are often quite long.
Concatenation is used to map these structures into the constraints of common editing
software and can be used to produce a visually appealing format. Having just said that…
Warning! BSDL is intended for distribution from serving organizations to client
organizations. It is common practice today to use the Internet or other electronic
systems for this communication. However, BSDL strings and comments can interact
60 2 Boundary-Scan Description Language (BSDL)
with features of this channel between server and client to produce errors in the
information as received by clients. Here is an example. Say you create a BSDL file
containing the following hypothetical text:
Here is what your client may receive after using electronic mail service to receive
your BSDL:
Your client then compiles the file and sees errors something like this:
The entity description begins with an entity statement and terminates with an end
statement like so:
The entity statement names the entity. Typically we place the component name
here. (Notice that this entity identifies the “74bct8374” component, but the entity
name is “ttl74bct8374”, reflecting the VHDL requirement that identifiers must start
with an alphanumeric character.) Other statements within the entity body will refer-
ence this name.
The entity body contains a set of mandatory and some optional statements. The
optional statements are shown between “{ }” brace characters. They must occur in
a specific order. Below is a listing of these statements that will serve as a roadmap.
The generic parameter immediately follows the entity statement. It may look like
this:
A generic parameter is a parameter that may be filled by a call from the outside
world, or it may be defaulted. In BSDL, the generic is a string with the name
PHYSICAL_PIN_MAP. It is either passed in from outside (by an application) or it
62 2 Boundary-Scan Description Language (BSDL)
defaults to the string value like “DW” in this example. Any value passed in has
precedence over the default value. The default string is arbitrary. Ultimately, the
value of PHYSICAL_PIN_MAP must be assigned for future reference.
A generic parameter, in BSDL, is used to select an IC packaging option by name.
Because the same IC die may be placed in packages with different configurations
(pinouts), BSDL allows the specification of all package-to-pin mappings within one
BSDL description. The generic allows an external application to select one. If there
is only one package, then by defaulting the generic to its name, one can implicitly
select the option from within. Remember that one package option is “no package”
in the case of bare die. The bare die bonding layout could also be documented and
selected this way and could be used by BSDL-driven applications supporting IC
wafer test.
The string value assigned to PHYSICAL_PIN_MAP should be a meaningful,
descriptive string. For example, if an IC is packaged in an 18 × 18 pin grid array,
then you could use “PGA_18 × 18” as the value, which obeys the requirements of a
VHDL identifier (for the reason see Sect. 2.3.6) and conveys the package type to
observers.
The logical port description gives logical names to the I/O pins (system and TAP
pins), and denotes their nature such as input, output, bidirectional, and so on. The
port statement for the example IC is as follows.
In this example we see that CLK is an input (in bit), TDO is an output (out bit),
that there is an eight-bit input bus labeled D (in bit_vector (1 to 8)), and so on. If this
IC had bidirectional pins, they would be of type inout. The bit_vector notation indi-
cates a series of related signals numbered (here) from 1 to 8, inclusive. (Bit_vectors
can use descending orders by replacing “to” with “downto”.) Non-digital signals
such as Power, Ground, no-connects or analog are labeled as linkage. The set of
labels for pins is given in Table 2.1.
Port names must be VHDL identifiers. Later (see Sect. 2.3.6) we will see how
these ports are associated with a device’s pins, which may be numeric identifiers.
VHDL allows more richness in logical port expression, but BSDL limits the syntax
to that shown here as a standard practice.
2.3 Entity Descriptions 63
The standard use statement refers to external definitions found in packages and
package bodies, as in our example.
This standard use statement must appear in any BSDL description, and must
appear before any other use statement (see Sect. 2.3.4). It instructs a VHDL ana-
lyzer to look into a VHDL package named STD_1149_1_2001 for definitions of
statements that will subsequently be found in the description. The “.all” suffix
means to use all of the package and is not part of the package name. This package,
with its attendant package body, also contains frequently used Boundary Register
cell definitions as defined by the Standard. (The content of STD_1149_1_2001
appears in Sect. 2.6.1 starting on page 88.)
VHDL, and thus BSDL, is a case-insensitive language. However, practical limi-
tations often arise here with the actual name of the standard package. In a pure
VHDL environment, a package is a set of definitions that reside in the workspace of
the VHDL application. This workspace is isolated from the details of the host com-
puter’s file system. Thus, the fact that the host computer is running under Windows-XP
(which is case-insensitive) versus UNIX11 (which does give significance to case) is
not apparent to the VHDL user. However, many BSDL tools are not written within a
VHDL application. These tools often store package data in the native file system of
the host computer. For this reason, some applications will have case-sensitivity on
the name of the package. Taking care to preserve the casing of package names can
prevent future errors if you port a BSDL between environments.
There is another important implication to the actual name of the standard pack-
age. The name implies the version of the BSDL language being used to describe a
device. As BSDL evolves with subsequent issues of the Standard, it is important
for software to understand which version of the language it may be processing.
11
Windows-XP and UNIX are trademarks of their respective owners.
64 2 Boundary-Scan Description Language (BSDL)
Today’s version may contain new constructs that did not exist in a previous version. In
some cases, a construct may be obsoleted, as has actually happened.12 When coding
BSDL, it is important to use only the syntax defined by current issue of the language.
Use statements are optional and one or more may be added. If a designer were to
invent new cell definitions, these could be placed in a new package, for example,
called “My_New_Cells”, and referenced with a use statement, like so.
(See Sect. 2.6.2 on page 92 for details on cell definitions.) User-defined packages
can also be used to define BSDL extensions, covered in Sect. 2.3.16 appearing on
page 79. The package name used in a use statement will have the same sensitivity to
casing just described for the standard use statement in Sect. 2.3.3.
The component conformance statement13 identifies the release of the Standard that
was used to design the 1149.1 circuitry within an Integrated Circuit. This allows users
(and software) to identify what features may be present in the implementation.
This statement, written in the 1994 (IEEE) version of BSDL, tells us that the IC was
designed by the rules of the 1990 version of the Standard. Other values this attribute
may have are “STD_1149_1_1993”, “STD_1149_1_2001” and STD_1149_1_2013
reflecting the 1993 Supplement A and the more current issues of the standard.14 Future
releases of BSDL will most likely be coordinated with any future changes or additions
to the Standard itself. However, the component conformance attribute allows us to
know exactly what set of rules were used to design an IC in any case.
Certain features in an 1149.1 design may be “grandfathered”, meaning they
were designed by the rules of a previous issue of the Standard, but are no longer
considered compliant by a later version. By knowing the issue of the Standard that
12
The original version of BSDL (pre-IEEE) had a standard package named STD_1149_1_1990
which defined five attributes that were obsoleted with the acceptance of the IEEE version of the
language. Several new attributes have also been introduced. These are included in this chapter.
13
Component conformance was first defined by the 1993 Supplement to the Standard itself, with
BSDL syntax first appearing in the 1994 Supplement that first defined IEEE BSDL.
14
The alert reader may ask “why not a ‘-1994’ suffix?” This is because the 1994 revision [IEEE94]
made no change to the rules for implementing silicon.
2.3 Entity Descriptions 65
governed the design of an IC, software that checks for compliance can make the
exceptions for these grandfathered features. For example, in the 1990 release of
1149.1, it was allowed (because there was no forbidding rule) to have a control cell
enable two output drivers with complementary values. This of course means that the
two drivers cannot both be enabled or disabled simultaneously.15 In the 1993 release
of the Standard, this type of control structure was expressly forbidden.
constant DW:PIN_MAP_STRING:=
"CLK:1, Q:(2,3,4,5,7,8,9,10), " &
"D:(23,22,21,20,19,17,16,15), " &
"GND:6, VCC:18, OC_NEG:24," &
"TDO:11, TMS:12, TCK:13, TDI:14";
constant FK:PIN_MAP_STRING:=
"CLK:9, Q:(10,11,12,13,16,17,18,19)," &
"D:(6,5,4,3,2,27,26,25)," &
"GND:14, VCC:28, OC_NEG:7," &
"TDO:20, TMS:21, TCK:23, TDI:24";
This example shows mappings for two IC package types, the DW and FK pack-
ages. For example, signal CLK is pin 1 in the DW package, but pin 9 in the FK
package. The attribute sets up a relationship between the generic string and the
PIN_MAP attribute so that an application will know that the generic value is used
for mapping. See also that bussed signals such as D are associated with a group of
pins (eight in this case) because D was declared in the port definition as being a
bit_vector(1 to 8). In this example, D(1) corresponds to pin 23 of the DW package,
D(2) is pin 22 and so on.
If the package uses a matrix scheme to label pins such as those often used on ball
grid array (BGA) packages, then these may be named H13 or B7 so as to be VHDL
identifiers. They cannot be named 13H or 7B because these are not legal VHDL
identifiers.
15
Fortunately, this “feature” was quite rare. If it had proliferated, it would have seriously compro-
mised the ability of 1149.1 to support interconnection tests.
66 2 Boundary-Scan Description Language (BSDL)
The grouped port identification is optional. It is used to identify system pins17 that
have the special property of using more than one pin to carry a bit of data. Differential
signaling is the most common example, with pairs of pins used to convey each bit
of data. Note that differential signaling may be done with voltage signals, or with
directional current flow.
With differential signaling on a pair of pins, one pin is always the logical complement
of the other (again, in the assigned voltage or current domain). One pin is the “plus” pin
and the other is the “minus” pin. Differential signaling is used to improve noise immu-
nity by its inherent ability to reject common-mode noise. It is also used to improve
system speed and to reduce signal skew, though at the cost of doubling the pin count.
Differential signaling needs special consideration in Boundary-Scan implementa-
tions. In the case where a differential driver or receiver is considered an “analog” port,
we can still test its ability to deliver digital data, albeit on a pair of signal lines. BSDL’s
grouped port identification gives software the mechanism to identify these situations.
The example IC we have been using has no differential signals, so we will use a
hypothetical case for a “Diff_IC” device:
16
The 2013 release of 1149.1 deleted the term “linkage” and added several new port types to give
more information about the nature of non-signal pins. See Chap. 11 in Part 2 of this book.
17
The 1149.1 Standard makes no provision for differential TAP pins.
2.3 Entity Descriptions 67
In this example, we are defining the relationship of two 4-bit differential ports
made up of 4 BSDL ports, each with 4 signals. The first pair are Q_Pos and Q_Neg
which are each defined in the port statement as “bit_vector(1 to 4)”. Similarly, ports
D_Pos and D_Neg are both “bit_vector(1 to 4)” as well. Ports Q_Pos and Q_Neg
are voltage differential pins while D_Pos and D_Neg are current differential pins.
The structure above identifies the pairings. For example, pins Q_Pos(1) and Q_
Neg(1) are a voltage differential pair. A BSDL convention is that the first pin men-
tioned in a pair is the “plus” pin and the second is the “minus” pin.18 Similarly, pins
D_Pos(2) and D_Neg(2) are a current differential pair and so on.
Later in the same BSDL description, we will see ports referenced in the Boundary
Register description (described in Sect. 2.3.13 on page 73). Normally all system
signals are required to appear somewhere in the Boundary Register description. An
exception is that the “minus” ports shown in a grouped port description are not
required, indeed they should not appear.19 This reflects the fact that only one
Boundary Register cell is associated with each pair of differential pins. (See Fig.
4.10 on page 169.) Note that if a pair of system pins do have a full set of Boundary
Register resources, then with respect to 1149.1 these pins are not differential and
should not be described as such.
There are four (optionally five) TAP pins. The TAP port identification section
assigns special meaning to these signals. It looks like this.
18
The choice of port names used here helps a reader maintain the “plus” and “minus” relationship,
but is not required by BSDL.
19
The 2013 release of 1149.1 allows an observe-only Boundary register cell to monitor the nega-
tive side of a differential pair. See Part 2 of this book.
68 2 Boundary-Scan Description Language (BSDL)
The statements in this section may appear in any order, but the first four must
always appear in any BSDL description. All of them assign a VHDL attribute to a
signal that must have appeared in the port definition. In the example above, familiar
names such as “TDI” or “TCK” are shown, but these may have been arbitrary
names. For example, binding an attribute like TAP_SCAN_OUT to a signal identi-
fies it as being the Test Data Output (TDO). There is no significance to these attri-
butes being “true”; the Boolean value is a requirement of VHDL syntax. Any signal
bound with a scan port attribute may not appear later in any other BSDL structure.
The signal identified as TAP_SCAN_CLOCK is bound to a VHDL record con-
taining two fields. The first (a real number) is the maximum TCK clocking fre-
quency20 in Hertz and the second is a field with one of two values, BOTH or LOW,
indicating the allowable states the TCK signal may be stopped in. Note that a com-
pliant implementation may not specify HIGH as the only allowable stop state.
Compliance enable pins were described in Sect. 1.7 on page 42. These pins must be
held at static logic states before any 1149.1 activities are attempted on an IC, and
maintained until the completion of these activities. If such pins exist on an IC, then
an optional compliance enable description must be documented in BSDL.
Annex A of the Standard shows an example of an 1149.1 IC that was designed in
a Level-Sensitive Scan Design (LSSD) environment. The 1149.1 facility is subordi-
nate to LSSD, so this means that the LSSD feature must be controlled to allow the
Boundary-Scan implementation to work. Here we use the example from Annex A
to illustrate the syntax:
Here we see five input signals from the port description, LSSD_A, LSSD_B,
LSSD_P, LSSD_C1 and LSSD_C2 must be held to the static logic states “00011”,
assigned from left to right to the listed signals. When this condition is met, the
1149.1 circuitry will perform as mandated by the Standard. The signals listed in a
compliance enable attribute cannot be scan port signals (see Sect. 2.3.8) nor can
they appear in the subsequent Boundary Register description (see Sect. 2.3.13).
20
The Standard is not very clear on the significance of this maximum TCK frequency. For example,
is it the maximum frequency we can shift bits through any register? How does this parameter relate
to capture and update behavior? What does it tell us about TDI/TDO setup and hold time? In general,
many devices have maximum TCK rates of (say) 20 MHz, but we find that chains of such devices
from multiple vendors should be probably be run somewhat slower, for example, at 10 MHz. Some
devices are particularly sensitive to rise and fall times on TCK itself. One important note, it is not
necessary for a device’s 1149.1 circuitry to perform at the same frequency as the mission circuitry.
2.3 Entity Descriptions 69
In real life we have seen many devices with “compliance enable” pins that are
not subordinating testability pins, but pins used for other purposes. A major exam-
ple is the programming control pins on Field-Programmable devices. The compli-
ance enable attribute is very helpful for alerting software algorithms (and users) that
special handling is needed to make an IC behave. Unfortunately, the compliance
enable feature in BSDL was defined in 1994 by IEEE BSDL and many ICs that
would benefit were already introduced and described in pre-IEEE BSDL. It is
essential to convert these older BSDL files to the IEEE form so that the compliance
enable information can be conveyed.
The next major piece of information required in a BSDL description covers the TAP
instructions that are implemented by the IC’s 1149.1 facility. These include the
mandatory, optional and user-defined (both public and private) instructions and
their associated registers. Hence this description contains five elements; the length
of the instruction register, an enumeration of instructions by name, the instruction
codes (called “opcodes”) associated with instructions, the instruction register cap-
ture pattern and whether any instructions are private. Here is the description for the
example component:
21
The 74bct8374 in reality does not have any private instructions. This example is used to illustrate
the syntax.
70 2 Boundary-Scan Description Language (BSDL)
Two more optional attributes may now appear. They identify the content of
the Device Identification Register after passing Capture-DR when the IDCODE
or USERCODE instructions are loaded, if they exist for the component.
22
It may be necessary to use “x” characters to specify don’t care locations in an opcode. When this
is done, software that consumes BSDL must check that ambiguous decodes have not been errone-
ously specified. In this example, the line defining EXTEST could be written “EXTEST (x0000000),”.
23
The reason for not assigning the all-zero opcode to EXTEST is for fail-safety; a stuck-at fault on
TDI could cause the all-zero opcode to load into an instruction register rather than a non-invasive
instruction opcode.
24
In the initial release of 1149.1, SAMPLE and PRELOAD were defined as the same instruction,
or “merged”, and called SAMPLE/PRELOAD. With the current release [IEEE01] these two
instructions have been separated, but still can be merged within an implementation. This is shown
(as above) by both have the same instruction opcode(s).
2.3 Entity Descriptions 71
(The example IC does not have these instructions.) The mnemonics and all associated
opcodes must have been listed in the table of data given in the INSTRUCTION_
OPCODE attribute. The syntax for these attributes looks like this:
The character “X” may appear in the 32-bit fields indicating don’t care bit posi-
tions. This could be used, for example, to null out some of the manufacturer’s bits if
you were using a component that had multiple sources.
With the advent of IEEE BSDL, it was also allowed to specify multiple IDCODEs
to handle scenarios where a given IC had multiple IDCODE patterns. Some exam-
ples are: second sourcing (otherwise identical ICs have different manufacturers) and
version updates (different versions of an IC have identical 1149.1 logic). This allows
a single BSDL to encode all the information for a family of otherwise identical ICs.
The syntax for this addition uses a comma-separated list of bit patterns like this for
either instruction:
"0011" & "1010" & "0001" & "1011" & -- First code
"0000" & "0000" & "1111" & "1111," &
"0011" & "1000" & "0001" & "1011" & -- Second code
"0000" & "0000" & "1111" & "0011";
A user-defined instruction may target an existing data register such as the Bypass,
Boundary or Device_ID Registers. It may target a user-defined register.25 In the
example above we see that some instructions such as READBN or SETBYP access
standard registers (Boundary and Bypass) and that others like SCANCN and
SCANCT access a new register called BCR, which is two bits long. It is redundant
to specify standard pairings (for example, Boundary with EXTEST) but if such
pairings are written, they must obey the rules of the Standard. For example, it is an
error to pair the BYPASS instruction with the Device_ID register.
The development of IEEE BSDL brought a new (optional) capability to the
REGISTER_ACCESS attribute; the ability to describe a pattern of static bits26 that
a register captures (when passing the Capture-DR state) for a given instruction.
Looking at the example above, the two-bit BCR register captures a “0x” pattern27
when the SCANCT instruction is active, but no specification is made for SCANCN,
which could have been coded somewhat redundantly as capturing “XX” in this
example. The “captures” modifier allows software to verify that the bits that are
shifted out of a register after passing Capture-DR are indeed those expected for the
implementation in response to a given instruction. Note that the standard register/
instruction pairings (for example, Device_ID with IDCODE) cannot have their cap-
ture patterns documented using the “captures” modifier because they are already
specified by the Standard itself or by other elements of BSDL.
If any previously defined instruction was marked private (see Sect. 2.3.10) by the
INSTRUCTION_PRIVATE attribute, then it does not need to appear in the
REGISTER_ACCESS attribute at the option of the designer. All other user-defined
instructions must appear in this attribute description. This allows software applica-
tions to predict the static capture behavior and data transport characteristics of the
IC for any public instruction.
The description of the Boundary Register contains a large block of data. It gives a
description of every cell in the register.
Two attributes make up this description. The first is the attribute BOUNDARY_
LENGTH. The length attribute simply states the length of the register, an integer
greater than zero.
25
The Standard states that designers may add new data registers, or they may access existing reg-
isters, in whole or in part. Further, they may take a collection of registers (whole or in part) and
concatenate them. If an existing register is subsetted or concatenated in any way, the Standard
requires that it be given a new name and treated as a unique new register.
26
This feature only describes constant (static) bits. Bits that may differ in successive passages
through the Capture-DR state are either marked as “x” bits, or the capture description may be omit-
ted altogether.
27
Using the established BSDL convention, the capture pattern has its rightmost bit closest to TDO
and the leftmost bit closest to TDI.
2.3 Entity Descriptions 73
The fields in Boundary Register description structure are defined in the follow-
ing paragraphs.
Field 1: This is the cell identification field where the specific cell design is listed.
The definition of this cell design must be provided in a package called out in a “use”
statement. (See Sects. 2.3.3 and 2.3.4 beginning on page 64.) In this example, cell
design BC_1 is referenced from the standard package STD_1149_1_2001.
28
Note the cell number field “tags” the cell description. Thus the cell descriptions can be listed in
any order. In this book the order will typically be ascending or descending. As always, cell 0 is
closest to TDO. All cells must be described, i. e., all numbers between 0 and N-1 must appear.
74 2 Boundary-Scan Description Language (BSDL)
Field 2: This is the port field where a signal from the port statement29 that is
attached to this cell is identified. In some cases a cell has no attached signal; then an
asterisk (“*”) appears in this field.
Field 3: This is the function field where the cell function is identified from an
enumeration. This enumeration consists of the symbols input, clock, output2, out-
put3, internal, control, controlr, bidir and observe_only. See Table 2.2 for details on
the meanings of these symbols.
Field 4: This is the safe field. It contains a single character “0”, “1” or “x”. This
field specifies what an Update (UPD) flip-flop should be loaded with when software
might otherwise choose a value at random. This value has the least precedence with
respect to any other choice so it cannot be used to influence a test generation algo-
rithm. An “x” indicates that it doesn’t matter what value is loaded. In the example
shown above, a “0” was specified in the safe field for the control cell (cell 16) so that
its associated drivers would be disabled when the safe value is loaded.
This ends the first four fields required of every cell description record. Some
records will have the next three fields as well.
29
If the port uses a “bit_vector” to denote a group of signals, then a subscripted port name must be
used here. In the example, see that the D and Q ports are shown in Boundary_Register attribute as
subscripted signals, like D(3) or Q(5).
2.3 Entity Descriptions 75
Field 5: This is the control cell (ccell) field. It contains an integer that is the cell
number of the control cell associated with an output or bidirectional pin. This cell
can be used to disable the driver attached to the output or bidirectional signal.
(In the case of asymmetrical output drivers such as an open-collector driver, this
field must contain its own cell number, indicating the cell controls itself.
See Sect. 2.4 on page 80 for an example.)
Field 6: This is the disable value (disval) field that contains either a 0 or a 1. This value
is what must be loaded into the associated control cell (of field 5) to disable the driver.
Field 7: This is a disable result field (rslt) that indicates what happens when the
driver is disabled. It may contain one of an enumeration of six symbols; Z, Pull0,
Pull1, Weak0 Weak1 or Keeper. These values correspond to a 3-state disable or to
asymmetrical drivers (such as TTL Open Collector or ECL Open Emitter) when
disabled. See Table 2.3.
All (non-linkage) IC pins must appear in the port field of cell(s) in the Boundary
Register description with three exceptions that should never appear;
• TAP control signals such as TCK, TDO, etc. (See Sect. 2.3.8).
• Compliance enable pins (see Sect. 2.3.9).
• Negative (or “Minus”) representatives of grouped port pins.30 (See Sect. 2.3.7.)
Many other rules about the construction of the Boundary Register description are
given in the Standard. Some are obvious, such as the numbers assigned to cells must
fall in the range of 0 to BOUNDARY_LENGTH-1, and all numbers in this range
must be assigned to a cell. Some deal with the special requirements of the INTEST
instruction. For “generic” implementations of 1149.1, these rules are mainly com-
mon sense. For more intricate designs, you should take BSDL guidance directly
from the latest revision of the Standard.
30
The 2013 release of 1149.1 does allow observe-only cells that monitor negative legs of differen-
tial pairs, as well as other pins that were formerly not monitored. See Part 2 of this book.
76 2 Boundary-Scan Description Language (BSDL)
The first piece of information is the duration of test clause. A RUNBIST instruc-
tion must run for some length of time in the Run-Test/Idle state, governed by the
passage of time, or some number of clock cycles, or both. The duration in this exam-
ple was 100 μs, but there are other options. For example, maybe the IC needs to be
clocked by the TCK port 1000 times. Then the duration would have been “(TCK
1000)” rather than “(1.0e-4)”. A more complicated device might require both the
system clock and TCK to be running, and for a minimum time to elapse as well. In
this case the duration might look like this: “(2.8e-2, TCK 1000, SCLOCK 12000)”.
The observing clause tells us how the output and bidirectional pins behave while
RUNBIST is in effect. All of these pins do one of two things; they go into a HIGHZ
(high impedance) state,31 or they take on states defined by the Boundary Register,
which should be initialized by a PRELOAD operation before RUNBIST is exe-
cuted. These two options are selected by “HIGHZ” and “Boundary” keywords.
The expect clause documents what test result will be found in the target register
of RUNBIST, listed in the REGISTER_ACCESS attribute appearing earlier in the
BSDL description (see Sect. 2.3.12). A pattern of bits is given here that must match
the length of the target register. All of these bits must be deterministic “0” or “1”
bits. For a passing test, these bits will be read out from the target register after the
duration requirements for the test have been met.
31
All pins, including those whose system nature is to be 2-state pins.
2.3 Entity Descriptions 77
These two pieces of information are identical to those used by the description of
RUNBIST execution (see Sect. 2.3.14).
The actual patterns that one would apply via INTEST must come from an exter-
nal source such as the design verification tests for an IC. BSDL does not provide a
means of describing these patterns. The INTEST_EXECUTION attribute docu-
ments the details on how such patterns should be applied.
Some people have expressed the desire to “extend” BSDL to support new syntax for
some options and capabilities important to them. These applications might not be
relevant to anyone else. BSDL Extensions allow a standardized mechanism for
users to define their own extensions to the BSDL language that will not upset other
applications that are otherwise unaware of their format and content.
BSDL Extensions are named. These names must be declared before they can be
defined. Here is an example for a fictional IC named “My_IC”:
You can define multiple extensions, with the declaration for each appearing
before it is defined. It is also possible to include the definitions of extensions in User-
defined packages (see Sect. 2.6.6 on page 108) which may be useful if you intend to
use one or more extensions in multiple BSDL descriptions. When this is done, you
only need to define the value of the desired extensions in a given BSDL file.
Once you have decided on a BSDL extension and its format, you can add pro-
cessing capability to your tools that will recognize the attribute by name. Foreign
tools will see the attribute too, but will recognize it as an extension and ignore it.
78 2 Boundary-Scan Description Language (BSDL)
It is intended for application software to pass this warning text on to the user of
the software as appropriate. The attribute is useful for capturing and transmitting the
intent of a function from the designer to a user.
Certain structures in ICs need special treatment when 1149.1 is added to an IC, and
these are reflected in BSDL as special cases. The reader may have already detected
“cell merging” in the foregoing example of the 74bct8374. The treatment of asym-
metrical drivers and bidirectionality can also require special action.
In the description of the 74BCT8374 (see the example BSDL fragment on page 75)
you may have noticed that the BOUNDARY_REGISTER array had two entries for
cell 16. The first showed the cell to be associated with an input pin; the second
showed the cell to be a control cell for disabling drivers. This is an example of a cell
with merged behavior.
Figure 2.6 shows a Boundary Register design that contains a candidate case for
cell merging. Here, an input pin is attached to an input cell. The output of this cell
travels directly to a control cell for an output driver. There is no System Logic in the
path, unless one were to count the wire as “logic”. Because there are two flip-flops
(CAP) and (UPD) in a cell, one can capture and shift data while the other holds the
output to a fixed value. Thus, we could merge two cells into one and still obey the
rules of the standard.
2.4 Some Advanced BSDL Topics 79
C U System CU
Circuitry Device
Device
Inputs Output
C U CU
MergCand
C U System CU
Circuitry Device
Device
Inputs Output
CU
Cell with Merged
Input/Control
Behavior Merger
Figure 2.7 shows the same Boundary Register design of Figure 2.6 after cell
merging has combined two cells into one. Cell merging is reflected in BSDL as a
doubled cell entry in the attribute BOUNDARY_REGISTER as we have seen in the
example.
Cell merging has two benefits: it cuts down on the cell count in the Boundary
Register, which reduces gate overhead due to Boundary-Scan; and, cell merging
also reduces inserted delay. Cell merging can only be done where the System Logic
between two cells is a wire.32
There are other instances where merged cells can be found. Figure 2.8 shows
several examples where cell merging has been done between input/control cells and
between input/output cells. The BSDL fragment below gives the Boundary Register
description for this design.
32
In Sect. 1.3.4 starting on page 21 we saw cases where System Logic consisting of an inverter can
be subsumed into a Boundary Register cell. Having done this, if the logic left is a wire, then cell
merging can again be done.
80 2 Boundary-Scan Description Language (BSDL)
BIDIR2 CU BIDIR3
6
5
UC
4
CU
7
CU
3
CU
2
BIDIR
8 CU
1
IN2 CU +5
1
System CU OUT2
Circuitry
0
CU
9
IN1 CU OUT1
TCK
TMS MergCell
Cell 0 is simply a control cell between the system logic and the enable for signal
OUT1. (Cells 4 and 7 are similar to cell 0.) Notice that the safe bits are assigned to
cause the associated drivers to disable. Cell 3 is the control for the bidirectional cell
(see Fig. 1.9 on page 26) used on the bidirectional signal BIDIR1.
Cell 1 is discussed in the next Sect. 2.4.2.
Cell 2 is the bidirectional data cell in the lower half of Fig. 1.9 on page 26. This
cell always monitors the state of BIDIR1 regardless of whether its driver is enabled.
Cell 5 (and similarly with cells 6 and 9) has merged behavior: it serves as the
input receiver for BIDIR3, and as the data source for BIDIR2. As a result, the cell
has two lines of description in the Boundary Register definition. The first gives its
behavior as an input cell while the second describes its characteristics as an output
cell. Note that cell BC_1 used in this capacity must support both input and output3
functions. This is reflected in the definition of BC_1 (see Sect. 2.6.1) where both
functions exist for all instructions.
Cell 8 is a simple input cell using cell BC_1, but it could be an Observe_Only
cell if we do not wish to support INTEST in this implementation.
The example illustrated by Fig. 2.8 is deliberately extreme and dwells on odd
cases. Most component implementations will be quite simple by comparison.
Returning to Fig. 2.8 for a moment, notice that cell 1 is a 2-state output data cell. It
has the three extra fields needed to describe an output driver that can be disabled;
so, the cell is marked “Output2” and the output can be disabled. This indicates the
driver is asymmetrical because one state is actively driven and the other must be an
inactive drive state. (The external pull-up resistor is another clue.) This design does
not have a separate cell to enable the 2-state driver. BSDL codes this configuration
as a cell that controls its own open-collector, asymmetrical driver. Placing a "1" in
cell 1 will disable OUT2 by putting it into the "Weak1" state.
82 2 Boundary-Scan Description Language (BSDL)
All BSDL descriptions are similar; some will be longer than others will of course,
but the data content and organization are the same. This is true regardless of the
nature of the System Logic function. For example, the BSDL descriptions of a sim-
ple octal transceiver will be quite similar to that of a large 32-bit microprocessor.
The example BSDL description for Texas Instruments 74BCT8374 shown in
Fig. 2.9 looks like this in its entirety.
8 0
15 10
D8 CU D Q CU Q8
9 1
16 9
D7 CU D Q CU Q7
10 2
17 8
D6 CU D Q CU Q6
11 3
19 7
D5 CU D Q CU Q5
12 4
20 5
D4 CU D Q CU Q4
13 5
21 4
D3 CU D Q CU Q3
14 6
22 3
D2 CU D Q CU Q2
15 7
23 2
D1 CU D Q CU Q1
16
OC 24 CU
17
CLK 1 CU
BCR Register
Bypass Register
Instruction Register
14 TAP Controller 11
TDI TDO
13
TCK
12
TMS 748374
constant DW:PIN_MAP_STRING:=
"CLK:1, Q:(2,3,4,5,7,8,9,10), " &
"D:(23,22,21,20,19,17,16,15)," &
"GND:6, VCC:18, OC_NEG:24, TDO:11, " &
"TMS:12, TCK:13, TDI:14";
constant FK:PIN_MAP_STRING:=
"CLK:9, Q:(10,11,12,13,16,17,18,19)," &
"D:(6,5,4,3,2,27,26,25)," &
"GND:14, VCC:28, OC_NEG:7, TDO:20, " &
"TMS:21, TCK:23, TDI:24";
end ttl74bct8374;
2.6 Packages and Package Bodies 85
Packages and package bodies are VHDL files containing supporting information
that is imported into an entity definition. It is analogous to the concept of inclusion
or importation found in other languages. In BSDL, the main information about an
IC is conveyed in an entity description described in Sect. 2.3. There, the statement
“use STD_1149_1_2001.all” (Sect. 2.3.3) is used to set up the definition of the
BSDL environment. User-defined packages may then be included with additional
“use” statements to allow BSDL to mirror the extensibility of the 1149.1 Standard.
A VHDL package can contain definitions of data structures and may also contain
pre-defined constants constructed from those definitions. If a definition is ever
changed then anything that ever references that package would have to be re-
compiled (re-analyzed in VHDL parlance).
A package body, associated with a package, can be used to contain pre-defined
constants. The advantage of this is that if the definition of a constant’s contents is
changed, everything that references the associated package does not have to be re-
analyzed. This is how packages and package bodies are used for BSDL.
The basic definition of the BSDL environment (the data structures) is given in a
standard BSDL package called STD_1149_1_2001, which has an associated package
body that contains (to date) eleven constant definitions representing 1149.1 Boundary
Register cell designs. This information is considered the foundation definition of
BSDL and should only change when BSDL itself is revised. This package would
typically be write-protected on a BSDL based system to prevent modification.
2.6.1 STD_1149_1_2001
package STD_1149_1_2001 is
-- Give component conformance declaration
attribute COMPONENT_CONFORMANCE : string;
-- Give pin mapping declarations
attribute PIN_MAP : string;
subtype PIN_MAP_STRING is string;
-- Give TAP control declarations
type CLOCK_LEVEL is (LOW, BOTH);
type CLOCK_INFO is record
FREQ : real;
LEVEL: CLOCK_LEVEL;
end record;
86 2 Boundary-Scan Description Language (BSDL)
-- Miscellaneous
attribute PORT_GROUPING : string;
attribute RUNBIST_EXECUTION : string;
attribute INTEST_EXECUTION : string;
subtype BSDL_EXTENSION is string;
attribute COMPLIANCE_PATTERNS : string;
attribute DESIGN_WARNING : string;
end STD_1149_1_2001; -- End of 1149.1-2001 Package
In the above set of definitions for Boundary Register cells (in the package body)
you will see comments that call out figure drawings33 both from IEEE Std 1149.1-
2001 and in this book to help you recognize the architecture of cells versus the
names given in the package. A description of these cells and their figures is given in
Sects. 2.6.3 and 2.6.4, and a detailed discussion of how Boundary Register cells are
described in BSDL is given in the next section.
33
The IEEE figure descriptors look like “f11-37d” or “f11-35c” referring to Clause 11 in the stan-
dard. The “d” and “c” suffixes refer to the data cell or control cell in a drawing.
90 2 Boundary-Scan Description Language (BSDL)
constant is defined. Each CELL_DATA record contains three fields34 that define
how the cell behaves upon passing through Capture-DR. Each field is an enumer-
ated type. The fields are:
• the CELL_TYPE field. This field identifies the context that the cell can be used
in within a component design. Its values may be INPUT, INTERNAL, CLOCK,
CONTROL, CONTROLR, OUTPUT2, OUTPUT3, OBSERVE_ONLY, BIDIR_IN
and BIDIR_OUT. (See discussion below.)
• the BSCAN_INST field. This field identifies an instruction supported by this
cell. The values allowed in this field are EXTEST, SAMPLE, and INTEST. All
cells are required to support SAMPLE and EXTEST.35
• the CAP_DATA field. This field identifies the source of the data captured by the
capture (CAP) flip-flop in a given context and for a given instruction. Its values
must be PI, PO, UPD, CAP, X, ZERO and ONE. (See discussion below.)
A Boundary Register cell design such as shown Fig. 2.11 is very versatile and
may be used in a number of contexts; it may serve as an input cell, an output cell, an
internal cell, a control cell, and so on. (This cell is called BC_1 in the standard pack-
age.) For compactness, eliminating the need for a description for each context, the
CELL_TYPE field allows us to state the allowable contexts the cell can be used in.
Table 2.4 gives the definitions of the CELL_TYPE field symbols.
The CAP_DATA field can be determined by tracing backward from the capture
flip-flop through the various multiplexers until the source of the captured data is
found. We use an abstraction of a Boundary Register cell to show the various
sources of capture data, shown in Fig. 2.10.
34
It is a BSDL standard practice that these fields be defined positionally (as shown) rather than by
VHDL field tagging. The order of the fields is significant.
35
Non-invasive instructions such as BYPASS or IDCODE are not included here because they do
not cause the Boundary Register to capture data.
2.6 Packages and Package Bodies 91
Mode G
PI 0
0 PO
Capture Update
1 1
0 Reg Reg
1 2
D Q D Q
X 3
4
CK CK
5
6
Sel
Update-DR
Clock-DR
From TAP
Controller
BRegAbst
Fig. 2.10 An abstraction of a Boundary Register cell showing capture data sources
Table 2.5 gives the definitions of the symbols used for CAP_DATA field that
match the capture data sources shown in Fig. 2.10. Two of these symbols, PI (paral-
lel input) and PO (parallel output) must be interpreted in the context that the cell is
used. For example, if the cell may be used at an IC input, then PI must be interpreted
as the IC input pin and PO must be interpreted as the output that drives System
Logic. If, on the other hand, the cell is serving an IC output, then PO must be inter-
preted as the IC output pin after any driver and PI must be interpreted as a System
Logic output. This is important for many software applications because they often
will not know how the system logic behaves. Thus, capturing a System Logic output
will be associated with the unknown value "X" by these applications.
For a bidirectional such as shown in Fig. 2.16 on page 102, the context is condi-
tioned by the direction that the cell is currently serving. Such a cell has a collection
of multiplexers that reverse the apparent direction of data. While the cell is operat-
ing as bidir_out as governed by its attending control cell, then PO is the IC pin and
PI is the System Logic. While the cell is operating as bidir_in, then PI is the IC pin
and PO is the System Logic. Note that in the attribute BOUNDARY_REGISTER
92 2 Boundary-Scan Description Language (BSDL)
description, the function field (see Table 2.2 on page 76) for a reversible cell is
coded as bidir while in a CELL_DATA description, the symbols bidir_in and bidir_
out are used to incorporate the direction information.
In the previous Sect. 2.6.1 we saw constants that describe certain “standard” cells
commonly found in 1149.1 implementations, as given in the Standard itself. These
constants were labeled BC_0 through BC_7, and new cells designs may be intro-
duced in the future.36 Indeed, BSDL has reserved the names BC_0 through BC_99
to give the capability to define 100 “standard” cell designs, although it is very
unlikely the Working Group will ever define more than a fraction of these.
This section shows some common architectures of cell designs, extracted from
the Standard itself. If you examine the chapter titled “The Boundary-Scan Register”
in the Standard in detail, you will see many examples of cell architectures, but many
of these are based on a common theme. BSDL has extracted these common archi-
tectures and labeled them for reference purposes with the result that there are only
seven basic architectures.
Seven cells? Yes. The cell BC_0 is a special case. The Working Group added it
to BSDL to serve as a “minimum” cell description that satisfies all the rules for cell
architecture but has no additional capabilities. It is intended to be used as a “default”
cell design when the situation arises where you need to describe an IC’s 1149.1
implementation, but do not know the exact details of the Boundary Register cell
architectures used in the design. A BC_0 cell definition should allow software tools
to provide minimum basic performance. Of course, using BC_0 also means a reduc-
tion in test diagnostic resolution if a device actually contains more advanced cell
designs. If you know (or can find out) the actual cell design information, then you
should avoid using the BC_0 default.
This cell architecture is shown in Fig. 2.11. It is a very basic design and also very
flexible. It can be used in many contexts; as an input cell, an output cell, a control
cell, an internal cell and as a building block for handling bidirectional pins.
Furthermore it will support all 1149.1 instructions that deal with the Boundary
Register, including INTEST. This cell is typified by the fact that it contains a multi-
plexer37 in the system signal path that is placed at the exit of the cell to the Parallel
Output (Table 2.6).
36
See Sect. 2.6.4 for three new cells, BC_8 through BC_10 introduced with the 2001 revision of
the standard.
37
Refer to Sect. 1.3.5 for a discussion of ways to optimize cell designs.
2.6 Packages and Package Bodies 93
Mode G
Parallel In 0
Parallel
Shift-DR G
Capture Update Out
1
0 Reg Reg
D Q D Q
1
CK CK
Fig. 2.11 Cell architecture BC_1, a basic but very flexible design
Table 2.6 Mode signal assignment for cell BC_1 used in any context
Instruction Mode
EXTEST 1
SAMPLE, PRELOAD, BYPASS, IDCODE, USERCODE 0
INTEST 1
RUNBIST 1
CLAMP 1
These are all the public non-invasive instructions
This cell architecture differs from BC_1 in that there is a multiplexer in the signal
path placed at the entrance of the cell from the Parallel Input. Examining Fig. 2.12
you will see that the Capture flip-flop can capture the content of the Update latch
when the Mode control signal is set to “1”. This feature increases the testability of
the 1149.1 logic38 itself; if, for example you use BC_2 cells at input pins, then the
Update latch and the “1” pathway through the series multiplexer are now testable
(using the INTEST instruction) without requiring data to be propagated through
the system circuitry.39 (The BC_1 design does require that the system circuitry be
involved in testing these same portions of an input Boundary Register cell)
38
It is important to consider how the 1149.1 circuitry will be verified during production of the
IC. This is one reason why some will want to include the 1149.1 circuitry within another testability
discipline such as internal scan (for example LSSD). If another testability scheme subordinates
1149.1 (see Sect. 1.7 on page 41), then the testability of a given cell design in 1149.1 operation
may not be an issue.
39
This feature may not be utilized by ATPG software however. You should investigate the capabili-
ties of an ATPG algorithm if this feature will be important to you.
94 2 Boundary-Scan Description Language (BSDL)
G
Parallel
0
Input Parallel
1 Output
Update Capture G
Reg Reg 0
Q D Q D
1
CK CK
Shift
M ode UpdateDR ClockDR In ShiftDR BC_2Cell
Fig. 2.12 Cell architecture BC_2. This cell can capture its own Update latch content
Table 2.7 Mode signal assignments for cell BC_2 in the context of use. See text for an exception
regarding INTEST
Mode Mode
Instruction (used as an input cell) (used as an output or control cell)
EXTEST 0 1
SAMPLE, PRELOAD, BYPASS, 0 0
IDCODE, USERCODE
INTEST 1 0
RUNBIST X 1
CLAMP X 1
BC_2 is also very flexible in that it can be used for input cells, output cells, internal
cell, control cells and in some composite bidirectional cell structures. However, this
cell has a subtle limitation with respect to INTEST support; if the cell is used to sup-
port a two-state output pin, where the two-state driver is integrated into the signal path
multiplexer, then this cell does not satisfy a rule for INTEST. This rule requires that
the cell capture the system output, but because of the placement of the multiplexer, a
faulty state on the output pin could be captured rather than the system output value.
Table 2.7 shows mode assignments for cell BC_2 for the case where the cell is used
to service an input versus being used to service an output or driver enable control.
Cell BC_3 shown in Fig. 2.13 is a cell, used only for inputs (or internal cells), that
does not possess an Update latch but does support INTEST. One of the principle
reasons for providing an Update latch is to prevent shift ripple that occurs on the
output of the Capture flip-flop while shifting data, from being propagated to the
parallel output of the cell. This data noise would then be presented to the system
2.6 Packages and Package Bodies 95
Fig. 2.13 Cell architecture BC_3, an input cell with no Update latch
circuitry where it might have unwanted effects. However, for some system circuitry
(notably, combinatorial circuitry) this shift noise would have no harmful effects nor
would it even be detectable from outside the IC. For applications where this will be
true, a BC_3 design will have the (small) economy of eliminating the Update latch
and its clock signal (Table 2.8).
Cell BC_4 shown in Fig. 2.14 also has no Update latch and it eliminates the series
multiplexer from the system signal path as well. This is attractive because it removes
some potential signal delay from the system signal pathway. The price for eliminat-
ing delay is that the cell does not support INTEST on general input pins. If INTEST
functionality is desired in an IC, then the BC_4 cell design cannot be used on any
input pin except a system clock40 input.
Cell BC_4 has no mode signal supplied by the TAP instruction decoder.
40
Omitting INTEST control (by using cell BC_4) from a clock pin eliminates delay from a pin that
could be extraordinarily sensitive to inserted skew and propagation effects due to Boundary-Scan.
However, it creates the complication of coordinating system clocks with an INTEST application.
96 2 Boundary-Scan Description Language (BSDL)
Shift In ClockDR
ShiftDR BC_4Cell
Fig. 2.14 Cell architecture BC_4, a cell with no Update latch and no series multiplexer
Fig. 2.15 Cell architecture BC_5, a control cell for an input pin
Cell BC_5 is shown in Fig. 2.15. This cell can be used in the “merged input/control”
cell situation (Sect. 2.4.1) seen in Fig. 2.7 on page 81. It is like the BC_1 cell, but
has and additional multiplexer controlled by the TAP decoder. When INTEST is the
effective instruction, this cell reloads its Update flip-flop content to avoid capturing
data appearing on the input pin (Table 2.9).
Cell BC_6 is used as a data cell at a bidirectional system pin, but it is not shown in
a figure in this book because the 1149.1 Working Group is actively discouraging41
its further use in Boundary-Scan implementations. The cell architecture called
BC_7 should be used in its place.
41
Indeed, the 2013 version of 1149.1 (see Part 2 of this book) does not document the BC_6 cell in
its revision of BSDL.
2.6 Packages and Package Bodies 97
Cell BC_6 does conform to the rules of the Standard, but is seriously limited in
one respect. It cannot monitor the state of its bidirectional pin when the pin’s driver
is enabled to drive data out. Pin monitoring capability is inherently available in multi-
cell bidirectional structures we saw in Fig. 1.8 (page 24) and is now provided by the
BC_7 architecture, also a single-cell implementation. Pin monitoring at all times
gives important diagnostic capability that the Working Group wants to promote.
The BC_6 architecture was only promoted with the first edition [IEEE90] of the
1149.1 standard. Since the release of Supplement A [IEEE93a, IEEE93b] it has
been discouraged. If you have an older design for Boundary Register cells support-
ing bidirectional pins, you should examine them to see if they are indeed utilizing
the BC_6 architecture. If so, you should convert them to the BC_7 architecture.42
The BC_7 Boundary Register cell architecture shown in Fig. 2.16 (in the dotted line
box) is a single data cell that supports bidirectional system pins. The control cell
also shown is a BC_2-type cell.
BC_7 can provide data to the output driver and also monitor the pin activity even
when the output driver is driving the pin. This is an important feature that was lack-
ing in the BC_6 architecture just documented, and is a feature inherent in the
double-celled implementation for a bidirectional pin shown in Fig. 1.8 on page 24.
Monitoring a pin while it is driving can be used by diagnostic software to discover
that a driver is looking into a short and is thus not capable of delivering the requested
pin state. This is doubly important when the signal being driven does not travel to
other Boundary-Scan ICs (Table 2.10).
42
It may be true that the ATPG software you plan to use cannot tell the difference between a BC_6
and BC_7 architecture. Such limited software will probably make the assumption that all bidirec-
tional cells act like BC_6. If you are designing an IC to be used by others outside your industry
segment, you should assume that they have access to a fully capable ATPG algorithm that can use
the advanced capability offered by BC_7. In any event, it is a good question to put to the provider
of your ATPG algorithms.
98 2 Boundary-Scan Description Language (BSDL)
G
Output
0
Control
1
G
0
D Q D Q
1
CK CK
G System
Output 0 Pin
Data
1
G
0 G
0
1 D Q D Q
1
CK CK
G
Input 0
Data
1
Mode_2 ClockDR
BC_7 Cell Shift In UpdateDR
BC_7Cell
Fig. 2.16 Cell architecture BC_7 (see the circuitry in the dotted line box) which supports bidirec-
tional data flow
Table 2.10 Mode signal assignments for BC_7 and its related BC_2 control cell
Instruction Mode 1 Mode 2 Mode 3
EXTEST 1 0 1
SAMPLE, PRELOAD, BYPASS, IDCODE, USERCODE 0 0 1
INTEST 0 1 0
RUNBIST X X 0
CLAMP 1 X 1
HIGHZ X X 0
2.6 Packages and Package Bodies 99
The “sea of multiplexers” in Fig. 2.16 can be confusing. It may be helpful to make
copies of the figure and mark it with a highlighting pen to trace the data flow under
various conditions. For example, if the cell is acting as an output (the control cell
contains a “1”) with the EXTEST instruction loaded (setting the three Mode signals
to 101), you can see how data must move through the cell. Similar tracings will show
how the other instructions route data for the cell behaving as either input or output.
Contrasting the double-celled implementation with BC_7, it is obvious that the
double-celled approach is very straightforward and that the BC_7 approach con-
tains more circuitry in the form of additional multiplexers. So it is probably true that
each approach contains about the same silicon area. So why would you use a BC_7?
One important advantage is that BC_7 reduces the cell count of an IC, by requiring
only one data cell per bidirectional pin versus two. Since most ICs these days are
heavy users of bidirectional pins, you could see savings in cell counts43 from 30 %
to nearly 50 %. Since ICs have growing pin counts, this can easily represent saving
scores or even hundreds of cells per IC.
Cell count matters when practical application of 1149.1 is studied. When many
ICs are strung together into Boundary-Scan chains, the lengths of the Boundary
Registers can accumulate into a very long total register length. This directly impacts
shift time and since Boundary-Scan tests are often stored for future use, the length
of these registers dictates storage space44 and the time to move this data around.
Another practical problem is that a given 1149.1 master architecture (like an ATE
system) will ultimately have to break up a shifting process into manageable pieces.
These pieces are separated by overhead processing which may significantly delay
the overall shift time and thus reduce throughput.
Note that the control cell circuitry shown above the dotted line box shown in
Fig. 2.16 is a BC_2 control cell design. The entire structure shown is capable of
supporting a complete set of instructions.45 If, for example, INTEST were not of
interest in your IC, you could eliminate the Mode2 signal and a multiplexer. Further,
eliminating HIGHZ and the HIGHZ-type option for RUNBIST eliminates the need
for Mode3 and the AND gate.
The 1149.1 Working Group, with the release of the 2001 revision of the standard
[IEEE01] introduced three new Boundary Register cells. All three support varia-
tions of output or bidirectional behavior, with self-monitoring features, with and
without INTEST support.
43
The variability in savings is influenced by the number of control cells included to enable collec-
tions of bidirectional pin drivers.
44
It also influences the length of the BSDL used to describe the IC, which you may have to write!
45
With appropriate assignment of the “X” values for Mode2, you can make it the complement of
Mode3. Then you can remove one of these signals.
100 2 Boundary-Scan Description Language (BSDL)
One small technical change in the standard (with the 2001 revision) that was
taken advantage of in these newer cells is the idea that the SAMPLE instruction can
monitor the output driver’s output, rather than only the input to the output driver.
This does have the effect that the SAMPLE instruction may record the pin state
rather than the mission logic output, in cases where the driver cannot establish the
intended output state. This can happen for example, when a fault exists on the driven
signal, or if the driver is disabled at the time SAMPLE is capturing the pin state.
Cell BC_8, shown in Fig. 2.17, is used for bidirectional pins. This cell monitors
only the pin driver output and therefore does not support the INTEST instruction.
This cell does not need any additional control signals from the internal workings
of a companion control cell as seen with the BC_7 cell (Fig. 2.16). As such it can
serve for 2-state bidirectionals, where the data cell also serves as an output control,
as described in Sect. 2.4.2. The values for the Mode signal for BC_8 are shown in
Table 2.11.
Circuitry
1
Update Capture G
Reg Reg 0
Q D Q D
1
CK CK
Shift In
Mode UpdateDR ClockDR ShiftDR
To System
Circuitry BC_8Cell
Cell BC_9 as shown in Fig. 2.18 is a self-monitoring cell for outputs that does sup-
port the INTEST instruction. See Table 2.12 for Mode1 and Mode2 settings.
Cell BC_10 shown in Fig. 2.19 is a self-monitoring output cell that does not support
the INTEST instruction. Note it is nearly the same as the BC_8 cell, but does not
propagate the driver state towards the mission logic (Table 2.13).
Shift Out
From
Shift-DR BC_9 Cell
System Mode1 Output
Circuitry Mode2 G Driver
0
G
G
Capture Update 1
0
0 Reg Reg
1 D Q D Q
1
CK CK
BC_9Cell
Fig. 2.18 Cell architecture BC_9 for outputs with INTEST support
Table 2.12 Mode line settings for the BC_9 output data cell
Instruction Mode 1 Mode 2
EXTEST 1 1
SAMPLE, PRELOAD, BYPASS, IDCODE, USERCODE 0 0
INTEST 0 1
RUNBIST X 1
CLAMP X 1
102 2 Boundary-Scan Description Language (BSDL)
Circuitry
1
Update Capture G
Reg Reg 0
Q D Q D
1
CK CK
Shift In
Mode UpdateDR ClockDR ShiftDR
BC_10Cell
Fig. 2.19 Cell architecture BC_10 for outputs with no INTEST support
new multiplexer has been added to route a constant 1 (or 0) into the capture (CAP)
flip-flop whenever EXTEST is in effect. This cell could be used as an output cell, a
control cell46 or an internal cell. Then, by using combinations of these cells that
capture 0 or 1 during EXTEST at various locations within the chain, the IC could
uniquely identify itself whenever captured EXTEST data was shifted out.
The next problem is to communicate this capability in a BSDL description.
This is done by creating a user-defined package and package body that describe two
new cells as in the example below. There, the two cells are named USER_0 and
USER_1. These names will be used in the component entity description, in field 1
of the Boundary Register description (see Sect. 2.3.13 on page 73). BSDL-based
software then knows from the package body that during EXTEST, the cells capture
their respective constants.
46
This cell design will not support cell merging of a control cell with an input cell because the
capture flip-flop cannot capture data from two different sources at the same time.
2.6 Packages and Package Bodies 103
Shift Out
Mode G
0
EXTEST ShiftDR Capture Update PO
G G 1
PI 0 0 Reg Reg
D Q D Q
"1" 1 1
CK CK
Update-DR
Clock-DR
Shift In
BRegCap1
The example package and package body, titled "USER_PACKAGE" looks like
this:
package USER_PACKAGE is
use STD_1149_1_2001.all;
use STD_1149_1_2001.all;
end Global_Def;
use STD_1149_1_2001.all;
end Global_Def;
Any of the three extensions declared in this package are now available for refer-
ence in BSDL descriptions that “use” this package.
2.7 Writing BSDL 105
How does one go about writing a BSDL description? First, you must gather informa-
tion about the 1149.1 implementation within the IC to be described. Once you have
this information, it is a fairly simple process to transcribe it into BSDL. Some people
choose to take an existing BSDL description and edit it into the new one. A similar
approach taken by some is to create a BSDL template with guiding comments
embedded within it to prompt the writer for the correct style and organization.
The following list will help you gather the needed information and write the
BSDL description. Note that in several places, mandatory statements must appear
that are common (for example, the "use" statement) to any BSDL. Editing a tem-
plate or existing file will help you remember these statements and their placement.
1. Identify the component with a name. This will become the entity name that is
sprinkled throughout a BSDL description. Remember it must begin with an
alpha character.
2. Find all packaging configurations for the component. Typically, ASICs or other
one-of-a-kind components will have only one packaging option, but merchant
components may have several.
3. Examine the packaging configurations. Make sure all the pin names are valid
VHDL identifiers. This will now allow you to write the port statement (see
Sect. 2.3.2) for the entity. You may choose to use the bit_vector shorthand for
buses, or give each pin a unique name.
4. After the port statement, write the “standard use” statement (see Sect. 2.3.3). You
may need to come back to this spot later to add a user-defined package “use”
statement (see Sect. 2.3.4) if step 13 below turns up any user-defined cell designs.
5. Write the component conformance statement (see Sect. 2.3.5). Remember that
this identifies the release of the Standard that governed the design of the IC.
6. Write the pin mapping constants for all package configurations (see Sect. 2.3.6).
Name these constants with recognizable names such as "PGA_18x18" or
"PQFP_64." If there is only one constant, consider making the generic param-
eter default to this value (see Sect. 2.3.1).
7. Does this device have any differential signals? If so, use a grouped port state-
ment to describe them (see Sect. 2.3.7).
8. Identify the TAP Port pins. Write the TAP pin attributes. Don’t forget TRST* if
it exists. (See Sect. 2.3.8.)
9. This step is very important; if this device has any compliance enable pins, be
sure to document them (see Sect. 2.3.9). Lack of this information can cause
ugly debugging problems later.
10. Find the TAP instruction set for the IC; the length of the Instruction Register,
the instructions names and opcode bit patterns. Then write the Instruction_
Length and Instruction_Opcode attributes. (See Sect. 2.3.10.)
106 2 Boundary-Scan Description Language (BSDL)
11. Find the Instruction Register capture pattern, the bits it captures at Capture-IR.
The least two should be "01" and any higher order bits may be constants or
design-dependent. Those that are constants can be written so, but variable bits
will have to be coded as "X". Write the Instruction_Capture attribute. (See
Sect. 2.3.11.) If any of the instructions are considered private, then write an
Instruction_Private attribute that identifies them.
12. If any user-defined instructions exist, find out which register(s) they access.
Note any public instructions that access user-defined registers. Then write the
Register_Access attribute for these, taking care to define the lengths of user-
defined registers. If any of the user-defined registers capture static bits, denote
this with a “captures” clause. (See Sect. 2.3.12.) If any instructions were marked
private in step 10 above, you may choose to omit them from this attribute.
13. Begin investigating the Boundary Register construction. Note its length and
organization. Find out what cell designs were used. If any are special designs
not covered by cell definitions BC_1 through BC_6 given in STD_1149_1_2001,47
then you will need to write a user-defined supporting package that gives their
behavior (see Sect. 2.6.4 on page 104). This package might already exist if the
IC reuses cell designs from other ICs. Don’t forget to add another "use" state-
ment (see step 4 and Sect. 2.3.4) to refer to this new package.
14. Write the two attributes that describe the Boundary Register (see Sect. 2.3.13).
They are Boundary_Length and Boundary_Register.
15. Does this device support RUNBIST and/or INTEST? Then consider document-
ing their behavior with the associated execution statements (see Sects. 2.3.14
and 2.3.15).
16. Do you wish to document any additional data beyond the current definition of
BSDL? If so, consider using BSDL extensions (see Sect. 2.3.16) to place this
information within your BSDL file.
17. Does any design-specific information need to be documented so that other peo-
ple using this description will be alerted to its existence? If so, consider adding
a Design_Warning attribute (see Sect. 2.3.17).
18. End the entity with an end statement.
The main effort in creating a BSDL usually goes into the package-pin mapping
since typographical errors are easy to make, and into describing the Boundary
Register. In particular, the cell designs used in the Boundary Register and the sense of
the disabling bits for drivers seems to be difficult to dig up. Sometimes the original
designer must be located to supply this data. Remember, after creating a BSDL
description it is very important to verify its accuracy. This will be covered in Chap. 5.
47
The 2013 release of 1149.1, in its BSDL support package STD_1149_1_2013 documents cells,
BC_1 to BC_10, excepting the BC_6 cell. See Part 2 of this book.
2.8 Summary 107
You might ask, “I am not an IC designer so I cannot use these wonderful BSDL
generator/checkers. Can I avoid writing BSDL?” The answer is “maybe”. Consider
the work reported in [Raym95]. Here, they used a hardware simulation48 of a target
IC and a minimum of advance knowledge of the IC; like which pins are the TAP
pins and so on. Then the hardware simulation painstakingly performs experiments
on the IC to slowly deduce its basic structure. It finds the BYPASS instruction,
IDCODE (if there), EXTEST and SAMPLE. Once it knows EXTEST it then works
to find the length of the Boundary Register and then, one-by-one finds the I/O map-
ping. This process could potentially take hours of time, but if overnight you get a
workable BSDL from it, that sounds like a good deal.
The process will only find out the most basic facts about the IC. It will not dis-
cover advanced cell designs, for example. However, it may well be good enough to
do elementary Boundary-Scan testing.
2.8 Summary
BSDL exists in recognition of several problems. First, the 1149.1 Standard, while
conceptually simple, contains a great deal of detail that must be communicated
accurately. Second, software to support Boundary-Scan is essential. Third, this soft-
ware will come from many sources crossing boundaries among industry segments.
A standardized description language serves as a canonical form for 1149.1 infor-
mation. This form helps to ensure that all necessary data is described and is easily
interpreted by software. Without this standardization, much needless work must be
done to send 1149.1 data between industry segments.
As of the early 2000s, over 500 copies of the BSDL Version 0.049 parser have
been directly distributed by Hewlett-Packard (now Agilent Technologies) to people
in countries ranging from Australia to Yugoslavia.50 The desire for effortless inter-
change of 1149.1 data is real.
48
In a hardware simulation, the IC is actually mounted in a socket on a tester, powered up, and
driven with signals while the responses are learned. This requires both a tester and a known-good
copy of the IC in question.
49
This parser was developed to handle the first (non-IEEE) version of the language. Since the IEEE
version of BSDL is substantially similar to the first version, and since most people want to aug-
ment their existing BSDL parsing software to accept both versions of the language, Hewlett-
Packard did not release a second IEEE version of the parser specification.
50
The code is still available at http://www.eda.org/vug_bbs/bsdl.parser.
Chapter 3
Boundary-Scan Testing
Integrated Circuit
1 2 3 4 5 6 7
Poor Quality
Joint
Open Solder
Joint
Board
Excess Solder
Short ShrtOpen
Fig. 3.1 Side view of a surface-mount IC soldered to a board. An open and a short are pictured.
The poor quality joint will be invisible to electrical test methods, including Boundary-Scan
Basic testing with Boundary-Scan requires detailed use of the TAP state diagram
and the fundamental TAP instructions BYPASS, PRELOAD, EXTEST, SAMPLE
and other optional instructions (if present) such as RUNBIST, IDCODE, CLAMP,
HIGHZ or INTEST. The fundamental 1149.1 scanning sequence is described next
as a basic building block.
In this section, we will examine the basic operation of the 1149.1 Standard. Many
of the operations we need to perform testing will utilize the Boundary-Scan logic
and the TAP state diagram in the same way. The following discussion will examine
a single IC containing Boundary-Scan. Later, we will look at the implications of
operating chains of ICs.
1
See the “PCOLA/SOQ” defect model presented in [Hird02]. Boundary-Scan does a pretty good
job finding these defects as noted in [Park03].
3.1 Basic Boundary-Scan Testing 111
In nearly all cases when we want to use the 1149.1 test logic, we must start by
initializing it to the Test-Logic-Reset state. Because it is not a safe assumption that
the test logic is already in this state, and since not all ICs possess the optional
TRST* pin, a robust test sequence should begin with a Boundary-Scan synchronizing
sequence: hold TMS high for five cycles of TCK. This forces the TAP into Test-
Logic-Reset regardless of its starting state. Once the logic is reset, we need to set up
an instruction in the TAP Instruction register.
Figure 3.2 traces the operation of the TAP state machine to accomplish this.
Note we proceed to the Shift-IR state using only the TMS and TCK signals. When
we reach Shift-IR the TDO pin becomes active (it was disabled) and data can be
shifted in via TDI.
Test-Logic-
1 Reset
0
1 1 1
0 Run-Test-Idle Select-DR-Scan Select-IR-Scan
0 0
Capture-DR Capture-IR
1 1
0 0
Shift-DR 0 Shift-IR 0 *
1 1
Exit1-DR Exit1-IR
1 1
0 0
Pause-DR 0 Pause-IR 0
1 1
0 0
Exit2-DR Exit2-IR
1 1
Update-DR Update-IR
1 0 1 0
Fig. 3.2 TAP Controller state diagram showing path taken to shift an N-bit instruction into the
Instruction Register
112 3 Boundary-Scan Testing
Because we passed through Capture-IR to get to Shift-IR, the shift portion of the
Instruction Register, which is placed between TDI and TDO, now contains the
Instruction Capture pattern. This is the data that will appear on TDO while we are
shifting the desired instruction bit pattern into TDI. This data can be checked as it
comes out on TDO to see if it matches what we expect; the capture pattern specified
in the BSDL description using the INSTRUCTION_CAPTURE attribute (Sect.
2.3.10). If the instruction register is N bits long, we cycle back to Shift-IR N-1 times,
each time presenting a new bit2 of the instruction code to TDI. The Nth bit is shifted
while taking the transition to Exit1-IR.
At this point, we have a new instruction code in the shift portion of the Instruction
Register. This new instruction becomes effective upon passing through Update-IR,
when it is transferred to the parallel hold portion of the register. This occurs on the
falling edge of TCK while in the Update-IR state. Note that this is the time that a
Pin-Permission mode of operation would be entered if that is what the loaded
instruction calls for.
Figure 3.3 then shows how we set up to utilize the new instruction and the data
register that it targets. First, we travel to Capture-DR by way of Update-IR. Passing
Update-IR sets up the new instruction and targets the appropriate data register
between TDI and TDO.
The shift portion of the target data register captures parallel data upon exiting
Capture-DR and entering Shift-DR. The nature of this parallel data depends upon
the register and the current instruction. For example, if the BYPASS instruction is
in effect, then the BYPASS register captures a “0” as the Standard requires.
If EXTEST is in effect, then the Boundary Register captures parallel I/O data.
If IDCODE is in effect, the DEVICE_ID register captures the 32-bit Device
Identification code for the component, and so on.
We are then ready to shift this register as shown in Fig. 3.4. As we saw before
with the Instruction Register, we need to loop back upon the Shift-DR state until N-1
bits have been shifted. The last bit is shifted on the transition to the Exit1-DR state.
Typically, we want to shift N bits where N is the length3 of the target register. While
this shifting is occurring, the captured bits are transmitted out by TDO while new
bits are entering via TDI. These bits that enter will become the new residents of the
shift portion of the target register. When shifting is completed, they will be
transferred to the parallel hold portion of the target register at Update-DR as in
Fig. 3.5. That is, the contents of the Capture (CAP) flip-flops, which form the shift
portion, are transferred to the Update (UPD) flip-flops, which form the parallel hold
portion. (Please refer to Sect. 1.3.3 on page 21 for the construction of a data regis-
ter.) This occurs on the falling edge of TCK in the Update-DR TAP state.
2
The bits are shifted in via TDI, starting with the least significant bit.
3
Application software must keep track of N by knowing what register is targeted by the current
TAP instruction. A BSDL description contains the length of all registers and their associations with
TAP instructions.
3.1 Basic Boundary-Scan Testing 113
Test-Logic-
1 Reset
0
1 1 1
0 Run-Test-Idle Select-DR-Scan Select-IR-Scan
0 0
Capture-DR Capture-IR
1 1
0 0
Shift-DR 0 Shift-IR 0
1 1
Exit1-DR Exit1-IR
1 1
0 0
Pause-DR 0 Pause-IR 0
1 1
0 0
Exit2-DR Exit2-IR
1 1
Update-DR Update-IR
1 0 1 0
TAPDIRU
Fig. 3.3 The newly loaded instruction is activated when Update-IR is passed, selecting a new data
register targeted between TDI and TDO when we enter the Data Column of the state diagram
Test-Logic-
1 Reset
0
1 1 1
0 Run-Test-Idle Select-DR-Scan Select-IR-Scan
0 0
Capture-DR Capture-IR
1 1
0 0
*
Shift-DR 0 Shift-IR 0
1 1
Exit1-DR Exit1-IR
1 1
0 0
Pause-DR 0 Pause-IR 0
1 1
0 0
Exit2-DR Exit2-IR
1 1
Update-DR Update-IR
1 0 1 0
Fig. 3.4 Sequence of states traversed to capture data and shift it out while at the same time enter-
ing new data
4
In practice, we would have preloaded the Boundary Register with the first set of data to be written by
using a capture-shift-update cycle with PRELOAD in effect. This data would then actually be written
to the board-level nodes when passing through Update-IR after loading the EXTEST instruction.
3.1 Basic Boundary-Scan Testing 115
Test-Logic-
1 Reset
0
1 1 1
0 Run-Test-Idle Select-DR-Scan Select-IR-Scan
0 0
Capture-DR Capture-IR
1 1
0 0
Shift-DR 0 Shift-IR 0
1 1
Exit1-DR Exit1-IR
1 1
0 0
Pause-DR 0 Pause-IR 0
1 1
0 0
Exit2-DR Exit2-IR
1 1
Update-DR Update-IR
1 0 1 0
TAPDDRU
Fig. 3.5 Completing a data shifting operation and updating the parallel hold portion of a data
register
The following steps describe the basic test process of Boundary-Scan, including:
initialization of the TAP, initialization of the Boundary Register, multiple scanning
sequences, flushing the last stimulus pattern, and resetting the TAP. Note that the
algorithm is written using EXTEST, but the process is often similar for other testing
instructions as well. In this description, the “stimulus” pattern is applied to the com-
ponent driver pins and the “response” pattern is received at the component input pins.
In the literature on Boundary-Scan testing (see [Wagn87, Yau89] and [Jarw89]),
a pattern applied by a collection of drivers is called a Parallel Test Vector (PTV). A
PTV applies data by all drivers in parallel. For a given driver, a series of PTVs
116 3 Boundary-Scan Testing
applied in sequence creates a Sequential Test Vector (STV) on each associated node.
Thus, an STV is a stream of data applied sequentially by some driver to an indi-
vidual node. A Sequential Response Vector is a set of states received (captured)
sequentially by a Boundary-Scan receiver listening to a node.
5
A typical “safe” pattern would use the data from the BSDL description safe field (see Sect. 2.3.13
beginning on page 72) within the attribute BOUNDARY_REGISTER description. This can be
augmented with data needed to create safe board-level conditions as well.
3.1 Basic Boundary-Scan Testing 117
In the early days as the 1149.1 Standard was being developed, it was said that
Boundary-Scan would eliminate In-Circuit testing. This would lead us to a world
where ATE systems consist of nothing more than a Personal Computer with a spe-
cial (inexpensive) I/O card6 that could drive the four-wire 1149.1 protocol. A floppy
disk full of software would enable us to test any Boundary-Scan board. Indeed some
cynics have suggested that this view was excessively promoted in order to “sell”
management on the merits of investing in the IEEE Standard development process.
The concept of a “Personal Tester” is viable and the ASSET® System from Asset
Intertech7 is one actual example. This system is positioned as a useful tool for pro-
totype development as well as a way to learn about 1149.1 designs and verify their
operation. It is not intended as a general-purpose production ATE system, although
for low volume applications it can be used as such.
A major difference between a personal tester and a fully capable ATE system is
in the use model. It turns out that you almost always need to control more than 4 (or
5) signals to make Boundary-Scan work for practical board testing.8 Further, these
signals may require In-Circuit overdrive to achieve this control and these signals
may be embedded somewhere inside the board which leads you to the access ques-
tion. Now you are looking at the need for a test fixture. While you are testing, you
also must apply power to the board, so that brings on a little more complexity. Next,
consider how much of a board contains Boundary-Scan versus that portion (digital
and analog) that does not. The bench top tester offers no solutions here. Thus, for
low volume bench-top applications where limited test coverage could be accept-
able, the personal tester is a successful approach, but it can quickly become imprac-
tical for the general production line with high throughput and defect coverage goals.
For the verification of prototype boards, the personal tester has good merit. Here,
a designer responsible for getting 15 “Rev A” boards ready for evaluation will be
thrilled to get Boundary-Scan coverage of at least a portion of a board. If it takes
half a morning to set up some bench top power supplies and rig up a connector
for the TAP signals, this is quite acceptable. This disabling and conditioning prob-
lem can be addressed with clip leads or by simply ignoring the affected nodes.
6
Indeed, some people have used a standard 16-bit parallel I/O card for this purpose.
7
The ASSET system was originally developed by Texas Instruments [Texa90] and later spun off as
a new company devoted to personal Boundary-Scan equipment. Similar product concepts and
services are available from companies such as Corelis, Goepel, Intellitech and JTAG Technologies,
to name four more. They all can be found on the World Wide Web.
8
These additional signals are typically control nodes needed to hold certain states on a board that
will disable or condition other devices (that do not contain Boundary-Scan) so they do not interfere
with the test. Any compliance enable pins must also be controlled (see Sect. 1.7). The complicated
support software behind this capability is not often available on personal testers even if some con-
trol node capability is advertised. Even more tester I/O signals are required to stimulate and receive
data from incomplete Boundary-Scan nodes as the rest of this section explains.
118 3 Boundary-Scan Testing
When people talk today about the difficulties facing In-Circuit testing, they often
focus on the anticipated difficulties in gaining nodal access. But actually, another
problem has been around longer and has had a much more deleterious effect: the
Application Specific12 Integrated Circuit (ASIC).
9
Interestingly, rapid prototyping is sometimes performed on personal testers, but with tests devel-
oped on fully capable ATE systems. This reflects the desire to use the program development tools
found on the ATE system without building an expensive, throw-away fixture. It also frees up the
more capital-intensive ATE for production test.
10
This was the Asset Intertech “ScanWorks” system with the Agilent Technologies 3070 board test
system.
11
The board designer also has considerably more leverage with device vendors when a compliance
problem is found. Test engineers typically do not influence purchasing decisions and are likely to
get less attention.
12
The meaning of “Application Specific” has a very narrow definition in the industry. For the pur-
pose of this discussion on the difficulty of testing, an ASIC could mean any one-of-a-kind design,
including Field-Programmable Gate Arrays (FPGA) ), Complex Programmable Logic Devices
(CPLDs) and the like.
3.1 Basic Boundary-Scan Testing 119
13
Structural problems in the electronics industry also contribute to the difficulty; tools for IC level
testing of ASICs do exist, but are of little use at board test due to board level constraints (nodal
wiring) and to the difference in failure mechanisms of interest between the two contexts. Finally,
the ASIC designer may have no motivation to solve board level test problems.
14
“Unpowered shorts testing” is accomplished before power is applied to the board. It uses a series
of very low voltage analog measurements that can isolate shorts between nailed nodes. Note that
the power supply nodes would be included in this test, finding Power/Ground shorts as well as
(nailed) signal nodes shorted to power nodes.
15
There are also unpowered techniques for finding opens on ICs, called Unpowered Open Test
technology. Three such technologies are Capacitive Leadframe test, Radio Frequency Induction
test and Analog Junction test. These have been documented at the International Test Conference
(see 1996 proceedings) and are available from major ATE vendors. Note all require nodal access.
See Chap. 10 for 1149.8.1 support for Capacitive Leadframe test.
120 3 Boundary-Scan Testing
In steps four and seven of our basic test algorithm (on page 120) we are causing
the Boundary-Scan drivers to write a stimulus pattern, which our ATE system can
then read and compare for valid data. In steps five and nine we are reading the com-
ponent inputs into the Boundary Register. We must instruct the ATE system to drive
the parallel inputs of the component just before this read occurs. Note that we can
disable the ATE drivers after the read occurs, which reduces the time that upstream
drivers are being overdriven. Between read and write operations, we are shifting out
captured states that the ATE system placed on the inputs and shifting in new stimuli
to be written to the component outputs where ATE receivers may see them.
A failing bit on TDO indicates that some Boundary Register cell did not capture
the value that the ATE system set up on an IC input. We can correlate the failing bit
position in the scan sequence to a cell in the Boundary Register. From there we map
(using the information from the BSDL attribute BOUNDARY_REGISTER) to an IC
input (or bidirectional acting as input) and can give a diagnostic for a failing input.
This capability is difficult16 or impossible with In-Circuit testing before 1149.1.
Other capabilities can be enjoyed that were not possible before 1149.1. For
example, if we have a very large pin count on an ASIC, we can choose to test sub-
sets of pins in succession, taking advantage of an In-Circuit ATE system’s multi-
plexed resources. Thus, we can multiply the value of our resources at the expense of
testing time. The concept of testing portions of an IC’s I/O pins would not be pos-
sible with conventional ASICs, unless of course they contained trivial logic. If some
of the IC inputs are connected to fixed signals (such as logic 0 or 1) we can skip
these pins, or directly verify the fixed values. With conventional ASICs, fixed values
have to be considered as a board-level constraint when developing the test, a con-
straint that effectively modifies the logic of the IC.
When Boundary-Scan was in its infancy (in the early 1990s) it was common for
people to say, “I only have one or two ICs with Boundary-Scan, so it will not help
me.” To them I would respond, “If Boundary-Scan can take a 2-week In-Circuit
programming problem and solve it in less than 10 s, is that of interest?” It was.
3.1.5 IC Test
The INTEST function allows us to test the System Logic of an IC even when the IC is
mounted on a board such as shown in Fig. 3.6. (Here, the IC is shown as part of a
chain, though we could also make use of an In-Circuit nail on the TDI-TDO connec-
tion between the chips to directly access the target IC.) When the TAP Instruction
Register is loaded with INTEST and we pass through Update-IR, the IC’s I/O pins are
disconnected from the System Circuitry, and the Boundary Register takes control of it.
16
It is possible to use a “fault dictionary” approach to diagnose opens on inputs, if there is only one
open, because this looks like a single stuck-at failure and matches the assumptions used to create
dictionaries. If multiple failures exist, then the dictionary approach will often give no diagnosis, or
a false diagnosis.
3.1 Basic Boundary-Scan Testing 121
IC in BYPASS IC in INTEST
System Circuitry
System Circuitry
Bypass Bypass
Instruction Instruction
TDI TAP TAP TDO
Controller Controller
TCK
TMS
ICINTEST
The IC’s output drivers also can be controlled by the Boundary Register.17 This control
allows us to set safe values on the IC’s outputs while INTEST in functioning.
To do an INTEST, we make use of the basic testing algorithm (Sect. 3.1.2) with
the following modifications:
• INTEST is loaded in place of EXTEST at step 4.
• All stimulus and response patterns must be organized with respect to the System
Logic I/Os rather than the component I/O pins.
• The “stimulus” pattern is being written to the System Logic inputs rather than to
the component output pins.
• The captured (read) response is that of the System Logic outputs, including out-
put enable signals.
• Component outputs can be held at safe or disabled states by adding these values
to each stimulus pattern.
In principle, it is possible to use the INTEST function to fully exercise the System
Logic of an IC loaded on a board, independent of its board wiring. In reality, there
are some practical restrictions. First, System Logic tests are often very long before
1149.1 serialization. After serialization, they could be far too long from two stand-
points: application time and the requirements placed on tester memory. Second, the
tests may have, as part of their goal, a high pattern application rate. This might not
be achieved after serialization, thus nullifying their intent.
17
As noted in Chap. 1, there are two options for output control during INTEST. All outputs may be
under control of the Boundary Register or they may all be set to the high impedance state.
122 3 Boundary-Scan Testing
One last difficulty is contributed by the notion given in the Standard that INTEST
may be implemented in an IC but that certain “clock” inputs do not have to be con-
trolled by the Boundary Register. When you have uncontrolled system clock inputs,
you must coordinate them with the application of the INTEST patterns and perhaps
with TCK as well. In this case, we must ensure that an ATE system coordinates
these additional requirements along with the basic INTEST concept. On analysis,
there can be one or several system clocks, as well as TCK, to manage and the prob-
lem can, in principle, become quite complex. When INTEST is to be used in this
environment, additional engineering of the basic test algorithm outlined above
could be necessary; in short, there is still a need for test engineers, even with the
advent of Boundary-Scan!
3.1.6 IC BIST
The 1149.1 Standard contains direct provisions for IC-level Built-In Self-Test
(BIST) of the System Logic. There is the optional RUNBIST capability specified by
the Standard. (Designers can implement their own BIST functions separate from
RUNBIST.) Shown next is a description of a basic RUNBIST test process.
RUNBIST is self-initializing, so no steps are shown that initialize internal counters
or accumulators.
18
Steps 2 and 3 can be omitted for ICs that do not use the Boundary Register to control outputs
during RUNBIST. These ICs place all output drivers in a high impedance state during RUNBIST.
19
The same clocking complications noted in section 3.1.5 concerning just what is a “clock” apply
here as well.
3.2 Testing with Boundary-Scan Chains 123
The Boundary-Scan Standard allows for ICs to be linked into chains by linking the
TDO pin of one IC with the TDI pin of the next. For example, the 1149.1 ICs on a
board may all be linked together in a simple chain by sharing the TCK and TMS
signals and linking their TDO-TDI pins in succession. Several distinct simple chains
may exist on a board if they do not share any TAP signals; or conjoined chains can
be created by sharing some TAP signals. For a single simple chain, operation of the
Standard for testing purposes is straightforward. For multiple simple chains or con-
joined chains, operation becomes more difficult (see Sect. 5.2.1). Here we will
restrict our discussions to individual simple chains.
As mentioned in Chap. 1, a simple chain of Boundary-Scan ICs are always in the
same TAP state.20 This simplifies our view of the TAP states of the ICs; one can
picture the chain itself as following the TAP state diagram. However, each member
of the chain could have a different instruction active at any time, each of which
targets a different register. On top of this, each IC may have its own unique dimen-
sions on each register. This all changes as new instructions are loaded. Thus, there
is some careful bookkeeping involved with managing a Boundary-Scan chain. (Note
if we want to consider multiple simple or conjoined chains, then we must keep track
of independent TAP states for each chain or even for each IC.)
A fact of Boundary-Scan testing is that we depend upon our chain being in oper-
ational order before we can do useful testing. In essence, we have moved part of our
tester hardware onto the board we are trying to test. Just as no one would expect a
malfunctioning tester to reliably test a board, we cannot expect a malfunctioning
chain to be of much service either. The problem becomes that of ensuring that a
chain is basically functional and if it is not, quickly locating the problem so that it
can be repaired.
20
Again, assume that no assertion of an optional TRST* signal occurs that would drive some chain
members to Test-Logic-Reset independently.
124 3 Boundary-Scan Testing
Chain integrity must be assured before we should trust the results of a test and obtain
reliable diagnoses. There are many faults that can damage a chain, for example:
• A component in the chain could be dead, missing, or misloaded.
• A component in the chain could have a broken connection for one of its TAP pins.
• A TDO to TDI connection between components could be shorted to another node.
Fortunately, the 1149.1 Standard has provided resources that facilitate chain
integrity testing. You should note that a combination of the above problems could
exist in a chain of components. If this is the case, it may be necessary to test and
repair and re-test the chain repeatedly until integrity is restored. Typically, an integ-
rity test will find only the problem closest to the TDO end21of the chain. This will
usually prevent us from seeing any problems that might exist further upstream.
The primary characteristic that facilitates integrity testing is the ability of each
IC in a chain to set up a deterministic data pattern in its TAP Instruction Register at
Capture-IR. We can then shift all the concatenated capture data out on TDO of the
last IC. By examining the BSDL description of each IC in a chain, we know from
the attribute INSTRUCTION_CAPTURE what this data will be. Furthermore,
because the Standard states that the two least significant bits must be “01,” we know
that each IC should cause TDO to toggle to both logic states. In the simplest case
where all instruction registers in a chain have only two bits (see Fig. 3.7), we would
see, in Table 3.1, the following concatenated data for a good chain (of seven ICs)
and one example of a failed chain. (Remember the rightmost bits, the least signifi-
cant, flow out of TDO first.)
In the bad data stream, IC 7 first shifts out its “01” (which is correct) followed by
the data for IC 6 (shifted through IC 7), which is also a correct “01.” Then we see a
correct “01” for IC 5. For IC 4, we see an incorrect “11” come out, and all subse-
quent bits are “11” for the upstream ICs 1–3. From this we can conclude that ICs
5–7 were basically functional but that something is wrong with one or more ICs
starting with IC 4. This conclusion might not be perfect because a damaged TDI
CaptIRPT
1 2 3 4 5 6 7
Fig. 3.7 A simple chain that has just passed Capture-IR, loading all Instruction Registers with “01”
21
However, one can sometimes find multiple chain integrity problems with a single test execution
if tester access is provided to the interior TDI-TDO connections within the chain.
3.2 Testing with Boundary-Scan Chains 125
Table 3.1 Example data bits for chains shown in Fig. 3.7. The bits for IC7 are the first to appear
at TDO
Integrated circuit
1 (TDI) 2 3 4 5 6 7 (TDO)
Good data stream 01 01 01 01 01 01 01
Bad data stream 11 11 11 11 01 01 01
receiver22 in IC 5 that always reads a “1” could be the real cause of the problem.
Because solder problems are often a prevalent failure mechanism, we could begin
by looking at the solder workmanship on IC 4; is there an open circuit on TCK,
TMS or TDO of IC 4? How about a solder open between TDO of IC 4 and TDI of
IC 5? Is IC 4 misloaded? Is IC 4 dead? From this, a diagnosis would have to suspect
a problem first with IC 4, but cannot completely rule out a problem with IC 5. Thus,
integrity testing will usually indict one of two ICs, with one having a higher likeli-
hood of causing the problem.
Because testing algorithms such as we have already seen start by immediately
programming the Instruction Registers of each component in the chain, we have the
nucleus of an integrity test built into the beginning of the test itself. If we instruct
our ATE system to check the instruction capture bits as they come out during the
first instruction programming sequence, it is possible to make basic integrity testing
an integral part of any test. This is highly advisable, as it will protect a test from the
potentially false assumption that a chain has integrity.
The above test sequence has one limitation—it does not test the integrity of TDI
for IC 1. This is easily solved by shifting two more bits, prepended to (that is,
attached to the beginning of) the sequence we want to load into the Instruction
Registers. If these bits are deliberately made the opposite of the mandatory instruc-
tion capture pattern (that is, “10”), they will be the last two bits shifted out and will
serve to indicate the end of the chain. These prepended bits are called sentinel bits.
More intricacy may be added to integrity testing; for example, we could program
the IDCODE instruction into those components that have it, while setting the rest to
BYPASS.23 We can then proceed to Shift-DR and read out the IDCODEs of those
components. This will tell us if any pin-compatible components have been loaded
in the wrong positions. In general, many of the failure mechanisms of interest have
fairly catastrophic effects on chain integrity. Thus, simply programming the
Instruction Registers for the first time will expose most problems.
22
We assume that all ICs have been thoroughly tested before placement on a board. Damage from
handling and placement, either physical (bent pins for example) or electrical (from Electrostatic
Discharge—ESD for example) are our main concerns.
23
Alert readers may wonder why we would program these instructions when the Test-Logic-Reset
state sets these intrinsically; you could proceed directly to Shift-DR to read out the IDCODEs. The
reason is many ICs do not contain IDCODE and place a single-bit Bypass Register with a captured
“0” between TDI and TDO. This single bit cannot cause a transition on TDO so that we suffer even
more ambiguity in isolating chain problems.
126 3 Boundary-Scan Testing
Table 3.2 Data streams from chains shown in Fig. 3.7 with IC4 TDI and TDO shorted together,
producing a Wired-AND
Integrated circuit
Sentinel bits 1 (TDI) 2 3 4 5 6 7 (TDO)
Good data stream 10 01 01 01 01 01 01 01
Bad data stream 00 00 01 01 01 01 01 01
One fairly insidious problem (see DeJo91]) can cause difficulty in diagnosing
chain integrity. If several identical components are chained in series, then the pat-
terns they capture in their Instruction Registers are also identical. Now, imagine that
TDI and TDO of IC 4 are shorted together and assume a Wired-AND occurs (see
Fig. 3.7). This creates the AND of the TDO signals in ICs 3 and 4. Using our
improved test sequence with a prepended sentinel “10” attached, we see the follow-
ing data propagated from TDO (Table 3.2).
What we see would indicate there is a problem in the vicinity of IC 1 when it
really is located at IC 4. This is because the data being wire-ANDed at IC 4 never
conflicts until the “10” sentinel is finally shifted out of IC 3. Then it ANDs to “00”
and this is loaded into both IC 4 and IC 5 at the same time. We do not see this result
until the data traverses ICs 6 and 7. This problem is studied in [DeJo91] and some
diagnostic processes are offered. However, there are two easier solutions; one is to
place In-Circuit probes on all interior TDI-TDO nodes so that all TAP signals used
by the chain can be tested for shorts using unpowered shorts test. The second is to
eliminate the chance that TDI can short to TDO on an IC; this can be done by making
sure that TDI is physically distant from TDO on the package pins24 (see Sect. 5.1.1).
Interconnect test refers to the testing for shorts and opens within the nodal wiring
between Boundary-Scan components only (see Sect. 3.2.4 for interactions between
Boundary-Scan nodes and other nodes25). Figure 3.8 shows a simple example. Note
that nodal connections between components are considered “interconnect.” The
nodes connected to nails are assumed to be board-edge signals; these will be tested
by Connection tests covered in Sect. 3.2.3. In this drawing we use the convention
that I/O pins on the left side of the package are inputs and those on the right are
outputs or bidirectional pins.
24
We are taking advantage of the fact that the vast majority of shorts are caused by improper con-
nections (for example, bad solder) between physically adjacent I/O pins. Board shorts between
printed node traces are usually eliminated before expensive components are loaded onto a board.
25
Boundary-Scan nodes are defined as those possessing at least one driver and receiver under
control of the combined Boundary Registers of a chain. (Note that this could be satisfied by a
single, bidirectional I/O pin.) “Other” nodes include analog nodes, conventional digital nodes and
power supply or voltage-reference nodes that would appear to be a logic “0” or “1” value.
3.2 Testing with Boundary-Scan Chains 127
A
B
C
U1 U2
A
B
D
U3 U4
TDO
IntcNode
The interconnect testing problem was studied by Kautz long before Boundary-
Scan was invented [Kaut74]. Kautz showed how a binary counting sequence could
offer a minimum sized test for wiring interconnects. Wagner [Wagn87] placed the
counting sequence technique into the Boundary-Scan lexicon. The definitive papers
by collaborators Yau and Jarwala offer an excellent survey, analysis and theoretical
framework for the problem ([Jarw89] and [Yau89]). To this book, we add some
practical experience to leaven our expectations for Boundary-Scan.
Interconnect testing usually lumps the testing for shorts and opens into one topic.
Here, we will split the two problems apart. Shorts (see Fig. 3.9) are a very destruc-
tive problem in that they can confuse diagnostic procedures and hide the occurrence
of other failures.
Opens, on the other hand (see Fig. 3.10) are a relatively simple problem to diag-
nose. Shorts, by their very nature, may cause driver conflicts on a board that could
degrade the lifetime or performance of the affected components. Opens will usually
not damage components. Since any Boundary-Scan testing necessitates applying
power26 to a board, shorts that are present immediately begin to act upon the affected
drivers. This gives us concern about component damage that could occur due to
26
The process of applying power is more complex and time consuming than many realize. It might
take several hundred milliseconds to stabilize a power voltage to specification. There may be several
voltages to be applied in sequence. It also might take hundreds of milliseconds to turn power off!
Expected Captured
Signatures Signatures
A
B 010 011
C 001 011
Short
U1 U2
TDI
A
B
D
U3 U4
IntcShrt
TDO
Fig. 3.9 Interconnect test drives unique patterns assigned to each node from drivers to receivers.
A short is shown that creates a Wired-OR result
Open
A 0 1
B 0
C 0
U1 U2
TDI
A 0
B
D
U3 U4
TDO
IntcOpen
Fig. 3.10 An interconnect open that prevents driven data from reaching one of two receivers on a
node. This fact can help a diagnostic isolate the location of the open
3.2 Testing with Boundary-Scan Chains 129
Interconnect shorts testing is done by utilizing our basic test algorithm (Sect. 3.1.2).
It is used to transmit Sequential Test Vectors (STVs) onto nodes to be received by
Boundary-Scan input pins (see Fig. 3.11). The data received at Boundary-Scan
A 0 1 0 0 1
B 0 1 0 1 0
C 0 1 0 1 1
U1 U2
TDI
A 0 1 0 0 1
B 0 1 0 1 0
D 0 1 1 0 1
U3 U4
TDO
IntcSPTV
Fig. 3.11 Simple interconnect test showing STVs (horizontal patterns) for 4 nodes. The columns
are PTVs and represent the data as transmitted at each Update-DR state. Nodes A and B are bussed
130 3 Boundary-Scan Testing
input pins are called Sequential Response Vectors (SRVs). If a given node is operat-
ing properly, then the SRVs seen at all its receivers should match the STV of the
driver. We proceed as follows:
• Step 1: Examine the board netlist and BSDL descriptions of the Boundary-Scan
components. Enumerate the Boundary-Scan interconnect nodes and all attached
component pins.
• Step 2: For each node, identify all component pins that can drive the node,
including bidirectional pins. Select one and call it the designated driver of the
node. (See 3.2.2.2.)
• Step 3: Assign a unique Sequential Test Vector (STV) to each node. (See 3.2.2.2.)
• Step 4: Transpose the STVs into Parallel Test Vectors (PTVs). Use the basic test
algorithm to write an ATE program for the test.
• Step 5: Execute the test on an ATE system. Record each captured PTV that is
shifted out.
• Step 6: Transpose the captured PTVs into SRVs.
• Step 7: Analyze the SRVs. Use observed differences from the original STVs to
diagnose shorts and opens.
Note that steps 1–4 can be done once in preparation of the interconnect test and,
of course, can be completely automated. Step 5 is performed by an ATE system
once per board tested. Steps 6 and 7 may be skipped if the ATE system does not note
a failure during the test. If a failure is detected, the ATE system can immediately
remove power from the board before steps 6 and 7 are performed.
3.2.2.2 Discussion
Step 2 selects a designated driver for a node. This driver is enabled for the entire
interconnect test; no other driver is used. This means that for nodes with multiple
drivers, there are driver opens that might not be detected. Since we are deliberately
concentrating on shorts detection, we leave this class of undetected opens for future
testing as discussed later in this section (see Sect. 3.2.2.4 on page 140). In that dis-
cussion, we will examine several cases where opens are missed by interconnect
shorts testing.
The main reason for selecting and enabling a single designated driver is to keep
interconnect shorts tests brief. Testing for opens on bussed drivers can be relatively
expensive in terms of the number of PTVs needed. Because opens are benign and
shorts are potentially dangerous, we defer testing for this class of opens until we are
satisfied that shorts have been eliminated.
Step 3 assigns a unique STV to each node. The work by Yau and Jarwala [Jarw89,
Yau89] goes into great depth on this matter. The simplest and shortest test uses
binary numbers, sequentially assigned, as the STVs for nodes. When transposed
into PTVs, this gives us a number of PTVs equal to
[log 2 N ]
3.2 Testing with Boundary-Scan Chains 131
AN [ log 2 N ]
cycles.27 For 4000 nodes of four pins each this is approximately 192,000 shift cycles.
In contrast to a counting sequence is a walking-bit sequence. (The walking-bit
sequence has the advantage that it eliminates a problem called aliasing, discussed in
this section in the topic “Aliasing and Confounding” below.) Here a single “1” (“0”)
is imposed on a field of “0”s (“1”s). For N nodes, each PTV is N bits long with only
the ith bit set to “1” (“0”) among them. This makes a much longer test, on the order of
AN 2
cycles. For the same 4000 nodes of four pins each, this is approximately 64,000,000
shift cycles.
The counting sequence test and the walking-bit test are two extremes of a con-
tinuum of test patterns, as studied by Yau and Jarwala. They trade length for diag-
nostic resolution. This will be discussed in the topic of “Aliasing” found next.
Step 4, our preparation for interconnect test, transposes STVs into PTVs. Here,
we take the least significant bit of each STV and assign it to the Boundary Register
cell of its designated driver, taking care to also turn on any associated driver enable
cell as well. When this has been done for the LSB of every STV, we have the stimu-
lus portion of the first test cycle, a PTV. We then look for every receiving cell con-
nected to each node and program our ATE system to expect those same bits in those
locations. This becomes the expected SRV that the ATE system can use to note if
any failures occur during the test. We iterate this process for each more significant
bit of the STVs until we have created all the PTVs.
In step 5, the ATE system executes the test. If a failure is noted, it does not stop-
on-first-fail as would be typical in times past. Rather it continues, logging all the
shifted response data for processing in steps 6 and 7. If no failure is noted, this
subsequent processing can be skipped.
In step 6, we transpose the captured PTVs back into a list of SRVs. This is done
by examining each receiving cell location in the captured PTVs and building the
associated SRVs from least to most significant bits. When this is done, we know
what each receiving cell observed (its SRV) during the test. In step 7, we act upon
any case where a receiving cell’s SRV does not match the designated driver’s STV.
This indicates an interconnect failure.
27
The “order” of a problem’s complexity identifies how that complexity grows with the size of
problem variables. The equations given here are not exact because of various assumptions, but do
show you how to estimate the behavior of a problem that is twice as big, for example.
132 3 Boundary-Scan Testing
We diagnose failures by examining the SRVs that are incorrect and by trying to
decide what could have caused the discrepancies. In many logic families, an open
will be interpreted by a receiving pin as a constant “1” or “0”. If an SRV were all
“1”s or “0”s, we might suspect an open, but there could also be a short of that node
to a fixed signal such as Ground or Power. In some logic families, two shorted driv-
ers will perform a Wire-AND function. Other logic families may see Wire-ORs. In
logic families where drivers have varying strengths for “0” and “1” (for example,
CMOS) it may not be possible in general to predict the result of a short; we call this
a Wire-X function. Now if two Wire-AND nodes were shorted, then the SRVs of all
the related Boundary-Scan receivers would be identical and would be the bitwise
AND of the two STVs of the designated drivers. It would seem a straightforward
process to write a diagnostic report for this short. But, depending on how the STVs
were chosen, a precise diagnosis might be frustrated by aliasing.
Aliasing occurs when the combined failures of two or more nodes results in an
SRV (seen at a receiver) matching the STV (assigned to the designated driver) of yet
another node. For example, if nodes B and C shown in Table 3.3 were shorted
(assume Wire-AND), the resulting SRVs captured on these nodes (0001) is the same
as the STV for node A. Does this indicate a short to node A as well? Aliasing leaves
us with this ambiguity: two (or more) nodes are known to be shorted, but another
correctly operating node is also suspect.
Similarly, if nodes D and E were also shorted, the resulting SRVs captured on
these node receivers (0001) would also indicate a short to node A (0001). This phe-
nomenon is known as confounding; we cannot determine if there is one short or two
shorts, and whether A is part of the short in either case.
Aliasing and confounding do not harm the ability of 1149.1 interconnect testing
to detect shorts, but complicate the diagnosis of shorts. This complication can be an
irritation during the actual repair of the board. In the example above, nodes B and C
are definitely shorted together; we just are not sure if node A is also involved. Since
solder problems are the main cause of shorts, we would visit each pin destination of
nodes B and C and inspect the solder at each location for a short. One or more of
these locations may also be adjacent to a pin belonging to node A, the aliased node.
If a solder defect were found, we would repair it. For the price of inspecting all the
destinations of B and C, we can discover any short to A as well if one should exist.
Since repair is a manual process anyway, this bit of extra care is not a bad investment.
A key assumption here is that the destination pins of each node are indeed visible for
inspection.28 In the case that some are not, then a simple electrical continuity test
from node A to either of nodes B or C will tell if a short to node A is also present. It
is also possible to use X-Y coordinate data of all the pins of the three nodes to see if
any adjacencies exist that could be the site of a short.
If your goal is to reduce the probability of aliasing and confounding so that the
repair process is as straightforward as possible, the price you must pay is that of a
longer test. We have seen two extremes of tests: the counting sequence, which will
often exhibit aliasing; and the walking bit test, which is virtually immune. We have
also seen a dramatic difference in the length of the two tests with the walking bit
approach producing tests of breathtaking proportions. Jarwala [Jarw89] and Yau
[Yau89] show how to construct tests of varying sizes such that the aliasing probabil-
ity can be traded for test size.
Another tradeoff must also be considered; that of the probability of damaging
components by applying power to shorted drivers versus some convenience during
the repair process. This is not a trivial matter. One proposed diagnostic procedure
uses an adaptive process. First run a brief (that is, alias-prone) test to produce a rela-
tively compact list of shorted nodes and their aliases. Then, construct a new test (like
a walking-bit test) for the compact list of nodes and run this to produce the final
diagnosis. The assumption is that since the list of suspect nodes is compact, the new
test will be compact as well. However, the duration of time for this process will not
be small, since the new test must be calculated on-the-fly with data from the first test.
A more frightening problem with the adaptive process comes from an analysis of
a key assumption in the Yau-Jarwala work; that shorts always have wired-AND,
wired-OR or strong-driver behavior with known and deterministic results. If this
deterministic assumption is ever violated by a real fault,29 then we are using adap-
tion in an unpredictable or unrepeatable environment. Imagine, during test develop-
ment, that you are trying to debug a “flaky” test and that the adaption process
behaves differently on each application of the test! This will make debug very inter-
esting indeed. If the problem is not seen during test preparation (very likely since
tests are not validated against the myriad possible failure combinations), then it will
wait until production testing to appear.
If we decide that the problems with an adaptive process are too severe, that
leaves us with a preset test that should be as brief as possible and yield good diag-
noses with little irritation due to aliasing. The “preset” requirement means the test
never changes, which is a great help during debugging. The “brief” requirement
28
Inspection can be done with the human eye, or with an automated inspection system. With the
increasing use of Ball-Grid Array (BGA) packaging, optical visual inspection is giving way to
X-Ray laminographic inspection, a technology that can see through most optically opaque objects
and make quantitative measurements of solder quality in three dimensions.
29
Consider a short between three drivers of varying strengths, none overwhelming. Then consider
the eight combinations of data they may have during the test. Next consider that each receiver of
the combined nodes will interpret voltages as one or zero differently, particularly if there is any
hysteresis at work. This example, entirely common, should give you concern about “simplifying”
assumptions.
134 3 Boundary-Scan Testing
Table 3.4 A set of test PTVs (the columns) for interconnect test. (The Notes are explained in the text)
Node Note 1 Note 2 Note 3 Note 4
A 0 1 1 1 0 0 0
B 0 1 1 0 0 0 1
C 0 1 0 1 0 1 0
D 0 1 0 0 0 1 1
N 0 1 1 1 1 0 1
suggests that a counting sequence test be the basis of the test, while the “good
diagnoses” and “little aliasing” requirements suggest that we augment the counting
sequence with additional tests (PTVs).
Table 3.4 shows such an augmented counting sequence test. The column labeled
Note 1 heads a PTV that places all nodes at “0”. Note 2 heads a PTV that places all
nodes at “1”. Shorted nodes will never cause a driver conflict in either of these two
PTVs, so both the “0” and the “1” will be conserved in the SRVs for these PTVs for
any shorted signal nodes. This means we can differentiate an open (or a Power/
Ground short) that causes a constant SRV (all 1 s or 0 s) from any other short. Note
4 heads three columns that are a binary counting sequence, known to be brief, but
also prone to aliasing.
Note 3 heads two columns in the table. These two columns are complements of
the rightmost two columns from the binary counting sequence. These are anti-
aliasing PTVs. A full set of anti-aliasing PTVs would consist of adding the comple-
ment of the complete binary counting sequence, which in this case, is the complement
of the last three columns [Wagn87, Jarw89]. Adding less than the full set represents
a compromise; fewer PTVs but more chance of aliasing. The advantage of this
approach is simplicity; we are not using any knowledge of driver performance30 or,
the circuit topology or any complex analysis to create anti-aliasing PTVs. We just
complement a subset of the counting PTVs, starting with the least significant bits
(that change the most). Adding more such PTVs increases the length of the test, but
reduces the chance of aliasing.
Practical testing experience has shown that the test selection approach illustrated
by Table 3.4 gives good diagnostic resolution for shorted signals, good resolution of
Power/Ground shorts, rarely produces aliasing, is quite brief, and is deterministic.
Once we have tested the Boundary-Scan interconnect using the counting sequence
style of approach, we have detected any short between these interconnects and have
also discovered many of the possible opens as well. However, if there are nodes with
multiple drivers, then we know that only the designated driver for each such node
30
This knowledge may be inaccessible to the test engineer.
3.2 Testing with Boundary-Scan Chains 135
CU
U1 A U1
C U
Off
C U
CU
U3
On
C U CU
U2
CU
U4
On U2
C U CU C U
CU
U3 On
CU
C U
Off Undetected
C U Open
Undetected
Open B
U1 On C
CU
C U
On U2
CU C U
Undetectable
Open
BusOpens
Fig. 3.12 Three examples of bus wire driver opens not detected by interconnect shorts test
has been verified for opens. The others were never activated,31 so we have not tested
for opens on them. We need to do an interconnect opens test that will finish the job.
Figure 3.12a shows the basic configuration used during interconnect shorts test-
ing. There you see three ICs that drive the node and one that receives. U2 was arbi-
trarily chosen to be the designated driver during interconnect shorts test, but that
leaves both U1 and U3 untested for driver opens.
31
In some cases these other drivers may actually be part of a bidirectional pin structure. In this
case, the receiving Boundary Cell was tested, so the solder must be good. However, since we have
never turned on the driver, we still do not know if there is any problem with it.
136 3 Boundary-Scan Testing
11
CU
12
13
U1 U2
TDI
8
CU
9
10
U3 U4
TDO
IntcMDvr
Fig. 3.13 Control cell fanout combined with board topology that results in undetected opens
Figure 3.12b shows a case where there are two ICs, U1 and U2, both activated to
drive the bus during interconnect shorts testing. In other words, we could not desig-
nate a single driver for this node. This is necessary because the control cell that
turns on the driver in one IC fans out to other drivers (in the same IC) that must also
be turned on to perform interconnect shorts test. Each masks a problem that might
exist with the other and introduces the requirement that both data cells must be
loaded with matching data to prevent drive conflicts.
Figure 3.12c shows an example of two drivers ganged together to increase drive
current. Solitary opens on either driver cannot be detected using Boundary-Scan,
unless of course the DC loading is such that one driver cannot create proper
logic levels.
The situation in Fig. 3.12b is caused by control cell fanout to multiple drivers
combined with board-level topology that requires two or more drivers to be turned on
at the same time. Figure 3.13 shows a simple case of this; pins 11, 12 and 13 of com-
ponent U1 must be turned on to detect shorts between their nodes. Pins 11 and 12 are
also bussed drivers. Down in U3, pin 10 must be turned on as well or its node would
not be tested for shorts. When this is done, we also have pins 8 and 9 turned on as
well, causing multiple designated drivers to exist for their nodes potentially masking
opens. Thus, when bus wires exist on a board, it is likely that conditions exist where
the interconnect shorts testing process will not completely test for opens.
3.2 Testing with Boundary-Scan Chains 137
10 A 7
9 B 6
C
8 5
U1 U2
A
10 7
B
9 6
D
8 5
U3 U4
TDO
Intc2Bus
Table 3.5 Parallel test Component and pin Node Bit pattern
data for two bussed nodes
U1.10 (driver) A 01 ZZ
U3.10 A ZZ 01
U1.9 B 01 ZZ
U3.9 B ZZ 01
U2.6 (receiver) B 01 01
U2.7 A 01 01
U4.6 B 01 01
U4.7 A 01 01
If we had a single bussed wire with N drivers we could test it very simply with
2*N PTVs, N pairs that turn on just one driver and set it to “0” and “1”
successively.32
Figure 3.14 shows an example of a board topology where two bussed wires
marked A and B exist side by side. These two wires each have two drivers, but we
can test them in parallel as before with N equal to 2. This is shown in Table 3.5.
32
All receivers, including those within bidirectional structures that are not driving, should be
checked to ensure the correct driver data is received from the node.
138 3 Boundary-Scan Testing
In this example, nodes A and B are driven simultaneously, first from component
U1, then from component U3. The bit patterns show either “01” for two PTVs
driven by a pin, or “ZZ” for two PTVs where a pin is disabled. The SRVs seen at
each receiver are “0101”. Nodes C and D are not tested (meaning their SRVs are not
examined) because they were already tested by interconnect shorts test.
Figure 3.15 shows a case where four bus nodes A, B, C and D exist with two
drivers for nodes A, C, and D and three for node B. These, too, can be tested in par-
allel, but with N equal to 3, the maximum size of any one bus. Table 3.6 shows the
data for this case. When a node is not driven for a PTV which occurs on nodes A, C,
and D, then the SRVs in these cases are “XX” as shown, indicating a “don’t care.”
In either case just shown in Figs. 3.14 and 3.15, the fanned-out, control cell
structure that we saw in Fig. 3.13 could be present as well. This influences how we
choose which drivers to turn on at the same time. Obviously, if the same control cell
10 A 7
9 B 6
C
8 5
U1 U2
TDI
Nodes A, C and D
have 2 Drivers
6
Node B has 3 Drivers
5
4
U5
A
10 7
B
9 6
D
8 5
U3 U4
TDO
Intc3Bus
Fig. 3.15 A case where four buses containing different numbers of drivers are tested in parallel
3.2 Testing with Boundary-Scan Chains 139
Table 3.6 Test data required for bus wires with different numbers of drivers
Component and pin Node Bit pattern
U1.10 (driver) A 01 ZZ ZZ
U3.10 A ZZ 01 ZZ
U1.9 B 01 ZZ ZZ
U5.5 B ZZ 01 ZZ
U3.9 B ZZ ZZ 01
U1.8 C 01 ZZ ZZ
U5.6 C ZZ 01 ZZ
U5.4 D 01 ZZ ZZ
U3.8 D ZZ 01 ZZ
U2.7 (receiver) A 01 01 XX
U2.6 B 01 01 01
U2.5 C 01 01 XX
U4.7 A 01 01 XX
U4.6 B 01 01 01
U4.5 D 01 01 XX
Connection tests are similar to In-Circuit Boundary-Scan tests. They test the con-
nectivity of nailed nodes to Boundary-Scan components. The circuit in Fig. 3.16
shows an example of several ICs that have nailed connections in need of testing.
This circuit has a number of nodes and Boundary-Scan pins that cannot be tested
with any of the typical Boundary-Scan interconnect tests. These nodes may come
from edge-connector pins or may be those that cross between the Boundary-Scan
portion of the design to the conventional portion. A connection test utilizes the tester
resources available on such nodes to test that the Boundary-Scan IC is connected to
those nodes. One, several, or all IC pins may be tested this way.
A connection test is relatively easy to do. It only looks for opens, since shorts
between the nodes it is testing are already detected by a preceding, unpowered shorts
test that should be performed on all tester nails before applying power to the board.
Two PTVs that drive all inputs (and bidirectionals acting as inputs) are first run to
33
Supplement A [IEEE93] to the Standard makes it a firm rule that drivers that are controlled by
the same control cell must respond identically to the value loaded into that cell. The original stan-
dard allowed them to be different, causing obvious problems for test algorithms.
140 3 Boundary-Scan Testing
U1 U2
TDI
U3 U4
TDO
ConnTest
Fig. 3.16 A circuit where not all Boundary-Scan pins can be tested via interconnect test
see that each can receive a “1” and a “0”. Then two more PTVs are used that cause
each output (and each bidirectional acting as an output) to drive a “1” and a “0”. The
tester can directly see failing output pins, and can correlate failing TDO bits with
faulted input pins.
It is common for some component inputs to be tied to fixed “0” or “1” signals
(often Power or Ground). By noting which pins are fixed, we can also verify that
these inputs are always capturing constant “0”s or “1”s.
It is possible to perform connection tests on several ICs in parallel, but this will
require more parallel and independent tester resources. By testing the ICs in sepa-
rate tests, we can multiplex and reuse these resources. Indeed, if one IC were par-
ticularly large and had many connections to test, we could choose to test portions of
these connections in separate tests. This allows us to save on tester resources and
lower the cost of the tester.
3.2 Testing with Boundary-Scan Chains 141
U3 A
1
B
2
C 3
D
U1 4 U2
TDI R1 TDO
C1
InterAct
Fig. 3.17 Example of potential interactions between a Boundary-Scan node and two non-scanned
nodes
34
The ATE driver must be strong enough to overdrive node C and node B simultaneously.
142 3 Boundary-Scan Testing
U3 A
1
B
5 2
C 3
6
D
U1 7 4 U2
E
TDI TDO
F 8 9
U4
InterAct2
Fig. 3.18 Boundary-Scan nodes B and C that can interact (by shorting) with nodes A, D or F
U3. In either case, the goal is to set up a condition where node A will definitely
interfere with node B if a short is present.
Once we have ATE resources available35 to set up interference, we can run a
standard, interconnect shorts test. We can use our ATE drivers to freeze the values
of the non-scanned nodes A and C during Capture-DR when any interference will
be captured in the Boundary Register receiver cells. The ATE drivers can be turned
off at other times to minimize overdrive stress on upstream IC drivers. We can
choose static values to place on the ATE drivers, or, as suggested in [Robi90] we
could assign each ATE driver a unique counting sequence number as we have done
with the Boundary-Scan nodes. This way, any Boundary Register receiver seeing
one of these SRVs corresponding to an STV assigned to an ATE driver will readily
identify the non-scanned node involved in a short. The approach chosen will be
influenced by our concern over how many (expensive) ATE drivers we wish to have
running in parallel versus running the test several times with multiplexed resources.
A somewhat different approach to this problem is given in [USP93]. Again the
idea is to use ATE resources to create strong values on neighboring non-scan nodes
and then see if these values appear on Boundary-Scan nodes. The drawing in
Fig. 3.18 shows an example board topology.
Here we set up a Boundary-Scan test with only two PTVs, one that drives all
Boundary-Scan nodes (in this case nodes B and C) to “0” and a second that drives
them all to “1”. Thus, while we are performing this interaction test, if there are any
other shorts between Boundary-Scan nodes themselves, they will not be excited and
therefore are unable to cause driver damage or confuse the ultimate diagnosis.
35
Note that this could be a large number of expensive resources if there are many locations on a
board where interactions are likely. This introduces the problem of managing these resources (for
example, by multiplexing) so that our tester costs are not driven too high.
3.2 Testing with Boundary-Scan Chains 143
Next, while these two PTVs are being driven, we use our ATE drivers to create
the opposite states (“1” and then “0”) on only the adjacent non-scan nodes, in this
case nodes A, D and F. This ATE drive condition need only exist for the length of
time the chain of devices is in the Capture-DR state.
Figure 3.18 shows some situations that need further discussion. Node A is being
tested because it is adjacent to node B, a Boundary-Scan node. This adjacency rela-
tionship can be determined two ways; first, by examining the X-Y board location
data for every pin (in this case, pins 1 and 2 of U2) we can determine the distance
between any two pins. If this distance is less than a predetermined shorting radius,
then we will include the related nodes in our interaction test. The shorting radius is
chosen by our experience with solder shorts such that two pins beyond this radius
have little probability of ever being spanned by solder short. Second, if we do not
have board X-Y location data, we can infer adjacency by looking at device pin num-
bers. Here we assume that pin 1 is adjacent to pin 2, but not adjacent to pins 3 or 4.
This second method is certainly less satisfactory since on a pin-grid array device, we
may not know that pins A3 and B5 are adjacent. Numerical adjacency may also cause
us to test nodes that X-Y data would have told us are beyond the shorting radius.
Figure 3.18 also shows us that Boundary-Scan node C is adjacent to nailed node
D. We can test node D, even though it is a TDO-to-TDI connection. This is because
we only overdrive node D with our ATE driver when the chain is in the Capture-DR
state. Because TDO is unused and disabled during this time, we are able to do this.
This could detect a short from TDO to some other signal that was disabled during
other forms of Boundary-Scan testing including chain integrity testing.
Next note that we can check for a short between nodes B and F which are adja-
cent at device U4, pins 8 and 9. (Also note that node E will have to be controlled by
an ATE driver so that the output driver in U4 is disabled during testing.) Now ask
the question, what if Boundary-Scan node B is shorted to both node A and node F
at the same time? The test will fail, but which nodes do we diagnose? This can be
solved by noting that nodes A and F are adjacent to the same Boundary-Scan node
and should be tested at by the same algorithm, but at separate times. This temporal
splitting resolves the ambiguity.
The circuit in Fig. 3.18 can thus be tested with two applications of our Boundary-
Scan test; the ATE drivers drive nodes A and D in the first application and then drive
node F in the second. If a failure36 is observed in the first test application, we can say
without ambiguity which node(s) failed since they will affect independent Boundary-
Scan nodes. If the second test application fails, we know that it had to be node
F. Multiple applications also allow us to re-use expensive ATE resources in succes-
sive applications, if they are multiplexed. Finally, it is possible when producing the
36
Note, a failure here is defined as the opposite state being observed on the Boundary-Scan node
for both the expected “0” and “1” states. This helps us prevent other problems (for example, an
open solder joint on a receiver) from confusing the diagnosis.
144 3 Boundary-Scan Testing
diagnostic report, to report the adjacent pins37 of the shorted nodes. These pins are
the probable location of the short, so we are now getting a pin-level diagnostic for a
shorts test that tests nodes.
Capacitive opens testing uses a capacitive sense plate mounted over a DUT to sense
the presence of an AC signal provided by the tester. The very attractive property of
this type of testing is that it can test for open circuit connections on passive compo-
nents such as vacant connectors. A Boundary-Scan subsidiary standard called 1149.8.1
has been developed to support such testing. See Chap. 10 for a complete discussion.
We can perform other tests with Boundary-Scan component chains. For example, if
several components have the RUNBIST capability, we can load all of them with
RUNBIST (and the rest with BYPASS) and in principle,38 have them all execute
their self-tests in parallel. We put the chain in Run-Test/Idle and clock it for the
maximum number of clocks that any of the components require. All those receiving
more clocks than necessary will retain their self-test result. After clocking is done,
we proceed down the data column of the TAP diagram to Shift-DR where the self-
test results are shifted out for examination.
User-defined instructions may be accessed to set up tests for internal portions of
components, or to set up tests between cooperating components. For example, the
Texas Instruments SCOPE Octal ICs [Texa91a, Texa91b] can be made to cooperate
for testing circuitry and interconnect between them as shown in Fig. 3.19. One such
IC (U1) can have its Boundary Register drivers create pseudo-random patterns
while being clocked in Run-Test/Idle. A cooperating IC (U2) can be set up as a
Linear Feedback Shift Register (LFSR) to capture a test signature in its Boundary
Register input cells. The intervening data path is thus tested with random patterns
with the resulting data undergoing signature analysis compaction [Nadi77]. The
compacted signature can then be read out and compared against a known-good sig-
nature. (The known-good signature could be “learned” by exercising this test on a
known-good board.) One point to note, if the signature received is not good, that
indicates a failure of the data path but gives no detailed diagnostic information.
37
The use of pin adjacency data, integrated with knowledge of the workings of a test algorithm, can
be used to enhance the diagnosis in other cases, such as standard Boundary-Scan interconnection
tests. Again, the assumption is that shorts and opens are likely to be caused by solder defects, so
the diagnostic reports should use the words “probably located at”.
38
This parallel operation may not be possible if the allowable variations in how the ICs are clocked
are not mutually compatible.
3.3 Porting Boundary-Scan Tests 145
Data
Path
Logic
U1 U2
TDI TDO
DataPath
Fig. 3.19 Two cooperating components provide stimulus vectors and capture a signature response
for data path logic
The question sometimes arises, “Can I port a Boundary-Scan test from one applica-
tion to another?” This usually happens when someone creates a Boundary-Scan test
in one setting (say for example, prototype debug) and now wants to run this test in
another (say, production test). The answer is “yes”, but there is a new and rather
exciting opportunity here that many people miss. To see this, consider the historical
root of this question.
Before Boundary-Scan came about, people had to construct digital tests (typi-
cally, for individual ICs) manually39 with a great deal of engineering sweat. It could
take weeks or even months for larger, more complex ICs. Naturally, after expending
this much talent and time, if the test was to be used in a new context (say, ported
from an IC production tester to an In-Circuit board tester) the difficulties in porting
this test were usually much less than redeveloping the test from scratch. This recog-
nizes there is a great deal of intellectual value embedded in the test vectors.
Figure 3.20 shows how one might manually develop a digital test for several similar
applications. The key thing to note here is that both the test creation effort and each
debug/porting effort may be an exhaustive process.
This model for developing and porting test vectors has been around for a long
time, even creating its own industry. It is natural at first, to imagine that you would
want to use the same model with Boundary-Scan tests. However, there are impor-
tant differences with Boundary-Scan tests that make this approach wasteful and
even counterproductive. Figure 3.21 shows how Boundary-Scan tests are developed
for similar applications.
39
Automated test generation for general ICs is fairly youthful, and it tends to generate tests of hor-
rific size, unsuited for board/system test purposes.
146 3 Boundary-Scan Testing
Gather Data
Debug and Debug and
Manually
Release for Release for
Analyse Create Test
Application A Application B
IC in Depth
PortTest
Fig. 3.20 Developing and porting a manually generated test for similar applications
Debug and
ATPG for
Release for
Application A
Application A
Gather Data
BSDL and
Netlist
Debug and
ATPG for
Release for
Application B
Application B
PortData
With Boundary-Scan you have Automatic Test Program Generation (ATPG) soft-
ware that actually generates test vectors and diagnostic information used by that same
test when it is executed. The ATPG software should be able to generate the entire test
in a time frame measured in seconds rather than weeks. This is the first major differ-
ence. The second comes from the realization that the manually generated test does not
have diagnostic information accompanying it. It is essentially a go/no-go test. When
it fails, you typically get a report that says something like “Output pins 38, 39, 44
failed at test vector 19287”. For this same example, a Boundary-Scan test will give a
much more thorough diagnostic that can include input pin diagnostics.40
If at all possible, when porting a Boundary-Scan test, you should not port the test
vectors, but rather, port the basic information of the device(s) participating in the
test and the structure of their interconnect. This amounts to porting the BSDL and
netlist information for most applications. Then the ATPG software used by a given
40
When an In-Circuit test for a non-scan IC fails, we can only report what we see failing, not what
might be the cause of the failure, unless we have used an extensive simulation that can provide this
correlation. This will add additional time to the test development process if indeed it is practical at
all. Further, the assumptions used by the simulation model may cause improper diagnoses.
3.4 Boundary-Scan Test Coverage 147
application can (in a few seconds) construct a test optimized for that application,
complete with sophisticated diagnostics. If instead, you port a Boundary-Scan test
the old way by translating its vectors, you will find that it will lose its diagnostic
capabilities, resulting in a go/no-go test only.
There is a language called Serial Vector Format (SVF) that is being maintained
by Asset Intertech Inc.41 This language can be used to port vectors among applica-
tions, although with the problems mentioned above. This language will allow the
porting of (many) Boundary-Scan tests and also has the advantage of being
comparatively terse and thus frugal with disc space.42
An objection sometimes heard about SVF is that it can only describe a subset of
legal 1149.1 state transition sequences. For example, the compliance verification
test sequence given in Sect. 5.1.10 (page 195) cannot be expressed in SVF. This type
of test, in places, will specify a precise trajectory through the state diagram. This is
where SVF, in the interest of being terse, breaks down. It cannot specify all legal
transitions. So beware that using SVF will first convert your full-featured diagnostic
test into a go/no-go test, and that it may modify the state transition sequences in
your tests to fit the limitations of the language.
The collection of Boundary-Scan shorts, opens and interaction tests, taken together,
can provide very good defect coverage for a board. Of course, those parts of a board
not addressed by Boundary-Scan, such as the analog and mixed signal portions as
well as digital components without Boundary-Scan must still be addressed, and this
is where conventional board test ATE will still shine.
The paper [Hird02] gives a concise definition of defect coverage and shows how
to actually measure the coverage of board tests. This is done by aggregating the
coverage of all the “smaller” tests that make up a full board test. This paper shows
how to enumerate a set of potential defects (called the “Defect Universe”) and then
how to measure the effectiveness of each test against this set. This is done by answer-
ing the question “What does it mean when this test passes?”. A simple example
illustrates this. Consider the simple resistor, accessed with nails, shown in Fig. 3.22.
Fig. 3.22 A simple In-Circuit test of resistor RAn In-Circuit test will literally measure
the value of resistor R. In so doing, when the test passes, you then know the resistor
must be present, must be the correct value, must be basically “live” and its pins can-
not be open or shorted together.43
41
Try the site map at www.asset-intertech.com to find specifications for Serial Vector Format.
42
This terseness also means that it is highly unreadable by humans, so don’t expect to debug a test
written in SVF. It is advised that only mature, fully debugged tests be converted to SVF.
43
These are five of the eight properties that make up the “PCOLA/SOQ” model of [Hird02]. The
orientation property is a “don’t care” for resistors (they are unpolarized). The two remaining prop-
erties (alignment and joint quality) cannot be measured by electrical tests including those provided
by Boundary-Scan.
148 3 Boundary-Scan Testing
If this same resistor has no nail access, but it is used as a series termination resis-
tor between two Boundary-Scan device pins where one is driving and the other is
receiving, then a Boundary-Scan interconnection test will also answer certain ques-
tions about the resistor when it passes. In such case, the resistor must be present,
must be basically “live” and its pins cannot be open. Note the correct resistor value
and a short across its pins cannot be tested. So Boundary-Scan, not generally con-
sidered an “analog” test, can actually provide significant test coverage for such
components. See also [Park03] for test coverage of Boundary-Scan tests using the
“PCOLA/SOQ” defect model.
3.5 Summary
To conclude, we have seen in detail how the 1149.1 architecture can be used to
implement IC, board-level and system-level tests. There is more that can be done;
this is the subject of the next chapter on advanced Boundary-Scan topics.
This chapter has highlighted some of the practical issues seen when attempting
to do Boundary-Scan tests on real boards and systems. For example, the fanout of
control cells to driver enables on-chip will interact with board-level interconnection
topologies to create particular cases of faults that need special attention during test.
Boundary-Scan tests taken as a whole, along with supplemental tests tradition-
ally performed by board test ATE, can provide very respectable test coverage for
board defects. This is true even when traditional bed-of-nails access is much less
than 100 %. But most importantly, Boundary-Scan tests can often be created com-
pletely automatically from board construction data and BSDL information, without
need of time-consuming debugging.
Chapter 4
Advanced Boundary-Scan Topics
As this book goes to press, the 1149.1 Standard is in its 25th year of existence.
Chapter 3 discussed the most basic and general uses of the Standard. This chapter
will examine some other uses that have been proposed or have been implemented in
some quarters.
Some of these advanced uses are clearly devoted to testing. For example, indi-
vidual ICs can be tested during production for DC parametric performance (see
Sect. 4.1). A system can be unobtrusively observed during its operation using
Sample Mode test (see Sects. 4.2 and 4.3). Devices that do not themselves contain
Boundary-Scan can be tested by surrounding Boundary-Scan devices (see Sects. 4.4
and 4.5). Multi-Chip Modules (MCM) and other packaging hierarchies can be
tested (see Sect. 4.7).
However, some of these topics, such as firmware development support (see
Sect. 4.8) and In-System Configuration (see Sect. 4.9) are examples of applications
that are not obviously aimed at testing. Indeed they show how 1149.1 may add value
to a system beyond the realm of testing, which makes Boundary-Scan appeal to a
wider audience. Even now, the promise for new applications is still strong.
Most of the attention paid to Integrated Circuit test is focused on the testing of the logic;
does the circuit meet its logical function? Yet there is another realm that is also critical,
that of ensuring an IC’s DC parameters are within specification. Some of these are:
• Input voltage levels; verify that a range of voltages appearing on an input are
perceived by the IC as logic “0” or logic “1”. These parameters are termed VIL
(voltage, input low) and VIH respectively.
• Output voltage levels; verify that voltages produced on outputs are within speci-
fications for logic “0” and logic “1”. These parameters are termed VOL (voltage,
output low) and VOH respectively.
Interface Wiring
Analog Subsystem
Relays
System Circuitry
Precision
Programmable
Measurement
Load
Bypass Unit (PMU)
Instruction
TAP
Controller
TDI TDO
TCK
TMS PMeasure
Fig. 4.1 The analog testing subsystem of an IC tester is used to switch load and test resources to
measure analog parametric properties of an IC
• Output current drive; verify that an IC output, while producing a valid voltage
for logic “0” or logic “1” is able to sink or source a rated current. These param-
eters are termed IOL (current, output low) or IOH respectively.
• Disabled output leakage; verify that an IC output, when disabled, has a leakage
current IOFF within specification.
Testing for these parameters may need voltage or current measurements, often
requiring the provision of specific DC loading while the measurement is taken. IC
testers containing analog test subsystems such as shown in Fig. 4.1, routinely per-
form these tests on ICs at wafer test or package test as appropriate. These parame-
ters are typically not tested any other time.
A difficulty is that some of these parameters relate to specific conditions at out-
put pins. These conditions, like driving an output high, low or disabling it, require
us to coax the internal logic of the component into setting them up for us. If the IC
is complex, it can take a lot of work to set up these conditions. Sensitive current
measurements, particularly for small currents seen during leakage tests, may take
significant time on the order of (say) milliseconds. If a component contains dynamic
logic, millisecond measurements could exceed the ability of the logic to retain its
state without some (noisy) keep-alive sequencing being supplied to it.
Testing parameters such as VIL and VIH can also be difficult to set up. In essence,
stimulus to the IC logic is supplied using marginal voltages for these parameters and
if the outputs behave improperly, the test fails. It may be difficult to interpret the
result into a diagnostic indicting specific input pins.
4.2 Sample Mode Tests 151
Boundary-Scan ICs can avoid many of these difficulties since the Boundary-
Scan facility has direct control of IC outputs and can observe IC inputs.1 For exam-
ple, it is a simple matter (using HIGHZ or EXTEST instructions) to turn off output
drivers for IOFF measurements. In principle, using 1149.1 it should be possible to
completely automate the development of many DC parametric IC tests that today
require much tedious engineering to prepare. This automation will be immediately
useful to ASIC foundries where the preparation of DC parametric tests for customer-
supplied IC designs is currently a challenge. Indeed, they may actually be able to
save their customers time and money because of 1149.12 rather than in spite of it.
1
Warning! If an IC input pin is attached directly to a Boundary Register cell without an intervening
input buffer, then input parametric tests may prove that the Boundary Register works within DC
parametric limits, but not prove the same for the System Logic.
2
See also [Sunt02] for a discussion of how the 1149.4 standard (see Chap. 7) can be used to test IC
parametrics with very little access to IC pins.
3
Differences in the propagation delays of these buffers represent a source of skew for this example.
Another source of skew is simply the wiring that distributes the clock signals. On boards, ICs may
be widely separated so that differences in path lengths may be significant.
152 4 Advanced Boundary-Scan Topics
D Q
Q1 D Q
Q2
CK1 CK
CK2 CK
SYSCLK
Skew1
SYSCLK
CK1
Valid Valid
Q1
thold1
tprop1 tsetup2
CK2
Skew2
Valid Valid
Q2
thold2 tprop2 tsetup1
1ClkSkew
Fig. 4.2 A simple circuit and its timing diagram showing setup and hold times, and the effects of
system clock skew
signals CK1 and CK2, shown as skew1 and skew2. When a rising edge occurs on
SYSCLK, both Q1 and Q2 retain their data for time thold1 and thold2, then become
unpredictable until times tprop1 and tprop2—the flip-flop propagation delays—
have expired. Then, to properly set up the data before the next SYSCLK occurs,
times tsetup1 and tsetup2 must be observed.
Now consider Fig. 4.3 where we have added TCK distribution to the same sim-
ple circuit where components 1 and 2 now have Boundary-Scan. SAMPLE mode is
driven by TCK and we now have an asynchronous sampling process going on in the
same ICs, driven by TCK.
We see the same timing diagram for the system operation of the flip-flops. Below
that is the timing for the operation of the Boundary-Scan SAMPLE function. There,
we see skews on TCK distribution. The two TAPs are slightly skewed as they pro-
ceed from Select-DR-Scan to Capture-DR. Once in Capture-DR, the next rising
edge of TCK will cause the data on Q1 and Q2 to be captured. What concerns us is
the relationship of the timing on Q1 and Q2 to the setup times of the Capture (CAP)
flip-flops. As shown in Fig. 4.3, there is not enough setup time for Q2 to be properly
sampled by TCK1.
4.2 Sample Mode Tests 153
D Q
Q1 D Q
Q2
CK1 CK
CK2 CK
SYSCLK TCK TCK
TCK1
TCK
TCK2
Skew1
SYSCLK
CK1
Valid Valid
Q1
thold1
tprop1 tsetup2
CK2
Skew2
Valid Valid
Q2
thold2 tprop2 tsetup1
TCK
TCK1 Skew
TCK1
TCK2
Fig. 4.3 Simple circuit showing the relationships between the system clock and TCK during
SAMPLE operation
During SAMPLE mode, it is quite possible that the setup and hold time require-
ments of the Capture (CAP) flip-flops will be violated unless some careful measures
are taken. Now, because many newly designed digital systems are being clocked at
154 4 Advanced Boundary-Scan Topics
rates that already stress technological limits, this problem of controlling errors and
skews in two asynchronously operating clock systems is a real challenge.
One possible solution (that is often not possible without specific design effort)
involves interrupting the system clock very briefly while applying the critical TCK
that performs the data capture. This introduces the difficulty of interrupting a clock
without creating hazardous clock slivers. Also, there is a propensity for many new
components to be internally clocked with their own clocking subsystems that are
phase-locked to the board-level system clock. Phase-locked clocks cannot tolerate the
phase jitter that an interrupted system clock would inject. These challenges, though
not insurmountable, make SAMPLE mode testing much more difficult to implement.
An approach to solving this problem has been documented [Jose93] where a
special variant of the SAMPLE function was implemented. (It was given a new
name since it was not compliant with the 1149.1 SAMPLE definition.) This instruc-
tion effectively coordinates the capturing of data in Capture-DR with the system
clock, to control the timing problems shown above.
4
Note that this work [Wagn91] was not done with an 1149.1 compliant design although there is no
reason why it could not be as the authors point out. Locating the MISR that monitors several TDO
pins in an 1149.1 compliant component may be stretching the rules of the Standard.
4.4 Non-scan IC Testing 155
MISR
TDI
TDO
Concurnt
Fig. 4.4 Concurrent sampling of component I/Os during system diagnostics, with sampled data
compressed in a multiple-input signature analysis register (MISR)
Boards will still contain non-scan ICs that require testing for the foreseeable future
[Hans89b, Park89]. Such a situation is shown in Fig. 4.5 where a non-scan device (U7)
is connected to some Boundary-Scan ICs and has some tester nail access as well.
The non-scan IC can be tested by placing scanned ICs U3 and U4 in EXTEST.
ICs U1 and U2 should be in BYPASS (or CLAMP or HIGHZ) to keep their contri-
bution to the shift chain as short as possible. ICs U3 and U4 will receive some of the
output data from U7 (at Capture-DR) and will supply some of the input data to U7
(at Update-DR). Physical nails will supply the rest of the stimulus or receive the
remaining IC output signals. We must coordinate our physical nail drivers with
Update-DR and look for IC outputs on our physical receivers at Capture-DR as in
Fig. 4.5. In this way, we can approximate fairly closely a simple unformatted “truth
table”5 test for U7 (Fig. 4.6).
5
This cannot hope to approach the timing accuracy that a tester with full nodal access can enjoy,
since some of our resources are controlled by Boundary-Scan resources through intervening TAPs
in several dispersed ICs. We do not have control of the skews and errors that these will introduce.
156 4 Advanced Boundary-Scan Topics
U1 U2
TDI
U7
U3 U4
SiNail TDO
Fig. 4.5 Testing a non-scan IC U7 with a combination of physical nails and Boundary-Scan pins
TCK
TAP
Update-DR Select-DR-Scan Capture-DR Shift-DR
State
BScan Drivers
BScan Receivers
Fig. 4.6 A timing diagram that shows how Boundary-Scan resources must be coordinated with
the resources of a host ATE system
4.4 Non-scan IC Testing 157
Undetectable
Short
U1 U2
TDI TDO
UndShort
Fig. 4.7 Shorted inputs on a NAND gate that may not be detectable when tested by ordinary
Boundary-Scan drivers
6
A homing sequence requires the tester to apply input patterns, examine component outputs, and
make decisions as to what patterns to apply next based on the observed outputs. If the outputs that
must be observed are only visible by means of the scan process, this greatly complicates the deci-
sion logic.
158 4 Advanced Boundary-Scan Topics
RT
C U
C U CU
U1 U2
T DI TDO
ParaTerm
Fig. 4.8 A Boundary-Scan testable node that has a termination resistor to eliminate noise
4.6 Mixed Digital/Analog Testing 159
Analog
Analog
Signals
Signals
Digital Analog
Core Core
Digital Digital
Signals Signals
TDI TDO
MixedSig
Fig. 4.9 A mixed digital/analog IC with the Boundary Register partitioning the digital from
the analog
shown in Fig. 4.9. (Note, mixed-signal ICs can also be implemented with 1149.4
technology as described in Chap. 7.)
By partitioning the digital logic from the analog circuitry with the Boundary
Register, it is possible to write tests that can check the digital portion of the compo-
nent directly. Further, one can set up digital values to stimulate the analog circuitry
directly for subsequent analog measurements.
One great benefit of this partitioning is that it can make tests for the digital logic
completely deterministic. Without Boundary-Scan, we might have to apply analog
inputs to a device in hopes of setting up the proper digital stimulus conditions for
testing. However, analog circuits are inherently “noisy” from a testing point of
view. The quantization of analog signals into digital values will often show varia-
tions that are completely acceptable from an operational standpoint, but frustrate
our effort to apply known, repeatable digital signals during a test. With Boundary-
Scan, we can also apply digital tests with extreme values that fall outside the normal
domain of operation of the analog circuitry. For example, an analog filter front end
to a digital circuit might not be able to slew from an “all zeroes” digital value to an
“all ones” value in two successive tests.
Figure 4.10 shows two ICs with Boundary-Scan that communicate by differen-
tial signaling. Differential signaling is an analog technology,7 but is a common tech-
nique often found in “digital” designs. Many digital designers would argue that
differential signaling is a digital technology, but it is not generally possible to insert
Boundary-Scan cells directly in the differential pathway; they must be placed
(as shown) before or after the differential conversion. This leaves us with a testing
7
From the point of view of the 1149.1 Working Group, differential drivers and receivers should be
viewed as instances of the analog/digital configuration shown in Fig. 4.9.
160 4 Advanced Boundary-Scan Topics
SIG+
+
-
SIG-
TDI TDO
Diffrntl
SIG+
+
A -
SIG+
+
B -
SIG+
C +
Reference -
Circuitry
DiffCase
problem because we have two signals controlled or observed by single cells. These
signals can suffer opens and shorts like any others. Today’s consensus is that this
problem should be treated as follows:
• design differential structures with Boundary-Scan as shown in Fig. 4.10.
• use the PORT_GROUPING attribute in a BSDL description (see Sect. 2.3.7 on
page 67) to identify the paired differential signals, whether they are voltage or
current signals, and which signals are positive and negative.
• conduct test generation as before for the positive portion of each differential pair.
Test diagnostics routines must be made aware of the negative signal pairing for
generating effective repair instructions.
4.7 Multi-chip Module Testing 161
8
Other components may also be placed, such as surface mounted capacitors. Integral thin-film
resistors, capacitor, and even inductors may be part of the substrate as well.
9
MCMs still exist today, and have been joined by System on Chip (SOC) technology as well as
“stacked ICs”, where multiple dies are bonded atop one another in a vertical stack. These technolo-
gies allow extraordinary density improvements.
162 4 Advanced Boundary-Scan Topics
...
(Not to scale)
Signal Power Ground Signal Signal MCMSubst
Fig. 4.12 Multi-Chip Module shown in cross section. This example shows a multi-layer ceramic
PGA made of multiple dielectric and metallization layers. Bare IC die and other discrete compo-
nents are mounted on the top surface
Boundary-Scan has much to offer in the quest to bring MCM technology into
mainstream applications [Poss91].
That said, there is little to add about what Boundary-Scan can do because an
MCM is essentially a very small board, with little chance of being effectively probed
with In-Circuit probes. The various interconnect, bus, connection or BIST tests
already outlined are quite useful. Additional performance testing that may be needed
will not enjoy much enhancement because of Boundary-Scan—as is also the case
with boards.
It is important to note that 1149.1 does not form a hierarchy; for example, if you
place a number of 1149.1 components onto an MCM, you can test it as a small
board. When you place the MCM onto a board with other MCMs and individual
1149.1 ICs, you cannot visualize that MCM as a monolithic individual component
containing 1149.1. The MCM is still a collection of N 1149.1 ICs. For example,
when programmed for BYPASS operation, the MCM does not have a single-bit
BYPASS register; it is N bits long. The MCM contains N Instruction Registers, each
with its own repertoire of instructions, and so forth. Thus, an MCM must be docu-
mented with its own netlist10 and set of BSDL descriptions. Note in the late 1990s
we have seen the advent of “silicon core” technology, where several entire ICs may
be laid down on a monolithic piece of silicon. Some research [Jarw94] has been
done for this problem,11 but it looks like we will have the same result as we have
seen for MCMs. This could change if silicon cores are re-synthesized such that their
1149.1 circuitry is merged into a compliant design with a single BSDL description.
10
The netlist information need not be completely specified for board testing application if you
assume that once successfully fabricated, the internal MCM interconnect will not break. It is suf-
ficient to document only those nodal connections that reach an MCM I/O pin. Leaving internal
interconnects undocumented may ease concern for those who want to keep this information secret.
11
Jarwala’s work specifically addressed MCMs but the problem discussed is the same.
4.8 Firmware Development Support 163
For some time now, microprocessors have offered emulation support for hardware
development systems. These development systems allow a system designer (for
either hardware, firmware or software) to gain control of the microprocessor and use
it as a tool to control and observe the system. For example, a hardware development
system would allow a designer to halt the processor, examine or modify processor
registers, single-step it through a sequence of instructions, set software breakpoints,
and so on. Add to this the ability to display the point in the program being executed
(in both assembly code and higher-level code) and to display additional measure-
ments taken from important system signals (by clip-on probes) and you can appreci-
ate the power of such a tool. Indeed, a new microprocessor entering the marketplace
without such support available is not likely to be successful.
The hardware development system is usually interposed between the micropro-
cessor and the system by means of an isolated and instrumented socket that is placed
into the board where the processor would be. The processor itself is contained in a
remote pod where the board signals are delivered and the development system can
monitor them.
Today, several trends are making the traditional hardware development system
obsolete. First, the higher operating frequencies we are seeing, along with higher
processor pin counts make sockets12 and umbilical cables quite unreliable. Second,
each new processor, even from the same vendor, requires a massive investment in
the design of a complementary development system. Third, yesterday’s single pro-
cessor is today’s family of processors, each with a smaller market share and shorter
market lifetime. This adds up to a situation where traditional development systems
are increasingly costly to develop and yet each addresses a smaller share of the
market with a shorter lifetime.
The 1149.1 Standard can help with this problem [Gols00]. After all, part of its
name is “Standard Test Access Port”. If Boundary-Scan exists on a processor, it is a
relatively simple matter to implement additional instructions that will help support
hardware development systems through the TAP port. This immediately solves the
first problem concerning access and operating frequencies. Second, with some
cooperation from IC merchants (who have much to gain if development support is
easily available) it is possible to standardize on a small set of development support
methodologies. Such standardization would allow one investment in a development
system to support many processors.
An example of a processor with 1149.1 support for development is the Advanced
Micro Devices Am29035 [AMD91]. This IC allows access to a set of hardware
development support functions using the 1149.1 port. These same functions are also
available from the processor edge pins, if you can get to them. Via 1149.1, you can
12
Packaging techniques such as Surface Mount Technology (SMT) and Ball-Grid Arrays are
rapidly making sockets obsolete.
164 4 Advanced Boundary-Scan Topics
access these functions through four wires without physically disturbing the board or
system it is mounted in. Indeed the processor could be a member of a chain of
1149.1 ICs and we could still access its support functions, as well as those of other
ICs in the chain.
13
However, if the rate of programming failure is more than a few percent, this could translate into
a lot of board repair work dedicated to replacing programmable devices, which might negate these
advantages.
14
These devices are themselves becoming quite large with high pincounts, which aggravates han-
dling difficulty.
4.9 In-System Configuration 165
desirable. This group has created IEEE Standard 1532 [IEEE02] that will allow
users to program multiple devices with device family independence and vendor
independence. All 1532 devices support 1149.1 Boundary-Scan. This new standard
is covered in Chap. 9, and in more detail in [Jaco03].
There are several underlying technologies used in PLD devices. Some non-
volatile devices look a lot like EEPROMs and some are like FLASH RAMs. In most
cases, the common thread is that you pump bits into them and then allow them to
“cook” until the bits are successfully programmed. This can take anywhere from
several microseconds to tens of milliseconds, per “word” of data. When the time to
move data (serially) into one or more devices is a fraction of the cook time, it becomes
attractive to program multiple devices in concurrently. By “concurrently”, I mean in
time, not that we are using separate Boundary-Scan chains. Here is how it is done:
• Step1: Initialize a chain containing one or more programmable devices and
assure the integrity of the chain.
• Step 2: Program each non-ISC device into a benign state (load BYPASS, CLAMP
or HIGHZ as appropriate) and use PRELOAD on the ISC devices to set up their
output drivers for a benign condition.15
• Step 3: Load the ISC device instruction registers with the ISC_ENABLE instruc-
tion16 while preserving the non-ISC instruction registers with the choices made
in Step 2.
• Step 4: Load the ISC device instruction registers with the ISC_PROGRAM
instruction. This is the workhorse instruction used to load programming
information.
• Step 5: Shift data/address information for all ISC devices into the chain.
(Shift appropriate “don’t care” data into the non-ISC device data registers.)
• Step 6: Proceed to the Run-Test/Idle state and clock the chain until the longest
“cook” time has expired.
• Step 7: If there is more data for any ISC device, return to Step 5. If some devices
are completely programmed, simply reprogram their last address/data over again.
• Step 8: Load the ISC device instruction registers with ISC_DISABLE. Go to the
Run-Test/Idle state and clock the chain for the number required by the longest
ISC device.
• Step 9: Proceed to Test-Logic-Reset to bring the ISC devices into their
programmed operational states.17
15
Some ISC devices will not have their outputs controlled by the Boundary Register, but rather will
simply disable all drivers. This mirrors the choice you have when implementing INTEST (see Sect.
1.5.2 on page 37).
16
ISC_ENABLE sets up an environment for ISC programming. It must be executed before any
other ISC instruction. The ISC_DISABLE instruction removes this environment.
17
Note you can bring the ISC devices into their operational states in a particular sequence by load-
ing their instruction registers with the BYPASS instruction one-by-one while the others remain in
ISC_DISABLE.
166 4 Advanced Boundary-Scan Topics
Write Enable
16-Bit Address
IC 2
Flash RAM
IC 1
32-Bit
Data
TDI TDO
Write Enable
FlashProg
some time. Since most Flash RAMs are quite deep, the total time to program the
device may be unacceptable.
This process can be accelerated by a factor of three if there is access to the Write
Enable signal, perhaps with an ATE resource nailed to that signal. Then we only
need to scan in the data/address bits. Once these are in place, an ATE driver can
pulse the Write Enable line18 in real time rather than in “scan time”. More accelera-
tion can be had if several Flash RAMs are present, and they can be programmed
concurrently. This will be a function of the sophistication of the programming soft-
ware being used.
18
If the Write Enable driver in IC1 can be disabled via Boundary-Scan, then this would allow the
ATE system to pulse that signal without needing to overdrive IC1’s driver.
19
This modification is simpler than that shown in [Nade95]. The design in Fig. 4.14 does not sup-
port fault insertion while EXTEST is in effect. The design in [Nade95] is not strictly compliant
with the standard since it can interfere with the non-invasive definitions of instructions such as
BYPASS, but it will work well with most tools.
168 4 Advanced Boundary-Scan Topics
Shift Out
FI-Enable
Reset
D Q
Update-FI CK
Mode
G
Parallel In 0
Parallel
Shift-DR G
Capture Update 1
Out
0 Reg Reg
D Q D Q
1
CK CK
Fig. 4.14 A BC_1 Boundary Register cell modified to support fault insertion
The content of the Update-FI Flip-Flop is OR’ed with the Mode line supplied by
the TAP Instruction decoder. If Update-FI contains a “0”, then it has no effect on the
normal operation of what is essentially a BC_1 cell design. If the Update-FI Flip-
Flop contains a “1”, then it overrides the Mode signal and forces the cell to insert
the value contained in the Update Register cell, regardless of what instruction is
loaded in the Instruction Register.
Here is how you would use this capability. First, as with any 1149.1 activity, you
would reset the chain of devices to the Test-Logic-Reset state. This asserts the
RESET signal so that the Update-FI Flip-Flop is cleared. Then you would execute a
PRELOAD sequence (which is non-invasive) to preload the Boundary Register with
a set of stuck-at “0” or “1” values for any pin(s) of interest, both input and output.20
(Note you must to assign a “0” or “1” to all cells, but only those later “fault insertion
enabled” will actually substitute faulty values.) Then you would load the instruction
register with the INSERT_FAULT instruction which targets the Boundary Register,
but now clocks only the Update-FI Flip-Flops at the Update-DR state. You would
shift in a pattern of “0” and “1” bits such that only those pins that should be faulted
(either high or low) are activated. Once passing Update-DR the selection of faulted
pins would be injected with faulty data specified in the PRELOAD sequence.
You can insert as many faults, of either polarity, to any set of equipped I/O pins
on as many Boundary-Scan devices as you want. This can be used to evaluate the
effectiveness of other test/diagnostic techniques, such as background system diag-
nostic tests. This was a principle motivation for the [Nade95] work, done for the
telecommunications industry.
20
Note, if this cell design is applied to output enable control cells, then you can “fault” a 3-state
driver, causing it to be “stuck-at-enabled” or “stuck-at-disabled”.
4.12 Power Pin Testing 169
Design for Testability (DFT) is a subject covering a huge amount material. The
1983 survey by Williams and Parker [Will83] is still remarkably current in its enu-
meration of DFT techniques (it lacks Boundary-Scan of course), but many of the
contexts have changed. For example, signature analysis [Nadi77] testing is now
conducted on-chip, though it started as a board-level technique. This reflects the
incredible increase in the density of Integrated Circuit (IC) components. In 1983,
the 1149.1 Standard would have been largely impractical because the logic needed
to implement it would have been a large fraction of an IC. Today, we are seeing ICs
designed with significant amounts of on-chip testing circuitry, including 1149.1.
Without DFT, a VLSI component might not be economical to produce in volume.
Other technologies are also driving the need for DFT. In the board domain, we
see VLSI components contained in ever-shrinking packages placed ever closer
together on boards fabricated with ever-smaller trace widths and increasing num-
bers of layers. Two-sided component placement, blind vias, Surface-Mount
Technology (SMT), Tape Automated Bonding (TAB), Ball-Grid Arrays (BGAs),
Chip-on-Board (COB), daughter-board structures, Multi-chip Modules and stacked
ICs are some of the factors that threaten existing board testing technology. The
phrase “yesterday’s system is today’s board” is quite true. Indeed, today’s ICs can
be complex systems—hence the term “System-on-Chip” (SOC).
One complaint I have had about DFT literature (for which I am partly responsi-
ble) is that the word “Test” embedded in “DFT” is all-inclusive. It should not be. As
with the title of this chapter, DFT should be qualified by the type of testing antici-
pated. For example, there should be Design for In-Circuit Testing (should this be
called DFICT?) and Design for Edge-Connector Functional Testing (DFECFT?)
and Design for Integrated Circuit Testing (DFICT?—no, already taken.) and so on.
The type of testing to be done greatly influences your DFT decisions. For example,
many In-Circuit testing DFT rules [Bull87] are mechanical in nature, to facilitate
In-Circuit probing. These are irrelevant for edge-connector testing. We need to
consider DFT as “DFxT” where “x” is the target test technology.
Along with the type of testing, we must not forget the target failure mechanisms,
the “real” faults1 that we are trying to detect. Unfortunately, we are often guilty of
testing for failures that are not prevalent because they are convenient (that is, sup-
ported by our tools). Untold wealth has been spent simulating single-stuck-at (SSA)
faults and calculating dictionaries for them when prevalent real defects, such as
shorts, are not adequately described by the SSA model. Fortunately we have been
lucky that SSA derived tests often will detect non-modeled failures, but accurate
diagnosis has been a problem. Can we depend on luck in the future?
Boundary-Scan is primarily targeted at board level manufacturing faults—the
havoc of the production process—affecting digital components. These include, in
rough order of prevalence:
• Solder defects creating opens (too little solder).
• Solder defects creating shorts (too much solder).
• Misloaded components, including wrong or missing components.
• Dead components or components with electrical damage to input or output
buffers.
Boundary-Scan does not directly attack problems such as AC timing (delay test)
for example. If a device implementing 1149.1 does not contain a self-test capability
(such as RUNBIST) then it can completely miss deeply embedded internal faults
too. If either of these failure mechanisms are important to you, you need a different
strategy for them.
IEEE/ANSI Standard 1149.1 [IEEE99] is the first standardized DFT technology.
Other techniques exist [Will83] such as Level-Sensitive Scan Design (LSSD) and
Built-In Logic Block Observer (BILBO), but they have not achieved the status of a
standard. Generally, there is little available support (that is, software) for these
approaches; and the support that does exist typically is not transferable.2 For exam-
ple, an LSSD design system may have been used in the design of a board, but it
cannot readily transfer test information to an ATE system from an outside vendor.
The 1149.1 Standard, along with BSDL, is a major step towards surmounting
these obstacles. The Standard gives the IC community, the Electronic Design
Automation (EDA) community, and the ATE community (among others) a common
target. BSDL creates an interchange capability so that the customers common to
these communities can readily utilize a selection of tools from different vendors.
The selection of “Best-of-Class Tools” will be a revolution in our industry.
1
See [Hird02] for a concise definition of “defect” and a discussion of defect coverage.
2
Of course within large, vertically integrated companies there may be vast quantities of software
support for a particular DFT methodology. However, this software would be largely inapplicable
outside its native environment because of small differences in how other companies might define
similar DFT techniques. (The avoidance of patents is another issue.)
5.1 Integrated Circuit Level DFT 173
We first look at Design for Test concerns that should be observed at the IC level.
Some of these concerns have their effects later at the board or system levels, but
then it may be too late to redesign the IC.
We noted in the section on chain integrity testing (see Sect. 3.2.1 on page 128) that
a short between the TDI and TDO pins on a package was particularly troublesome
to diagnose. Figure 5.1 shows some TAP pin placements. It is natural for them to be
near each other because they are the terminals of the Boundary Register that lies on
the circumference of the die.
Figure 5.1a shows a placement for TDI and TDO pins that maximizes the likeli-
hood that a short could occur between them. This type of layout should be avoided.
Figure 5.1b, c show preferred layouts that reduce the probability of their shorting.3
This leads to our first DFT rule.
TDI
A
TDO
TDO
Ground
TDI
Power
B
C
TDI TDO
PinOuts
3
The main cause of board shorts is the bridging of solder between adjacent pins.
174 5 Design for Boundary-Scan Test
• DFT-1: Place TDI and TDO pins on the end or the corner of a package to
reduce their likelihood of being bridged by solder.
Second, noting that many ICs today require a large number of power and
ground pins, you could contrive placing some of them next to TDI and TDO as
depicted in Fig. 5.1c. In the event of a short, these pins will create a solid “0” or
“1” if they become shorted to a TAP pin. Shorts to other signals might not have
deterministic behavior.
• DFT-2: Place power pins between TDI and TDO pins and other signal pins.
4
Note too that power and ground pins, by nature, are often highly redundant. This leads to test
coverage deficiencies that are often overlooked. See [Tege96] for a discussion.
5.1 Integrated Circuit Level DFT 175
Soope Pic
Fig. 5.2 An oscillograph of a Ground-Bounce induced clock cycle on TCK during Update-DR,
measured at the TCK pin referenced to component ground
the data column again (which is often the case during testing) we will then issue
another TCK to get to Select-DR-Scan, not realizing we are actually there because
of the bounce. This sends the TAP to Select-IR-Scan instead. Since traversing
the data column and the instruction column take an identical protocol on TMS, we
find ourselves attempting to do testing with the Instruction Register between TDI
and TDO rather than the Boundary Register! Of course, this is disastrous to the
integrity of our test.
A debugging tip: if an extra TCK pulse does occur at one of the update states,
you can recognize the problem by examining the bits that are shifted out. Instead of
the expected target register bits, you will see the Instruction Register capture pattern
(because Capture-IR was traversed) shift out. This is another argument for having
fixed bits in the Instruction Register capture pattern since more fixed bits will make
it easier to recognize that the IR column is being traversed. (See rule DFT-5.)
Consider the example shown in Fig. 5.3. Here a large IC generates signals on a
pair of 32-bit buses. In this IC’s normal usage, the two buses are never active at
the same time, as shown in Fig. 5.4. However, the figure also shows how the two
buses could behave when the device is in EXTEST. In this case, both buses can
176 5 Design for Boundary-Scan Test
32-Bit Bus
A IC2
IC 1
32-Bit Bus
B IC3
TDI TDO
ActivBus
S y s te m F u n c tio n EXTEST
A Active A Active
B Active B Active
Time Time
ActivDif
Fig. 5.4 The transition timing for activities on the two buses in Fig. 5.3
produce transitions at the same time. In the worst case, guaranteed to occur in the
interconnect test algorithm5 shown in Sect. 3.2.2 on page 131, all 64 drivers will
change at the same time.6
Deliberately adding skew to the update clocking of the Boundary Register cells
[Maun90] will help to control the magnitude of the switching current transients.
This is shown in Fig. 5.5. Be careful to note that the delays are not inserted in the
system data path so they have no effect on system performance. These delays, per-
haps only a few nanoseconds apiece, are used to deliberately skew driver transitions
in time so that the required supply current demands do not change as quickly in
5
The Standard specifically disallows designers from specifying some maximum number of simul-
taneously switching drivers that is less than all drivers. Further, designers may not attempt to out-
law certain combinations of states driven by drivers.
6
In this case, all drivers are at “0” and then switch to “1”. These two PTVs are used to eliminate
aliasing with power/ground shorts, which are quite common. PTVs can be re-ordered to try to
ameliorate this problem.
5.1 Integrated Circuit Level DFT 177
Shift Out
From G
System 0
Output
Circuitry Pin A
G 1
0 CAP UPD
D Q D Q
1
CK CK
Delay
Delay
From G
System 0
Output
Circuitry Pin B
G 1
0 CAP UPD
D Q D Q
1
CK CK
Delay
Delay
From G
System 0
Output
Circuitry Pin C
G 1
0 CAP UPD
D Q D Q
1
CK CK
Fig. 5.5 Deliberately inserted delays in the Boundary Register control signal paths can be used to
distribute driver edge placements in time
time. There is one fine point to be considered as well; your distribution of control
signals to driver enables (a high-speed system path) will not be delayed. The more
drivers you gang together on a common control cell, the more likely you could
enable or disable a large current flow. Be alert for this when considering how many
driver enables to control with a single control cell, and make sure the delay scheme
shown in Fig. 5.5 is not compromised by grouping your control cells next to each
178 5 Design for Boundary-Scan Test
The bit pattern captured in the Instruction Register upon passing Capture-IR has
useful diagnostic properties as we saw in Chap. 3 in the discussion of 1149.1
Integrity testing (Sect. 3.2.1). Most 1149.1 components have Instruction Registers
with more than the minimum of two bits. If you are creating 1149.1 components,
you can increase the usefulness of the instruction capture pattern by:
• DFT-5: Use higher-order bits of the Instruction Register capture pattern
to implement an informal ID code. The bits captured must be predictable
“0”s and “1”s.
This rule is especially important if you have identical pinouts for the TAP pins
on several different components. For example, the Texas Instruments ICs
74BCT8373 and 74BCT8374 have identical pinouts and identical eight-bit cap-
ture patterns. Thus, if one IC is misloaded in place of the other, we cannot discover
7
This analysis should also take into account any exceptional currents that may exist if shorted pin
drivers conflict with each other or are tied to a supply voltage.
8
Note, increasing use of differential drivers on ICs will help smooth out current surges. In effect,
they steer current to and from a pin pair, with no net change in current for the IC.
5.1 Integrated Circuit Level DFT 179
the misload during Integrity testing, nor will we see a failure during EXTEST
functions. The only way to test for this problem is to perform a functional test on
the IC’s system logic9 capable of discerning the slight difference between the ICs.
Other components have been implemented that capture design-specific data in
the higher-order bits of the capture pattern that are not predictable. They must be
listed as “x” bits (“don’t know” bits) in the INSTRUCTION_CAPTURE attribute
of BSDL. The capture of design-specific data is sometimes done to increase visi-
bility into the TAP decode logic for fault simulation, where critical TAP decode
signals are placed in the capture pattern, making the pattern a function of the pre-
viously loaded instruction. This eases the problem of testing the decode circuitry
at IC test, but does nothing to help differentiate similar components at board test.
The capture of indeterminate data can also lead to indeterminate behavior of
an 1149.1 circuitry. This can happen if you follow this trajectory through the TAP
state diagram: Capture-IR to Exit1-IR to Update-IR. This sequence will load the
design-dependent bits into the Instruction Register and make them the next
effective instruction. To prevent this from being a random instruction, we have
our next DFT rule.
• DFT-6: If design-dependent bits are captured in the Instruction Register,
then any combination of these bits should decode to the same operation.
Since unused bit patterns are required to default to BYPASS, it may be easiest to
arrange that a capture pattern containing random bits also decode to BYPASS.
Engineers rarely study the issue of damage caused by driver conflicts when they
create the basic structures that will become the building blocks of an Integrated
Circuit. The typical reaction of an IC designer when confronted with the question
“How long can your drivers be shorted together before they suffer (some form of)
damage?” is to exclaim that they cannot tolerate any conflicts. Thirty years of
In-Circuit and Functional testing, where driver conflicts are not only tolerated, but
often deliberately induced, say otherwise. The studies done into the question, such
as [Robi83, Bush84], and [Hewl85] were primarily conducted by ATE designers
and users, not semiconductor device physicists.
The studies (of that era) show that some amount of abuse10 can be tolerated. The
two primary damage mechanisms are thermal heating of transistor junctions and
thermal heating that causes full or partial opening of bond wires. In either case, the
9
This test can be implemented using the 1149.1 INTEST function that both of these ICs support.
The test in this case needs to differentiate a latch (‘8373) from a flip-flop (‘8374).
10
Note that the abuse studied was In-Circuit overdrive abuse, which is likely to be more stressful
than driver conflicts, since an In-Circuit tester driver is usually far stronger than an IC driver. Do
note that drivers shorted to Power or Ground suffer worst-case current flows and durations.
180 5 Design for Boundary-Scan Test
Upon examining the example Boundary Register output cell designs shown in the
Standard [IEEE01], denoted as cells BC_1, BC_2, or BC_6 in BSDL, one notices
they have a common characteristic. While EXTEST is in effect, they all capture data
from one of two places, the System Logic,13 or the Update (UPD) flip-flop. However,
11
However, in certain applications where the cost of failure due to reduced component lifetime is
extreme, this may be quite acceptable. Consider electronic health care products or airborne naviga-
tion systems as examples.
12
Be extremely wary to include the time to set up the tester, any reload times, and the time it
requires to determine if a conflict exists. The time cannot be reliably predicted by simply multiply-
ing the TCK cycle time by the number of TCK cycles in the longest expected test.
13
The actual BSDL CELL_INFO triple for this is, for example, (Output2, EXTEST, PI). “PI” is the
parallel input that, for an output cell, must be the System Logic.
5.1 Integrated Circuit Level DFT 181
Shift Out
Fig. 5.6 A Boundary Register output cell design with the capability of monitoring its driver out-
put pad during EXTEST
upon reading the rules in the Standard concerning output cell construction, you see
no rules that require one of these sources. This suggests an improved design14 as
shown in Fig. 5.6.
The self-monitoring output cell design (Fig. 5.6) is capable of reading, during
EXTEST, the output state of the driver at Capture-DR. This value should be the
same as what we previously loaded into the Update (UPD) flip-flop, unless there is
a board-level condition where this is no longer true. There are several such condi-
tions: first, the driver is intentionally Wire-ANDed or Wired-ORed (two-state case)
with some other driver(s) on the board. Second, the driver is not enabled (three-state
case); and third, a defect in the driver or a board-level fault such as a short prevents
the driver from operating correctly. It is this third case that makes the self-monitoring
output cell very useful.
The BSDL description of this cell would look as follows15:
constant SMOC:CELL_INFO := -- Define a Self-Monitoring
-- Output Cell (SMOC)
((OUTPUT2, EXTEST, PO), (OUTPUT3, EXTEST, PO),
(OUTPUT2, INTEST, PI), (OUTPUT3, INTEST, PI),
(OUTPUT2, SAMPLE, PI), (OUTPUT3, SAMPLE, PI),
(OUTPUT2, RUNBIST, PI), (OUTPUT3, RUNBIST, PI));
14
The alert reader will note that this design is virtually identical to the BC_9 cell (page 100) which
was introduced with the 2001 revision of the standard. This revision provides direct support for
rules DFT-8 and DFT-9.
15
This description would be part of a user-defined VHDL package for cell design description as
described in Sect. 2.6 on page 84. The package would be referenced in the entity description for
the IC in a “use” statement. The “SMOC” name would appear in the cell field of the attribute
BOUNDARY_REGISTER (see Sect. 2.3.13 on page 72).
182 5 Design for Boundary-Scan Test
Here, the “PO” field (Parallel Output) implies the driver pad state because the
context is that of an output cell.
Given that this cell design is used in an IC with the attendant BSDL description,
software can look for pad value discrepancies that indicate a shorted node or faulty
driver. This information will be especially valuable when a driver is connected to a
node that does not terminate at a Boundary-Scan receiver; a self-monitoring driver
cell will still be able to participate in Interconnect shorts testing. In another situa-
tion, if a self-monitoring driver is connected to a node that has a single Boundary
Register receiver, the self-monitoring property can be used by the diagnostic rou-
tines to differentiate between a node shorted to Power/Ground and an open solder
connection. This leads us to our next DFT rule.
• DFT-8: Use self-monitoring output cells in the Boundary Register to improve
Boundary-Scan diagnosis of shorts and opens.
Bidirectional pins can be serviced several ways. For example, you may implement
a two-cell bidirectional structure with independent drive and receive cells. You may
implement a single-cell bidirectional structure. The advantage of the single-cell
structure is that it reduces the number of stages (cell count) in your Boundary
Register, which reduces shift time, saves storage space and increases test applica-
tion rates. The advantage of the two-cell design, before Supplement A [IEEE93a] is
that it could monitor the state of the bidirectional pin (by virtue of the receive cell)
regardless of whether the driver was enabled. Supplement A to 1149.1 shows a
much-improved bidirectional data cell design16 that is able to monitor its driver
result at all times. This leads to the diagnostic advantages already outlined for self-
monitoring output cells (see Sect. 5.1.5 above) combined with reduced Boundary
Register length.
• DFT-9: For bidirectional pins, utilize a single-cell bidirectional design with
a self-monitoring capability (such as cell BC_7).
16
The bidirectional cell that has the lack of pin monitoring is known in BSDL as cell BC_6 (see
Sect. 2.6.3 on page 46). The improved bidirectional cell design is known as BC_7. You are urged
to design out the BC_6 design if you currently use them, and use BC_7. Note the 2013 release of
1149.1 has removed the BC_6 design from the standard.
5.1 Integrated Circuit Level DFT 183
The triple “(BIDIR_IN, EXTEST, PI),” for example, shows (see Sect. 2.6.2 on
page 92) that while behaving as an input during EXTEST, the cell captures data
from the pad input buffer (PI = parallel input).
The triple “(BIDIR_OUT, EXTEST, PO),” for example, shows that while behav-
ing as an output during EXTEST, the cell captures data from the pad driver
(PO = parallel output). In the original issue of the Standard ([IEEE90], Fig. 10.22),
the cell BC_6 captured System Logic data (PI).
5.1.8 IDCODEs
These BSDL descriptions allow software to predict the locations of “0”s and
“1”s in the Boundary Register that form an informal ID code.
• DFT-12: Use formal or informal ID codes to differentiate similar components
or revisions of components.
17
In the case where different revisions or manufacturing codes are permissible, you can edit
the BSDL attribute IDCODE_REGISTER to describe multiple device identification bit strings.
(see Sect. 2.3.11 on page 70.)
18
If the control cell has been merged with an input cell, then it must capture the input pin state in
that case. See the discussion of the BC_5 cell (page 95).
5.1 Integrated Circuit Level DFT 185
We have already seen a case (see Sect. 4.5) where a special 1149.1 user-defined
instruction called “LEAK” was used to perform a gross test for the existence of a
nodal termination resistor. “LEAK” is but one example of how some forethought
can be used during IC design to solve sticky, board-level test problems. In practice,
you might be frustrated by not having the privilege of controlling the design of all
the ICs on your board. Thus, you must look for clever ways to test the problem
nodes of your board using just those ICs you do have control over.
• DFT-13: Consider board-level testing problems that will require user-
defined instructions for their solutions before final implementation of
the 1149.1 logic.
Notice that this rule is a guideline for management of the design process. Board
testability needs to be an input to the IC design process.
19
Hyper-Text Markup Language (HTML) is a language used to construct pages accessed on the
World Wide Web. I have seen BSDL files containing HTML commands like “</Bigger>”.
20
One IC vendor I know, after receiving complaints about poor BSDL quality from their Web site,
downloaded some of their own files and verified them. Quite a few contained errors.
186 5 Design for Boundary-Scan Test
21
If an IC has yet to be fabricated, then consider simulating the test patterns against a model of the
IC. This is a good strategy if the model and the resulting IC are good matches.
22
Private instructions may be omitted from this test.
23
The verification of mapping is done to ensure the cell information in the BSDL attribute
BOUNDARY_REGISTER is correct, which can be done using the EXTEST instruction.
24
SAMPLE also captures System Logic values for outputs and control cells, but these cannot be
verified since the data captured cannot be determined from BSDL alone.
25
The complexity can be reduced at the expense of diagnostic resolution.
5.2 Board-Level DFT 187
much shorter. For example, a BSDL verification test for the Intel 80486DX,
based on the elements above, contains approximately 36,000 TCK cycles,
excluding the test for RUNBIST. A manufacturing test for the 1149.1 logic in the
same IC, takes on the order of 7000 TCK cycles, again excluding RUNBIST.
(The RUNBIST function takes over 1,250,000 TCK and CLK cycles.)
• DFT-14: Verify that a BSDL description matches the silicon implementation
of 1149.1 on every component.
Creating a test solely from the BSDL and executing it against the IC on a
tester (or simulator) should perform this verification. For off-the-shelf merchant
ICs, the vendor should be able to provide BSDL and proof of its verification.
Unfortunately, too many IC vendors still do not have a good process for creating,
certifying and maintaining BSDL. You should not assume that a vendor’s BSDL
is verified and up-to-date. Ask questions like these:
• How is your BSDL created?
• How is it verified for syntactic and semantic correctness?
• Is it verified against the actual silicon (or a simulation thereof)?
• How is it distributed?
• How do you notify users about updates or changes that may be needed?
Once we have ICs with robust implementations of 1149.1 and verified BSDL, we
can tackle the problems presented by boards. Some of these problems will be easier
to handle since the ICs should have been designed (see DFT-13) with thought
towards their solution.
Most of the discussion about Boundary-Scan chains has been in the context of sim-
ple chains. Other configurations are possible as well. These can offer some marginal
advantages, but it is important to look at the difficulties these will present to soft-
ware as well.
A simple chain has a single TCK and TMS signal broadcast to all members of the
chain. The TDO signal of the first component is cascaded into the TDI of the next com-
ponent, and so on, until all components have been threaded together linearly. Throughout
this discussion, the optional TRST* pins that may exist on some of the components are
assumed to be driven by a common signal, but we will generally ignore TRST*.
A board may have one or more simple chains. If two exist, for example, and we
want to perform interconnect testing on signals that connect the Boundary Registers
of the two chains, we must operate the two chains in parallel. There is no reason to
have the two chains in different TAP states while testing progresses, so you could
188 5 Design for Boundary-Scan Test
Fig. 5.7 A conjoined chain pair with common TCK and TMS signals, but independent data paths.
Any number of chains could be linked in parallel this way
drive the two TCKs and TMSs from one tester driver each. This realization then
suggests having common TCK and TMS signals on the board, as shown in Fig. 5.7.
This is the first example of a conjoined chain.
The conjoined chain of Fig. 5.7 effectively takes a single TDI/TDO data path and
turns it into a multiple-bit bus. An obvious reason to do this would be to increase the
amount of data shifted through the combined chains per TCK cycle. Note however,
that the individual TDI/TDO paths will very likely have different lengths because
different numbers of components exist in each chain, and each component may
contain registers of differing lengths. This will require care to manage and if the
disparity in lengths is great, it will reduce the throughput advantage.
The second form of conjoined chain (shown in Fig. 5.8) has a common TCK
signal. Then, two otherwise linear chains with independent TMS signals share the
board-level TDI and TDO signals, which can be done since TDO is disabled when-
ever the TAP is not in a shift state. It requires us to operate the chains separately,
which can be done by manipulating the separate TMS lines. This operation is a good
bit more complex because whenever we want to shift data into one chain, we have
to keep the other chain in a non-interfering state, such as Pause-IR or Pause-DR.
While this configuration will work in principle, it does not appear to be of much
practical value; it saves one TAP signal compared to the conjoined chain in Fig. 5.7,
but it does not save any overall shift time and has a more complicated protocol.
Third, we have dynamically reconfigurable chains. These structures are essen-
tially a set of simple chains that have their TDI/TDO data paths linked together by
5.2 Board-Level DFT 189
...
TMS1
Fig. 5.8 A conjoined chain pair with separate TMS lines, common TCK, and shared board-level
TDI and TDO signals
26
The 1149.1 Working Group has not issued an opinion on the merits of dynamic reconfiguration.
This capability seems to be more properly the realm of system-level test bus schemes, such as
IEEE 1149.5.
27
Smaller FPGAs may not contain a permanent 1149.1 facility because of cost considerations, so
the 1149.1 capability may be implemented by programming the devices to have one and later
overlaying that configuration with a mission configuration. The trend today is toward much larger
devices containing permanent 1149.1 facilities.
190 5 Design for Boundary-Scan Test
TDO
TDI ...
TCK1
TCK
TCK2
TMS1
TMS
TMS2 BufrdTAP
Fig. 5.9 A simple chain with buffered TCK and TMS signals needed to avoid overloading
together in the chain ordering, either at the beginning or end of the chain. This way,
the remainder of the chain remains intact. You will need to provide access to the TDI
and TDO signals of the non-volatile segment of chain.
• DFT-16: If there are field-programmable components in a chain of 1149.1
devices, group them together in the chain order and place the group at either
end of the chain.
28
The buffering IC cannot itself be an 1149.1 design in the same chain (unless it is maintained in
BYPASS) since its Boundary Register, during EXTEST, would prevent the TCK/TMS signals
from being distributed.
29
See also the discussion of Boundary-Scan Masters in Sect. 5.2.7.
30
To manage the two separate chains, nodal access to the TDI/TDO node at the junction of the two
chains will be necessary. Then it will not be possible to run the two chains simultaneously, since
driving TDI of the second chain overwrites TDO from the first.
5.2 Board-Level DFT 191
CLK4
ClkTree
(without intervention) that TCK1 and TCK2 are really buffered copies of TCK, and
similarly for TMS. This leads us to another DFT consideration.
• DFT-17: Utilize simple buffering (where possible) of the broadcast TCK/
TMS signals. Document the enabling and initialization requirements needed
to preserve the 1149.1 protocol through TCK/TMS distribution.
If a board-level oscillator is used to drive TCK, be wary of clock distribution
buffers. Such components are usually needed in sensitive clocked systems to
produce high-power low-skew copies of the main clock frequency. Such compo-
nents may contain a buffer tree as shown in Fig. 5.10. The inversion in the signal
path is used to help maintain a 50 % duty cycle. If the IC is simply used to buffer an
oscillator output for a system clock, there is no phase relationship to maintain
between CLK and CLK1-4. However, if such a buffer is used for distributing TCK,
then the inversion is indeed a critical matter since it may confuse software.
• DFT-18: Do not allow logical inversion in the TCK or TMS pathways.
Mixed logic families at the board level may require voltage level translation of the
logic signals between ICs. This will also be true of the TAP signals if some of the
ICs of a chain are implemented in different families, such as pictured in Fig. 5.11.
Here we see a simple chain with some ICs implemented in TTL logic and some
in ECL. We must translate the parallel signals between families as the upper con-
verter in Fig. 5.11 does. The question is, does this IC contain 1149.1 as well? If so,
what family does each of its TAP Pins belong to? If the upper converter is not an
1149.1 IC, how can software keep track of the data flowing from IC 3 to IC 4
through the converter during interconnect testing?
The lower converter of Fig. 5.11 translates the TAP signals for the ECL portion
of the chain. The lower converter must not be an 1149.1 component since that would
prevent the transmission of TAP signals to the ECL portion of the system when the
lower converter was in EXTEST.
192 5 Design for Boundary-Scan Test
Convert
TDO
U1 U2 U3 U4
TDI
Convert
TCK
TMS
TTL ECL
TTLECL1
Fig. 5.11 A simple Boundary-Scan chain containing ICs from different logic families. Logic level
conversion must be made between them
TDO
U1 U2 U3 U4
TDI
TCK
TMS
Convert
Fig. 5.12 A simple Boundary-Scan chain with a scanned level conversion interface for the parallel
signals. Note the TCK and TMS lines must not have a scanned conversion
Figure 5.12 shows the same simple chain as in Fig. 5.11, but with a Boundary-
Scan implementation for the conversion of the parallel signals. Notice that the TDI/
TDO data path is converted by the scanned converter IC as part of its TAP port
function. The conversion of TCK and TMS must be done with a conventional
non-scanned component.31 This introduces the same problems we saw (in Sect. 5.2.2
on page 201) with respect to buffered TCK/TMS distribution.
• DFT-19: When mixed logic families are used on a board, use scanned level
converters for the parallel signals and a non-scanned level conversion31 for
TCK/TMS distribution.
31
The device could be an 1149.1 device, but it must reside in another independent chain that is not
being tested at the same time; the converter would be in BYPASS.
5.2 Board-Level DFT 193
RAM
Address
C U Select
Data
CU C U RAM
Address
TDI U1 TDO
Select
DrCnflct
Fig. 5.13 A Boundary-Scan IC during test can set two normally complementary outputs to the
same state, exciting conflicts in conventional ICs downstream
32
Remember that these constraints will not be honored by failures either.
33
Damage could occur in the driver circuitry, or if several drivers are in conflict on one IC, their
summed currents could damage power distribution wiring.
34
If Boundary-Scan receivers are present on constrained nodes, then the constraints can be cap-
tured and verified, yielding a partial test of the nodes.
194 5 Design for Boundary-Scan Test
U1
U3 A U4
TDI TDO
C
U2
AddNails
Fig. 5.14 Two Boundary-Scan nodes A and B need additional support from tester resources to
enable proper testing
be held high during testing. (In this respect, they can be thought of as compliance
enables too!) This leads to:
• DFT-23: Make sure you locate and condition all Test Reset (TRST*) pins
and all compliance enable pins before executing any Boundary-Scan tests.
In these cases we are arguing for additional tester resources, and access to criti-
cal board nodes [Albe01]. If this access is unavailable, we must find another means
to accomplish our goals, or accept degraded test coverage.
At least two examples exist in the commercial IC market of ICs called Boundary-
Scan masters.35 These ICs form an interface between a microprocessor and the 1149.1
TAP Port. They execute the useful function of performing a parallel-to-serial conver-
sion directly in hardware from a “common” microprocessor interface as depicted in
Fig. 5.15. They also contain some hardware support for testing functions.
From a board-test point of view, Boundary-Scan masters have a completely dif-
ferent effect. They convert a standard testability port into a non-standard parallel
protocol. Since general 1149.1 software is not likely to directly support this parallel
35
They are the Texas Instruments 74ACT8990 and the AT&T 479AA.
196 5 Design for Boundary-Scan Test
TDI
Data Bus
TDO Boundary-
Boundary-
uProcessor TCK Scan
Control Scan
TMS Chain
Interrupts Master
TRST*
CLK
BusMastr
Fig. 5.15 A Boundary-Scan master interfaces between a microprocessor on one side and 1149.1
on the other. (The directions of TDI and TDO are reversed, reflecting mastership.)
36
The vendors of Boundary-Scan masters usually supply supporting software for their components
to facilitate prototyping and the development of microprocessor software or firmware. Such soft-
ware is usually not of general use outside of this environment.
37
The selected register is a function of the instruction loaded into the TAP Instruction Register of
the Linker/Selector IC.
5.2 Board-Level DFT 197
ScanLink
A1 A2 Ai
TDI
* ...
B1 B2 Bj
* ...
C1 C2 Ck '8997
TDO
* ...
Fig. 5.16 The 74ACT8997 Scan-Path linker IC linking simple chains A, B and C. Extra shift
stages (marked with “*”) are inserted in the linked chain. These stages are actually resident in the
‘8997, which itself appears in a normal 1149.1 form at the end of the chain
As we saw in the case of Integrated Circuits, we must concern ourselves with the
behavior of a board after a Pin-Permission operation of any component(s) in a
Boundary-Scan chain has lobotomized the board [Park10, Park11]. Assuming the
1149.1 components take care of themselves—for example, by staying in a quiescent
state after a Boundary-Scan operation completes—we still must take care that a
board will do the same. This is because a board might have non-scan components
that are not privy to the facts of 1149.1 life.
• DFT-26: Ensure that a board, after any 1149.1 operation completes, will
have safe states on all components and nodes.
On complex boards where this analysis may be difficult, one could add a special
feature to the board reset logic, a general hold-reset feature that can be triggered at
198 5 Design for Boundary-Scan Test
the start38 of 1149.1 testing. This hold-reset function would clamp the reset line(s)
of the circuit into the reset state such that all non-scan components would be held
quiescent. After Boundary-Scan testing, a board-level general reset would clear out
the hold-reset function and bring the board back to orderly operation. Perhaps the
simplest way to do this might be to cycle the power on the board.
It is important to be aware of any such precautions that may be built into a board,
for it will influence the operation of subsequent tests. For example, if 1149.1 testing
leaves the board lobotomized, then a general reset of some type will be necessary if
any later, conventional digital testing is to be done. If any board-level Built-In Self-
Tests are to be executed with the aid of Boundary-Scan, these should not be disabled
by the hold-reset function. Of course, the more ICs of a board that implement
1149.1, the less of a board-level problem you should have.
Note that the 2013 release of 1149.1 provides for the concept of “Test Mode
Persistence” which is a tool that test engineers may use to help manage post-
lobotomy behavior of a board. See 11.3.4.1 in Part 2 of this book.
A system, for the purpose of this discussion, is any collection of boards, modules, or
boxes that operate together. (This is a much higher level than the “System Logic” defined
in the 1149.1 Standard as the mission logic of one IC.) If the 1149.1 Standard has been
used in their design, then it is desirable to reuse this investment for system testing.
It is quite easy to imagine that a system, of boards for example, each containing
a simple Boundary-Scan chain, are simply concatenated together into one (very)
long simple chain. There is nothing wrong with this approach, in principle.
The practical problem of the length of the chain exists. However, the BYPASS
function helps us eliminate useless shift positions. If the number of nodes that pass
between boards is limited, or if these nodes do not connect a significant percentage
of all system ICs, then one can imagine system-level interconnection tests that do
not require terribly long shift paths. Again, many ICs would be in BYPASS mode.
Another problem is more significant; many systems may be populated with a
mixture of boards, and missing boards (empty slots) may be permissible. This leaves
us with chains whose construction is a function of the mix of boards in the system,
or chains that are broken by empty slots. We call this the multidrop problem.
Figure 5.17 shows an example of a system implemented with a single simple chain.
Any missing board in the system causes a break in the TDI/TDO chain. This could
be healed with a jumper board that connects TDI to TDO, but jumper boards are not
popular and are typically removed from a system as a design goal.
38
Of course, the access to nodes needed for this capability should have been provided as noted in
rule DFT-21.
5.3 System-Level DFT 199
TDO
TMS
TCK
TDI
Missing
Board 1 Board 2 Board 4
Board 3
BackPlan
Fig. 5.17 A system of several boards where each slot may accept several board types, or not con-
tain a board at all. A simple 1149.1 chain through these boards would be broken at an empty slot
IEEE Standard 1149.5 [IEEE93b], the “Standard Module Test and Maintenance
(MTM) Bus Protocol”, offers a way to add hierarchy to a system containing 1149.1-
based boards. It allows—via an 1149.5 bus—the addressing of individual boards,
sets of boards or all boards for an operation. Addressing of boards allows us a
mechanism for dealing with the multidrop problem. This entails having an 1149.5
controlling IC on each board, as well as one other such IC in the test and mainte-
nance unit of the system. One such component is the “master” and all others (up to
250 or so) are “slaves.” Mastership can be passed to a slave. Once on a board, the
1149.5 protocol can be used to control an 1149.1 chain.
The possibility exists that other approaches to managing multiple 1149.1 chains
will become industry standards. We have already seen two ICs with this potential, the
74ACT8997 and 74ACT8999 Linker and Selector ICs. The work by Whetsel [Whet92]
shows how 1149.1 could be extended with the concept of an “Addressable Shadow
Port” device that uses a “shadow protocol” to link 1149.1 boards together in a back-
plane structure. This device is available as the 74ABT8996. The hurdle any such ICs
must overcome to become de-facto standards is to gain widespread software support.
Much work has been published on ways to create a testing hierarchy (for exam-
ple, see [Avra87, Breu88] and [Derv88]). The work reported by Dervisoglu39
[Derv88] gives a case study of a real implementation successfully carried out for a
workstation product. See also more modern works dealing with System on Chip and
backplane approaches [Ke96, Whet97, Barr00, Oakl00, Harr01, Verm02].
It is interesting to note that the hierarchy problem is also occurring in the micro-
cosm of core-based ICs, or appropriately, Systems on a Chip. Here the problem is
that several IC designs are integrated together onto a single silicon substrate. What
do you do if some of these designs also contain 1149.1? The effect of this has been
studied in [Jarw94]. (On reflection you will note that this is just like the problem
with MCMs that contain several 1149.1 compliant die.) The resulting IC is not itself
compliant to the 1149.1 Standard, but can be thought of as a collection of 1149.1
entities, each with a BSDL description. Jarwala [Jarw94] also made some other sug-
gestions; it is too early yet to see where the industry is going with this situation.
Further, with the advent of stacked ICs, some of which could contain Boundary-
Scan, there is yet another technology evolution to watch out for.
It is difficult to give solid design-for-test rules for scan-based systems other than
to say that if a standard should emerge for this, use it!
39
The scan-based architecture reported by Dervisoglu predates the 1149.1 Standard and is signifi-
cantly different in the details.
5.4 Summary 201
5.4 Summary
Boundary-Scan offers great potential to solve emerging test problems that have
staggered yesterday’s testing technology. Many companies are well into 1149.1
implementations and have progressed well up the learning curve. A statement from
one test engineer summed up his experience;
I really like Boundary-Scan. Now I can work on improving test coverage rather than just
getting a test to work at all.
The preceding chapters of this book have confined the discussion to digital circuits
and test subjects. Most electronic engineers are experts in digital technology but
many will admit that their familiarity falls off quickly when the discussion turns to
analog topics, particularly analog testing. Before getting into IEEE 1149.4 Analog
Boundary-Scan, it will be important to lay a foundation for basic analog measure-
ments used today in In-Circuit testers. While 1149.4 does have significant differ-
ences over classical In-Circuit test, there are a lot of similarities. Knowing where we
came from will also help motivate where we are now going.
Nearly every board ever produced has analog components on it, even those
boards called “digital”. This amounts to perhaps hundreds of analog components
per “average” board. Over the last 25 years, it would be no exaggeration to claim
that one billion (109) of these boards have been tested with In-Circuit techniques. So
how have these several hundred billion components been tested? It serves as excel-
lent background to take a look at how In-Circuit testers do this.
How does a typical In-Circuit tester test analog components mounted on a board?
First, assume we have a bed-of-nails fixture such as we saw in Fig. 1.2 on page 6.
This fixture gives us nodal access to every terminal of each analog device. But
before we jump into the discussion of testing these components, let’s first agree on
what it is we are testing for.
Number of Devices
Fig. 6.2 Distribution of resistance values for a 4.7 kΩ resistors with a tolerance of ±5 %
capacitor, which may significantly increase total test costs. But more costly may
have been the process that discovered the need for this new test, or the “bone pile”
of functionally faulty boards that grew before this problem was identified. Then
there is the problem that the vendor of the capacitor may change how it is labeled
(which serves as the visual clue to its construction) or a similar but differently con-
structed capacitor may be used from an alternate source.
In-Circuit test is able to measure the value of analog components1 such as resis-
tors, inductors and capacitors. These devices have nominal values specified for the
design, and a tolerance on this value. For example, a resistor may have a nominal
value of 4.7 kΩ, ±5 %. Thus if we measure the resistor we expect it to have a value
of 4.7 kΩ ± 235 Ω. In a sample of these resistors, we might expect to see a truncated
bell curve for the distribution of values as seen in Fig. 6.2.
What if we measure this resistor and see a value that is high or low by 240 Ω? Is
this a failure? The answer is clouded by the fact that the measurement process itself
may inject errors (see Sect. 6.1.3). It also happens that the circuit design itself could
tolerate a 10 % deviation, but the designer only has 5 % resistors available to save
on inventory costs. In this case, testing for a 5 % deviation could be failing perfectly
functional boards. To avoid rejecting good boards, test engineers will add a guard-
band to the (true) tolerance on the device value. This might be an extra 1 %, or it
could be surprisingly large, for example, tripling the tolerance.
In summary, analog In-Circuit testing of a circuit can be used to prove the con-
struction of a set of specified analog components. This may not be enough to ensure
the operation of the circuit when parasitic impedances are present. However, it is
also true that In-Circuit test has practical limits on the range of component values
that may be tested. As we see in Sect. 6.1.3, combinations of components in certain
interconnection topologies may be difficult to test.
1
Real components, not parasitics.
206 6 Analog Measurement Basics
To measure the value of an impedance R, we make use of Ohm’s law in one of the
two configurations shown in Fig. 6.3. Figure 6.3a shows an ideal current source
forcing a known current through the impedance while a perfect voltmeter measures
the voltage across the impedance. The value of R is computed by dividing the mea-
sured voltage by the known current:
R =V / i
Of course, the world is neither ideal nor perfect, so in reality we would have to
take some care that errors are not introduced. For example, the voltmeter provides
an alternate pathway around the device being measured so we may find some of the
stimulus current taking that pathway rather than going through the device. However,
since the input impedance of a voltmeter is typically 1010 Ω, the amount of current
being sidetracked is likely to be insignificant.
Next, we should take a moment to think about the current source. An ideal source
will force a specified current, developing whatever voltage is required. However, if
the device is a low-power device, it could conceivably be damaged by the power
dissipation (V*i) such a current and voltage would necessitate. Higher voltages
could also damage diode junctions by causing voltage breakdown.2 This presents us
with a problem; in order to keep the voltages in safe operating limits, we need to
know an expected value (approximately) for the device being measured. But if it is
truly an unknown value, then we need a compliance limit on the current source.
A compliance limit is an upper bound on the voltage the source will develop and
hence a bound on the both the voltage and the energy it will supply.
Whenever we use the setup in Fig. 6.3a, it is assumed that the current source is not
in compliance (not limited). If the device to be measured is a true unknown, the first
selected current setting may produce a compliance limit signal and a different (lower)
R R
+
i V I
V -
A B EisIR
Fig. 6.3 Measuring impedance with current source stimulus (a) and with voltage source stimulus (b)
2
As we will see later in this section, we also have to be careful of other devices surrounding the
device we are testing.
6.1 Analog In-Circuit Testing 207
current should be tried. This process should eventually converge3 on a current setting
that stays within the compliance limit and yet develops a measurable voltage across
the resistor. However, if the current source is set too low, then the voltage across the
resistor will be small, perhaps sacrificing some voltmeter accuracy as a result. Thus
we look for a current setting that is high enough to utilize our voltmeter accuracy, but
not too high to damage the device under test. (Other criteria will appear shortly.)
Another stimulus/measurement configuration is shown in Fig. 6.3b. Here we use
a voltage source to provide a known voltage across the resistor and a current meter
to measure the resulting current. Note the ideal current meter has zero series imped-
ance, so there is no voltage drop across it. (This means the right side of the resistor
is at zero volts.) The ideal voltage source will develop the desired voltage with
whatever current is required by the circuit. As before, this could result in a damaged
resistor if the energy delivered is too great. Therefore we need a current compliance
limit (an upper bound) on the voltage source current capability. Again, if the value
of R is unknown, we may need to search for a voltage setting on the voltage source
that does not cause a compliance condition,4 yet gives us good current measurement
accuracy from the current meter.
So we have seen it is not necessarily straightforward to measure the impedance
of a simple freestanding resistor. If its value is unknown, or if there is an anomaly
present such as a short or open circuit, this leads to special considerations. However,
freestanding components will be the exception and not the rule when testing boards.
The situation shown in Fig. 6.4a will be quite common. Here, a resistor is connected
between board ground and an integrated circuit output. How do we go about testing
the value of the resistor?
In Fig. 6.4a we have access to both sides of the resistor we want to test, but there
are other components connected to the resistor as well. Inside the silicon device we
see two transistors connected to the resistor. What effect will these have on our
simple measurement process?
To answer this, we first remember that In-Circuit analog component testing is
done with no power applied to the board. This means that the transistors inside the
IC are not turned on. Further, if we limit the voltages used during testing to values
that will not turn on a diode,5 perhaps less than 0.2 V, then the silicon junctions
within the IC will never conduct current. This makes the IC “disappear” from our
problem. However, reality intrudes again when we consider the physical apparatus
needed to measure the resistor. This is the In-Circuit tester itself.
3
There is the case where the impedance is infinite because of an open circuit. In this case the pro-
cess of finding a current setting will converge on zero.
4
It is possible that the search would converge on zero volts in the case where the value of R was
zero, such as in the case of a short circuit.
5
Not shown in this figure are Electrostatic Discharge (ESD) protection diodes often found between
IC pins and the power rails. These diodes can provide additional conduction paths if they turn on.
208 6 Analog Measurement Basics
+V R
Board Power Plane A G
U1 Fixture
Probe
Mux
A Measurement Buses
R + Stimulus/
V Measurement I
-
Resources
G
Board Ground Plane ATE Ground Plane
A B ICTMeas
Fig. 6.4 Measuring the impedance of a device on a board, connected to a silicon device (a), and
as seen by an ATE system (b)
Figure 6.4b shows the elements of a typical In-Circuit tester. Nails from the bed-
of-nails fixture touch the nodes A and G on either side of resistor R. Within the fix-
ture, wire-wrap wires connect the nails to the fixed array of tester channels that, in
this diagram, are multiplexed to a measurement bus. The multiplexing is done with
mechanical reed relays that have several desirable qualities. First, reed relays have
very low “on” resistance, perhaps only 10−2 Ω. Second, when reed relays are open,
they have very high “off” resistance, perhaps 1012 Ω. They come close to being
“perfect” switches.6
From the measurement buses (Fig. 6.4b) another layer of reed relay multiplexing
brings us to the stimulus and measurement resources of the In-Circuit tester. This is
where we find the various forcing functions for voltage and current as well as mea-
surement devices for current and voltage. Figure 6.4b shows how the appropriate
relays are closed to set up the same voltage forcing measurement we saw in
Fig. 6.3b. The voltage source is set to less than 0.2 V to prevent the silicon junctions
in U1 from turning on. (Not shown in Fig. 6.4b are any control functions for the
relays and instrumentation.) With all of this complexity in the measurement path it
6
The switching time from open to closed is less than perfect, in the neighborhood of 500 microsec-
onds. They often take longer to open.
6.1 Analog In-Circuit Testing 209
U1 B R A
B R A
+ i
V Ra Rb I
Ra Rb -
C C
A B
B R A
Ra Rb
Fixture
Probe
Mux
Measurement Buses
+ Stimulus/
V I Measurement
-
Resources
C Delta
Fig. 6.5 Devices may be connected into networks providing parallel pathways for currents
should not be surprising that we have new sources of error. This will be covered in
Sect. 6.1.3, but next we examine complications in measurements due to parallel
device topologies such as seen in Fig. 6.5.
The parallel impedance problem is personified by the delta configuration of
impedances shown in Fig. 6.5a. Here we have three resistors and three In-Circuit
nails, plus a connected IC. We can make the IC “disappear” by doing unpowered
tests with low stimulus voltages as before. However, to measure the value of R
when Ra and Rb are present, we need something more to deal with the parallel path
problem. This is shown in Fig. 6.5b.
In Fig. 6.5b we see the familiar voltage forcing configuration on nodes B and A
seen originally in Fig. 6.3b, but with a new addition; a third node C is grounded
using a third nail. This is called guarding. Guarding uses low impedance paths
210 6 Analog Measurement Basics
through reed relays to insert grounded points into the circuit.7 If you examine
Fig. 6.5b closely, you will see that current from the voltage source splits at node B
and proceeds both to nodes A and C. However, because node C is grounded and
because node A is also grounded (the current meter has zero impedance), the volt-
age across Rb is zero. No current can flow to node A from node C. This means the
current meter measures only current through R. Thus we know the voltage across R
(the voltage source value) and the current through it which yields its impedance.
Figure 6.5c shows a typical ATE setup for measuring the resistor in a delta
configuration.
7
An example at the macroscopic level of Heisenberg’s Uncertainty Principle. To measure the value
of a component with this technique, we must significantly perturb the circuit under test.
8
Relays will have sub-ohm resistances typically, but nail contacts may have resistances of 2 Ω and
higher depending on the cleanliness of the nail and board surfaces. Nail contact resistance may
increase with time but may be restored by periodic cleaning of nails.
9
Remember that because of its very high input impedance, the insertion of the voltmeter will not
seriously affect the current flow of the circuit.
6.1 Analog In-Circuit Testing 211
R R
A G A G
Probe
Impedances
Rp Rp Rp Rp
Rr Rr Rr Rr
Summed
+ Relay +
V I V V I
- Impedances -
A B
R
A R G A G
Rp Rp Rp Rp
Rr Rr Rr Rr
+ +
V V V I
- I -
V
C D
MeasErr
Fig. 6.6 Some sources of error in an ATE setup for measuring a simple impedance
Figure 6.6d shows how we could eliminate almost all error, by using a Kelvin
measurement. The voltmeter pathway is virtually independent of the path that car-
ries current. The cost, however, is significant because we now need two additional
In-Circuit nails. This configuration is rarely used unless we need a very precise
measurement of a very small resistance R.
Similarly, the delta configuration of Fig. 6.5 will also suffer from voltage errors
caused by currents traveling through relays, wires and nails. These are shown in
Fig. 6.7a. Of particular concern is the error impedance in the guard path (Rg) which
raises the voltage at node C above ground. This allows an error current to flow into
Ra and subsequently through Rb and on to the current meter. Ultimately, a higher
current reading yields a calculation of R that is lower than the actual value. Consider
just Rg; if Rg is 1 Ω and R is 10 kΩ while Ra and Rb are both 10 Ω, the calculated value
of R would be about 100 Ω. This is because the current circumventing R is nearly
100 times as great as that traveling through R.
212 6 Analog Measurement Basics
A B R A
+ Rs i Ri
V Ra Rb I
-
C
Error
Current
Rg
B B R A
Rs Ri
Ra Rb
C
+
V Rg I
-
DeltaErr
Fig. 6.7 Error impedances for a delta measurement (a) and a 6-wire measurement configuration (b)
This error can be corrected with additional voltage measurements taken from
nodes A, B and C with three additional In-Circuit nails as shown in Fig. 6.7b. This
is known as a 6-wire measurement and is expensive in nails and the time required
to do the additional measurements. Thus 6-wire measurements are done rarely,
when the ratio of component values in the original delta configuration are large and
there is need for good accuracy. See [Croo79] for more discussion of In-Circuit
measurement errors and corrections.
Current meters are not usually supplied in ATE systems, but rather an operational
amplifier is used as shown in Fig. 6.8, where it is monitoring the same delta configu-
ration we have used in other examples. In this configuration (often called a
Measuring Operational Amplifier or MOA) the op-amp combined with the feed-
back resistor Rf will endeavor to keep node A at zero volts.
The value of R is calculated by this formula:
R = -V * R f / Vout
6.1 Analog In-Circuit Testing 213
Rf
B R A
-
+ Vout
+
Ra Rb
V
-
C
CVMOA
Fig. 6.8 An operational amplifier with feedback resistor used as a current meter
R Vout
-
- + Vout
V
+
Time T
OneInteg
which is both a function of V and the time constant of the system defined by the
product of R and C.
A dual slope integrator is similar, as shown in Fig. 6.10. It integrates the unknown
voltage Vin for a period of time T which produces a positive voltage Vout. Then a
known negative reference voltage Vref is switched in place of Vin, which causes a
10
This capacitor doesn’t need to be accurate (only stable over the period of measurement) but it
should have excellent characteristics with respect to dielectric absorption.
214 6 Analog Measurement Basics
R
-
Vout
+ Vout
- +
Vin Ref
+ - Time T T+X
TwoInteg
downward ramp on Vout. The time X to reach zero volts is recorded. The dual slope
integrator is a physical solution to the equation:
æ 1 T 1
T+X
ö
ç RC ò0 in òV
ç V dt - dt ÷ = 0
RC
ref
÷
è T ø
X
Vin = Vref
T
which is the product of the known Vref with the ratio of integration times X and T.
(Notice the time constant RC has dropped out of the equation.) Time is something
we can measure very precisely in digitally controlled systems. This allows us to
construct (in this case) a very accurate DC voltmeter that is largely independent of
the values of the components used.
As always, we do have to be wary of the non-ideal. Since we may not know the
approximate value of Vin before we measure it, we will have to guess at a value of
integration time T. If we guess too short, then very little ramp on Vout will occur with
an accuracy penalty. If our guess is too long, our integrator may ramp Vout beyond
the linear region11 of the integrator’s operation. We could have a selection of values
for R and C, selected with switches, to help us stay within the operating range. We
could also scale Vin with a ranging amplifier before integrating it. We still need to
know if our first guess at their selection was appropriate. Therefore the controller
for this apparatus will have to make one (or more) guesses, selecting values of T,
range amplification, and/or R and C, until a suitable ramp12 has been found.
11
This region will be within the power supply rail voltages of the operational amplifier.
12
To limit effects from environmental noise, we may restrict the values of T to those that will mask
out common sources such as low frequency power line noise.
6.1 Analog In-Circuit Testing 215
E
R
-
A B D + Vout
-1
Vin
+ A
Ref
-
Vin
Input to Integrator
T T+X
Time B
Vref
Vout
T T+X
C
Time
ACInteg
The dual slope integrator can also be used to measure AC voltages. We will con-
fine this discussion to sinusoidal waveforms of a known frequency, because in an
ATE system the stimulus portion of the hardware is under our control. Further, we
will also know the phase relationship of our AC sources so that we can lock the
phase relation of the measurement to them. This will allow us to measure the real
and imaginary components of a sinusoidal voltage waveform necessary for
measuring values of reactive components such as inductors and capacitors. For AC
measurements, the dual slope integrator shown in Fig. 6.11 may be used.
If we were to measure a simple sinusoid with our DC integrator, every complete
cycle of waveform would integrate to zero, leaving us no information. If we integrate
the first ½ cycle and then invert the voltage and measure the second ½ cycle, we will
get a non-zero result. Looking at Fig. 6.11a, this is the purpose of switches D and E.13
13
Actually, switches D and E are conceptual. The AC voltages are digitally constructed by the
system sources. The system has complete on-the-fly control of the frequency and phase.
216 6 Analog Measurement Basics
Vin AC/DC
Dual Slope Vout
Integrator
Rs
-
Vstim Ref
+
MeasImag
The sources are connected by either of switches A and B. The sinusoidal source has a
known phase so we can chose the portions of the sinusoid we are integrating and
whether the unity-gain inverter complements that portion. The DC reference voltage
source serves the same function we saw in Fig. 6.10 for DC measurements.
To measure an unknown AC signal Vin, first we integrate several full cycles of Vin
(with its known phase) taking care to invert the negative portions to positive until
time T has elapsed. Figure 6.11b shows this waveform. Then the negative DC source
Vref is switched into the integrator replacing Vin causing a downward ramp. The
integrated waveforms yielding Vout are shown in Fig. 6.11c. As with the DC case, the
process continues until Vout returns to zero while we measure time interval X. As
before, the measured value of Vin is computed as:
X
Vin = Vref
T
which again is a function only of the magnitude of the reference voltage and the two
time intervals we can measure accurately.
By controlling when we open and close switches D and E, we can select a phase
offset for a measurement. If we offset a measurement by 90° we can measure the
imaginary14 component of a waveform. An offset of 0° gives us the real component.
These two measurements allow us to compute values of reactive devices in net-
works. See the example in Fig. 6.12.
In Fig. 6.12 we want to measure a capacitor C. The In-Circuit nails give access
to both sides of C. An AC voltage source (we control its frequency and phase) is
connected to the capacitor through a known source impedance Rs and the other side
of the capacitor is grounded. After we close the nail relays, we can successively
measure the voltage on both sides of the source resistor Rs. Note however that we
14
Imaginary signal detection is sometimes called a quadrature measurement.
6.2 Limited Access Testing 217
Vin
Input to Integrator
T T+X
Time A
Vref
Vout
T T+X
B
Time ACImag
will offset the measurement by 90° with respect to the stimulus voltage source so
that we measure the imaginary voltage as shown in Fig. 6.13. We then compute the
imaginary current IC through the known resistor Rs. This plus the imaginary voltage
VC across the capacitor (the measurement at the top of Rs), along with the stimulus
voltage frequency FStim allows us to calculate the capacitor’s value of C.
IC
C=
( FStim *VC )
high-quality diagnoses has led to new research in In-Circuit test [Huan97, McDe98a,
McDe98b, McDe98c]. Today’s In-Circuit approach tests analog networks with
board power turned off. Tomorrow’s 1149.4-based testing will, of necessity, turn the
power on. In either case, we will need updated approaches to analog measurements
for testing purposes.
The work presented in [McDe98a, McDe98b] and [Huan97] shows us a new way to
approach In-Circuit testing when access is limited. This can be shown by way of
example. Consider the simple circuit shown in Fig. 6.14.
The ATE system can switch a current source and ground path to the network, as
shown. Each node will develop a voltage; node A will see VA, and so on. (All volt-
ages are referenced to ground node C.) Each node voltage can be observed because
the circuit has full access. We will not use any of these test nails for conventional
guarding as discussed in Sect. 6.1.2.
Now assume the circuit is made up of perfect resistors at their nominal values.
Then the node voltages will be equal to a mathematical prediction. These voltages
are labeled VA-nominal, and so on. When the resistors vary as real resistors will, then
there will be some differences. This is expressed in Table 6.1. It is important to note
that even varying only one resistor from nominal will change all three voltages.
NewMet1
(0,0,0)
VD A
VA VB
(0,0,0)
VD B
VA VB
BoundBox
This example was carefully chosen to have three voltage differences so that they
can be plotted in a three-dimensional coordinate system15 such as shown in Fig. 6.15a.
Figure 6.15b shows a plot of many points forming a “cloud” of data. This data is
the result of performing thousands of Monte Carlo simulations of the 4-resistor
network in Fig. 6.14. Each simulation starts with a randomly selected set of
variations for the four resistors and then computes the resulting node voltages.
These are compared to the nominal solution and the differences plotted as a single
point in the three-dimensional space. This technique can be used to plot all “good”
circuit behaviors by only using resistor variations that are within the tolerances
allowed in the design. Faulty behaviors can be plotted by varying one or more resis-
tor values beyond the specified tolerance. As you would expect, the cloud occupied
by good behaviors is much smaller than the cloud where any variations are allowed.
The next section shows how we can perform tests using node voltages.
15
The techniques shown here work for higher numbers of nodes and components. However it is
difficult to visualize higher-order dimensions.
220 6 Analog Measurement Basics
Node voltages can be used to test a circuit. One simple idea is to measure all the ΔV
node voltages for a circuit and check the point so defined for inclusion within the
good cloud. This gives us a Pass/Fail result, but says nothing about which resistor(s)
may be out of specification if the circuit fails. This is because all combinations of
passing and failing devices are encoded in the cloud of points. What happens if we
put an upper bound on the number of resistors that are out of tolerance at any time?
This is shown in the three graphs presented in Fig. 6.16.
Figure 6.16a is constructed by plotting the differences in node voltages when
resistors R1, R2 and R4 are within tolerance limits, but R3 is outside its limits.
Similarly, Fig. 6.16b is a plot where only R2 is outside its tolerance limits.
R3 Failing
(0,0,0)
VD Passing A
Region
VA VB
Passing
Region (0,0,0)
VD B
R2 Failing
VA VB
Passing
Region
(0,0,0)
R2 or R3
VD
Failing
C
VA VB FailedRs
Fig. 6.16 Three-dimensional plots where only some components are potentially faulty at any one time
6.2 Limited Access Testing 221
Figure 6.16c shows a plot for R2 and R3 together. (For clarity we omit plots for R1
and R4.) Figure 6.16c shows us that observed changes in node voltages due to fail-
ure of either R3 or R4 will have a “signature” that can be used to distinguish the
two. Knowing this, we can test copies of this simple network and diagnose out-of-
tolerance16 components distinctly.
It is possible that there may be significant (or even total) overlap of the clouds of
points belonging to different failures. When this happens, you will see a failure of
the circuit, but will only be able to say that “one or more of the following devices”
failed. This is called an ambiguity class. The next section describes how we can use
node voltage analysis for testing in a limited access environment.
So far the discussion has assumed complete nodal access. Now we look at the
situation where some node voltages are not known. See the same example circuit in
Fig. 6.17 where we now have lost access to node B.
Removing access to a node deprives us of information in one dimension of our
node voltage space. In our example, this has the effect of projecting an image of our
three-dimensional object onto a two-dimensional plane, as shown in Fig. 6.18.
In this case, losing access to node B means we cannot measure ΔVB for this
node. Figure 6.19a shows the shadows of the clouds for R2 and R3 projected onto
the plane of voltages for ΔVA and ΔVD. Because the shadows have distinct areas, we
can still perform a diagnosis if one of these devices should fail.
Figure 6.19b shows a different projection. Here, we have lost access to a different
node (node A rather than node B) and thus we cannot measure ΔVA. The shadows of
the R2 and R3 clouds onto the plane of voltages for ΔVB and ΔVD are completely
overlapped. Thus, while we can see if the circuit is failing, the ambiguity class
contains two components so we cannot differentiate which of the two failed.
C Access
Unavailable
i
NewMet2
16
Using AC voltages, we can also determine if a different type of component, for example, a
capacitor, has been misloaded in place of a resistor. With extreme miniaturization, many compo-
nents look the same and do not have enough space on them for labels.
222 6 Analog Measurement Basics
Shadows
Passing
Region Lamp
(0,0,0)
R2 or R3
VD
Failing
VA VB
Shadows1
(0,0) A
VD
R2 R3
VA
(0,0)
VD
VB
Shadows2
Fig. 6.19 Projections of failure spaces for R2 and R3 onto two of the voltage planes
accessible. The largest ambiguity class contained three components. The CPU time
(on a modest CPU) to construct a test for this 20-dimensional17 problem was
about 2 min. (This is a one-time investment.) Nodal access was chosen by the
manufacturer of the circuit and was not optimal.
There are many examples of mixed-signal boards and these have been in existence
for a very long time, yet until recently the IEEE itself did not recognize the term
“mixed-signal.” The 1149.4 Working Group had to assure the IEEE that such a term
existed. The term mixed-signal refers to single devices, boards or systems where
some information carrying signals exist that are digital in nature while others exist
that are analog.18
Digital signals utilize just two states (usually voltage states) to convey binary
digits of information. For example, a stream of “0” and “1” states on a Test Mode
Select (TMS) signal is used to navigate the 1149.1 TAP state diagram. Analog sig-
nals convey information via continuous states19 of voltage and current. For example,
the signal representing a singer’s voice, as converted to electrical form by a micro-
phone, is a remarkably complex analog waveform. While this waveform can be
“digitized” into a stream of bits, this process is always an approximation of the
original signal. Digital and analog signals may also be turned off such that no infor-
mation is represented.
Analog designers quickly point out that all circuits are analog. It’s just that so-
called digital circuits have chosen to convey information with two discrete states
separated by a fairly wide unused voltage space that provides a noise margin. As
operating frequencies increase and noise margins decrease, most digital designers
tend to agree with the analog designers’ viewpoint! This is because yesterday’s digi-
tal designs could ignore parametric factors such as impedance matching, signal
reflections and ringing. Tomorrow’s designs must be concerned with these “analog”
problems. Often the solution to these problems involves adding extra discrete ana-
log devices to the “digital” circuitry.
Figure 6.20 depicts a mixed-signal board. It contains purely digital ICs marked
“D”, purely analog ICs marked “A” and some ICs marked “M” that contain both
types of circuitry. Then there are swarms of discrete components such as resistors,
capacitors, inductors, diodes, transistors, and so on. Such a board may be the signal
17
One node is always used as the reference node for voltage measurements.
18
Indeed, it is possible to have a single signal with both natures. Consider for example the encod-
ing of digital information within an analog television signal, used for closed-captioning.
19
“Continuous” means non-quantized, to differentiate analog signals from multiple-valued logic
signals that are still essentially digital in nature.
224 6 Analog Measurement Basics
M A
D D D A
D A
D D D A
M
M
A
D D D D
MixBoard
processor for a video camera, for example. Because of that it is probably quite small
so it can be compressed into a hand-held unit, and you could expect the reverse side
of this board to look similar to the side shown. These types of boards are difficult to
test because of test access problems and the complex nature of mixed-signal testing.
This is the type of board that both 1149.1 and 1149.4 are well suited to address.
Indeed, the cover of this book illustrates the access problem by showing a juxta-
position of In-Circuit nails with old and new devices against a backdrop of a com-
mon coin, a US Lincoln penny. A key to this photograph is presented in Fig. 6.21. If
you have a penny, it is instructive to examine it.
The lettering on this penny is done with 10 mil lines.20 Some circuit boards today
use signal traces only 4 mils wide. Some vias coming into use are also only 4 mils
in diameter, fitting within the width of a trace. The diameter of the circular portion
of a “nine” in the date “1996” is approximately 35 mils, which is the generally
accepted lower limit on a test pad diameter needed for reliable probing. Clearly, it
will not be feasible to use 4 mil vias for test pads in the future since they are nearly
a decade smaller yet.
Ball-Grid Array technology is a major driver for smaller printed circuit
board trace widths and “micro” via diameters. A BGA requires a great number of
connections in a small area, so getting the required signals into this dense area is
20
Printed circuit dimensions are often specified in English (Imperial) units. A “mil” is 0.001 in., or
about 25 μm.
6.3 The Mixed-Signal Test Environment 225
50 mil
Probe 1208 SMT
100 mil
ICT Probes
0402 SMT
96
Du
alIn-
L
IC ine 1 9 75 mil
D ICT Probe
Fig. 6.21 Key to the color photograph appearing on the cover of this book
challenging. Smaller traces and vias makes this possible and become the enabler for
both Chip-Scale packaging and Chip-on-Board attachments. In the past, BGA ICs
had to be surrounded by an unpopulated perimeter in order to find room to route all
the signals. This perimeter was a good place to locate test pads. However, with
higher routing densities, these perimeters will shrink, leaving little room for test
pads. Making room will amount to trading off test pads for ICs and other devices.
Also shown atop the penny in Fig. 6.21 are three types of test nails, the common
100 mil nail, and 75 and 50 mil probes as well. In particular, notice the 50 mil probe
points to a discrete device in an “0402” Surface Mount Technology (SMT) package.
This designation means it is 40 by 20 mils on a side. To relate to this size, compare
it to President Lincoln’s bow tie. Soon we will see “0102” devices, which are
one-fourth the size and will easily fit within the circular portion of the “nine”.
Conventional In-Circuit nails and test pads are rapidly dwarfing the size of discrete
components. Thus asking board designers for thousands of test pads is becoming a
serious design issue.
Why not just shrink the nails and pads? This is a surprisingly complex mechani-
cal issue. Suffice it to say that the accumulated mechanical tolerances on boards and
fixtures makes it very difficult to target thousands of probes reliably over large
226 6 Analog Measurement Basics
SMT 4 mil
10 mils 35 mils Devices line
15 mil
0402 pad
0201 35 mil
pad RelSize
areas, and remember that each nail is a spring-loaded assembly that contacts the
board with a notable21 force. This is a source of mechanical deviation, stress and
failure. But if we could somehow shrink nails and pads to (say) 15 mils, this is still
about four times the size of a modern signal trace and about the same size of today’s
smaller components. Designers have also questioned how fat test pads may impact
signal integrity on far narrower controlled impedance signal paths. Figure 6.22
compares the relative sizes of some of the items discussed in this section.
One last note; today’s more advanced IC geometries are based on 0.25 μ features.
These are 100 times smaller than a single mil and are shrinking with time. Mechanical
probing technology has essentially already reached its practical economic limits.
6.4 Summary
This chapter has set the stage for discussing the resources provided for analog test-
ing by IEEE 1149.4. It will certainly be the case that today’s In-Circuit test tech-
niques will still be used in the future, even as nail access becomes increasingly
limited. IEEE 1149.4 will be a powerful tool for providing measurement access to
many physically inaccessible points in a network.
The newly defined node voltage technique will allow us to continue to enjoy test
development automation and high-quality diagnostics. The dependence on guarding
that has been a mainstay of In-Circuit ATE will, of necessity, give way to the less
brutish non-guarded approach. Of course, for the foreseeable future, every tech-
nique we know will continue to have value since it is not likely that boards with
100 % IEEE 1149.1/1149.4 implementations will become very common.
21
Consider a board requiring 4000 nails, each with 0.5 lb of spring force. That comes to 2000 lb
(nearly 1 metric ton) of spring force distributed across a board and fixture.
Chapter 7
IEEE 1149.4: Analog Boundary-Scan
IEEE Standard 1149.4 [IEEE99] is titled “Mixed Signal Test Bus” but has become
known popularly as “Analog Boundary-Scan”. It is natural to ask, what is “Analog
Boundary-Scan”? The digital paradigm we have been using is confusing when we
hear the word analog. Could it mean we somehow capture analog voltages and
somehow shift them out for viewing (as proposed in [Wagn88])? The answer is
“no”. The simplest concept of the 1149.4 Standard is to imagine that we have inte-
grated a portion of an ATE system’s analog measurement bus and multiplexing
system into an IC, eliminating the need for bed-of-nails access to it. Since these test
resources have been converted from discrete relays, wire wrap and nails into silicon,
they will scale with silicon technology as it continues to shrink.
The 1149.1 Standard since its inception, has studiously avoided any consider-
ation of analog pins. Essentially, they were completely ignored. In the early 1990s,
the P1149.4 Working Group was chartered to study the question of how analog test-
ing could be facilitated with a standardized approach. This group had extensive
debates on just what it was they were trying to standardize. This debate crystallized
during a panel session at the International Test Conference (ITC) in 1992 when the
debate was presented to an audience of potential users. The users essentially said,
“Forget about measuring complex parameters like gain and distortion. Give us the
ability to find shorts, opens, and misloaded components in mixed signal circuits.”
They wanted to find manufacturing faults, not perform functional tests. This change
in emphasis was a turning point for P1149.4 and led to a proposed architecture in
1993 [Park93] that has since been refined into what we have today.
The extremely difficult practical problems of high frequency testing usually
needed for functional testing can be avoided when considering manufacturing
faults. So the first important characteristic to note about the IEEE 1149.4 Standard
is that it is intended for use with lower1 frequencies; from DC to around 1 MHz.
If this seems like a serious limitation, consider the fact that virtually all the boards
1
This isn’t to say you could not engineer an 1149.4 implementation to function at higher frequen-
cies. You can add special functions that have elevated performance, though this could be
expensive.
tested with In-Circuit test equipment over the last 35 years have had their analog
components tested at 10 kHz or less.
The second thing to notice about 1149.4 is the obvious fact that to use it, the
board must have power applied to it. Just as is the case for 1149.1, this produces
some nervousness when first realized. It means some number of shorts and many
analog defects on the board that were detectable with the power off (when we have
full nodal access) will have to be detected after the power is turned on. A good board
design will also take into account that the test process may generate unusual signals
on the board which could cause other powered elements to react. These reactions
may need to be controlled or otherwise suppressed.
A third thing to notice about 1149.4 is that it augments a traditional ATE system
with new resources on-chip for switching measurement currents and voltages.
However, these resources are implemented in silicon rather than with traditional
reed relays and wires. The impedances inherent in these new resources are signifi-
cantly higher2 than those achieved by relays and wire. This immediately rules out
testing activities based upon traditional guarding techniques seen in Sect. 6.1.3 on
page 220. IEEE 1149.4 does not support brute-force insertion of virtual grounds.
Thus, new metrologies [Park93, McDe98a, McDe98b, McDe98c] are needed that
use the available resources in new ways that respect these limitations.
IEEE Standard 1149.4 has been carefully designed to be fully compatible with the
existing 1149.1 standard. In many ways it can be thought of as a pure superset of
1149.1. For example, it uses an identical Test Access Port (TAP) controller fully
described in Chap. 1 (see Sect. 1.3.1 beginning on page 11). An 1149.4 compliant
IC can participate cooperatively with 1149.1 ICs to perform interconnect testing
such as described in Chap. 3, but adds the ability to address analog IC pins as well.
As a superset standard, 1149.4 adds the ability to test analog devices and func-
tions as well as simple interconnect. First, we need a model of what we are testing.
2
There are two reasons for this; first, there is a fundamental limit to what could be achieved at any
cost. Second, for 1149.4 to be economical it must consume a small area of an IC. Lower impedance
switches consume larger areas. In 2003 technologies, you should expect to see economical silicon
switches with on-impedances of several thousands of ohms.
7.1 1149.4 Vocabulary and Basics 229
Misloaded
Open
Device
A A A A A A
A A A A A A
D D D D D D D D D D
D D D D D D D D D D
D D D D D D D D D D
A A A A A A
Wrong
Value Short
InterconF
1149.4 standard has mandatory features that are used to test a target fault spectrum.
Parts of this fault spectrum are interconnection defects such as shorts and opens,
as shown in the figure. In addition, there are defects such as misloaded analog
components, for example, substituting a capacitor for a resistor. Also considered are
analog components with values that are wrong due to misloading or that are not
within their tolerances.
It is important to note that shorts and opens will not discriminate analog from
digital. A solder short may connect an analog pin to a digital pin. An open may
disconnect a discrete component from the circuit.
The 1149.4 standard also contains optional, codified features that may be used to
test functions within a given 1149.4 conformant IC, again, just like 1149.1 does (see
[Sunt02]). See also Sects. 7.3.5 and 7.3.6. Further, 1149.4 allows designer-specified
extensions that allow virtually unlimited test support for internal functions within an
IC. See for example [Lofs96a, Lofs96b].
The 1149.1 standard viewed “interconnect” as simple wires that connect IC pins.
However, even “pure” digital boards may have discrete analog components, typi-
cally series termination resistors, between IC pins rather than simple wiring. This
leads to the necessity of viewing interconnect in two forms, “logical” and “physi-
cal”. Logical interconnect considers information flow, eliminating the physical
details such as series terminations. Some test software packages completely ignore
the physical details of a circuit and work solely in the logical domain. When such a
model sees a failure in the circuit behavior, the resulting diagnosis must omit the
additional physical detail that could be very useful in locating the offending defect.
The 1149.4 standard defines interconnect into categories; simple interconnect
(wires), and extended interconnect. It also notes the existence of differential inter-
230 7 IEEE 1149.4: Analog Boundary-Scan
Extended Interconnect
A A
A A
A A
Simple Interconnect
D D
+ +
Differential Interconnect
- -
(Analog or Digital)
Single-Ended Single-Ended
Transmission Point Reception Point SimpExtn
connections, where a pair of wires is used to transmit a single signal. Figure 7.2
shows some examples of these interconnect categories.
Extended interconnect is defined as “non-wire” interconnections between device
pins. For example, two IC pins may be connected through a discrete analog compo-
nent such as a resistor, inductor or capacitor.3 It could be true that there is a logical
behavior of this extended interconnect that is equivalent to simple wiring as you
might expect for low-valued termination resistors. However, this may not be true,
so you will have to account for the effects of the discrete components when con-
structing interconnect tests. As noted in [Park97] special care may be needed with
reactive components that store energy. For example, the capacitor connecting two
pins in Fig. 7.2 may have an initial stored voltage that could be added into subse-
quent test signals, causing confusion4 if not accounted for.
It seems reasonable to ask, “how much longer will there be a need for discrete
analog devices?” After all, are we not seeing increased integration giving us the
means to replace analog functions with digital equivalents? If this happened,
extended interconnect could soon disappear. It turns out that there are a number of
reasons why we still see discrete components, and many of these are not amenable
to obsolescence by integration. Discrete components are used for:
• Impedance matching; while completely customized ICs have on-chip impedance
matching resistances, merchant ICs will not likely have these because it makes
assumptions about their end use.
3
Capacitive coupling of digital signals between ICs is becoming more common. See an extensive
discussion of this in Chap. 8 which covers IEEE Standard 1149.6.
4
Voltage addition by the capacitor could also cause signals to go out of normal operating range
with possibly damaging effect.
7.1 1149.4 Vocabulary and Basics 231
• Power dissipation; if a discrete resistor will dissipate significant power, this may
be incompatible with integration.
• Larger inductances and capacitances; reactive components may be expensive to
integrate. Note that small resistances can consume expensive amounts of silicon
real estate.
• Customization; some ICs have their range of functionality extended by connect-
ing external discrete reference devices.
• Precision; it is difficult to integrate analog functions with high absolute precision.5
These and other factors tell us that we will still see discrete components in the
future, but it is likely that more and more analog functionality will be integrated into
mixed-signal ICs. This trend will likely mean that while we will see discrete net-
works of analog devices, the size of these networks will diminish in time. Instead of
one large network, we may see several smaller, independent networks surrounding
large mixed-signal ICs. If these ICs comply with 1149.4, we will have a powerful
tool to use for testing these networks.
Both IEEE 1149.1 and 1149.4 treat digital pins identically. However, the 1149.4
standard has introduced a change in nomenclature; it describes all the Boundary
Register test circuitry needed to support a single digital pin as a “Digital Boundary
Module” or DBM (see Sect. 7.2.5).
A DBM may contain one or more Boundary Register cells as discussed at length
in Chap. 1. Because the 1149.1 standard allows the shift order of Boundary Register
cells to be assigned completely randomly, a DBM does not imply a shift order. Indeed
the Boundary Register cells contained within several DBMs may be intermixed at
random with respect to their shift positions.6 A DBM is a method for organizing our
thinking of the test resources for a single digital pin. The “Boundary Module” concept
is also used to describe those resources needed for analog pins, as discussed next.
IEEE 1149.4 directly addresses analog pins, rather than ignoring them as IEEE
1149.1 has done for over 25 years. Analog pins are assigned test resources con-
tained in an “Analog Boundary Module”, or ABM, covered in Sect. 7.2.4. As just
discussed, an ABM will contain Boundary Register cells which are not constrained
5
Relative precision is possible. For example, resistances can be matched on a single IC, but their
absolute values may vary significantly from IC to IC.
6
While random ordering is allowed, you will often find the Boundary Cells associated with a pin
are indeed adjacent in the Boundary Register. All figures in this chapter will show such adjacency
even though it is not required.
232 7 IEEE 1149.4: Analog Boundary-Scan
in their ordering, either within the ABM itself, or in their ordering with any other
Boundary Register cells in other ABMs or DBMs. An ABM also contains addi-
tional resources needed to support analog test functions, and control logic for these
resources.
An ABM is capable of two major modes of test operation. It supports the emula-
tion of 1149.1-style interconnection testing and it supports analog stimulus and
measurement capabilities needed for analog tests. If two analog pins on 1149.4
conformant ICs are connected with a simple wire, then the 1149.1 emulation capa-
bility will be sufficient to test that wire for shorts and opens. If these same two pins
had extended interconnect, say with a low-valued series resistance, then 1149.1
emulation will still be sufficient to test the interconnect, plus the analog capabilities
will allow testing of the resistor itself.
If there is extended interconnect between two pins that does not allow 1149.1-
type interconnect tests, then the 1149.1 emulation will not be usable for intercon-
nection testing, but it may still be useful for shorts testing. Suppose there is a small
capacitor between these two pins such as we saw in Fig. 7.2. For the purposes of
interconnect tests (which are essentially DC tests) the small capacitor looks like an
open circuit. Modeling the two pins as logically independent nodes, we can test for
shorts between them (or across the capacitor) with standard 1149.1 interconnection
tests. Later, an analog test may be used to measure the capacitor’s value.
This brings us to another important point about how 1149.4 treats analog pins.
The 1149.1 standard takes great pain to treat digital pins, for testing purposes, as
having the same nature during test as they do when not being tested. Thus there are
“input” DBMs, “output” DBMs and “bidirectional” DBMs. When first examining
analog pins, it seems this paradigm continues, but soon examples of analog pins are
found that do not have a clearly definable I/O nature.
For example, consider two analog pins intended for connection to a crystal fre-
quency reference. Are these pins inputs or outputs? The answer may not be clear.
And as just seen with the example of a small capacitor, the two pins connected to
the crystal are not “connected” to each other in the traditional 1149.1 sense because
the impedance of the crystal is very high. If we give each of these analog pins the
ability to be driven and simultaneously sensed, then we can include them in 1149.1
interconnection tests. Any shorts between them or other 1149.1 pins can then be
detected. So even though these pins are not recognizably inputs or outputs, by
treating them as bidirectional we can still perform useful 1149.1-style shorts tests.
Thus an important feature of ABMs is that they do not mimic the system nature of
the analog pins to which they are attached but rather treat every analog pin as if it
were bidirectional while supporting 1149.1-style tests.
An ABM also provides new test capabilities in support of analog test that are cov-
ered extensively in Sect. 7.2.4. It could happen that these new resources are not
needed because (in a particular application) there are no analog components or param-
eters that one wished to test that are associated with that analog pin. However, it is
also possible that you have pins that are clearly digital in nature connected to discrete
analog components. If you are implementing a custom IC where you know this will
happen, then the 1149.4 standard allows you to replace a DBM with an ABM. This
allows superset test capability over simple 1149.1, giving a formerly digital pin the
ability to participate in analog tests as well as 1149.1-style interconnect testing.
7.2 General Architecture of an 1149.4 IC 233
Figure 7.3 shows a high level general architecture of an 1149.4 IC. This is a minimal
implementation as additional features are also allowed. These will be described
later.
The important high level features of this implementation are:
• A test control block containing an 1149.1 TAP, instruction register and the famil-
iar four (optionally five) TCK, TMS, TDI, TDO (and TRST*) signals. These
elements are described completely by 1149.1 (see Sect. 1.3 beginning on page 8).
• Digital I/O pins served by Digital Boundary Modules (DBMs) made up of 1149.1
Boundary Register cells as described in Sect. 1.3.4 starting on page 22. DBMs
are discussed in Sect. 7.2.5 on page 262.
• An “Analog Test Access Port” (ATAP) where analog stimulus and measurements
can be conducted to/from the IC. This port (in the minimal configuration) is made
up of two I/O pins labeled AT1 and AT2. (See Sect. 7.2.2) As an option, the ATAP
can be extended by adding two additional pins, AT1N and AT2N. These are used
to support differential stimulus and measurement. (See Sect. 7.4.1 on page 271.)
Digital Analog
Boundary Boundary
Module D Module
A
VH
D B
VL Analog
M G
Digital D Core I/O
I/O D Circuitry
A
VH
D B
VL
Analog M
G
Test Access D
Port (ATAP)
AT1 Test Bus AB1
Internal
Interface
AB2 Test Bus
Circuit
AT2 (TBIC) Control
TCK TMS
Basic.4
Boundary Register
TBIC ABMs DBMs
Optional Design-Specific
Data Registers
TDO
Bypass Register Mux Output TDO
Stage
• A “Test Bus Interface Circuit” (TBIC) which controls connections of the ATAP
to an internal analog test bus (AB1 and AB2 in the minimal configuration) that is
distributed to all ABMs. The control mechanism for the TBIC is composed of
Boundary Register cells that are part7 of the overall Boundary Register. (See
Sect. 7.2.3 on page 250.) As an option, the internal analog bus can be extended
by adding two signals, AB1N and AB2N. These are used to support differential
stimulus and measurement. (See Sect. 7.4.1 on page 271.) A separate option
allows a TBIC to generate a partitioned internal analog bus structure to improve
internal loading and noise characteristics. (See Sect. 7.4.3 on page 274.)
• Analog IC pins connected to Analog Boundary Modules (ABMs). The ABMs
have access to the internal analog test bus as well as (up to) three reference volt-
ages labeled VH, VL and G. (See Sect. 7.2.4 on page 255.)
Just as is the case with 1149.1, the 1149.4 standard connects selected registers
between TDI and TDO as shown in Fig. 7.4. Mandatory registers include the
Instruction Register (described in Sect. 1.3.2 on page 17), the Bypass Register
(described in Sect. 1.3.3 on page 21) and a Boundary Register. The Boundary Register
is identical in nature to that described in 1149.1 (see Sect. 1.3.4 on page 22) but
contains additional cells that are used to control the actions of ABMs and the TBIC.
7
The Boundary Register cells within a TBIC may also be intermixed randomly with other Boundary
Register cells. Drawings shown in this book will keep them together.
7.2 General Architecture of an 1149.4 IC 235
8
A buffer-type switch does have an upper limit on the magnitude of the signal it can transmit
which, if exceeded, will be distorted.
236 7 IEEE 1149.4: Analog Boundary-Scan
Series Impedance
When Closed
Control=0 Control=1
The 1149.4 standard contains the 1149.1 Test Access Port which is four (optionally
five) digital signals. In addition to this it contains an Analog Test Access Port or
“ATAP”. In a minimum configuration, this port consists of two analog signals
labeled AT1 and AT2 as originally shown in Fig. 7.3. This port is used to connect
external analog stimulus and measurement resources to an 1149.4 conformant IC.
Typically, the AT1 port is used for stimulus into the IC and the AT2 port is used
for transmitting a response back to a measurement resource.10 It is intended that one
or more compatible ICs would have their ATAP signals connected in parallel, just as
TCK and TMS are connected in parallel as shown in Fig. 7.6 creating a simple
chain. However, it is not required that two ICs that do have common TCK and TMS
signals also have common AT1 and AT2. For example, one IC may generate a great
deal of internal noise and the other may be required to have a very quiet environ-
ment, so it may be undesirable to connect the two ATAPs together when optimum
system performance is required. In this case, the external test equipment used for
analog testing will need access to both of the ATAPs.
9
These switches are known as “crummy switches” within the 1149.4 Working Group. (For non-
English speakers, “crummy” means “low quality”.) The term constantly reminds us that these
switches have serious limitations.
10
If the switches used in an implementation are bidirectional (for example in a CMOS technology)
then the pins AT1 and AT2 may have their roles reversed.
7.2 General Architecture of an 1149.4 IC 237
U1 U2
TDI TDO
TCK
TMS
AT1
AT2
ParaConn
Fig. 7.6 Two or more 1149.4 ICs chained together. Note AT1 and AT2 are not required to be con-
nected in parallel as shown here
The TBIC function first introduced in Fig. 7.3 (on page 245) is used for three major
purposes. First, it is used to connect or isolate the internal analog measurement
buses AB1 and AB2 to/from AT1 and AT2. Second, it is used to perform 1149.1-
type interconnect tests on the AT1 and AT2 pins. Third, it supports characteriza-
tion11 processes that may be needed to improve the accuracy of analog measurements.
A switching structure meeting the requirements of 1149.4 is shown in Fig. 7.7.
Switches S1 through S4, along with the one-bit digitizers that generate signals
DAT1 and DAT2, are used to support 1149.1-style interconnect tests. (The destination
of these digitized signals is found in Fig. 7.8) The digitization is performed in rela-
tion to some threshold voltage shown as VTH. Because this digitization need only be
coarse rather than a precise operation, this threshold reference may not physically
exist except as a physical property12 of the silicon implementation. The goal is to
cheaply obtain a one-bit measure of the voltage on the pin. (Lofstrom [Lofs96a]
shows how to avoid undesirable current surges when an input voltage is near the
threshold.) In general, VL<VTH<VH with the additional goal that a short between
AT1 and AT2 will not produce an intermediate voltage that approximates VTH.
11
In other literature (including 1149.4) you will see the word “calibrate” rather than “characterize”
used in this context. The 1149.4 standard does not have any adjustable features that can be cali-
brated, so instead we characterize the operational parameters of important features and record
them for mathematical corrections performed later.
12
For example, a simple logic buffer has an inherent threshold somewhere between a “low” voltage
value and a “high” value. There is no “comparison” done with an actual threshold.
238 7 IEEE 1149.4: Analog Boundary-Scan
DAT1
AT1 AB1
S5
S1 S3 Dig S9
S7
VH VL VTH VClamp
S8
S2 S4 Dig S10
S6
AT2 AB2
For Interconnect Test For Isolation and Characterization
DAT2 TBICSwch
Fig. 7.7 A TBIC switching structure inserted between AT1/AT2 and AB1/AB2. Note one-bit digi-
tized values of the AT1/AT2 signals are generated
Towards
TDO
M2
From TAP Mode2 S1
TBIC Control Decode Logic
Controller M1
Mode1 S2
D2 S3
DAT2 C U
From TBIC S4
Digitizers S5
D1
DAT1 C U
S6
Co S7
C U
Uncommited, may S8
be used for improved
TBIC testability Ca S9
C U
S10
From
TDI
TBICCntl
Fig. 7.8 Control structure for the switches shown in Fig. 7.7
7.2 General Architecture of an 1149.4 IC 239
13
Testing software will often need to know the value of parasitic parameters in the AT1/AT2 paths,
both within the IC (mainly resistive impedance or gain factors, see Sect. 7.4.4) and at the board
level (mainly capacitance). These parameters can then be modeled as additional devices in the
overall network being tested.
14
See Sect. 7.4.3 for the control needed for more elaborate TBIC structures that handle partitioned
internal analog buses.
15
The order of these cells is arbitrary and they may be intermixed with other cell in the Boundary
Register.
16
Boundary Register cells in 1149.1 were implicitly named “control”, “data”, and so on.
The 1149.4 standard has chosen to explicitly name the cells it uses in both the TBIC and ABMs.
17
It is recommended in 1149.4 that these uncommitted capture cells should capture internal TBIC
signals with poor observability to improve the testability of the TBIC implementation.
240 7 IEEE 1149.4: Analog Boundary-Scan
Table 7.2 TBIC switching patterns (P0 through P9) for the switches shown in Fig. 7.7
Switch state (S1–S10)
P# 1 2 3 4 5 6 7 8 9 10 Function
0 0 0 0 0 0 0 0 0 1 1 ATn disconnect (Hi-Z), clamp ABn
1 0 0 0 0 0 1 0 0 1 0 Connect AT2 to AB2 Patterns P1-P3 support
2 0 0 0 0 1 0 0 0 0 1 Connect AT1 to AB1 analog metrology.
3 0 0 0 0 1 1 0 0 0 0 Connect ATn to ABn
4 0 0 1 1 0 0 0 0 1 1 AT1/2 drive 00 out Patterns P0 and P4-P7
5 0 1 1 0 0 0 0 0 1 1 AT1/2 drive 01 out support 1149.1-style
6 1 0 0 1 0 0 0 0 1 1 AT1/2 drive 10 out interconnection tests.
7 1 1 0 0 0 0 0 0 1 1 AT1/2 drive 11 out
8 0 0 0 0 0 1 1 0 1 0 For characterization
9 0 0 0 0 1 0 0 1 0 1 For characterization
Table 7.3 Assignment of TAP instructions to mode signal values for the TBIC
TAP instruction Mode1 (M1) Mode2 (M2)
EXTEST, CLAMP, RUNBIST 1 1
PROBE, INTEST 0 1
HIGHZ 1 0
BYPASS, SAMPLE, PRELOAD, IDCODE, USERCODE 0 0
The next question is “what is the ‘TBIC Control Decode Logic’” in Fig. 7.8. This
logic is used to select from the switching patterns (P0 through P9) given in Table 7.2
for the switches in Fig. 7.7. We need to know how this logic will select them. First,
TAP instructions must be associated with the mode lines M1 and M2. A possible
assignment is shown in Table 7.3. (Most of these instructions are familiar, but more
description will be presented in Sect. 7.3 where their effects in an 1149.4 environ-
ment are detailed.)
Now that M1 and M2 are assigned, Table 7.4 shows how the bits contained in the
four Boundary Register cells Ca, Co, D1 and D2 are used to select switch patterns.
An asterisk (“*”) in some table entries indicates that there is no switching pattern
yet assigned for this combinations of mode and cell values. Future versions of the
1149.4 standard may assign patterns to these uncommitted combinations, so they
should be considered “reserved”. Application software designed to support the
current edition of the standard should avoid these reserved combinations.
Table 7.4 may seem confusing, so it is useful to point out that there are some
simple relationships that make it more understandable.18
18
The following list of statements assumes Mode1 and Mode2 are not “10” (HIGHZ) or “00”
(BYPASS, etc.). When they are, no pattern of bits in the TBIC control cells has any effect on the
mission operation of the IC nor on the state of the ATn pins, which are disconnected.
7.2 General Architecture of an 1149.4 IC 241
Table 7.4 Selection of TBIC switch patterns versus Boundary Register cell content
Cells Modes 1/2 = 11 Modes 1/2 = 01 Modes 1/2 = 10 Modes 1/2 = 00
Ca/Co/D1/D2 EXTEST, etc. PROBE, etc. HIGHZ BYPASS, etc.
0000 P0 P0 P0 P0
0001 P1 P1 P0 P0
0010 P2 P2 P0 P0
0011 P3 P3 P0 P0
0100 P4 * P0 P0
0101 P5 * P0 P0
0110 P6 * P0 P0
0111 P7 * P0 P0
1000 P0 * P0 P0
1001 P8 * P0 P0
1010 P9 * P0 P0
1011 * * P0 P0
1100 * * P0 P0
1101 * * P0 P0
1110 * * P0 P0
1111 * * P0 P0
• When all four bits are “0”, the ATn port is disconnected from the ABn bus and
the ATn pins are in a high impedance state.
• When Ca = 0 (i.e., the first eight rows) the test circuitry is configured for test
purposes. Otherwise it is configured for characterization.
• When Ca and Co are both “0” (i.e., the first four rows) then none, one, or both of
the ATn ports are connected to ABn. The AT1 connection is governed by the D1
cell and the AT2 connection is governed by the D2 cell.
• When Ca = 0 and Co = 1 (i.e., the second set of four rows) then AT1 and AT2 are
enabled to drive digital interconnect test signals out from the IC19 while monitor-
ing the pin state. In this mode, D1 is a bidirectional data cell for AT1 and D2 is a
bidirectional data cell for AT2. Cell Co is the enable control for both.
Finally, Table 7.5 shows a set of logic equations (for the mode assignments used
in this example) that will implement the switch pattern selections given in Table 7.4.
This concludes the discussion of a minimal TBIC. The TBIC can be extended to
support a differential ATAP (see Sect. 7.4.1 on page 271) which may be used to sup-
port differential measurements (if desired) on ICs that have differential I/O. The
TBIC can also be expanded to support partitioned internal ABn buses (see Sect. 7.4.3
on page 274) when an IC designer desires to separate potential parasitic coupling
between (for example) sensitive input amplifiers and large signal output buffers.
19
Note one slight difference here as compared with conventional 1149.1 drivers. When Co is “0”
which disables the ATn drivers, the data cells have a possible, small parasitic effect on the IC by
enabling switches S5 and/or S6 if D1 and D2 are not both “0”.
242 7 IEEE 1149.4: Analog Boundary-Scan
The ABM function first introduced in Fig. 7.3 (on page 245) is used for two major
purposes. First, it supports 1149.1-style interconnect tests. Second, it supports ana-
log test metrologies aimed at testing off-chip analog components in “extended inter-
connect”. Figure 7.9 shows a structure of an ABM meeting the requirements of
1149.4 that may be used at any analog system pin.20
Starting on the left side of Fig. 7.9 is the analog core circuitry that performs the
mission of the IC. For test purposes, this core will need to be disconnected from the
analog pin on the right side. This disconnection property is shown as a discrete switch
SD, but it is quite important to note that this switch may not physically exist as shown
in the implementation of an ABM. In some cases, usually for analog outputs, it may
be a function that exists in the analog core that can be controlled as if it were a switch
in the location shown. In other cases (for example, analog inputs) this switch may not
exist because the input has a very high impedance and thus cannot interfere with test
activities. In yet another instance (again, for an analog input) the switch may not
exist, but the control signal that controls it is used in the analog core to desensitize the
core function to test signals appearing on the pin. Because the core disconnect switch
SD may not actually exist as a physical entity, we call it a conceptual switch [Park93].
Next in Fig. 7.9 we see a one-bit digitizer that creates a digital interpretation of
the voltage on the analog I/O pin. This signal DPin will appear later in Fig. 7.10. This
digitized signal is used to support 1149.1-style interconnect tests. The digitization
is performed in relation to some threshold voltage shown as VTH. Because this digi-
tization need only be coarse rather than a precise operation, this threshold may not
physically exist except as a physical property of the silicon implementation. The
goal is to cheaply obtain a one-bit measure of the voltage on the pin (see [Lofs96a]).
In general, VL < VTH < VH with the additional goal that a short between neighboring
analog pins should not produce an intermediate voltage that approximates VTH.
20
Note, the AT1/AT2 pins are not analog system pins, but part of the 1149.4 test resource set.
7.2 General Architecture of an 1149.4 IC 243
AB1 AB2
VH ESD
DPin Protection
SH
Analog SD
Core Core
Disconnect Dig SL SG SB1 SB2
Analog
VTH VL VG
Pin
From
TBIC ABMSwtch
Fig. 7.9 ABM design detail for a generalized analog function pin
Towards
TDO
M2
From TAP Mode2 SD
ABM Control Decode Logic
Controller M1
Mode1
SH
B2
Uncommited, may CU
C
CU SB1
From
TDI
ABMCntl
Fig. 7.10 Control structure for the switches shown in Fig. 7.9
Also in Fig. 7.9 we see three DC voltages labeled VL, VH and VG which can be
connected to the analog pin with three switches respectively labeled SL, SH and
SG. Voltages VL and VH are used to create digital voltage levels on the analog pin in
support of 1149.1-style interconnect tests. Voltage VG is used in support of analog
metrology. Therefore VG should be a reference quality voltage, which means it is a
voltage source capable of sourcing or sinking current over a defined range without
244 7 IEEE 1149.4: Analog Boundary-Scan
21
This does not necessarily mean a loss of fault coverage since shorts and opens can be detected as
a side effect of testing extended interconnect. However, the considerable speed advantage of
1149.1-style testing would be lost.
7.2 General Architecture of an 1149.4 IC 245
Table 7.6 ABM switching patterns (P0 through P19) for the switches shown in Fig. 7.9
Switch state (0/1 = open/closed)
P# SD SH SL SG SB1 SB2 Pin state
0 0 0 0 0 0 0 Completely isolated
1 0 0 0 0 0 1 Monitored by AB2
2 0 0 0 0 1 0 Connected to AB1
3 0 0 0 0 1 1 Connected to AB1, monitored by AB2
4 0 0 0 1 0 0 Connected to VG
5 0 0 0 1 0 1 Connected to VG, monitored by AB2
6 0 0 0 1 1 0 Connected to VG and AB1
7 0 0 0 1 1 1 Connected to VG & AB1, monitored by AB2
8 0 0 1 0 0 0 Connected to VL
9 0 0 1 0 0 1 Connected to VL, monitored by AB2
10 0 0 1 0 1 0 Connected to VL and AB1
11 0 0 1 0 1 1 Connected to VL & AB1, monitored by AB2
12 0 1 0 0 0 0 Connected to VH
13 0 1 0 0 0 1 Connected to VH, monitored by AB2
14 0 1 0 0 1 0 Connected to VH and AB1
15 0 1 0 0 1 1 Connected to VH & AB1, monitored by AB2
16 1 0 0 0 0 0 Connected to core, isolated from test
17 1 0 0 0 0 1 Connected to core, monitored by AB2
18 1 0 0 0 1 0 Connected to core and AB1
19 1 0 0 0 1 1 Connected to core & AB1 monitored by AB2
Note that the capture stage of D captures the state of the DPIN signal generated in
Fig. 7.9. The C and D cells form a two-cell bidirectional structure (full pin monitor-
ing) for the support of 1149.1-style interconnect tests. The capture stages of the
other three cells, C, B1 and B2 are uncommitted. It is recommended that these be
used to capture embedded, hard-to-observe signals within the ABM to improve the
testability of the implementation.
So now the question is “what is the ‘ABM Control Decode Logic’” shown in
Fig. 7.10. Table 7.7 shows how the four Boundary Register cells C, D, B1 and B2
are used to select from the 20 switch patterns P0 through P19. An asterisk (“*”) in
an entry indicates there is no switch pattern (yet) assigned for this combination of
control bits and they should be considered “reserved” for future assignment by the
1149.4 Working Group. As before in the discussion of the TBIC control, we need to
associate values for Mode1 (M1) and Mode2 (M2) with instructions. This is done in
Table 7.3 on page 253, the same assignment used for the TBIC.
Table 7.7 also contains some simple relationships that make it more
understandable.22
22
The following list of statements assumes Mode1 and Mode2 are not “00” or “10”. When they are
“00”, then no pattern of bits in the ABM control cells has any effect on the mission operation of
the IC. If they are “10” then the pin is HIGHZ regardless of cell content.
246 7 IEEE 1149.4: Analog Boundary-Scan
Table 7.7 Selection of ABM switch patterns versus Boundary Register cell content
Cells Modes 1/2 = 11 Modes 1/2 = 01 Modes 1/2 = 10 Modes 1/2 = 00
C/D/B1/B2 EXTEST, etc. PROBE, etc. HIGHZ BYPASS, etc.
0000 P0 P16 P0 P16
0001 P1 P17 P0 P16
0010 P2 P18 P0 P16
0011 P3 P19 P0 P16
0100 P4 * P0 P16
0101 P5 * P0 P16
0110 P6 * P0 P16
0111 P7 * P0 P16
1000 P8 * P0 P16
1001 P9 * P0 P16
1010 P10 * P0 P16
1011 P11 * P0 P16
1100 P12 * P0 P16
1101 P13 * P0 P16
1110 P14 * P0 P16
1111 P15 * P0 P16
• When cell C = 0 (the first 8 rows), cell D determines whether the VG reference is
connected to the pin. These rows are used for analog measurements.
• When cell C = 1 (the last 8 rows), cell D controls the logic state of the pin for
1149.1-style interconnect tests. Thus cell C can be envisioned as a driver enable
cell and cell D is a self-monitoring data cell23 for the pin.
• In all rows, cell B1 controls the connection of AB1 to the pin and cell B2 controls
the connection of AB2 to the pin.
The logic equations for controlling the six ABM switch functions (remember,
some of the switches themselves may be conceptual) are given in Table 7.8.
23
Note however that cells B1 and B2 do have a parasitic effect of closing the switches on the analog
ABn bus to the pin. To prevent this, load B1 and B2 with “00” while doing 1149.1-style testing. Cell
D should also be set to “0” when the 1149.1 “driver” is not enabled, to prevent the VG reference
from being connected to the pin.
7.2 General Architecture of an 1149.4 IC 247
AB1 AB2
A B
VH VH
RP RP
SB1
RP
VL
Analog VL
SB2
Pin Analog
ABMESD Pin
Fig. 7.11 ESD protection circuit for a typical pin (a) and an 1149.4 pin (b)
There is one last detail shown in Fig. 7.9 on page 256. Note the electrostatic
discharge protection circuitry next to the pin pad. The existence of this circuitry
must be accounted for with respect to the connection layout of AB1 and AB2 and
the pin itself. The AB1 path conducts current, so there may be a voltage drop when
this current traverses the series resistance RP in the protection circuitry. This is only
a problem if the voltage sensing path for AB2 is inside this path so that the true pin
voltage is not being measured. Figure 7.11 shows a pin ESD protection network
before and after 1149.4 is added. The redundant paths allow us to remove the effects
of the voltage drop within the protection circuit. This is an important point because
IC layout processes may put a common metallization path with significant shared
impedance in place of the two independent paths [Nuri97b, Park97].
This concludes the discussion of the ABM architecture. Soon the 1149.4 instruc-
tion set will be described which will make use of the ABM structures. This should
answer some questions the reader has probably generated concerning how an
analog pin is supposed to behave during the execution of these instructions.
24
A clean assignment of cells to pins is somewhat blurred by the fact that in 1149.1, a single driver
enable control cell may be shared by several pins. Then there is cell merging (see Sect. 2.4.1 on
page 78) to further cloud this concept. Neither concept exists for cells in TBIC or ABM structures
governed by 1149.4.
248 7 IEEE 1149.4: Analog Boundary-Scan
D D D D
Outputs
Digital
Digital Digital
Digital
Inputs
D D D D
Core Core
D D D D
Interface
DBMs at
D D D
D/A D/A
Interface Interface
ABM ABM ABM ABM
Analog
Analog
I/O
Analog Analog
I/O
Core Core
ABM ABM ABM ABM
TBIC TBIC
TDI TDI
TDO TDO
A B InternIF
Fig. 7.12 Alternative forms for the Boundary Register depending on whether INTEST and/or
RUNBIST are supported
The philosophy behind DBM design is different than that behind the ABM.
While ABMs treat all pins homogeneously, DBMs strive to mimic the system nature
of the pins they control. That is why in 1149.1 you see “input”, “output” and “bidi-
rectional” DBMs. In 1149.4 you see a standardized ABM, though the implementa-
tion details may indeed reflect the nature of the pin by using some of the native
resources for that pin.
In a mixed signal IC, there is very likely to be an analog-to-digital and/or digital-
to-analog interface between the two domains. The 1149.1 standard has always
required that there be DBMs located at the interface between digital and analog
domains. The 1149.4 standard allows an option, shown in Fig. 7.12. If the IC does
not support INTEST or RUNBIST, the DBMs used to partition the analog domain
from the digital are not required.
The 1149.4 instruction set is a superset of the 1149.1 instruction set in two ways.
First, there is a new, mandatory instruction called PROBE described in Sect. 7.3.3.
Second, the instructions that target the Boundary Register such as EXTEST
7.3 The 1149.4 Instruction Set 249
(Sect. 7.3.1) and INTEST (Sect. 7.3.6) have expanded definitions that take into
account the fact that analog pins are now included.
Some 1149.1 instructions are identical in definition within 1149.4. For example,
BYPASS, PRELOAD, IDCODE and USERCODE are exactly the same in that they
are non-invasive. They have no effect on analog pins. This means they connect the
analog pin to the core circuit and open all other switches to isolate the pins (including
the ATn pins) from the test circuitry.
The HIGHZ instruction is also the same, but expanded to include the analog
pins, all of which float, completely isolated from the core and test circuitry. The
SAMPLE instruction is the same, but it also captures a digitization of the voltages
appearing on the analog pins.25 The remaining instructions described in the follow-
ing sections deserve a bit more discussion.
The mandatory EXTEST instruction (see Sect. 1.5.1 on page 38) is still the funda-
mental workhorse of 1149.4. It is used in the familiar role of implementing 1149.1-
style interconnect tests. (see Chap. 3) It is also used to support analog measurements
for the testing of external analog components that make up extended interconnect.
On digital pins, EXTEST behaves exactly as described in 1149.1. On analog
pins, EXTEST may emulate “digital” behavior by either disabling an analog pin, or
by connecting it to a low or high voltage, VL or VH. (See switch patterns P0, P8 and
P12 in Table 7.6.) This allows many analog pins to participate in interconnect tests.
However, some analog pins may be connected to extended interconnect that pre-
vents them from emulating digital signals. In one case, the external impedance (for
example, a 50 Ω termination to ground) may be too low for the drive capability of
ABM to overcome in order to establish both logic states. When this occurs, the
interconnect test must treat the pin as fixed. Later, when analog measurements are
made of the external impedance, problems such as shorts and opens will be detected,
albeit sequentially and at much slower speed.
In another case, the extended interconnect presents very high impedance, such
that two nodes are logically independent. For example, in Fig. 7.2 on page 242 we
saw two analog pins connected through a capacitor. If this capacitor is (say) 100 pF,
then the two nodes connected to it are going to be logically independent. In this
case, they should be treated by the interconnect test algorithm as two distinct nodes
with their own interconnect serial test vectors (STVs) as discussed in Chap. 3. This
works because an ABM has bidirectional capability, allowing it to simultaneously
control and observe its pin.
25
Both HIGHZ and SAMPLE act upon the ATn pins as if they were system digital pins.
250 7 IEEE 1149.4: Analog Boundary-Scan
Test Power
Controller Supply 1 Device
Under
1149.4 Z Test
AT1 IC
AT2 2
i
TDI TDO
V
Digital Test TCK
Sequencer TMS
ATE System
Metrol1
Fig. 7.13 An ATE system set up to utilize 1149.4 resources in an IC to measure an externally con-
nected impedance
26
The TBIC must also be set up to connect one or both of ATn to ABn signals as needed.
7.3 The 1149.4 Instruction Set 251
AB1 ABM1 1
TBIC
Current
AT1 S5 SB1
SB2
Voltage Z
A AT2 S6
ABM2
i V
SG 2
AB2
AB1 ABM1 1
TBIC
Current
AT1 S5 SB1
Voltage Z
B AT2 S6
ABM2
i V SB2
SG 2
AB2
Metrol2
Fig. 7.14 Two measurements (a) and (b) used to find the voltage across Z for a known current
the resulting voltages will be within operating range of all parts of this circuit. Keep
in mind the total impedance of the pathway must be considered, which includes the
series impedance of the three switches that conduct the stimulus current. A voltage
compliance limit on this current source must be set to keep it from exceeding these
operating ranges in the event there is an open circuit, or if Z has been misloaded
with a much larger valued device. If the component Z blocks DC current (for exam-
ple, Z is a capacitor) then an AC source may be needed as discussed in [Park97].
This example has illustrated the basic idea of using 1149.4 resources and the
EXTEST instruction to provide access to external impedances. Of course it will be
necessary to deal with networks of these impedances, and [Park93] showed how
this can be accomplished27 with more manipulations of the switches, and so on. But
the idea is the same; inject a known current and make a series of node voltage mea-
surements. The node voltage analysis technique [McDe98a, McDe98b] presented in
Sect. 6.2.1 on page 228 is a perfect match for this process, and also shows us how
we can reduce the number of nodes that must be measured to obtain a result. This is
particularly important when there are nodes in the network-under-test that are not
connected to either 1149.4 resources or test system probes.
The optional CLAMP instruction (see Sect. 1.5.5 on page 40) is used to freeze the
states of digital outputs for the duration of some testing operation while placing the
BYPASS register between TDI and TDO for fast shifting.
In 1149.4, digital pins are treated identically. Analog pins too are frozen as well
as the state of the TBIC. Thus you can have an analog pin held to (say) VL or you
could even have a measurement setup frozen if it doesn’t need to change during a
set of analog measurements. The CLAMP instruction will most likely be used to
keep the both analog and digital circuitry quiescent while either digital or analog
testing is underway.
In 1149.1, the optional HIGHZ instruction (see Sect. 1.5.4 on page 40) when loaded
and activated, disables all output and bidirectional pins. The 1149.4 behavior is
identical for digital pins. For analog pins, the behavior is also to disable all pins by
opening the core disconnect function (switch SD in Fig. 7.9 on page 256) and dis-
connecting all test resources. The TBIC is also disabled.
27
This 1993 work was based on an extremely useful network analysis theorem given by Tellegen
[Tell52].
7.3 The 1149.4 Instruction Set 253
The mandatory PROBE instruction is the only instruction unique to the 1149.4
standard. It targets the Boundary Register between TDI and TDO. The designer may
choose the instruction bit pattern that decodes to PROBE. The PROBE instruction
is analogous to SAMPLE, but in the analog domain and with the restriction that
only one of the analog pins can be sampled at one time.28 This is because there is
only one set of ABn wires available to perform analog sampling.
When the PROBE instruction is active, all DBMs are set to allow digital pins to
be connected to the core circuitry. Also, all core disconnect functions (labeled SD in
Fig. 7.9, page 256) are closed so that all analog pins are connected to the core cir-
cuitry. Further, the TBIC switches are also governed by the content of the TBIC
control register so that ATn to ABn connections may be made as desired.
ABM switch patterns P16 through P19 in Table 7.6 are used by the PROBE instruc-
tion to connect none, one or both of the ABn lines to an analog pin. If AB2 is con-
nected (and AB2 is connected to AT2 by the TBIC) then the voltage appearing on any
analog pin can be monitored at AT2 in real time.29 In all other respects the IC is fully
operational although there could be some small parasitic effect from having the AB2
switch closed. If AB1 is also enabled (and AT1) then one can inject a small (attenu-
ated) stimulus into any analog pin while the IC is otherwise fully operational. This
could be useful for testing experiments where one wants to measure the effect of an
externally applied voltage, current, at frequency, such as in noise measurements.30
The optional RUNBIST instruction (see Sect. 1.5.3 on page 39) is identical to its
1149.1 definition. This instruction targets a register (that can be the Boundary
Register) between TDI and TDO that will collect the RUNBIST test result upon
completion of the RUNBIST action. This result can be shifted out to determine if
the test passed. As in 1149.1, there are two choices for I/O pin behavior while
RUNBIST is active. The first choice is to mimic the HIGHZ instruction, disabling
all output drivers. The second choice is to mimic CLAMP, controlling all outputs
via the content of the Boundary Register.
28
In CMOS technology, AB1 and AB2 could be electrically identical such that you could monitor
two pins at the same time.
29
This pathway is not a high frequency path because there is the significant series impedance of the
ABM and TBIC switches plus the external (mainly capacitive) loading on AT2. However, for lower
frequencies, or testing experiments contrived to operate at low frequencies, this is a powerful feature.
30
The ability to inject analog stimulus on a pin is why the PROBE feature is not considered an
extension of SAMPLE which is completely non-invasive.
254 7 IEEE 1149.4: Analog Boundary-Scan
Analog pins must behave the same way as the digital pins (HIGHZ or CLAMP
behavior). The signature developed by RUNBIST that is finally read out may or
may not give an indication of the health of the internal analog circuitry. In either
case, this result should be completely independent of any externally generated
analog signals appearing on analog inputs just as the signature is required to be
independent of any external digital signals.
The optional INTEST instruction (see Sect. 1.5.2 on page 38) is used to test the
internal circuitry of an IC while that IC is mounted on a board. In the 1149.1 world,
it does this by replacing each I/O pin with one or more Boundary Register cells and
using these cells to present inputs and collect outputs in parallel. If an 1149.4 device
supports INTEST, then the Boundary Register must include interface cells between
the digital and analog portions of the system circuitry as shown in Fig. 7.12b back
on page 263. This is because this interface contains I/O for both the digital and ana-
log portions of the device that must be controlled and observed in order to test each.
Just as with RUNBIST, there are two choices for I/O pin behavior while INTEST
is active. However there is a difference; the choices only apply to digital pins. The
first choice is to mimic the HIGHZ instruction, disabling all output drivers. The sec-
ond choice is to mimic CLAMP, controlling all outputs via the content of the Boundary
Register. Analog pins remain connected to the core during INTEST; that is, the SD
switch function is closed (see Fig. 7.9 on page 256). Further, each analog pin may be
connected to none, one, or both of ABn31 as controlled by the content of the ABM
control bits. (Switch patterns P16 through P19 in Table 7.6, page 258, are used.)
With 1149.4, the digital core can be tested with INTEST exactly as is done with
1149.1. Digital test patterns can be shifted in, applied to the core, and the result
captured and shifted out (see Sect. 3.1.5). The Boundary Register cells between the
analog and digital portions of the core ensure that the two portions are isolated and
unable to affect each other. Because of this, any activity on the analog I/O of the IC
will not propagate to the digital portion of the IC. This is shown in Fig. 7.15.
In 1149.4, INTEST can also be used to test the analog core as depicted in
Fig. 7.16. Here, the digital portion of the core is no longer the focus.32 Instead, the
analog core is controlled and observed at the internal digital-to-analog interface by
DBMs, and the analog I/O can be stimulated/observed via the ABMs. Of course,
31
Connecting either AB1 or AB2 requires that the TBIC also be controlled to connect the appropri-
ate ATn pins.
32
There is no difference in the operation of the test logic, just in the focus. In principle, you could
conduct testing on both the analog and digital portions of the circuit simultaneously, though this
would likely be cumbersome. Usually you would focus on one portion and leave the other in a
quiescent state.
7.3 The 1149.4 Instruction Set 255
D D
Digital Digital Digital
D D
Inputs Core Outputs
D D
D D D
Digital Outputs
Digital Inputs
Captured by DBMs
Supplied by DBMs
Unaffected by
Analog Signals
Analog Analog
I/O I/O
TDI TDO
Intest
Fig. 7.15 Testing the digital core using INTEST. The analog core is not directly tested
Digital Digital
Inputs Outputs
Digital Outputs of
Digital Inputs of Analog Core
Analog Core D D D Monitored by
Supplied by DBMs
DBMs D/A
Interface
ABM ABM
Analog Analog Analog
I/O Core I/O
ABM ABM
TBIC
TDI TDO
IntestAn
Fig. 7.16 The analog core can be tested by patterns supplied at the D/A interface and by signals
supplied or controlled by the ABMs
256 7 IEEE 1149.4: Analog Boundary-Scan
only one pin33 can be stimulated and one observed, though all may interact with
external circuitry. One can use other ATE resources to control the external circuitry,
if so desired.
INTEST and PROBE are similar in that they both allow the analog core to remain
connected to external circuitry. They differ in that PROBE allows the internal digital
circuitry to interact with the analog core, while INTEST disconnects the digital core
and supplies control and observation capability over their interface. See Sect. 7.4.2
for a discussion of how INTEST is used to test differential signal transmissions.
What has been described to this point is a (near) minimal 1149.4 implementation.
Additions are provided for by the standard. These include adding a second TBIC
creating a differential ATAP port, a differential ABn bus, and the ability to partition
the ABn bus to isolate groups of analog pins more completely.
The 1149.4 standard allows for the addition of a second TBIC that provides two new
test pins AT1N and AT2N to an 1149.4 IC. Inside the IC, this second TBIC is con-
nected to a second ABn bus with wires labeled AB1N and AB2N. It is intended that
the ABn bus service the positive side of differential function pins and that the ABnN
bus service the negative side.34 The section immediately following describes how
1149.4 addresses differential function I/O.
Differential I/O has been a surprisingly difficult topic for both the 1149.1 and 1149.4
Working Groups to deal with. (See also Chap. 8 on testing differential I/O with
IEEE Standard 1149.6.) Until only recently, the 1149.1 stance was that if a pair of
differential signals had a clear “digital” nature, then you would treat them as if they
were ordinary digital outputs, with a DBM structure devoted to each. However, if
they were not digital, then you would either ignore them, or place a DBM at the
boundary of the analog-to-digital interface (see Fig. 4.10 on page 169).
33
Two pins (each) may be tested if the differential option (see Sect. 7.4.1) is implemented.
34
A designer may also opt to add the second TBIC to provide for differential access to private func-
tions governed by private instructions.
7.4 Other Provisions of 1149.4 257
The 1149.4 Working Group had the charter for dealing with analog pins, so this
group couldn’t advise you to “just ignore” differential pins of either nature. The first
recommendation from this group was simple; put an ABM on all differential pins.
However, this led to some debate.
Debate Item 1: Differential drivers are often “special” designs that always create
opposite states on their pin pairs.35 Since 1149.4 can emulate 1149.1 for intercon-
nect test purposes, this requires that differential pins must not be constrained to
opposite states, at least during EXTEST-based testing. To actually do this in a dif-
ferential driver design may be quite difficult (costly).
Debate Item 2: Placing ABMs on differential pin pairs may be fine for manufac-
turing tests of individual boards where noise may be non-existent. However, if you
need to perform a system test of a differential pathway in a noisy environment, you
really do need to transmit data across the path in differential form. You could try to
coordinate two ABMs on the driver side to create the opposite states, but the two
ABMs on the receiving side do not have the ability to remove common-mode noise.
First, we examine Debate Item 1 a bit more. There are two scenarios. In one
scenario, we have only simple interconnect between the differential driver and
receiver such as we saw back in Fig. 4.10 (page 169). Thus an ABM that simply
disconnects (or places into a high impedance state) the differential driver and sub-
stitutes its own (weak) drive high/low capability on the pin will be sufficient to do
interconnect testing. All that is required of the differential driver design is that it be
disconnected on demand by the core disconnect signal.36 In scenario two, there is
extended interconnect between the differential driver and receiver, typically, low-
valued termination resistors. An ABM’s weak drive high/low capability would be
insufficient to create logic states into this loading. We can try to design the differen-
tial driver to act as the source of VH and VL for the ABM as 1149.4 allows if that is
practical. If not, we will have to omit these differential signals from 1149.1-style
interconnect testing. This means we will have to determine the integrity of the inter-
connect with analog measurements of the external impedances. This will detect
interconnect faults, but at the price of a sequence of slow analog measurements and
potentially degraded diagnostic resolution.
Then there is Debate Item 2, how to verify the noise rejection capability of dif-
ferential signaling. For this discussion, examine Fig. 7.17.
This figure shows an example of analog differential signaling and how you could
marry the 1149.1 and 1149.4 approaches to differential signaling. It places ABMs at
the I/O periphery and places DBMs at the boundary where the system changes to/
from differential signaling. From first appearances, the DBMs give you the ability
35
For digital pins, this means opposite voltage states. For analog pins, this may be represented by
the polarity of current flow, as one example.
36
This signal is “SD” in Table 7.8. Note the differential receiver should also be able to tolerate
non-differential signals that occur during interconnect testing. The SD signal may be used to gov-
ern this behavior.
258 7 IEEE 1149.4: Analog Boundary-Scan
Analog
Differential
U1 Signals U2
Digital Core
Digital Core
SIG+
ABM ABM +
CU CU
ABM ABM -
SIG-
D/A A/D
TDI Interface TDO TDI Interface TDO
DiffTest
to drive and receive differential information and that seems sufficient to perform
system tests for noise rejection. You might imagine that EXTEST will be the way
this gets done. However, this is an example of the “EXTEST Paradox”. When you
load EXTEST into the Instruction Register, this indeed will set up the DBMs to
control the differential driver and observe the differential receiver. However, the
ABMs also respond to EXTEST by disconnecting the pins from the differential
driver and receiver. Thus you cannot test the noise rejection capability of this dif-
ferential pathway using EXTEST!
There is a solution. If you examine Fig. 7.17 closely, you will notice that it con-
forms to the general concept of separating analog and digital cores that was shown
in Fig. 7.16. In essence there is no analog core per se, just the digital-analog inter-
face. Note too that Fig. 7.16 illuminates the behavior of INTEST. This is our solu-
tion; use INTEST to test for noise rejection of differential signaling.
To do this, set U1 and U2 in Fig. 7.17 to perform INTEST. This allows the two
DBMs shown to control/observe the differential port. Remember that while in
INTEST, the ABMs leave the I/O pins connected to their respective analog cores,
which in this case are the differential driver and receiver. Is this a perversion of the
meaning of INTEST, you may ask? I’d have to say yes, but I can also hedge by say-
ing you are testing an ensemble of internal circuitry spanning two ICs.
For practical reasons, it may be undesirable to have a single ABn bus distributed to
all ABMs. A single bus could be a parasitic pathway for noise to travel from large-
signal outputs back to small-signal inputs. If an IC has multiple power supplies,
then some portions of the IC may have voltage levels that are incompatible with an
ABn bus that visits other regions of the IC supplied by other voltages. Thus 1149.4
supports the partitioning of ABn buses.
7.4 Other Provisions of 1149.4 259
AB1a
S5a
S9a
DAT1 S7a
VClamp
AT1 S8a
S10a
S1 S3 Dig S6a
AB2a
VH VL VTH
AB1b
S2 S4 Dig S5b
S9b
AT2 S7b
VClamp
DAT2 S8b
S10b
S6b
AB2b
PartTBIC
Table 7.9 TBIC extension switching patterns for the switches in Fig. 7.18 for extension k
Switch State (0/1 = open/closed)
P# S5k S6k S7k S8k S9k S10k Function
0k 0 0 0 0 1 1 ATn disconnect (Hi-Z), clamp ABnk
1k 0 1 0 0 1 0 Connect AT2 to AB2k Patterns P1 to P3 used
2k 1 0 0 0 0 1 Connect AT1 to AB1k for analog metrology.
3k 1 1 0 0 0 0 Connect ATn to ABnk
8k 0 1 1 0 1 0 For characterization
9k 1 0 0 1 0 1 For characterization
Partitioning may be done such that a single set of ATn pins can be connected to k
sets of ABn wires, labeled (AB1a, AB2a), (AB1b, AB2b), … (AB1k, AB2k). If k = 1,
then the TBIC is exactly as discussed in Sect. 7.2.3 beginning on page 250. The 1149.4
standard allows for k > 1 extensions of the TBIC, where each extension contains six
additional switches (four are mandatory) and two additional Boundary Register
control cells. Figure 7.18 shows an example where a single ATn port services two
ABn ports (k = 2). This structure is expandable to an arbitrary number of extensions.
Table 7.9 displays the switching patterns defined by the 1149.4 Standard for
extension k.
To control an extension we need two more Boundary Register control cells such
that we can control the switches in the extension independently of the main body of
the TBIC. The main body contains the non-replicated switches S1 through S4 plus
260 7 IEEE 1149.4: Analog Boundary-Scan
Towards S5b
TDO
S6b
Partition (b)
D2b
CU S7b
Uncommited, may
be used for improved D1b S8b
CU
TBIC testability S9b
S10b
M2
D2a S3
DAT2 CU
From TBIC S4
Digitizers S5a
D1a
DAT1 CU
S6a
Co S7a
CU
Uncommited, may S8a
be used for improved
TBIC testability Ca S9a
CU
S10a
From
TDI PartCNTL
Fig. 7.19 Control structure for the extended TBIC switches in Fig. 7.18
the first set of switches S5 through S10 (all given the suffix “a”). The control structure
(for a single extension) is depicted in Fig. 7.19. Additional extensions may be added
in similar fashion.
The control for partition “a” (the main body) is identical to that shown in Fig. 7.8
(page 253), governed by Table 7.2 through Table 7.5. In general, since there may be any
number of extensions, Table 7.9 shows the switching patterns for the kth extension.
Then Table 7.10 describes how Boundary Register cells Ca plus two additional
cells D1k and D2k in the kth extension are used to select switch patterns. As before,
the asterisks in some entries indicate the definition of switching patterns that are
reserved for future definition.
It is useful to point out, for Table 7.10, that there are some simple relationships
that make it more understandable.37
37
The following list of statements assumes Mode1 and Mode2 are not “00” or “10”. When they are,
no pattern of bits in the TBIC control cells has any effect on the mission operation of the IC.
7.4 Other Provisions of 1149.4 261
Table 7.10 Selection of TBIC extension switch patterns versus Boundary Register cell content
Cells Modes 1/2 = 11 Modes 1/2 = 01 Modes 1/2 = 10 Modes 1/2 = 00
Ca/D1k/D2k EXTEST, etc. PROBE, etc. HIGHZ BYPASS, etc.
000 P0k P0k P0k P0k
001 P1k P1k P0k P0k
010 P2k P2k P0k P0k
011 P3k P3k P0k P0k
100 P0k * P0k P0k
101 P8k * P0k P0k
110 P9k * P0k P0k
111 * * P0k P0k
The 1149.4 standard gives specifications for items like path impedance, current car-
rying capacity, gain variation versus bandwidth, and so on. Some of these are
beyond the scope of this book,38 so just a few of these are given here to give the
reader an idea of what is expected of an implementation.39 When implementing an
1149.4 IC, it is very important to analyze these specifications ahead of time.
38
Others are beyond the scope of the author!
39
See [Vinn98], Chap. 7, where Steve Sunter gives additional guidance on characterization.
262 7 IEEE 1149.4: Analog Boundary-Scan
Embedded in the previous sections is some rationale for some DFT rules at the IC
level. Rules for board level DFT are harder to come by for lack of experience. And
at the system level (depending on what a “system” is) we have less still. However,
this section presents a collection of DFT guidelines we can imagine today.
We have already had hints of DFT rules show up in previous sections. For example,
in Fig. 7.11 (page 261) we saw that we need to take care in laying out ESD protec-
tion circuitry. Since the AB1 bus may conduct a significant current to a pin, we want
to avoid errors that can occur if we connect the AB2 path at a point where we are no
longer measuring the voltage of the pin itself. This becomes more important as the
line widths of metallization paths become narrower with decreases in IC geome-
tries. This leads us to our first rule.
• DFT-28: Eliminate all common conductive paths between a system pin pad
and the ATn switches (SB1 and SB2).
In Sect. 7.4.3 we saw that we can implement multiple ABn busses with separate
switching. This adds isolation between groups of pins that may otherwise want to
“talk” to each other over the parasitic impedances that can exist. Other reasons to
break the ABn buses into smaller groups are (1) to reduce the accumulated leakages
in any one bus that are the sum of the small leakages that each switch contributes,
and (2) to reduce the accumulated capacitance that each switch will contribute.
Excessive leakage or capacitance may damage the ability of the circuit to perform
analog measurements during testing. An IC designer is well suited to evaluate the
sensitivity of his/her design with respect to these criteria.
• DFT-29: Partition internal analog test buses (per Sect. 7.4.3) to control on-
chip cross talk, leakage, and capacitance.
In some cases the switches themselves, due to their parasitics, may introduce a
worrisome amount of coupling between portions of the circuitry. All the switches
shown to this point are simple transmission structures that take a minimum area but
may not provide optimum isolation. For cases where there is sensitivity to these
parasitics, a pair of switches in series with a shunt switch that connects the middle
node to a quiescent reference voltage (called a “T” switch) can be used to greatly
improve the isolation of the two sides of the overall switch structure as shown in
Fig. 7.20. On a local scale of a single switch, this is similar to the effect we are pur-
suing via bus partitioning examined in the previous DFT rule (DFT-29).
As IC feature geometries continue to shrink, the leakage in these switch struc-
tures will rise. The “T” switch will be very useful for controlling this leakage. So
while the “T” switch is a larger structure, smaller feature sizes will mitigate the cost.
264 7 IEEE 1149.4: Analog Boundary-Scan
Enable Enable
TSwitch
Fig. 7.20 A conventional transmission gate switch and a shunting “T” switch structure that
reduces coupling when the switch is off
• DFT-30: Examine the location of switches for places where the circuit may
be sensitive to parasitic coupling and leakage. Use enhanced switch designs
in these areas to reduce these effects.
Continuing on the topic of parasitic effects, consider how your ATAP pins are
positioned in the IC’s physical pinout. If they are adjacent to each other, can they
influence each other via leakage and capacitance? How about if they are adjacent to
active digital signals, will they be disturbed by these signals during functions such
as PROBE? The layout of the ATn pins with respect to power and ground pins may
be used to mitigate parasitic effects. Consider placing the VG reference voltage pin
between them since subsequent measurements will use this voltage reference.
• DFT-31: Analyse the layout of the ATn pins with respect to leakage and
parasitic effects between them and other signals.
Finally, consider implementing the optional INTEST instruction since this gives
the ability to isolate the digital and analog portions of the IC for tests done later at
the board or system level (see DFT-35 on page 282).
Board DFT for 1149.4 deals with the fact that two ICs containing 1149.4 may not
be compatible with respect to the reference voltages they use internally. These volt-
ages may appear at system pins or the ATn pins. Assume that if two ICs have their
system pins connected, this implies they are compatible at those pins. However,
since the ATn pins can be driven and received, some choice had to be made for the
voltages that are used on these pins. It is possible that they are not compatible from
IC to IC. In Fig. 7.6 (page 250) we saw ICs with their respective TAP and ATAP
pins connected together. It may turn out that the TAPs are all implemented in a com-
mon technology, (say, 3.3 V CMOS) but that VH, VL and VTH used in their respective
ATAPs are not compatible. This would be a reason why a chain of devices, as
viewed by the 1149.1 standard may require separated ATAP ports. If this is neces-
sary, then plan on grouping compatible ATAPs together with common wiring, inde-
pendently of how the TAPs are chained. This will necessitate test access to multiple
7.5 Design For 1149.4 Testability 265
ATAP ports even if there is only one TAP chain on board. For manufacturing test,
this should not present any problems (as long as we have access to all the ATn ports)
since the ATE system can choose which of the ATn ports to access. However, if a
design goal is to implement an embedded self-test using these resources, the addi-
tional ATn ports will have to be accommodated, perhaps with multiplexing to the
board level stimulus and measurement resources.
• DFT-32: Group compatible ATAPs together on common ATn buses. Be pre-
pared to accommodate more ATAP buses than there are TAP chains.
With respect to leakage between ATn signals, an extension of DFT-31 may be
considered at the board level. In analog designs, it is a well-known board layout
technique to place a “guard wire” between two sensitive signal wires. This wire is
connected to a quiescent reference voltage40 also used in measurements (typically
ground) as suggested in Fig. 7.21. Board leakage may be exacerbated by “no-clean”
board manufacturing processes where ionic contamination from manufacturing
(typically soldering) is often still present.
The decision to use a guard wire during layout can be made by examining what
types of values will be measured by a given ATn port. If lower impedances (for
example, termination resistors) will be measured, then guarding will not be needed.
If high impedance, high precision devices (many megohms) are the measurement
target, then a guard wire may be important. Note that in Fig. 7.21, guards are shown
connected to ground. In general, the board node connected to an IC’s VG pin is what
should be used for the guard. It is possible that two identical ICs on the same board
may have their VG pins connected to different voltages. If guard wires are needed
for both ICs, then they should probably have independent ATn ports.
40
In extreme cases, for example, ultra-high resolution voltmeters, this guard wire completely sur-
rounds a sensitive wire in a “box”. Further, it may be a “driven guard”, where an amplifier copies
the signal from the sensitive wire onto the guard to keep the guard wire at the same potential. Thus
there is no voltage between the guard and the target wire and any leakage from surrounding cir-
cuitry is absorbed by the guard. Obviously, care must be taken with this type of guard design. It is
unlikely that driven guards would be needed in 1149.4 designs.
266 7 IEEE 1149.4: Analog Boundary-Scan
At the system level, it may be important to make analog measurements utilizing the
analog test facilities of 1149.4. Or, it may not! This is a strong function of what a
“system” looks like and what type of analog measurements may be required of the
system. The full suite of analog measurements of interest at board test may be over-
kill at system test. This will determine how many ATn ports need to be made acces-
sible to a system level analog stimulus/measurement facility.
My favorite hypothetical example comes from the automotive industry. The
engine control system for an automobile could be implemented with 1149.1/1149.4
technology to support system level testing and diagnosis. Interconnect tests would
be very important since it is well known that interconnections (cabling and connec-
tors) in cars are a weak point. Though there may be many analog components too,
it may be too difficult (expensive) to make analog measurements on all of these if
doing so requires routing several ATn domains back to a central analog stimulus and
measurement resource. However, certain analog devices may be wear items that are
expected to degrade in time. These could be serviced with a port while most other
items are not.
• DFT-34: Consider which of all ATn ports in a system will be needed for sys-
tem test and provide access to them.
Finally, at system test, we may want to test differential signaling and its immu-
nity to system noise. This is a digital test, but requires the 1149.4 resource for dif-
ferential testing provided by the INTEST instruction (see Sect. 7.4.2 on page 272).
This gives us our last DFT rule.
• DFT-35: Consider if noise-immunity testing of differential signaling is
required in the system.
7.6 Summary
This single chapter describing the 1149.4 standard is breathtakingly short when you
consider the scope of the Mixed Signal Test Bus standard. This brevity is in part due
to the fact that the 1149.1-emulation capability contained within 1149.4 is covered
in previous chapters. But another reason is that the whole concept of 1149.4 is still
new and we have much yet to learn from experiences with it. Test ICs [Lofs96a,
Nuri97b, Park97, Sunt96, Sunt01] have been invaluable for proving concepts and
gaining experience. There are also new textbooks on this standard [Osse99, Vinn98].
7.6 Summary 267
I have been asked many times to speculate on the rate of adoption of the 1149.4
standard. I see several factors in this.
• To its advantage, 1149.4 builds upon the growing infrastructure of 1149.1 tools,
products, knowledge and experience. Indeed it is possible to perform useful digi-
tal interconnect tests (even in extended interconnect cases) with 1149.4 using
today’s software, unmodified [Park97].
• The level of concern that people have today about limited physical probing
access is quite high. People perceive a lack of alternatives and a motivation to
“make it work”. These people will also expect IC vendors to make good-faith
efforts to support their test needs. (This is true for 1149.1 as well.)
• While not often admitted by 1149.4 Working Group members, the 1149.4 stan-
dard is CMOS-centric. The good news is that CMOS-type technologies are
becoming more prevalent in mixed-signal IC designs, if for no other reason than
the densities it can achieve for the digital portions of the ICs.
• To its disadvantage, 1149.4 is harder to implement because, after all, it is an
analog design problem.
• The “market size” of mixed-signal designs, while growing respectably, is still a
good bit smaller than that of digital designs. This may retard investment in
advanced tools for a time.
• The 1149.4 standard can also be used to facilitate testing of ICs that contain it,
by making it possible to test pin parametrics without a large number of analog
test channels in the tester (see [Sunt02] and also Sect. 4.1). This will add appeal
to IC producers looking to lower their IC production test costs.
• The 1149.4 standard will more sensitive to the accuracy of data you have about
the construction of a board and its ICs. It is fitting to end this chapter with the
same warning that appeared on the first page of this book, that if you are not in
control of your data, then Garbage In, Garbage Out will be the result.
Pressed for a prediction, I say that I expect the adoption of 1149.4 to be similar
to 1149.1 which took a longer period than proponents had anticipated. However,
I personally have seen mixed-signal products on drawing boards for which there are
extraordinary testing problems that only 1149.4 can solve. Until 1149.4 comes of
age, we are likely to see such products cost more than they should and be late to
market. This will be an incentive for larger manufacturers who see 1149.4 as a stra-
tegic opportunity. I find it interesting that globally, 1149.1 was adopted last in the
Far East. Today, I see high levels of interest with significant participation in 1149.4
from the Far East. This should be raising eyebrows in rest of the world.
Chapter 8
IEEE 1149.6: Testing Advanced I/O
1
Some drawings and definitions in this Chapter come from IEEE Std. 1149.6. Copyright 2003
IEEE. All rights reserved.
2
Cisco Systems had AC-coupled differential designs on their drawing boards. Realizing a problem,
they contacted Agilent Technologies for advice on both the design of AC-coupled IC drivers and
receivers, and on how to test such structures using some revision of Boundary-Scan. These two
companies spearheaded the industry’s development of a solution.
For many years the electronics industry has used a bus architecture for data and
address information sent in multi-bit packets, transmitting one bit per wire in the
bus per increment in time defined by a clock signal. Wires in the bus would fan out
to each IC (or off-board signal connector) and typically would support bidirectional
data transfer, as shown by example in Fig. 8.1.
This architectural style of inter-IC communication has limitations on data rates
that can be achieved. These limits are governed by the number of ICs being con-
nected, their physical layout on a board, and the relative difficulty in coordinating
3
Gordon Moore of Intel: “IC density doubles every 18 months”. The implications are that costs can
decrease, and gate speeds can increase non-linearly as well.
8.1 The Advanced I/O Problem 271
64-Bit Single-Ended
Bidirectional Bus IC2
IC 1
IC3
TDI TDO
CLK-2
CLK-1
CLK-3
Clock
Master
Distribution
Clock
& Deskew
PrllBus
Fig. 8.1 Traditional single-ended bidirectional bus architecture for inter-IC communication
data transfers using a centralized clock structure. Adjusting clock skew becomes a
major effort as data frequencies climb. Maintaining signal quality is a necessity,
yet the layout of busses as more devices are connected works against this goal. As
more ICs are connected to a bus, the clock skew management problem also gets
much more difficult.
Another factor is that traditional data busses were single-ended, meaning a sin-
gle wire carried a single bit of data. (Contrast this with differential transmission,
where two wires carrying positive and negative copies of data are used.) This was
economical in pin count and layout difficulty, but even a solitary single-ended wire
has data frequency limits. Over the years, busses widened from 8-bit to 16-bit,
32-bit and on to 64-bit and higher. This was the principle method of raising data
rates since clock frequencies seemed to level out in the one-or-two-hundred-mega-
hertz range. Obviously, widening the busses cost more in pin counts and layout
difficulty. But less obvious problems come from the fact that on-chip and on-board
current surges (often lumped into the topic of “ground bounce”) get worse with
increasing single-ended bus width. The amount of current surge is data-dependent
from clock cycle to cycle. Thus signal quality is again at risk. In response to this,
ICs have been given more power and ground pins to reduce the inherent inductance
and resistance seen by the power surges, in an effort to control them. So we see ICs
getting higher pin counts for parallel bus signals, and also for power distribution.
This is costly.
272 8 IEEE 1149.6: Testing Advanced I/O
When you poll people in the high-speed data transmission segments of our industry,
they feel that the higher limit of data transmission speed in copper wires on printed
circuit boards made with “ordinary” materials and processes will be about 10 giga-
bits per second. Above this they need to take extraordinary measures (read: costly)
or move into the optical transmission domain, using light. Ten gigabits per second
(per wire) is about 50 times the de-facto limits seen with single-ended bidirectional
architectures of the past.
It is interesting to note that the technologies needed to move into the gigabit
realm are already well known and understood. The first technology change is to
move from single-ended to differential data transmission. This transmits a single bit
of data on two parallel4 wires. Single-ended signals are referenced to fixed voltage
levels Vlow and Vhigh (see Fig. 8.2). If noise is present, data being transmitted may be
damaged if the magnitude of the noise causes extra transitions in a signal.
Logic high
Vhigh
0-1 Undefined
Vlow
Logic low
Single-ended
Noise driver
Logic high
Vhigh
0-1 Undefined
Vlow
Logic low
Single-ended
driver SnglRef
Fig. 8.2 Two single-ended drivers, one affected by noise such as ground bounce
4
Note that differential wiring has strict layout rules governing trace widths, spacing and thickness,
as well as rules about the proximity of ground planes, dielectric constants and impedance control.
8.1 The Advanced I/O Problem 273
Neg
Pos
Out 0-1 Switching
0-1 Neg Point
Pos
Differential Differential
driver receiver Logic high
Undefined
Logic low
Out = Pos - Neg
Noise
Pos Neg
Out 0-1 Switching
0-1 Neg Point
Differential Differential
driver receiver Pos
Logic high
Undefined
Logic low
DiffRef
Out = Pos - Neg
Differential signals are not referenced to fixed voltage levels, but rather, to each
other. Figure 8.3 shows and example of one differential driver/receiver pair trans-
mitting a normal signal, and one affected by “common mode” noise, which is noise
added equally to both the positive and negative signals. When you look at the volt-
age waveforms produced by a differential driver on the two wires, they are effec-
tively analog complements of each other5 except for any common mode noise.
A differential receiver literally takes the difference of these two signals to regener-
ate the originally transmitted data stream. This has the advantage of canceling out
any common mode noise. Principle sources of common mode noise are radiated
interference and that feared nemesis, ground bounce. Note also that differential driv-
ers have a “current balancing” effect on an IC’s internal power distribution. For every
wire now sourcing current, there is a second sinking that same amount6 of current.
This balancing greatly reduces the I/O noise generated by current surges on-chip.
5
A common differential driver design works by switching the direction of current flow on the pair
of wires it drives. One direction encodes a “0” bit and the other encodes a “1” bit. Near or even
within the receiver, there is a simple resistor terminator across the two wires that converts current
direction into voltage.
6
This holds true for differential wire pairs that are equally loaded. Again, the layout of the pair, if
not properly engineered, may violate this assumption when edge rates that are much faster than the
transmission time of the wire path interact with asymmetries in the wire pair.
274 8 IEEE 1149.6: Testing Advanced I/O
But, you say, differential data transmission must double the pin count on my
IC. My 64-bit data bus now needs 128 wires! This looks bad. But here is where
Moore’s Law helps. Data that was transmitted in parallel can be serialized into a
single data stream. Yes, that takes time (and more than a few gates), but if you spend
a bit of energy on designing a single high-speed differential driver, you can take
(say) eight bits of data and transmit them serially faster than you could get them
across a board with eight single-ended parallel wires in one clock cycle. Thus two
wires can replace eight wires, with better signal integrity as well. An example of this
is shown in Fig. 8.4, where the same architecture as shown in Fig. 8.1 has been
converted from parallel single-ended bidirectional busses to pairs of unidirectional
differential busses of smaller widths. Note that bus pairs may be of different widths
to account for the data transmission need between pairs of ICs. In this example,
between IC1 and both IC2 and IC3, there is a need to transmit more data per unit
time, so eight-bit serialized busses are used. But between IC2 and IC3 alone, the
4-Bit Serialized
Differential Buses
IC2
8-Bit Serialized
Differential Buses
IC 1
IC3
TDI TDO
CLK-2
Fig. 8.4 Serialized high-speed data transmission on dedicated unidirectional paths. This is a seri-
alized implementation of the system seen in Fig. 8.1
Table 8.1 Comparison of pin counts for busses in the structures shown in
Figs. 8.1 and 8.4. (Does not account for power pins)
Bus pin counts
Single-ended bidirectional Serial differential
IC1 64 (1 bus × 64 bits) 64 (4 busses × 8 bits × 2 wires)
IC2 64 48
IC3 64 48
8.1 The Advanced I/O Problem 275
bandwidth requirement is less, so a pair of four-bit busses could suffice. Table 8.1
compares the bus pin counts on each IC for the two schemes. There is no change in
pin count for IC3 because the serialization ratio chosen was 8-to-1 and it communi-
cates with both ICs 2 and 3 at maximum bandwidth. ICs 2 and 3 both see a pin count
reduction because communication between them is at a reduced bandwidth. Another
important boost to bandwidth is the fact that in Fig. 8.4, all six busses can be trans-
mitting data independently and simultaneously, while in Fig. 8.1 only one path, in
one direction between two ICs can be transferring data.
Yet another advantage comes with serialized data transmission technology, and
again it is a well-known idea: incorporating clock with data. This technology looks
at (say) 8-bit bytes of parallel data that may be any of 256 combinations of zeroes
and ones. It then expands these bytes into (say) 10-bit packets of data that are always
guaranteed to contain a minimum number of zeroes and ones such that there are
never long contiguous strings of either data. (The algorithms for this are also well
known.) These ten bits are transmitted serially. A cooperating serial receiver that
has no knowledge of the transmission phase or frequency is able to recover the
original 8-bit bytes from the 10-bit serial packets. When each is recovered, it can
then be sent out in parallel using a clock that has been recovered from the data
stream. This technology is known as clock/data recovery. Thus an IC transmitting
data using one (or more) independent clocks can send data to a second IC using its
own clock(s), without need of closely coordinating the timing between them. This
is shown in Fig. 8.4 as three independent clock domains with no deskew control
seen in Fig. 8.1. This property greatly simplifies board design.
Serialized data transmission technology is today denoted by the “SERDES”
acronym (for SERialize/DESerialize). You see it in common I/O standards such
as Gigabit Ethernet, FireWire, Sonet, PCI Express and others that you can find on
the World Wide Web. Figure 8.6 shows the parallel bus implementation in Fig. 8.5
re-implemented with SERDES technology.
Moore’s Law now allows the gate density needed to replace parallel single-ended
drivers and receivers with SERDES structures. Further, the availability of pre-
designed SERDES core descriptions allows mortal designers to incorporate these
technologies with much less effort.
In years past, digital ICs were connected together with simple wires, or at worst,
with a small-valued resistor used to improve signal integrity. Now we see digital ICs
connected with capacitors. Why is this? The answer has two elements, one driven
by technology and one driven by business considerations.
Technology, again manifested by Moore’s Law, has created new IC processes
that are denser. As transistors get smaller, their operating voltages must come down
to solve solid-state physics problems of heat dissipation and leakage, and also to
keep voltage gradients across junctions from becoming excessive. In the 1980s and
276 8 IEEE 1149.6: Testing Advanced I/O
TX Bit 1 RX
Bit 2
Mission Logic
Mission Logic
Bit 8
Master Clk
NonSerl
TX RX
Serial-to-Parallel Decoder
Parallel-to-Serial Encoder
Mission Logic
Mission Logic
8-Bit to 10-Bit
10-Bit to 8-Bit
Recovered Clock
TX CLK 8b10b
Fig. 8.6 Same system as Fig. 8.5, but with a SERDES implementation
into the 1990s, we saw new generations of IC processes that maintained the 5-V
regime originally dominated by TTL and earlier CMOS logic families. There were
sound business reasons to maintain voltage compatibility across these generations.
However in the later 1990s we could no longer (reasonably) maintain this
compatibility, and we saw the advent of 3.3-V logic, albeit with “5-V compatibility”
8.1 The Advanced I/O Problem 277
R = Z0 R = Z0 VBias
that allowed such logic to talk with older ICs. This then led to many logic families
with supply voltages that are new to us, from 3.3, to 3.0, to 2.5 and even 1.8 V. You
might be able to directly connect a 3.0-V device to a 2.5-V device, but there is some
chance that their performance will be compromised by this difference. For example,
the logic high level of the 3-V device may be 2.8 V, and this may overdrive the 2.5-V
device’s inputs causing a performance slowdown due to saturation. The 2.5-V
device may have a logic high level of 1.8 V, and this may be “just barely” a logic one
for the 3.0-V device. This implies a loss of noise immunity between the two. In
essence, there may be scaling and offset errors between the two sets of logic levels
that degrade their performance when DC-coupled.
Now consider what happens if we AC-couple two digital devices with capacitors
(as in Fig. 8.7) and for the moment assume the coupling time constant value is large7
with respect to the data rates being transmitted. On the driven side of the capacitor,
we see voltages that range from Vlow to Vhigh. On the receiver side of the capacitor,
we will see voltage changes that have a magnitude of Vhigh minus Vlow, but what is
the actual range of these voltages? This is determined by bias generation that is
explicitly provided by a bias network on the board, or by bias generation provided
within the receiver itself. This bias point becomes the midpoint of the Vhigh minus
Vlow swing, and can thus be engineered to “translate” the voltage levels of the driv-
ing IC to those more compatible to the receiving IC. Note that the magnitude of the
Vhigh minus Vlow swing may exceed the best range of the receiver, and this swing can
be reduced by an appropriate voltage divider. However, in many cases the swing
magnitude is less of a concern than mismatched levels. Thus it is possible to squeeze
more performance from two somewhat incompatible devices from different pro-
cesses by using AC coupling.8 Even with differential signaling, which is designed to
be somewhat “forgiving” of level mismatches, there is usually a performance “sweet
spot” where the best performance can be achieved. In leading-edge products, this
can be very important.
7
If the coupling time constant is too small, then the charge on the capacitor can drain away, reduc-
ing the voltage with a classic RC discharge curve, ultimately to zero.
8
Deliberately omitted are several other concerns, such as what happens when a long string of
zeroes or ones is transmitted that would eventually discharge even a larger capacitor. SERDES
technology solves this problem by inserting extra “data” to help “balance” the charge over the long
term. This makes AC coupling work during normal mission mode, but we have yet to discuss how
Boundary-Scan will be affected…
278 8 IEEE 1149.6: Testing Advanced I/O
Above we have seen a hint of the business consideration for AC coupling. If you
are a manufacturer buying very large quantities of ICs, you most likely are acutely
interested in “supply chain management”, which in a nutshell means getting the
most for your purchasing dollars. You can usually get better prices for ICs when
there are competing suppliers. But if two IC suppliers are manufacturing ICs in
somewhat different processes, it may happen that supplier A’s devices work less
well with supplier B’s devices than with more of supplier A’s devices. Thus, if your
designs call for DC-coupling these devices, you may be locked into using only
devices from supplier A. However, if your designs can be AC-coupled, then maybe
you can buy from both suppliers A and B. Thus you can write supply contracts for
second source suppliers when you know they use different process technologies,
and still mix the devices in the design. This may lead to substantial cost savings.
Advanced I/O introduces new testing problems and confounds those that already
exist, especially those with differential signals already alluded to in Sect. 4.6. The
1149.1 standard is, for practical purposes, a DC technology as depicted in Fig. 8.8.
Thus, AC-coupling presents an insurmountable problem as shown in Fig. 8.9
where test data generated at Update-DR decays away before we can get to
C U C U
TX RX
Update-DR
2.5 TCK Cycles
VH
TX
VL
VH
RX
VL
Propagation Capture-DR DCpass
C U C U
TX RX
VT
Update-DR
VH
TX
VL
VT+VH-VL
RX
VT
Capture-DR ACfail
Fig. 8.9 AC-coupled signals that decay before they can be captured
Capture-DR. In principle, one could try to mandate that the coupling time constant
be much longer than the time between Update-DR and Capture-DR, but in practice,
this presents a design constraint on the coupling and a performance requirement on
test systems, either of which is likely to be unacceptable.
It is quite true that IEEE Standard 1149.4 (see Chap. 7) provides additional test
resources that could be used to solve such problems. For example, in the AC-coupled
circuit in Fig. 8.7, we could use analog measurement techniques supported by
1149.4 to measure the values of the coupling capacitors, the termination resistor R,
the value of VBias and the values of the bias resistors. When these values were veri-
fied to be correct, this would effectively guarantee that they were all connected
properly (no shorts or opens) and that they were all there, in the right places.
However, if you had many hundreds or thousands of such couplings to test, a linear
sequence of analog measurements would take a significant amount of time. We have
seen in Chap. 3 that Boundary-Scan interconnect testing is a relatively speedy “digi-
tal” process by comparison as it tests all interconnections in parallel. Since we
believe that advanced I/O problems are going to become prevalent in the near
future, this difference in testing efficiency is important, and was used to justify a
new standard dedicated to the problem.
However, it will become obvious that the 1149.6 standard has its shortcomings
as well. For example, while it may enable faster testing of AC couplings than we
could achieve with 1149.4, it will not be quite as thorough. For example, it will not
enable the measuring of analog component values as 1149.4 does. Thus if a circuit
is faulty because of a wrong-valued termination resistor, the 1149.6 standard may
280 8 IEEE 1149.6: Testing Advanced I/O
not detect this9 or if it does, may not give as clear a diagnostic report. In principle,
one could implement both 1149.4 and 1149.6 in an IC and then use the best proper-
ties of both standards.10
IEEE Standard 1149.6 has been carefully designed to be fully compatible with the
existing 1149.1 standard. It is built atop the 1149.1 standard so as to maximize our
current investments in that standard. However, to understand 1149.6, it is important
to understand some terminology.11
Here is the definition of “Advanced I/O” taken directly from IEEE Standard 1149.6
[IEEE03]:
Advanced I/O: Input/Output (I/O) circuits and protocols that are designed to convey digital
information, the interconnections of which cannot, either by design or by common usage, be
adequately tested with static digital signals such as those provided for in IEEE Std 1149.1. …
This part of the definition clearly includes I/O that is intended to support
AC-coupling. But the standard goes on to include an example:
… For example, such an I/O pin may be self-referenced (i.e., to its own average voltage), or
referenced to another I/O pin, rather than to a fixed voltage.
This leads us to question what the word “referenced” means. The key here is
found in the concept of logic that is not referenced to a fixed voltage. Conventional
logic circuits define a high (“1”) and low (“0”) value as voltages above and below
fixed reference levels. The example lists two types of signaling that do not use fixed
references: signals referenced to their own average value and signals referenced to
another I/O pin. The former case would be the case of a single-ended pin that con-
tains a waveform varying between a lower and higher value, but where there is not
9
The 1149.6 standard may indeed detect a wrong-valued termination if it causes reflections that are
detectable by the 1149.6 test receivers. (See section 8.5.)
10
More likely, one would implement an alternative test technique to validate the resistor values,
such as using in-circuit test measurements on one or two resistors of each type. If they pass, then
the assumption is that all the others must be the correct value as well, since the resistor manufactur-
ers guarantee (credibly) that all the resistors on a reel are the same value.
11
The 1149.6 standard has an extensive glossary that defines over sixty terms. The serious user of
this standard should read it carefully.
8.2 1149.6 Vocabulary and Basics 281
a specified voltage reference other than the average value seen on that pin over
time.12 The latter case includes signals that are compared to analog voltages13
supplied by a circuit designer, or signals that are compared as differential pairs.
The 1149.1 standard is oriented towards testing with fixed logic levels. The
1149.6 standard expands these test capabilities to include testing of interconnections
between I/O pins that do not rely on fixed logic levels.
The 1149.6 standard divides signal pins into two categories. Consider this definition
of AC pins again taken directly from IEEE Standard 1149.6 [IEEE03]:
AC pins: Advanced I/O pins that require a time-varying (AC) signal to permit testing of their
interconnections. This includes all differential signal pins, and differential or single-ended
signal pins that are expected by design to support AC-coupling.
These pins are something special. When implementing 1149.6, a device designer
is given the liberty of defining AC pins as those that have properties best tested by
the facilities provided by 1149.6, which are also likely to be handled poorly or com-
pletely ignored14 by the 1149.1 standard. All signal pins not so classified (called DC
pins) are expected to obey all the rules in 1149.1. A device designer is expected to
provide 1149.6 capabilities on AC pins so that they will have enhanced test capabili-
ties. Note this category of pins includes all differential pins, and all pins that are
intended to support AC-coupling networks between ICs.15
The first part of the AC pin definition says that they “require a time-varying (AC)
signal to permit testing of their interconnections.” It seems obvious why such a
signal is needed for AC-coupled pins, but why for any differential pins, even those
never intended to be AC-coupled? The answer to this lies in the fact that differential
signals have no fixed references. The 1149.6 standard tackles this problem head on
with AC testing signals16 and something called a “test receiver”. (These topics are
covered in Sect. 8.3.) Note that 1149.6 does not separate digital and analog signals
for the purpose of test, so differential signals are not to be ignored because they
“may be analog”.
12
The average value over time can be determined by a simple low-pass filtered version of the origi-
nal signal.
13
For example, some ICs have one or more receivers that perform low/high comparisons against
the voltage appearing on a reference input pin. This allows them to receive data from a variety of
logic family levels just by adjusting the reference value.
14
The classic example is that of analog pins, which the 1149.1 standard chooses to ignore. It allows
a designer to categorize differential signals as “analog” and therefore not be considered.
15
The 1149.6 standard allows a designer to declare pins as “AC” even when they may support both
AC and DC-coupling. The AC testing facilities still will work properly when used to test
DC-coupled pins. This case can be thought of as AC-coupling with an infinite time constant.
16
Indeed, the 1149.6 Working Group spent considerable time and energy coming to this important
realization.
282 8 IEEE 1149.6: Testing Advanced I/O
Operational modes can be broadly categorized (as in the 1149.1 standard) as “mis-
sion mode” and “test mode”. In mission mode, a device performs its intended func-
tion. In test mode, it performs as defined by various invasive test instructions,
notably, EXTEST. The 1149.6 standard subdivides the test mode into two additional
modes: AC test mode and DC test mode. The standard gives these definitions
[IEEE2003]:
DC test mode: A test mode that enables traditional Boundary-Scan testing between DC
pins that are DC-coupled.
Here we see that AC test mode will allow testing between DC-coupled devices
that are not voltage compatible for DC test mode. This typically can occur in the
1149.1 domain when a designer chooses to provide, on a differential receiver,
Boundary Register cell support for each leg. This means the designer had to choose
fixed thresholds for voltages that define 0 s and 1 s. If this receiver is then DC-coupled
to a differential driver that produces different voltages for logic values, they may not
be compatible and Boundary-Scan testing will fail to test the interconnections cor-
rectly. Yet, in mission mode, the receiver is comparing the two differential signals
against each other and works perfectly well. Again, this is the problem of how
should designers choose fixed references that will work in all cases. (They can’t.)
The 1149.6 standard provides new capabilities for AC pins. These capabilities are
broken down into driving and receiving capabilities, and one or both may exist on a
given pin depending on whether that pin is a driving, receiving or bidirectional pin.
Since the 1149.6 standard is built upon the 1149.1 standard, every AC and DC sig-
nal pin must behave as defined by the 1149.1 standard when any 1149.1-defined
instruction is effective (SAMPLE, PRELOAD, INTEST, EXTEST, CLAMP,
HIGHZ, BYPASS, IDCODE, USERCODE).
8.3 Test facilities for AC Pins 283
The 1149.6 standard defines two new variants of 1149.1 EXTEST, called the AC
EXTEST instruction set, comprised of the new instructions EXTEST_PULSE and
EXTEST_TRAIN. These instructions only affect the behavior of AC pins. Any DC
pins behave exactly as defined by 1149.1 EXTEST when either of these AC
EXTEST instructions are effective. Thus a DC pin acts as though there were only
one EXTEST instruction, but an AC pin can behave as if there were a family of
three such instructions.
AC pins with drivers will produce transition waveforms in response to either the
EXTEST_PULSE or EXTEST_TRAIN instructions. This is important because the
1149.6 standard works by generating and detecting transitions on pins. The 1149.1
standard produces levels. If (say) you load the Boundary Register data cell behind a
driver with a 1, the driver will produce a high state indefinitely, until you later load
the data cell with a 0. If the data cell still contains a 1 when the Update-DR state is
passed any number of subsequent times, the driver does not change state. However,
either of the AC EXTEST instructions will always produce at least two transitions
every time the TAP transitions through the Update-DR portion of the TAP state
diagram. This is done by modifying the Boundary Register cell in a relatively simple
way, shown in Fig. 8.10.
An AC pin driver data cell preserves the high-speed path from the mission cir-
cuitry to the driver as seen in an 1149.1 data cell. In the test path, there is still a
capture and update flip-flop as before, but a new multiplexer is present that selects
either the update flip-flop output, or that same signal modulated via an exclusive-
OR gate with an “AC Test Signal”. (Circled area in Fig. 8.10.) This modulated sig-
nal is selected for output only if an AC EXTEST instruction is loaded. If ordinary
EXTEST is loaded, then everything works as 1149.1 says it should.
An AC pin driver data cell requires two new control signals, AC Mode that
selects EXTEST or AC EXTEST behavior, and the AC Test Signal. The first is sim-
ply decoded from the TAP instruction decoder, being asserted by loading EXTEST_
PULSE or EXTEST_TRAIN. The TAP generates the second as follows in Table 8.2
and Fig. 8.11. The asterisk marks where, if an even number of steps in the Run-Test/
Idle state occur, the driver will already be producing non-inverted data before enter-
ing Select-DR-Scan. If the number is odd, the driver will be producing inverted data.
Thus a last transition may occur in Select-DR-Scan, or in the last step in Run-Test/
Idle. From this table, the reason for the names of the two instructions becomes evi-
dent. EXTEST_PULSE creates a pulse of inverted data on the driver that lasts as
long as the TAP stays in the Run-Test/Idle state. For EXTEST_TRAIN, we see a
“train” of pulses at ½ the TCK frequency while we are in the Run-Test/Idle state.
In either case, the data will be the same as the Boundary Register data cell content
when we exit Select-DR-Scan. If we never enter the Run-Test/Idle state, by skipping
directly to Select-DR-Scan, we will see both of these instructions behaving identi-
cally to the 1149.1 EXTEST definition.
284 8 IEEE 1149.6: Testing Advanced I/O
1 C U Mode
Shift in
ShiftDR UpdateDR
ClockDR
Fig. 8.10 An 1149.1 data cell for a driver, and how 1149.6 adds AC signal modulation
Table 8.2 Actions of an AC pin driver per instruction versus TAP state
Effective instruction
On falling edge of TCK in: EXTEST_PULSE EXTEST_TRAIN
Update-xR Driver drives (new) cell data Driver drives (new) cell data
Run-Test/Idle Driver drives inverted data Driver drives inverted data
Run-Test/Idle Driver holds inverted data Driver drives cell data
Run-Test/Idle Driver holds inverted data Driver drives inverted data
... Driver holds inverted data ...
Select-DR-Scan Driver drives cell data Driver drives cell data
Figure 8.11 shows the waveforms created by AC pin drivers when the AC
EXTEST instructions are effective. Note that the number of TCK cycles spent in the
Run-Test/Idle state determines the width of the inverted data pulse for EXTEST_
PULSE, and the number of transitions between data and inverted data for
EXTEST_TRAIN.
8.3 Test facilities for AC Pins 285
DriveWave
Select-DR-Scan
Run-Test/Idle
Run-Test/Idle
Run-Test/Idle
Update-xR
TCK
Fig. 8.11 AC pin driver waveforms created by the EXTEST_PULSE and EXTEST_TRAIN
instructions
Train/Pulse
Train/Pulse Extest_Pulse 0
Extest_Train 1
Run-Test/Idle D Q
AC Test Signal
(distributed to all AC drivers)
TCK
SigGen
One simple means for generating the AC Test Signal is shown in Fig. 8.12. This
circuit would be centrally located (near the TAP) and the AC Test Signal distributed
to all the AC pin drivers. The Train/Pulse signal would be provided by the TAP
instruction decoder.
The 1149.6 Working Group invented the EXTEST_PULSE instruction with the
idea that it guaranteed that transitions would occur on drivers every time data was
updated onto the driver, provided the trajectory included a trip through Run-Test/
Idle. Later it was decided to add the EXTEST_TRAIN variant, in case a driver tech-
nology was ever encountered that required a “startup” process, meaning it had some
AC performance characteristics that took some time to stabilize. No such case is
known today, but the instruction is ready if needed. It is expected that EXTEST_
PULSE will be the “workhorse” of the 1149.6 test process.
Before leaving this section, it is crucial to emphasize that the mission driver con-
trolled by an AC pin data cell is being used to drive the output pin(s). This driver is
expected to create transitions at its full native edge speed into whatever the board
286 8 IEEE 1149.6: Testing Advanced I/O
loading is.17 Thus, while the frequency of transitions is governed by the TCK rate and
testing algorithms and is likely to be much lower than data frequencies seen in
mission mode, the edge speed will be the same as seen during mission performance.
AC pin drivers may be enabled or disabled in exactly the same was as defined in
1149.1, with output control cells (see Sect. 1.3.4) that may be present to enable or
disable the driver itself. The 1149.6 standard introduces an additional (but optional)
AC/DC selection cell that can be used to cause an AC pin or a set of AC pins to
revert to EXTEST behavior when either EXTEST_PULSE or EXTEST_TRAIN is
loaded. Such cells are part of the Boundary Register, and look like “internal” cells
to applications (for standards 1149.1, 1149.4 and 1532) that are unaware of their
true purpose. Indeed, they are coded as Internal cells in BSDL. (See Sect. 8.6.) The
AC pin output data cell originally depicted in Fig. 8.10 is modified in Fig. 8.13 to
be controlled by an AC/DC selection cell. The modifications are circled.
ShiftDR UpdateDR
ClockDR AC Test Signal
AC Mode
Fig. 8.13 AC pin data cell, modified for control by an AC/DC selection cell
17
There is a key difference here compared to the 1149.4 standard. Digital data driven by 1149.4
switches may not have enough current capacity into external loading to create valid voltage levels.
The 1149.6 standard makes use of the native driver which is expected to drive such loads.
8.3 Test facilities for AC Pins 287
AC/DC selection cells were provided by the 1149.6 Working Group to handle a
case that was thought to be relatively unlikely, but still possible. This case occurs in
testing when, while performing EXTEST (or an AC EXTEST instruction) you
might want to hold a given signal at a constant 1 or 0 for the duration of the test.
Since, when an AC EXTEST instruction is effective, AC pins will not be held con-
stant18 it was felt that some means of overriding the AC performance of selected AC
pins was needed, if a device designer wants to provide for it. An AC/DC selection
cell can provide this override for one or more AC pin drivers. Each AC pin may be
controlled by exactly zero or one AC/DC selection cells. In custom devices, it is
most likely that data paths will be provided with AC pins but not for control signals
that emanate from the device (they would treated as DC pins). It is the control sig-
nals of a device that are most likely candidates for static control during a test, in
order to condition some external circuitry for testing purposes. However, for pro-
grammable devices, it is possible that AC/DC selection cells may have utility,
because it is not always known beforehand which signal pins19 will end up being AC
or DC pins. To summarize, an AC/DC selection cell controls the AC performance of
an AC pin driver, but does not affect whether that driver is enabled.
This subsection gives the broad parameters of AC input pin implementation. The
salient point is that they are provided with a “Test Receiver” that is used to condition
the input waveform into something a standard 1149.1 receiver cell can process. An
example of this is shown in Fig. 8.14. A detailed explanation of test receivers is
given in Sect. 8.5.
Test receivers have four important characteristics. They are:
1. single ended, they do not use another pin for reference in differential structures.
2. provided one per pin, so a differential signal pair would have one for each pin.
(See Fig. 8.15.)
3. edge sensitive when EXTEST_PULSE or EXTEST_TRAIN are in effect. They
respond to signal edges, not levels. As such, they do not have defined reference
voltages for low and high signals.
4. transparent (or translational) to DC levels when EXTEST is in effect.
18
DC pins can be held constant since they perceive all three flavors of EXTEST to be equivalent to
EXTEST.
19
At this writing, programmable devices appear to have pins grouped into functional categories.
For example, they may have subsets of I/O pins with special differential drive capabilities pro-
vided. These would be natural candidates for AC pin capability. Other more ordinary pins would
be candidates to remain DC pins, and would likely serve for control functions. Thus programmable
devices may have few or no AC/DC selection cells offered.
288 8 IEEE 1149.6: Testing Advanced I/O
Mission
C U
Test
Receiver
Mode
AC Mode
RX (Control and Observe)
InputRec
Test receivers process waveforms that are either clearly digital (as in Fig. 8.8 on
page 295), but will also process analog waveforms20 as in Fig. 8.9 on page 296.
They produce a digital output that is compatible with a standard Boundary Register
cell constructed from the logic circuitry available in the interior of the device.
Differential signal input pairs are each monitored separately (Fig. 8.15) and each
test receiver output is captured in its own Boundary Register cell. The device
designer may opt to provide the mission differential receiver with a Boundary
Register cell as well. This cell records what the differential receiver recovers from
the input waveform pair. The additional information provided by this data cell is
actually minimal, but the cell may be useful for INTEST implementation (as shown).
The reason the additional information may be of little use is due to the inherent
redundancy of differential signaling. Some defects that can occur may not be
detected at the output of the mission receiver. This is the reason why features 1 and
2 above were necessary. Single-ended, self-referenced performance of test receivers
is crucial for defect detection and unambiguous diagnosis.
The 1149.6 standard gives a precise list of defects that the Working Group consid-
ered as “must detect” defects. The list was generated from a model that is shown in
Fig. 8.16. The actual list is shown in Table 8.3. Note that defects that are equivalent
by symmetry are omitted. The word “unreferenced” in the table refers to termina-
tion by a single resistor (typically) across the receiver inputs as in Fig. 8.16.
Unreferenced termination allows communication between legs in defect situations.
“Referenced” termination is done (typically) with two resistors from each leg
20
The test receiver may be connected to an input buffer output rather than directly to the input pin
if the isolation is required. However, the buffer should be analog amplifier (e.g., unity gain) so it
doesn’t perturb the analog waveform.
8.4 The Defect Model for 1149.6 289
Test C
Receiver
AC Mode Optional,
from 1149.1
Mission
C U
Mode
Test
C
Receiver
AC Mode
RX Control and Observe
DiffRec
Fig. 8.15 A differential AC pin pair equipped with test receivers, and an optional 1149.1 control
and observe data cell monitoring the mission receiver
C1
1 1
1 2 1
R
2 1 2 2 2
C2
TX1 RX1
1 1
TX2 RX2
Defects
Fig. 8.16 Circuit used to define defects addressed by the 1149.6 standard
290 8 IEEE 1149.6: Testing Advanced I/O
21
Many thanks to Carl Barnhart and IBM for performing these simulations!
8.5 The 1149.6 Test Receiver 291
shorted capacitor as well. The 1149.6 Working Group specifically identified this
type of defect as one that should be tested for with ordinary EXTEST. In such a
case, the defect would allow data to pass from the driver to the test receiver, when
the capacitor would normally prevent such a transfer due to it blocking22 DC levels.
Thus a passing test would see constant data in the test receiver, while the “correct”
signature of the driver would indicate a failing test. (Some have called this a test that
“fails” when it passes.)
Two other defects have the effect of shorting a nearby data signal to either one
leg of the driver, or to one leg of the receiver. This can result in a large number of
possible syndromes, determined by the logic families of the two devices. For exam-
ple, if two shorted drivers are fighting, the result may be that the test receiver sees
no change if the differential driver is “strong” enough to “win” the fight. Of course,
any Boundary-Scan receiver on the other signal may fail as a result. In other cases,
depending on circuit layout, the two signals may produce odd-looking waveforms
due to complex reflections enabled by the shorted signal layouts. These can have the
effect of being interpreted as extra data edges when viewed by the test receiver in
its edge-detecting mode.
Finally, if the differential driver’s two legs are shorted together, this can produce
transients on the signals at the time of signal switching. These will usually be
of small amplitude and duration. The test receiver is constructed to ignore such
“noise” events.
Advanced I/O, by virtue of being more than just simple wires, has the potential
for defects that were not imagined when Boundary-Scan was first envisioned. It is
also the case that some of these defects can escape detection by ordinary means.
As an example, consider the differential pair shown in Fig. 8.17. Here an open cir-
cuit, due to an open solder joint or even a completely missing capacitor, is not
detectable at the output of the mission receiver. However the mission performance
will be degraded, probably showing up as an elevated bit error rate (BER) in this
channel. Because the differential nature of this channel has effectively been con-
verted to single-ended by this defect, its performance in the face of noise or extreme
environmental conditions will be degraded. Imagine the difficulty in trying to relate
a poor bit error rate result to such a mundane defect as an open solder joint.
The test receiver is the heart of the 1149.6 standard. It has the ability to listen to an
input pin and respond to one of two types of test signal. These would be either a DC
level when the EXTEST instruction is being executed, or an AC signal when
EXTEST_PULSE or EXTEST_TRAIN is being executed.
22
Here it is assumed the time constant of the coupling is significantly shorter than the time between
updating and capturing data. This can be assured by spending extra time in the Run-Test/Idle state
if needed.
292 8 IEEE 1149.6: Testing Advanced I/O
Open Undetected
Vref
Equivalent
Circuit
Vref
Fig. 8.17 An open circuit defect may be undetectable depending on termination and biasing
The building blocks of a test receiver are a comparator possessing voltage and time
hysteresis, a memory and a reference system with switchable characteristics for AC
and DC testing. The 1149.6-2003 standard [IEEE03] gives these definitions, to
establish its working vocabulary:
Comparator: An amplifier with two inputs labeled positive and negative, typi-
cally with very high input impedance. The amplifier usually has very high gain
and produces an output signal that is the amplified difference of the positive and
negative input signals. For all but the smallest differences, the output will be Vmax
or Vmin, which are the most positive and most negative voltages the amplifier can
produce on its output. A comparator can be used as a differential receiver.
A comparator can be used to determine if an input signal is logically above or
below a reference voltage.
High-pass filter: An electrical network that passes higher frequencies and atten-
uates lower frequencies. DC current is blocked.
8.5 The 1149.6 Test Receiver 293
8.5.2 Transitions
A driver will create a voltage transition23 that ultimately is received. If the receiving
device (and its test receiver) is DC-coupled, the transition will be seen directly. If
the receiving device is AC-coupled, a high-pass filtered waveform will be seen.
23
The 1149.6 standard notes that some drivers actually do not create voltages, but rather steer the
direction of current flow. Such drivers must be terminated with a resistor that converts the current
flow into a voltage. Receivers in all cases are voltage devices.
294 8 IEEE 1149.6: Testing Advanced I/O
Figure 8.18 gives a view of a DC voltage waveform with rising and falling transitions.
The change in voltage in a period of time is defined as ΔV in time TTrans. Note that there
may be a voltage offset between the lower voltage and a reference such as ground.
Transitions are defined without use of a reference. Thus ΔV is equal to V2–V1.
Figure 8.19 shows a received waveform typical of an AC-coupled system. The orig-
inal driver waveform (such as in Fig. 8.18) is high-pass filtered into fast transitions
(the original signal transition edges) followed by “invalid transitions” caused by the
decay of the signal after the transition.
TTrans TTrans
V2
Voltage
Valid Falling
Valid Rising Input Swing
Transition
Transition V= V2-V1
V1
Arbitrary Offset
t1 t2 Time t3 t4
DCTran
TTrans
VT+V2-V1 TTrans
Invalid Falling
Transition
Voltage
V=(VT+V2-V1)-VT=V2-V1
VT
Valid Rising V=VT-(VT-V2+V1)=V2-V1
Transition
Valid Falling
VT-V2+V1 Invalid Rising
Transition
Transition
t1 t2 Time t3 t4 ACTran
The voltage VT is a bias termination voltage defined at the receiver, which may
be significantly different from any voltage level defined at the driver. Indeed this is
one reason for AC-coupling, to perform signal level shifting. As before with DC
waveforms, there is a valid transition defined as ΔV in time TTrans. Note that ΔV is
still equal to V2–V1 when the math is completed.
The most important realization needed to understand the AC performance of the
test receiver is the difference between a valid and invalid transition. The magnitude
of ΔV and TTrans will form a basis for noise rejection in test receivers, so that they
do not respond to “little wiggles” imposed on the signal waveform by Ground-
Bounce, crosstalk or other noise. But most importantly, the difference between a
signal edge and its decay are used in the design of the test receiver. In essence, there
is a difference in slope. A valid edge has a steep slope (high slew rate) and a signal
decay waveform has much shallower slope (lower slew rate). The decay rate is a
function of the coupling time constant of the system. Board and system designers
are in control of this parameter.24 Typically the characteristic impedance of the
board (often around 50–75 Ω) constrains half the time constant equation, so the
designers choose a capacitance value that will easily propagate the expected edges.
They often choose larger capacitances (e.g., 100 nF) which give relatively long time
constants. For example, 50Ω times 10−7 Farads is 5 μs. Thus a test receiver will be
expected to differentiate a signal edge (typically a nanosecond or less) from a decay
waveform with substantially longer timing.
When the EXTEST instruction is in effect, the test receiver is expected to respond
to the voltage levels seen at the input pin. A circuit to do this is shown in Fig. 8.20.
This circuit certainly seems a bit complex for what it does, but the reason for this
will become clear later.
The DC portion of the test receiver is composed of a memory element (a clocked
“D” flip-flop with asynchronous set and clear inputs25). This flip-flop is set or cleared
by two simple comparators. Each comparator has one of its inputs listening to the
input pin, but not directly as there is an offset voltage VHyst imposed. This estab-
lishes “voltage hysteresis”. The other legs of the comparators are connected to a
common reference voltage VBias which determines the center voltage of a transition.
24
That is, until the capacitive coupling is integrated into the receiver itself. In this environment, the
IC designer will choose values for R and C. The value of R is no longer constrained to be equal to
the characteristic impedance, but will be decades larger. This in turn means the capacitor can be
decades smaller. ICs are now on the drawing boards with the AC-coupling built into the receivers.
Values of R and C are in the 20 kΩ range with a capacitance of 5 pF (0.1 μs). These are easily
integrated, and in differential receivers, they can be matched rather well which is important in
higher performance systems.
25
The set and clear inputs override the clock if asserted when a clock edge arrives.
296 8 IEEE 1149.6: Testing Advanced I/O
VHyst
A B C
VBias Init Set
D Q
Data
Device Input Init Clk Ck
Clear
VHyst
DCReceiver
The value of this voltage should be the center point of what the designer deems is the
optimal input waveform for the performance of the mission receiver. (If this is a dif-
ferential receiver, then this would be the optimal common-mode voltage of the receiver.)
When the voltage on the input pin is lower than VBias -VHyst, then the lower comparator
asserts the clear input of the flip-flop. If the input pin voltage is higher than VBias + VHyst,
then the upper comparator asserts the set input of the flip-flop. When any other voltage
is present, neither set nor clear is asserted, and the flip-flop retains its current state.
The test receiver memory flip-flop also has a clock and data input. These are used
to set an initial state of the test receiver. This state will be retained in the flip-flop
until the time a valid voltage state (high or low) is seen at the input pin. If for
example, there was an open circuit on the input pin, then there would never be a
valid voltage seen on the input. Thus the initial state of the test receiver would later
be captured by the associated Boundary Register data cell.
This offers an interesting improvement over the behavior of input data cells as
specified by 1149.1. With 1149.1, an unconnected input data cell will capture some
default value or perhaps even random data. With 1149.6 and its initialized test
receiver memory, you can define what will be received if there is an open. (See
Sect. 8.5.7 for more information about initializing this “hysteretic memory”.) When
multiple Sequential Test Vectors (see Sect. 3.2.2) are used, each one can define a
particular initial state.
The timing of how the test receiver works during EXTEST is shown in Fig. 8.21.
As always, the upstream driver will produce data changes (if any) at the Update-DR
state on the falling edge of TCK. This data is presented to the test receiver either
directly (when DC-coupled to the driver) or in a high-pass filtered version (when
AC-coupled26) as shown. When AC-coupled, the waveform will decay away. Later,
26
Remember from Sect. 8.4 that we want to use EXTEST on AC-coupled networks to determine if
a capacitor is shorted.
8.5 The 1149.6 Test Receiver 297
TCK
DC AC
Signal
Data N-1 Data N
Pin A
EXTEST Capture Window
Init Clk
DC AC
Set or Clear
DC
Test
Receiver
Output C
AC
(Init) DCRecWave
Fig. 8.21 Timing of signals within the test receiver during EXTEST
at the falling edge of TCK in the Capture-DR state, which is ½ TCK cycle before
we will capture data, the test receiver is initialized with data. If the input pin still
sees a signal with a valid logic level, that signal will override the initial data and be
recorded in the test receiver memory. If not, the initialized data will be retained. At
the rising edge of TCK in the Capture-DR state, the result of the test receiver’s
operations will be captured in the Boundary Register input data cell.
Note that noise is likely to be generated by outputs transitioning at the falling
edge of TCK in the Update-DR state, but that any noise event that was captured in
the memory flip-flop before the falling edge of TCK in the Capture-DR state will be
erased by loading the initial state at that time. This is one way that noise is controlled
by this standard. The hysteresis voltages prevent small signal noise from toggling
the flip-flop, and the 1149.6 standard gives rules for the test receiver design that limit
the bandwidth of its response, also to reduce noise sensitivity. Since the test receiver
is not in the high-speed mission pathway and deals with test signals only, these steps
to eliminate noise sensitivity will not hamper mission performance.
It is possible, in differential signaling, that a DC-coupled test receiver has a VBias
setting that is not compatible with the voltages produced by the upstream driver.
This can happen when the driver and receiver are constructed in different logic
families. Differentially (in mission mode) they work fine. But when EXTEST is
298 8 IEEE 1149.6: Testing Advanced I/O
loaded, the single-ended test receiver may construe the voltage levels coming from
the driver to be stuck high or low. This is not a problem, because the test receivers
can be used in AC test mode even when they are DC-coupled. Indeed, this is a major
strength of 1149.6. See the next section.
Input Pin
C
RF B
CF
Low Pass
Filter ACRec1
8.5 The 1149.6 Test Receiver 299
Hysteresis Delay
Hysteresis Offset
A Input
Hysteresis Delay
Hysteresis Offset
A Input
B Reference
AC Coupled Case
Filter
(small time constant) Delay
C Output
Receiver Response
ACRecWave1
Fig. 8.23 Performance of the edge detector for AC and DC-coupled signals
However the negative leg sees a filtered version of this spike that never moves
much above zero. The comparator, after the hysteresis delay, responds and holds its
output high. Thus is has “integrated” the edge into a level. Similarly, on the falling
signal edge, the test receiver sees the falling edge and tracks it by sending its output
low. The test receiver output has reconstructed a level waveform from the edge
information it gets from the high-pass filter formed by AC-coupling. Note in
both AC and DC cases, the waveform on the test receiver output matches that
originally created by the upstream driver, provided that driver was producing
valid transitions.
A possible implementation for the model in Fig. 8.22 is shown in Fig. 8.24. Just
as for the DC receiver (Fig. 8.20) it uses two comparators, each with hysteresis volt-
age source VHyst used to suppress response to small signal noise and that also define
a “valid” transition. The top comparator detects positive (valid) transitions in the
input waveform. The bottom comparator detects the falling transitions. As before,
their outputs are used to set or clear a D-type flip-flop. The output of the flip-flop is
a reproduction of the original waveform driven (either DC or AC-coupled) to the
test receiver.
300 8 IEEE 1149.6: Testing Advanced I/O
VHyst
A RF B C
Set
Init Data D Q
DC
CF Init Clk Ck
or AC
Clear
VHyst
ACRec2
Why doesn’t this circuit respond to invalid transitions (see Fig. 8.19) such as the
high-pass filter signal decay? This happens because the high-pass time constant is
much larger than the low-pass time constant of the AC test receiver. Thus the slope
of a valid transition is much steeper than the slope of the decay. A low-slope signal
will not produce a voltage difference at the comparator that exceeds VHyst. The value
of TTrans is a design parameter used in the selection27 of these two time constants.
The D-type flip-flop is provided (again) with a clock and data input. These are
(again) used to set its initial state. This ability can be used during testing to differ-
entiate an open, floating input pin from other defects. (See Sect. 8.5.7.)
The waveforms in Fig. 8.25 show the behavior of the test receiver output when
EXTEST_PULSE or EXTEST_TRAIN are in effect. Notice the initialization of the
hysteretic memory is earlier than we saw for DC level detection, at the falling edge
of TCK in the Exit1-DR (or Exit2-DR) state.
This initializes the memory before the upstream driver creates its first transition
(the falling edge of TCK in the Update-DR state). While in the Run-Test/Idle state,
the driver will create at least two more transitions. If any update noise occurs that
disrupts the state of the test receiver memory, these additional transitions will clear
the disrupted state.28
27
Parameters TTrans, ΔVMin, and VHyst are used via rules that give maximum design flexibility.
28
Indeed, the Working Group referred to the driver as “clearing its throat” in the earlier transitions
so the receiver could “hear what it said” more clearly at the last transition.
8.5 The 1149.6 Test Receiver 301
ACRecW ave2
TCK
Test Receiver
Detect Edges (If Any) Test Receiver Edge-
Initial State
Detector Output Captured
Test Receiver Edge-Detection Initialization Point in Boundary Register Cell
Fig. 8.25 Timing of signals within the test receiver during an AC EXTEST instruction
If the high-pass coupling is built into the receiving IC, then the test receiver is guar-
anteed to be AC coupled. (When it is on-chip, it should appear between the pin29 and
the test receiver.) In some cases the IC designer knows that even though the cou-
pling will be off-chip, it will always be there, for example, guaranteed by system
specifications. The mission receiver will then have some form of bias network that
establishes a reference voltage for signals. Thus, the test receiver can also be guar-
anteed that same reference voltage.
When a test receiver is guaranteed to be AC coupled to the driving signal, a device
designer is allowed to omit the low-pass filter seen in the previous section, since
there is a signal reference that cannot be disturbed by the driver. When this condition
is assured, the designer can revert to what appears to be a DC test receiver structure
as seen in Fig. 8.20 (page 314). The rules of the standard will dictate the minimum
time constant of the high-pass filter. A valid driver transition will arrive unattenuated
by the high-pass filter, and the decay waveform will have a much longer time con-
stant than a valid edge. After the hysteresis delay of the receiver is satisfied (deter-
mined by bandwidth limit of the test receiver) the signal will still be sufficiently
non-decayed to produce either a set or clear pulse to the memory flip-flop.
29
Any input protection circuitry (clamp diodes and series resistors) should be connected to the pin
side of the high-pass filter.
302 8 IEEE 1149.6: Testing Advanced I/O
A RF AC B
Set C
Init Data D Q
DC
CF
Init Clk Ck
Clear
VBias
VHyst
ACDCRec
As you probably suspect by now, the DC and AC performances of the test receiver
(see Figs. 8.20 and 8.24) can be integrated into one implementation controlled by a
signal (“AC Mode”, from the TAP) that indicates whether DC (level) performance is
requested, or AC (edge detecting) performance is needed. This is shown in Fig. 8.26.
As always with an IEEE standard, the pictures of possible implementations do not
rule out other possibilities. The figures in this chapter are suggestions only. IC design-
ers are welcome to innovate their own interpretation of the rules, recommendations
and permissions, as long as no rules are violated. Also note that serious designers
must always consult the latest revision of the standard itself for the precise set of rules.
The previous sections have several times alluded to initializing the hysteretic mem-
ory of the test receiver. In Fig. 8.26 this amounts to setting a value on the “Init Data”
signal, and producing an edge on “Init Clk” to load that value at the appropriate
time. A circuit30 to generate “Init Clk” is shown in Fig. 8.27.
Testing software now has a new job, that of managing the initial values of test
receiver data. One simple algorithm for doing this is to initialize the memory to the
opposite value of what the driver is (or will be) driving.
30
This circuit is not susceptible to a race on the TCK signal since only one of the EXTEST-type
instructions can ever be active.
8.5 The 1149.6 Test Receiver 303
Init Clk
(common to all
Capture-DR
test receivers)
EXTEST
TCK
EXTEST_TRAIN
EXTEST_PULSE
May be located
Exit1-DR
near TAP controller
Exit2-DR
InitClk
Another perhaps subtle point is that when first entering AC test mode, that is, on
the falling edge of TCK in the Update-IR TAP controller state, the test receiver is
switched from listening31 to mission data32 to now listening to test data. We have no
control over whether there is a meaningful transition in the data at this juncture.
Thus if the upstream driver is not performing an AC EXTEST instruction (it may be
a simple 1149.1 driver) or if the Run-Test/Idle state is not entered to “clear the
throat” of the AC driver, the first Sequential Test Vector’s results may not be cap-
tured correctly. Because of this, testing tools should ignore the results of that first
STV and repeat it before capturing it for examination.
Initial memory data for the test receiver is delivered by shifting it in through the
Boundary Register to the input data cell associated with the test receiver. This cell
later captures the data that is collected by the test receiver on the rising edge of TCK
in the Capture-DR state. The data used for initializing the test receiver is shifted into
the capture cell either by the PRELOAD or an EXTEST-type instruction.
A circuit to initialize test receiver memory from the associated Boundary Register
cell is shown in Fig. 8.28. Here, a typical BC_1-type cell is used for shifting and
capturing data. The Update flip-flop is only required for single-ended input pins if
control-and-observe capability is needed (e.g., for INTEST support). Initial data
is shifted into the Capture flip-flop. At the appropriate time, the “Init Clk” signal
(see Fig. 8.27) copies this data into the test receiver hysteretic memory. When the
rising edge of TCK in the Capture-DR state occurs, the result of the test receiver’s
work, as recorded in its hysteretic memory, is captured in the Capture flip-flop of the
Boundary Register cell where it can be shifted out for examination. As we saw
before in Sect. 3.1.2, while data is being shifted out, new test data and test receiver
initial states can be shifted in for the next Sequential Test Vector.
31
Some designers will opt to “shut down” the test receiver when it is not in use, so it may be “wak-
ing up” in some unknown state. The problem is the same.
32
It is conceivable that at the time of switching, the mission driver was not producing any data, i.e.,
it was disabled. This again means we cannot be assured of a valid transition being seen at the test
receiver at that time.
304 8 IEEE 1149.6: Testing Advanced I/O
Shift Out 1
0
Shift In
Boundary 1
Register Capture Update
Cell ShiftDR
ClockDR UpdateDR
VHyst
Pad RF
AC
DC Set
Receiver
Hyst
Test
CF Init Data
Init Clk Mem
Clear
VT
VHyst
RecBReg
Fig. 8.28 Integrating a test receiver with its associated Boundary Register cell
An 1149.6 device is quite similar to an ordinary 1149.1 device because the Working
Group took pains to carefully build the new standard atop the foundation standard.
This is evident in a BSDL description for an 1149.6 device. Essentially, some new
instructions (EXTEST_PULSE and EXTEST_TRAIN) have to be documented, and
some new Boundary Register cells have to be identified. The existence of test
receivers has to be documented along with some details of their construction, and a
mapping of test receivers to their monitoring Boundary Register cells.
The additional information needed to describe an 1149.6 device is contained in a
BSDL extension (see Sect. 2.6.6). BSDL extensions are used to describe new attri-
butes beyond the 1149.1 BSDL definition. The 1149.6 standard codifies an official
extension for its descriptive purposes within a VHDL package (see Sect. 2.6) called
8.6 BSDL Extensions for 1149.6 305
The 1149.6 standard pre-defines some Boundary Register cells. Two of these are
used as AC/DC selection cells and are shown in Fig. 8.29. The rest are data cells.
AC/DC selection cells are coded in the Boundary Register description (see Sect.
2.3.13) as “Internal” cells. These two cells, AC_SelX and AC_SelU are similar, dif-
fering in what they capture on the rising edge of TCK in the Capture-DR state. The
AC_SelX cell captures an unknown value (actually, the state of its “Shift In” line
which is not known). The AC_SelU cell captures the state of its Update flip-flop. This
can improve the testability of that portion of logic for production test33 purposes.
Shift out
AC/DC Select
C U
Shift in
AC_SelX AC/DC
ClockDR UpdateDR Selection Cell
Shift out
0 AC/DC Select
1 C U
Shift In
AC_SelU AC/DC
ShiftDR
UpdateDR Selection Cell
ClockDR ACDCSel
33
If the IC is built with its own internal scan capability as allowed by 1149.1 (see Sect 1.7) then this
additional circuitry may be unnecessary.
306 8 IEEE 1149.6: Testing Advanced I/O
Table 8.4 Mode settings for Figs. 8.30, 8.31, 8.32, 8.33, 8.34, and 8.35
Mode 1 Mode 2 Mode 3 Mode 4 Mode 5 AC mode
EXTEST (1149.1) 1 0 1 1 1 0
AC EXTEST (1149.6) 1 0 1 1 1 1
PRELOAD 0 0 1 X 0 X
SAMPLE 0 0 1 0 0 X
INTEST 0 1 0 0 1 0
RUNBIST X X 0 X 1 0
CLAMP 1 X 1 X 1 0
HIGHZ X X 0 X X X
The following figures give output data cell designs for AC output pins. Table 8.4
gives the values of various mode lines used in the drawings, versus effective instruc-
tion. The BSDL cell descriptions of these designs is given in Sect. 8.6.2.
The AC_1 cell in Fig. 8.30 is an adaptation of the highly general BC_1 cell (see
Sect. 2.6.3, page 95). This cell supports the INTEST instruction. Note that the BC_1
cell can be used in contexts other than supplying data to output drivers (input cells,
control cells) but AC_1 cell only supports the Output2 and Output3 contexts.
The AC_2 cell is shown in Fig. 8.31 is an adaptation of the BC_2 cell shown in
Sect. 2.6.3, page 96. Note that the BC_2 cell can be used in contexts other than sup-
plying data to output drivers (input cells, control cells) but that the AC_2 cell only
supports the Output2 and Output3 contexts. This cell does not support INTEST.
The AC_7 cell shown in Fig. 8.32 (shown with its companion BC_2 control cell)
is an adaptation of the bi-directional BC_7 cell seen in Sect. 2.6.3, page 101. This
cell supports the INTEST instruction.
Data cell AC_8, shown in Fig. 8.33 is an adaptation of the bi-directional BC_8
cell from Sect. 2.6.4 on page 104. This cell does not support INTEST.
0 AC_2 Output Data Cell Mission Output
Mission
Input
1
Shift out
Mode 5 0
0
U C 1
1
Shift in
ShiftDR
AC Mode UpdateDR
AC Test Signal ClockDR
AC_2
AC_7
Mode 3
0 Output/Mission
Output
Control
1
1149.1 Control Cell BC_2
1 C U Pad
Shift in
ShiftDR
ClockDR UpdateDR
0
Output
Data 1
Mode 1
Mode 2
Output Data 0
1
Bidirectional Data Pad
Cell AC_8
Mode 1
Shift out
0
0
1
1 C U
Shift in AC Mode
Input ShiftDR
Data ClockDR UpdateDR AC Test Signal
AC_8
AC_9 Self-Monitoring
Output
Mission Output Output Data Cell
0 Pad
Shift out 1
0 0
0
1 1
1 C U Mode 5
Mode 4
Shift in AC Mode
ShiftDR UpdateDR AC Test Signal
ClockDR
AC_9
The AC_9 cell shown in Fig. 8.34 is an adaptation of the self-monitoring BC_9
cell from Sect. 2.6.4 on page 105. This cell supports the INTEST instruction.
The AC_10 cell shown in Fig. 8.35 is an adaptation of the self-monitoring BC_10
cell from Sect. 2.6.4, page 106. This cell (inside the dotted line) monitors the state
of its pad driver. This cell does not support INTEST.
8.6 BSDL Extensions for 1149.6 309
AC_10 Self-Monitoring
Mission Data
0 Output Data Cell
1
Pad
8.6.2 STD_1149_6_2003
…
use STD_1149_1_2001.all; -- Standard ‘use’ statement
use STD_1149_6_2003.all; -- BSDL Extension for AIO
…
The 1149.6 package defines the extension attributes, and also gives the cell
descriptions for AIO Boundary Register cells (see Sect. 8.6.1).
Package STD_1149_6_2003 is -- Attribute definitions for AIO
use STD_1149_1_2001.all; -- Refer to BSDL definitions
end STD_1149_6_2003;
This section shows a hypothetical device containing a number of Advanced I/O pins
that would be good candidates for the application of the 1149.6 standard. Then, a
BSDL description is given to illustrate the 1149.6 extensions to BSDL.
The example device, before adding the 1149.1 and 1149.6 circuitry is shown in
Fig. 8.36. The designer has marked some of the pins as “DC” or “AC” depending
AC
AC A E
AC
AC
B
AC F DC
Mission
AC
C
AC AC
G
AC
DC D
H
Dot6Ex1
on whether they would benefit from the extra test resources provided by 1149.6.
This determination is made on a pin-by-pin basis.
Receiver A could be AC-coupled by external components, so its pin is chosen for
AC treatment. Receiver B is guaranteed to be AC-coupled by virtue that the
AC-coupling is actually integrated on chip. (Note the receiver has internal biasing
and termination resistances to establish its operating point that are not shown. The
time constant of this coupling is designed to be 2 microseconds.) Receiver C is a
standard 50-Ω terminated differential receiver. It could be AC or DC coupled
depending on the application, so the designer chooses the AC designation for its
pins. Receiver D is known to be an “ordinary” logic input so it is considered a “DC”
input and will be given 1149.1 resources only.
Continuing on the output side of the device, driver E is differential and could be
connected to other ICs at the board level that have 1149.6 capability, so it is a good
idea to have the driver support the EXTEST_PULSE and EXTEST_TRAIN instruc-
tions. However, the designer elects to have an AC/DC selection cell (see Sect. 8.3.3)
available to control this capability, just in case. Driver F is “ordinary” so it is treated
as a DC pin. Finally, driver G and receiver H form a terminated, differential, bidi-
rectional pin pair. Driver G can be disabled from the mission logic. These are given
AC status. The next exercise is to add both 1149.1 (the TAP and Boundary Register)
and various 1149.6 resources (mainly, test receivers and AC boundary cells). This
results in the implementation shown in Fig. 8.37.
The BSDL coding for this implementation appears next. Comments follow it,
indexed to line numbers that appear in the far right side of the lines.
-- Use Statements
use STD_1149_1_2001.all; --17
use STD_1149_6_2003.all; --18
8.6 BSDL Extensions for 1149.6 313
8 7 P8
P7 A C U C U E
P9
TR C 9 6
C U
TR C 10
5
P6 11
C U F P10
B C U
P5 4
C U
TR 12
C
Mission 3 P11
TR C U G
C 13 P12
P4 14
C C U 2 C TR
P3
TR C 15 1
U C H
16
P2 D C U 0 C TR
P1 TAP P13
TDI TDO
TCK TMS
P15 P14 Dot6Ex2
Next, look at lines 61–79 in more detail (as well as Fig. 8.37). There are four
differential structures that are described. In lines 64–66, differential inputs P3 and
P4 (to buffer C) are described. There are two observe_only cells that monitor test
receivers on the positive and negative pins. There is also a control-and-observe
(input) cell that monitors the result of the differential input buffer. This cell is
optional by 1149.1, and not required at all by 1149.6.34 Similarly, lines 67-69 docu-
ment the differential pins P6 and P5 for differential input buffer B. Special note
must be made for lines 64 and 67 (and later, 79). These are instances where the
negative leg of a differential pair shows up in the Boundary Register description.
Normally, with 1149.1, only the positive leg is associated with a cell, but 1149.1
does allow observe_only cells to monitor any signal pin, even the negative legs35 of
differential pairs. The 1149.6 standard uses this method to document the test receiv-
ers that monitor negative differential legs.
Lines 70 and 71 show an observe_only monitor for the test receiver on this
single-ended input. The control-and-observe (input) cell again is not necessary, but
would allow support for INTEST. Line 63 shows standard 1149.1 support for pin
P2, which is a “DC” input pin. Similarly, line 74 shows standard 1149.1 support for
the DC output pin of buffer F.
Cells 6 and 7 (lines 73 and 72) provide for the AC behavior of differential driver
E. Cell 7 provides that data and cell 6 is an AC/DC selection cell (see Sect. 8.3.3)
that can override the AC behavior of the driver if so desired (by loading a zero in
cell 7). Cell 7 is documented as an “internal” cell, since its real purpose is unknown
to 1149.1. Soon we will see how this purpose is communicated.
Lines 75–79 show how the differential, bidirectional pins P11 and P12 are han-
dled. Cell 4 is a control cell that can disable driver G, allowing external signals to be
read by buffer H. Cell 3 provides data to driver G. Cells 2 and 0 monitor test receiv-
ers on the pins. Cell 1 (again, optional) monitors the state of input buffer H.
Now that all the cells have been documented, we need a final attribute to identify
those cells that have purposes unique to 1149.6. This code runs from lines 84 to 89,
where AC pin behavior is finally documented. Lines 85-89 identify five AC signals,
A, B_Diff(0), C_Diff(0), G_Diff(0) and E_Diff(0). Note that these include only the
AC single-ended signal (A) and the positive legs, only, of the AC differential pairs.
It is mandatory that if the positive leg of a differential pair is an AC pin, then its
negative leg must be provisioned with an identical capability, and it need not be
documented. As such, the characteristics of test receivers on positive legs are “inher-
ited” by their companion negative legs.
34
This device does not declare support for INTEST. The control-and-observe cell would be needed
if it did.
35
This clarification has been published as an addendum to the 2001 draft of 1149.1.
8.6 BSDL Extensions for 1149.6 317
Line 85 documents the test receiver associated with single-ended input buffer
A. This test receiver has a low-pass filter (see Sect. 8.5.4 and Fig. 8.20) inside it with
a time constant of 5 ns, and this is indicated with the “LP_time” phrase. The “HP_
time” phrase indicates the test receiver is designed to work with a high-pass cou-
pling time constant of 15 ns or more. This coupling, if it existed, would be provided
by board components. One last detail: the “[9]” field directly following the signal
name “A” indicates that cell 9 is the cell that monitors the test receiver for this input.
Note cell 8 also monitors the input, but at the output of the input buffer. This brack-
eted number allows software to resolve this ambiguity, when it exists, and it can be
omitted when there is no potential confusion. In like fashion, lines 87 and 88 also
document the low-pass and high-pass characteristics of input buffers C and H.
Line 86 documents the test receiver(s) associated with differential input buffer
B. There is no low-pass filter time constant documented here, since this buffer is
AC-coupled by capacitors integrated into the IC itself, thus guaranteeing it to be
AC-coupled. (See discussion in Sect. 8.5.4.) The time constant of the AC-coupling
is documented with the HP_time phrase, again. Note the modifier “On_Chip”
appears to let tools know the coupling is integrated into the receiver itself.
Line 89 documents differential output driver E as being an AC pin pair. The
“AC_Select” phrase documents there is an AC/DC selection cell (cell 6) associated
with this particular driver. (See Sect. 8.3.3.) If this selection cell were not there, then
the entire phrase, starting with the “:” up to but not including the semicolon could
be omitted. Again, the documentation only mentions the positive leg and the nega-
tive leg can be figured out from the information supplied earlier (lines 36-41) in the
port grouping statement.
The advance I/O information in lines 85–89 can be written more compactly
if so desired, by noting that three of the test receivers have identical properties.
The BSDL below shows an equivalent expression:
Finally, lines 82–83 deserve some explanation. The time between driver edges
while an AC test is being performed is required to be at least three times the longest
value of “LP_time”36 for any test receiver in the device. However, the standard
allows this time to be extended if desired by the device designer for some reason,
and this optional attribute is the mechanism for expressing this. This should be rare.
36
In this example, the minimum time between edges would be 15 ns. Edges are produced by falling
edges of TCK in the Run-Test/Idle TAP state, implying a TCK period of 15 ns (66.6 MHz) which
is higher than practical systems run, and also higher than TCK maximum clock frequencies of
many devices.
318 8 IEEE 1149.6: Testing Advanced I/O
We have little experience on which to build a Design for Test lore for the 1149.6
standard since the standard and this edition are both appearing in 2003. However,
the 1149.6 Working Group does have a few ideas to offer.
The 1149.6 standard depends, in part, on examining signals for edges, and reacting
to those edges. This allows its great strength of not needing to compare signals
against fixed references. This is invaluable for detecting defects in differential chan-
nels. Therefore it would be highly useful to equip all differential channels with the
1149.6 feature set, even if no AC-coupling is anticipated.
New varieties of Programmable Logic Devices are appearing that have some I/O
ports dedicated to various differential signaling uses, the nature of which may be
programmable. These would be obvious candidates for the AC pin designation.
• DFT-36: Consider equipping all differential I/O ports with IEEE 1149.6
resources.
The 1149.6 standard was originally inspired as a solution to AC-coupled signals.
The art of AC coupling may be anticipated when designing an IC because the
designer has global knowledge of the system the IC will inhabit. However, if there
is even a small chance that AC-coupling will be used with an IC currently being
designed, then go ahead and implement 1149.6 on those pins. This will likely
include data ports. Control signals (interrupt requests, clocks, etc.) will probably
never be AC-coupled.
• DFT-37: Consider equipping all I/O ports that could be AC-coupled with
IEEE 1149.6 resources.
Finally, in an application where AC-coupling of connections is expected, the
coupling can be integrated into the receiving IC, as well as the line termination and
signal level biasing. Having these components inside the IC reduces the number of
8.7 Design for 1149.6 Testability 319
board level components needed for that same application. This reduces the number
of things that can be defective during manufacturing. This also guarantees
AC-coupling, which enables a simpler implementation (see Sect. 8.5.5).
• DFT-38: Consider integrating AC-coupling, termination and biasing into
receiving ICs.
It is at the board level and beyond where the 1149.6 investment really pays off.
Board designers do need to consider several issues when implementing 1149.6 on
boards.
First, board designers should ask for 1149.6 resources in ICs even when
AC-coupling is not anticipated, on differential channels. Differential signaling can
mask important manufacturing defects that can pass ordinary Boundary-Scan tests,
but fail in the performance domain.
• DFT-39: Use 1149.6 in all differential board and system signal pathways.
If a board designer must make use of catalog devices that (someday soon) have
1149.6 resources, care must be taken that they will be interoperable. This amounts
to finding out what the design parameters of ΔV, and TTrans were in the design of the
test receivers (see Sect. 8.5.2). The slew rate of the upstream driver should exceed
these values for proper operation of 1149.6, after proper de-rating is done to account
for signal attenuation along the path. (This de-rating is important in very fast signal
paths only.) If a driver produces edges that have too little voltage swing or are to
slow, the downstream test receiver may not see transitions, essentially leaving it
blind. It is highly likely that for devices designed to interoperate in mission mode
will also operate in 1149.6 test mode. But it pays to be careful.
• DFT-40: Assure that 1149.6 drivers and receivers have compatible defini-
tions of a “valid” transition.
Board-mounted AC-coupling capacitors will need to be checked for shorts that
restore a DC path. This one defect mode is not detectable, generally, by 1149.6.
However, the 1149.1 EXTEST instruction can be used. In this case, a good capacitor
will block 1149.1 signals from getting to a receiver while a shorted capacitor will
allow the data to arrive. Thus, an 1149.1 tests for capacitor shorts can be set up with
a data stream (Sequential Test Vectors) being generated by a driver, but the receiver
is expecting to see a constant value (1 or 0 depending on what its default is). If the
constant value is not seen, a short may be present. This amounts to checking to see
in the tester system you will use is able to perform this test.
• DFT-41: When board-level coupling capacitors are present, use the 1149.1
EXTEST instruction to find shorted capacitors.
320 8 IEEE 1149.6: Testing Advanced I/O
8.8 Summary
This single chapter describing the 1149.6 standard is obviously an overview when
you consider the scope of the Advanced Digital Network standard. Serious imple-
menters will need to study the standard itself in detail. The 1149.6 standard is aimed
at the growing trend towards “advanced I/O” of IC devices. It may well be expanded
in the future to handle new features unknown today in the I/O arena.
At this writing, there is one prototype IC that has been designed37 that sheds some
light on design issues with 1149.6. This IC was a process test case for several tech-
nologies, including 3.125 GHz SERDES data transmission. Eight such channels
(both drive and receive) were equipped with 1149.6 capabilities to see how well they
worked, both fault free and in the presence of defects. To summarize here, all impor-
tant defects (listed in Table 8.3) were detectable. The silicon overhead of the test
receiver was in the 1–2% range (130 nm processing). Since this IC had some of the
channels implemented with the AC-coupling on-chip, the size of the coupling was
also noted to be quite reasonable, on par with other capacitors routinely integrated
on-chip. Newer information [Eklo05] is now available on the state of the industry.
See [Fout06] for work on automating the inclusion of 1149.6 technology into ICs.
37
This IC was designed and fabricated by a team at the Semiconductor Products Group of Agilent
Technologies (now Avago Inc).
Chapter 9
IEEE 1532: In-System Configuration
1
Some drawings and definitions in this Chapter come from IEEE Std. 1532. Copyright 2003
IEEE. All rights reserved.
2
Sometimes synonymously referred to as “In-Situ” configuration.
3
In principle, this standard could be adopted by FLASH RAM vendors as a programming process.
However, like most RAM vendors, they have resisted adoption of 1149.1 for economic reasons
they feel are justified in the marketplace.
The group asked for the support of the IEEE Standard 1149.1 Working Group,
which ultimately urged that this effort become its own standard within the Test
Technology Technical Committee of the IEEE Computer Society in July of 1998.
Since this standard does not provide any new testing capabilities, but instead
addresses programming issues, it was not given an 1149-type name.
IEEE Standard 1532 [IEEE02] was developed in two phases. The initially
approved version of this standard described the necessary hardware elements for
compliance. By making this available earlier, the development of compliant silicon
was accelerated. This subsequent revision completed the standard by formalizing
the ISC algorithm description within the infrastructure of BSDL. This last element
was required to enable the proliferation of software tools for supporting compliant
devices. A recent edition of the standard appeared in 2002 [IEEE02], which added
some new nuances to the programming algorithms. As ever, you should keep cur-
rent with standards releases.
The 1532 Working Group stated a number of objectives for its efforts.
• To provide 1149.1-compliant test capabilities in programmable devices.
• To allow concurrent programming of multiple devices, regardless of their vendor
or vintage.
• To provide board and system designers with a consistent and predictable behav-
ior for devices that are unprogrammed, and those being programmed.
• To provide the users of 1532-compliant devices with an existing set of tools and
processes for handling In-System programming needs.4
• To provide toolmakers with a sufficiently large marketplace to encourage the
development of tools to service it.
• To provide new entrants into the PLD marketplace with an existing, readily
available set of tools for programming their devices.
• To foster innovation in the programming process for product features, field
applications, remote programming and ideas not yet realized.
4
This by itself is a huge contribution if you are familiar with the past. Then, each new device, even
from the same vendor, may have had a unique programming process, often best described as a
“kludge”. There was little incentive to develop tools for these devices.
9.1 IEEE 1532 Vocabulary and Basics 323
This chapter will focus on the features of the 1532 standard that are important to
people charged with testing boards and systems containing PLDs, as well as related
Design for Test issues. The basics of programming will be discussed briefly. The
nuances of programming will be omitted altogether. See [Jaco03] for a complete
treatment of 1532 programming.
IEEE Standard 1532 has been carefully designed to be fully compatible with the
existing 1149.1 standard. The 1149.1 standard principally addresses digital I/O pins
of devices. The 1532 standard does this too, but introduces a categorization of I/O
pins into two types, fixed system pins and ISC system pins.
In the 1532 standard, a fixed system pin is a system pin with an I/O function that is
independent of configuration information programmed into the device, and has not
been designated as an In-System Configurable system pin by the device designer.
So, two things can define a fixed system pin. First, its nature is not a function of
configuration. Second, even if it is “fixed” by being independent of configuration, it
has not been declared to be “not fixed” (ISC) by the device designer (see the next
section).
By “nature”, it is meant that no parameter of the pin is a function of device
configuration,5 be it the logic definition of the pin, or analog specifications such as
voltage levels, drive strength, slew rate, etc.
In the 1532 standard, an ISC system pin is a system pin that is defined by configura-
tion information programmed into the device, or has been designated as an ISC
system pin by the device designer. See example in Fig. 9.1.
5
Be careful of a subtlety here. By “configuration” we mean the downloading of a block of memory
data that defines the function of at least a part of the PLD. There are some non-PLD devices that do
manage some I/O parameters, typically driver strength, via some algorithm we don’t consider here.
324 9 IEEE 1532: In-System Configuration
Fixed Pins
Programmable Micro-Controller
ISC Pins
TAP
Fig. 9.1 A device may contain both fixed and configurable functionality
The designer has some leeway in the definition of pins. Any pin that has a
programmable nature must be designated as ISC. However, the designer may add
some fixed pins to the list if desired. The reason is that before, during, and after the
configuration process, the two pin types have somewhat different behaviors.
The behavior of ISC and fixed pins is tied to the concept of “system modal
states” that are covered next. See also Sect. 9.1.4.
IEEE Standard 1149.1 defines two modes, “system” mode and “test” mode, as
shown in Fig. 9.2. The device powers up in system mode and may transition to or
from test mode6 depending on the 1149.1 instruction that is loaded on the falling
edge of TCK in the Update-IR state.
6
The transition from test mode back to system mode can be inhibited by the “Test Mode
Persistence” feature added to IEEE 1149.1 by 2013 release. See Sect. 11.3.4.1 in Part 2 of
this book.
9.1 IEEE 1532 Vocabulary and Basics 325
System Test
Mode Any non-test Mode
instruction loaded
Test-Logic-Reset
Power
Up
1149Mode
Devices that conform to the 1532 standard have a system mode that is
subdivided into four “system modal states”. This reflects the fact that programmable
devices, at various times in their operational life:
1. May be in an “Unprogrammed” mode with blank logic configuration memory,
or they …
2. May be in “ISC Accessed” mode for accessing logic configuration memory for
writing, reading or erasing, or they …
3. May be in “ISC Complete” mode when accessing configuration memory is
complete, but before entering the operational mode, or they …
4. May be in “Operational” mode, containing fully operational system logic.
Again, all four of these system modal states are part of the “system” mode as
defined by 1149.1.
The 1532 standard defines a set of instructions (called “ISC” instructions) that,
along with other factors, govern the system modal state a device is in, and the transi-
tions between them. The two most important instructions are ISC_ENABLE and
ISC_DISABLE. The ISC_ENABLE instruction sets up a device for programming
activities such as writing, reading or erasing program memory. The ISC_DISABLE
instruction takes a device out of a programmable mode. Quite a few other ISC
instructions are defined by the 1532 standard, but they only work when they are
used between the execution of ISC_ENABLE and ISC_DISABLE. Nearly all ISC
instructions require that some specified number of TCK cycles be executed while in
the Run-Test/Idle state. These TCK cycles drive internal state machines that conduct
programming activities. For example, the ISC_ENABLE instruction may turn on
a charge pump that is used to generate higher voltages needed for programming
activities. The ISC_DISABLE instruction would later turn off this charge pump.
The manipulation of the charge pump would be clocked by TCK.
326 9 IEEE 1532: In-System Configuration
The other factors that govern the system modal states and navigation among
them are three “signals” that are set or cleared by activities of ISC instructions, and
other events such as assertion of TRST*, powering up the device, or passing through
the Test-Logic-Reset state. These signals7 are:
• ISC_Enabled—a signal that indicates the ISC_ENABLE instruction has been
successfully executed to completion. This signal is cleared at power up, by pass-
ing to the Test-Logic-Reset state and, by completion of the ISC_DISABLE
instruction.
• ISC_Done—a signal that indicates there are valid programming bits in the PLD
program memory. It is set by the programming algorithm8 used to download and
verify program information. In volatile devices, it is cleared upon power up. In
non-volatile devices, its state is retained when powered down and later powered
up again.
• ISC_Disable_Completing—a signal that indicates the ISC Complete modal state
has been entered legally by action of the ISC_DISABLE instruction. This signal
is cleared at power up.
The four system modal states and transitions between them are shown in Fig. 9.3.
Each state bubble in the diagram shows the state of the three signals (in parenthesis)
just described. (Note, “TLR” in the diagram indicates passage to the Test-Logic-
Reset state, as could occur if TRST* is asserted.) The “non-test” instructions include
BYPASS, IDCODE, etc. from 1149.1, and all of the 1532 instructions.
To understand the diagram, consider a device at power up. It will be placed in either
the Unprogrammed or Operational system modal states, depending solely on the state
of the ISC_Done signal. This signal indicates whether there is a valid configuration
stored in the device. ISC_Done can only be set at power up in non-volatile devices that
were programmed at an earlier time before power down. In volatile devices, the device
would have to power up in the Unprogrammed system modal state.
Assume the device has a cleared ISC_Done signal. It will power up in the
Unprogrammed system modal state. The only way for it to exit this state is by the
successful execution of the ISC_ENABLE instruction, including some number of
required TCK cycles in the Run-Test/Idle state. This number is a function of the
PLD design and will vary from device to device. It is a minimum number. If more
TCK cycles are applied, the device will have no future action due to extra clocking.
As we saw before with other instructions (e.g., RUNBIST) that may execute in
7
These signals may or may not exist in the actual implementation. Their existence cannot be veri-
fied from the I/O pins of the device. They are used as a mechanism for describing internal behav-
iors of a 1532 device and for writing rule to govern this behavior. These behaviors must exist and
can be observed from outside the device.
8
It should be set at the end of programming activities. A device may be incompletely programmed,
for example, due to some error sensed during programming, but the ISC_Done signal should not
be set until the programming algorithm is satisfied the program data is correct.
9.1 IEEE 1532 Vocabulary and Basics 327
ISC
Accessed
Unprogrammed TLR and
(1,X,X) *
(0,0,0) * ISC_Done is clear
d t
an se
ISC_DISABLE executed
ISC_Done
LR e is
is clear T on
D
C_
IS
Power
Up
ISC_Done
is set
E ISC_DISABLE
A BL loaded
N ed
C_E cut
IS exe
IS r a t IS
C ny C
o u
_D n _
on on Dis
b
e -te ab
Operational ISC
is s le
(0,1,0) * Complete
cl t in lo
ea s a
(0,X,1) *
r a tru de
nd cti d)
(T on
LR
Any non-test
instruction but
ISC_ENABLE ISC_Done is set and
executed * Signals:
(TLR or any non-test
(ISC_Enabled, ISC_Done,
instruction but
ISC_Disable_Completing)
ISC_Disable loaded)
1532SMode
Fig. 9.3 1532 system modal states, and transitions between them
Run-Test/Idle, several devices may all be in this state at the same time. The device
that requires the most cycles will define the duration of clocking. The others will
simply idle until it completes.
If the device had powered up with a set ISC_Done signal, it would go to the
Operational system modal state. Again, the only way to exit this state is to success-
fully execute the ISC_ENABLE instruction. In either case of power up in
328 9 IEEE 1532: In-System Configuration
9
The 1532 standard allows optional security methods that can “protect” a device from unwanted
read out, erasure and writing. In its most capable usage, the security mechanism can effectively
turn a non-volatile PLD into a permanently programmed, unreadable device much like a custom
(non-PLD) device.
9.1 IEEE 1532 Vocabulary and Basics 329
Unprogrammed ISC
Accessed
in
ed
st
An ed d I
An on
lo ar
n t
ru
ad
i o es
a b on
ad an
cle
y an S C
d
cti
lo
ct t
t En cti
le
no d _
te ad
ru ny
se _ ru
st
st A
n- IS Do
is ISC nst
lo
te C_ ne
d ti
st
an -tes
ed
ins Ena is c
in
ed n
tru ble lea
o
ad n
cti d r
lo ny
on is
A
Test
Mode
in
ed
st
An tion
ru
lo t
on b on
ad
i o es
se is
y
c
D na cti
te loa
ct t
e led
t
ru ny
st de
C_ _E tru
n
st A
is
IS C s
d IS in
Any test
t
an nd tes
d
instruction loaded
in
ar a - n
cle de no
y
lo An
d
a
ISC
Operational
Complete
1532SMode
Fig. 9.4 Entry and exit to test mode from the system modal states
Finally, a device in any system modal state can enter test mode by having a test
instruction (EXTEST, CLAMP, HIGHZ, INTEST, RUNBIST) loaded into its
instruction register. This is shown in Fig. 9.4.
It is possible that a designer does not want to support certain sequences of 1532
and 1149.1 instructions. For example, if in the ISC Accessed system modal state
certain high voltages are generated, these may conflict with the operation of (say)
EXTEST if they aren’t removed. The designer may shut down the voltage generator
when EXTEST is loaded, but must also clear the ISC_Enabled signal in this situa-
tion. Then, when a non-test instruction is reloaded, the ISC Accessed modal state
will not be re-entered. The designer must document the behavior of “illegal instruc-
tion sequences” so that software can avoid them.10
10
It is probably a rare case that a software tool might want to execute (say) EXTEST while in the
middle of a programming operation.
330 9 IEEE 1532: In-System Configuration
With the 1149.1 standard, system I/O pins behave as defined by their system
definition in system mode, and are controlled by Boundary-Scan resources when in
test mode. With the 1532 standard, the same is also true, but what does it mean to
have system mode divided into four system modal states?
The Operational system modal state (see Sect. 9.1.3) is the only state that seems
to match the 1149.1 definition of “system mode”. Yet, 1532 defines the other three
as also being a part of system mode as well, for ISC pins. Fixed pins do not differ-
entiate their behavior based on system modal states. ISC pins do. Indeed, this is a
contribution of 1532, the rigorous definition of system modal state I/O behavior.
The “system behavior” of ISC pins of a programmable device is not at all like
that of fixed pins. When a device is Unprogrammed, what should be the behavior of
ISC pins? Clearly it cannot be the same behavior as that of Operational ISC pins
since no functional definition for these pins has been provided. Thus, the 1532 stan-
dard provides the definition.
For the Unprogrammed system modal state, the 1532 standard requires ISC pins
to be non-driven, for example they should be in a high-impedance state. In the
Operational system modal state, the ISC pins should take on their system definition
as dictated by the programmed configuration within the device. In the other two
system modal states (ISC Accessed and ISC Complete) the ISC pins as a group have
one of two choices of behavior. First, they may all be non-driven as in the
Unprogrammed modal state. This is called the “HIGHZ-like” behavior. Second,
they may all take on a state controlled by the content of the Boundary Register, in a
manner identical to the I/O behavior of the CLAMP instruction. (See Sect. 1.5.5.)
This is called the “CLAMP-like” behavior. If this choice is taken, then a PRELOAD
instruction sequence will be needed to establish the state of the Boundary Register
needed to produce an appropriate I/O state on the ISC pins. This “appropriate” state
would be determined by the application software11 using the feature. It allows the
ISC device to condition its outputs to some static configuration during program-
ming, which may be useful for controlling surrounding devices it is attached to.
This specification of ISC pin behavior can lead to a surprising consequence.
Let’s say you’ve chosen the CLAMP-like ISC pin behavior in your device design.
You start with a blank device in the Unprogrammed modal state. You PRELOAD
bits in the Boundary Register for I/O control. You then load and execute the ISC_
ENABLE instruction. This causes the device to go into the ISC Accessed system
modal state and the outputs are now controlled by the content of the Boundary
Register. If you now do a second PRELOAD operation (still in the ISC Accessed
modal state) you will see the ISC pin drivers respond to the newly loaded Boundary
Register content at the falling edge of TCK in the Update-DR state, just as if the
EXTEST instruction was in effect. This is a consequence of the system modal state
definition of 1532, and not a violation of the 1149.1 standard.
11
Since most PLDs have very flexible programmable I/O behavior (meaning an ISC pin may be
defined as input, output or bidirectional by programming) it is likely that any device that chooses
to implement the CLAMP-like behavior can emulate the HIGHZ-like behavior.
9.1 IEEE 1532 Vocabulary and Basics 331
Since fixed pins on an ISC device are always performing their system function
during ISC programming activities, it is possible for a portion of an IC such as the
microcontroller in Fig. 9.1 (page 344) to be performing the configuration of the
programmable portion of the same device!
A typical PLD device may have a Boundary Register that looks as shown in Fig. 9.5.
The I/O modules (IOM in the figure) contain Boundary-Scan resources for full bidi-
rectionality since a pin may end up being an input, output or bidirectional pin after
programming.
The content of an IOM is shown in Fig. 9.6, for the case where the designer
chooses to implement independent data output and input cells. A single-cell bidirec-
tional based on the BC_7 cell (see Sect. 2.6.3, page 101) could have been used that
would result in a 33% reduction in shift register length, but we use this design for
discussion.
The input cell design can be a standard BC_1 type cell (see Sect. 2.6.3, page 95).
The output and control cells can be modified version of BC_1. For the purposes
of BSDL, they are identical to BC_1 cells. The modifications have to do with
supporting the system modal states and two possible output behaviors, CLAMP-
like and HIGHZ-like. Both options are shown in parts A and B of Fig. 9.7.
(Note these designs are not optimized.) Part A is basically identical to a BC_1 cell.
This is because the control cell will disable the driver. However part B has some
differences in the output multiplexer structure. System data is passed to the output
IOM IOM
IOM IOM
IOM IOM
TAP and
TDI TDO
Instruction Register
TCK
TMS PLDBreg
332 9 IEEE 1532: In-System Configuration
Output Cell
C U ISC Pin
Control Cell
C U
Towards
TDO IOModule
Parallel In 00
01 Parallel
Shift-DR Capture Update
G 10 Out
0 Reg Reg 11
D Q D Q
1
CK CK
Fig. 9.7 Output data cells for HIGHZ-like and CLAMP-like behavior
9.1 IEEE 1532 Vocabulary and Basics 333
Mode1 G2
ISC_Enabled G1
ISC_Done G0
Instruction Type Mode1 Mode2
111
ISC Instruction 0 0
110
Test Instruction 1 X Parallel
101 Out
Non-Test Instruction 0 1 100
011
Shift Out
010
Parallel In 001
Capture Update 000
Shift-DR G
Mode2
0 Reg Reg "0"
D Q D Q
1
CK CK
Shift In Update-DR
Clock-DR Reset CntlHiZ
Mode G2
ISC_Enabled G1
ISC_Done G0
111
Instruction Type Mode 110
ISC Instruction 1 101 Parallel
Test Instruction 1 100 Out
Non-Test Instruction 0 011
Shift Out
010
Parallel In 001
Capture Update "0" 000
Shift-DR G
0 Reg Reg
D Q D Q
1
CK CK
only when there is a non-test instruction loaded and the ISC_Enabled signal is clear.
Otherwise the Update latch contents are passed to the output. Again, the control cell
may disable the driver, blocking data from the output pin.
The HIGHZ-like and CLAMP-like control cells are shown in Figs. 9.8 and 9.9
respectively. Both these cells are modifications of the BC_1 cell design (see Sect.
2.6.3, page 95) and for the purposes of BSDL, they are still considered BC_1 cells.
The modifications affect the output multiplexer as was the case with the data cells.
334 9 IEEE 1532: In-System Configuration
The HIGHZ-like cell of Fig. 9.8 controls the output as summarized in Table 9.1.
The CLAMP-like cell of Fig. 9.9 controls the output as summarized in Table 9.2.
All the ISC data and control cells shown in Figs. 9.7, 9.8, and 9.9 are unopti-
mized. The system pathway from “parallel in” to “parallel out” can be optimized for
speed, while the path from the Update Latch to “parallel out” is not speed-critical.
At the time of IEEE Standard 1532 inception, the PLD marketplace was a riot of
complex and incompatible programming methodologies. Granted, there are signifi-
cant technological differences between (say) a volatile RAM-based Field-
Programmable Gate Array and a non-volatile Complex Programmable Logic Device
(CPLD). PLD devices are also benefiting from Moore’s Law, not just that they can
contain more configurable logic, but they can also utilize some gates to “hide” the
messy details of how the programming is actually done.
The 1532 standardization effort started at a fortunate time—a time where the
various PLD vendors could think about moving towards a common programming
approach while dedicating some circuitry to maintain backward compatibility
with older designs. Think of it as putting an on-chip hardware interface between a
“logical” programming model that can be standardized, and a tried-and-true physi-
cal realization of a programming method. This allowed them to minimize the impact
of 1532 acceptance on their programmable designs. As we all go forward, PLD
vendors will have time to optimize the internal workings of the programming
circuitry as they see fit.
9.2 Programming Features of IEEE 1532 335
That said, when you peruse the 1532 standard you see quite a large list of ISC
instructions and their associated registers. This reflects the fact that PLD vendors
wanted to make sure that the 1532 standard did not preclude a particular favorite
mechanism of their architecture, currently in use, even though it might be dropped
as part of a later optimization. Hence, I expect that many of the ISC instructions
currently in place will fall into disuse relatively soon, leaving a small, core set of
essential instructions in wide use.
This chapter will not document the entire 1532 programming capability, as this
book is dedicated to Boundary-Scan testing, not device programming.12 (See
[Jaco03] for a generous treatment of 1532 programming, and of course, the 1532
standard itself [IEEE02].) Therefore, only an abbreviated discussion of 1532-based
programming is given here, based on a “core set” of capabilities.
We start with a simple model of a PLD configuration memory, depicted in Fig. 9.10.
Here, the PLD memory is a typical array13 of locations, addressed by rows that are
some number of bits wide. Unlike “typical” memories, some bit positions may be
unpopulated, such that if you read them back after a write operation, you do not get
back what was written. In the model, there is an address register to select a row of
memory, and a data register to read/write from that row.
Address Data
Registers
Memory Array
(some space unused)
PLDMem
12
This is not to say that test engineers do not care about programming, since In-System
Configuration is often performed during manufacturing test of boards, on ATE systems.
13
Some PLDs have more complex memory structures, broken up into sectors of varying depths and
widths. It is even possible that some sectors are volatile while others are non-volatile.
336 9 IEEE 1532: In-System Configuration
Address Gen
ISC_Address
Memory Array
PLD1532
The 1532 standard provides a series of instructions to target this model. Indeed,
the address and data registers become target registers for these instructions, so that
they become shift registers between TDI and TDO. In the simplified subset of capa-
bilities documented here, there is an ISC_ADDRESS_SHIFT instruction that
selects an ISC_Address register, and an ISC_PROGRAM instruction that selects
the ISC_PData register. There is an ISC_READ instruction that also targets the
ISC_PData register. Finally, there is an ISC_ERASE instruction that targets the
ISC_Default register, which in this simplified case is really the Bypass register. An
integrated model of this simple PLD device is shown in Fig. 9.11, showing how
address and data are shifted and manipulated.
In this view, the ISC_ADDRESS_SHIFT instruction can be used to set up an
address then used by the ISC_PROGRAM (or ISC_READ) instruction to write to
(or read from) the memory array. This would entail an instruction scan to load ISC_
ADDRESS_SHIFT, followed by a data scan to supply an address. (See Sect. 3.1.1
to refresh your memory on what instruction and data scans look like.) Then an
instruction scan would load the ISC_PROGRAM instruction, followed by a data
scan to provide data to be written into the array. Once that data was in place, some
specific number of TCK cycles in the Run-Test/Idle state would actually “burn” the
data into the memory.14 In some devices this may be quick (a few TCK cycles) and
in others, typically non-volatile memory, this could take milliseconds of time during
which some minimum number of TCK cycles are also needed.
14
In some older devices, the programming activity is literally used to burn small fuses. In newer
technologies, electrons are transported across potential barriers and trapped. In RAM-based tech-
nologies, the TCK cycles are used to drive a state machine that delivers the data via some internal
protocol. In all cases, the so-called “burn” mechanism is hidden from external users who only see
the 1532 protocol. This is a major contribution of 1532.
9.2 Programming Features of IEEE 1532 337
This is the simplest way of programming (or reading) a row of memory. However,
notice that there is a lot of instruction scanning and data scanning going on. This
could be considered wasteful if one wants to program a sequence of contiguous mem-
ory locations. That is why there is an “address gen” block in Fig. 9.11. This block
performs an “auto-increment” on the address in response to the successful comple-
tion of an execution of ISC_PROGRAM. This allows us to do one ISC_ADDRESS_
SHIFT operation to set up the first address of a sequence of data rows. Once that
address is in place, the ISC_PROGRAM instruction is loaded just once to begin data
transfer. Then a sequence of data shifts is used to program subsequent rows of data.
Reading back a sequence of memory location is done in like fashion, with the
ISC_READ instruction used to access an addressed location and shift it out where
it can be verified. Again, some number of TCK cycles in the Run-Test/Idle state are
used to do this access, so that the internal protocol for reading is hidden.
Finally, the ISC_ERASE instruction can be used to perform a bulk-erase
function on a device, returning it to a blank (Unprogrammed) system modal state.
Note the ISC_ERASE instruction should also clear the ISC_Done signal. Yet again,
TCK cycles in the Run-Test/Idle state are used to sequence the actual details of
erasure, which are hidden from external view.
The sequence of activities needed to program one very simple 1532 device is given
in Table 9.3. This would be performed after the 1149.1 capabilities of the device had
been used to verify the device was properly mounted on the board and that its inter-
connections with other devices were not open or shorted.
Steps 6 and 12 of this process are where configuration data is shifted into or out of
the device. In step 6 that data for a given row is shifted into place and then the burn
occurs. At the end of the burn, the address is incremented, ready for a new row.
However, in step 12 things are a bit different. The actual transport of configuration data
from the device’s memory to the ISC_PData register occurs in the Run-Test/Idle state,
yet the register is shifted out before that has happened. This means on the first iteration
of the readback loop, there is undefined data in the register. This is “lagging” behavior
we so often see with TAP operations. All subsequent read/shift operations will read
back configuration data of the previously addressed row. On the last valid row, we
have to proceed to step 15 to do one final data scan to shift it out for inspection.
The 1532 standard contains the concept of an optional status register. If it is
implemented, then every time data is captured in some target register, the bottom N
bits indicate status. N must be at least 2, capturing a “10”, with any more significant
bits having device specific meaning. Status should be thought of as bits appended
next to TDO. If ISC_PData was K bits long, it would be K + N bits long if status in
implemented. Thus when using ISC_PData for reading in data, an extra N dummy
bits must first be shifted in at the status location.
In the example just reviewed, the simple device did not implement status. If some
memory location failed to accept data, that would be later determined by reading back
338 9 IEEE 1532: In-System Configuration
Table 9.3 Sequence of events to program and verify one simple 1532 device
Step Device TAP activity What is happening
1 Instruction Scan Load ISC_ENABLE
2 Run-Test/Idle Wait for enable time
Device in ISC Accessed system modal state, ready for programming.
3 Instruction Scan Load ISC_ADDRESS_SHIFT
4 Data Scan Shift in starting address
5 Instruction Scan Load ISC_PROGRAM
6 Data Scan Shift a row of configuration data into ISC_PData register
7 Run-Test/Idle Wait for write burn time. This increments the address at the
completion of each burn.
8 If more data to program, return to step 6
Now continue with configuration readback to verify the programmed data.
9 Instruction Scan Load ISC_ADDRESS_SHIFT
10 Data Scan Shift in starting address
11 Instruction Scan Load ISC_READ
12 Data Scan Shift a row of configuration data out of the ISC_PData register
(see text)
13 Run-Test/Idle Wait for read time. This increments the address at the completion
of each read.
14 If more data to read back, return to step 12
15 Data Scan Shift out the last row of configuration data in the ISC_PData
register (see text)
Now complete the process and make the device operational.
16 Instruction Scan Load ISC_DISABLE
17 Run-Test/Idle Wait for disable time
18 Test-Logic-Reset Device configured and operational
and verifying the data. If status were implemented, then the device could indicate
much sooner that something was not right with the programming process. The
device’s internal programming circuitry can be monitoring various operational fac-
tors such as charge pump voltage, time spent burning, etc. and create a valid status
indication when these parameters are nominal, and an error indication with “01” bits
in the least significant positions when some error is sensed. Another condition that
can create a status error is any attempt to perform an operation (such as reading con-
figuration content) that has been disabled by an activated security mechanism.
Next we consider the case where we are concurrently programming multiple devices.
In Table 9.4 we will examine the process for two devices of similar but not identical
natures, probably from the same family of devices, but of differing sizes. Thus there
is more data to program into the larger device. These devices do no implement a
9.2 Programming Features of IEEE 1532 339
Table 9.4 Sequence of events to program two similar devices of differing size
Smaller device A Larger device B
Step TAP activity What is happening What is happening
1 Instruction Scan Load ISC_ENABLE Load ISC_ENABLE
2 Data Scan Shift ISC_Config Register Shift ISC_Config Register
3 Run-Test/Idle Wait for maximum enable time
Both devices in ISC system modal state, ready for programming.
4 Instruction Scan Load ISC_PROGRAM Load ISC_PROGRAM
5 Data Scan Shift configuration data Shift configuration data
into the ISC_PData register into the ISC_PData register
6 Run-Test/Idle Wait for maximum write burn time
7 If more Device A data to program, return to step 5
8 Instruction Scan Load ISC_NOOP (see text) Reload ISC_PROGRAM
9 Data Scan Shift dummy bits into Shift configuration data
the ISC_Default register into the ISC_PData register
10 Run-Test/Idle Wait for Device B write burn time
11 If more Device B data to program, return to step 9
Now read back programming data from both devices.
12 Instruction Scan Load ISC_READ Load ISC_READ
13 Data Scan Shift configuration data Shift configuration data
out of the ISC_PData register out of the ISC_PData register
14 Run-Test/Idle Wait for maximum read time
15 If more Device A data to read back, return to step 13
16 Data Scan Shift ISC_PData Reg Shift ISC_PData Reg
17 Instruction Scan Load ISC_NOOP Load ISC_READ
18 Data Scan Shift dummy bits out Shift configuration data
of the ISC_Default register out of the ISC_PData register
19 Run-Test/Idle Wait for Device B read time
20 If more Device B data to read back, return to step 18
21 Data Scan Shift dummy bits out Shift configuration data
of the ISC_Default register out of the ISC_PData register
Now program security and set both devices to their operational states.
22 Instruction Scan ISC_PROGRAM_SECURITY ISC_PROGRAM_SECURITY
23 Run-Test/Idle Wait for maximum security set time
24 Instruction Scan Load ISC_DISABLE Load ISC_DISABLE
25 Data Scan Scan out status of security Scan out status of security
26 Run-Test/Idle Wait for maximum disable time
27 Test-Logic-Reset Device operational Device operational
separate ISC Address register, but have address and data combined in one register
load of the ISC_PData register. Further, the ISC_ENABLE instruction targets a reg-
ister called “ISC_Config”, which must be loaded with some configuration control
information. These two devices also implement a security method that prevents
readback of data, controlled by the ISC_PROGRAM_SECURITY instruction.
340 9 IEEE 1532: In-System Configuration
In this example there are a number of times (steps 3, 6, 10, 14, 19, 23 and 26)
where a time is spent in the Run-Test/Idle state waiting for some event to complete.
A key point here is that in most of these steps, both devices are waiting concurrently.
If for example, the burn time is (say) 5 milliseconds in both devices, we have both
burn intervals elapsing at the same time (step 6). Since the data and instruction shift-
ing time may be much smaller than a burn time, the burn times will dominate the
total time of the operation, meaning we can concurrently program two devices in
nearly the same time it takes to program the larger device.
Because device B has more data to manage than device A, we see a segmentation
of burning and reading activities. From steps 4 to 7, we are burning data into both
devices. From steps 8 to 11 we finish burning the last data into device B. Notice that
while device B continues with the ISC_PROGRAM instruction loaded in it, device
A has the instruction ISC_NOOP loaded into it. This instruction is very much like
BYPASS (see Sect. 1.4.1) in that it targets a short register, and has no other effect
on the device. This way, device A “idles” while we finish placing data in device B.
The readback operation is similarly segmented to account for the different
amounts of data. Note the “lagging” data behavior again. In step 16 the last data
extracted from both devices is read out before reprogramming the instruction regis-
ters. In step 21 there is one last data scan to scan shift out the last row of device B
data, while device A idles.
Finally, in step 27 we see both devices placed in the Test-Logic-Reset state at the
same time, which places them in the Operational system modal state. If we wanted
to make device A operational first, we could have executed one more instruction
scan at that time, loading device A with BYPASS and reloading device B with
ISC_DISABLE. This would cause device A to enter the Operational system modal
state while device B stayed in the ISC Complete system modal state. Later we could
make device B operational by entering the Test-Logic-Reset state.
IEEE Standard 1532 supports the configuration of programmable logic devices after
they have been mounted on a board. Indeed, many people want to perform this func-
tion (for non-volatile devices) after proving a board is defect-free. A natural place to
do this is on the same ATE system that tested the board. There, it has power avail-
able, and any resources needed for testing can be re-used to support programming.
Several “DFT” rules will be given here, that should make both testing and program-
ming more practical.
The 1532 standard specifies that blank (unprogrammed) devices will have all
outputs in a non-driven state. When a board containing these devices is designed,
the board designer will be aware of this and plan for it. The designer may give the
board, on power-up, autonomous processes that configure some fraction of these
devices. A test engineer will need to know which devices power up blank and which
will become configured.
9.3 Design for IEEE 1532 Programmability 341
• DFT-42: Document the state of each PLD at the completion of board power
up, for testing purposes.
If an autonomous configuration process may not complete properly when a board
is powered up, this could result in devices that do not implement the correct func-
tionality or even cause board level conflicts. There could be a number of reasons for
configuration to fail. For example, the tester fixture attached to the board may over-
load critical clock signals or otherwise interfere with signal integrity, causing con-
figuration to fail. Or, the tester may deliberately power up part of the board but leave
other parts unpowered. Or the tester may assert some reset lines needed for testing,
and these may prevent configuration. In some cases, the test engineer may want to
defeat an autonomous configuration process so PLD I/O states are guaranteed to be
disabled for test purposes. Plus, having autonomous logic operations progressing
during normal testing is very likely to disrupt the test. This means the test engineer
must know about PLD configuration processes, how they are triggered, how long
they take and if needed, how to suppress them.
• DFT-43: Document how PLDs are configured on a board, and how to trigger
or prevent configuration.
If it is desired to use a tester as the programming system for PLDs, the test engi-
neer will need to know if there is any particular conditioning of the board necessary
before, during and after programming. For example, the board may itself be a com-
ponent of a larger system, and this system may supply some conditions needed for
configuration. The tester would have to “step in” and provide this conditioning in
place of the system.
• DFT-44: Document supporting conditions needed for device programming.
If a configuration process is executed on an ATE system, what should be done if
it fails? If, for example, there were 20 PLDs to be programmed in three groups, what
should be the reaction of the tester if the second group’s program displays a bad
status indication in the middle of programming? Should the program be re-tried?
Should the third group’s program be tried or skipped? Should the first group (suc-
cessfully programmed) be erased? Should board level resets be asserted in a certain
time frame? The bottom line here is you should not assume the programming pro-
cess will be unerringly successful, and plan for contingencies. A partially pro-
grammed board with power applied may be at risk.
• DFT-45: Document what actions should be taken when a programming pro-
cess fails while on an ATE system.
Earlier rule DFT-16 (page 200) suggested that PLDs should be chained together
contiguously, at one or the other ends of the chain, so that if needed they could be
accessed by a tester as if they were a separate chain. It is less important for this to
be done if the devices are actually 1532-compliant. However, one should consider if
some non-PLD device(s) on the board will need to be disabled with Boundary-Scan
in order to support the programming process. For example, some non-PLD device
342 9 IEEE 1532: In-System Configuration
15
Note this is not because of a design flaw, but because the board may not be able to configure on
the test system the same way the board designer intended during normal system operation. This
can be a tester loading issue, or perhaps the board cooperates with missing system functions in
normal operation that cannot be replicated on the tester.
Chapter 10
IEEE 1149.8.1: Passive Components
1
This standard has two suffixes (.8 and .1) in anticipation that other standards in the future may be
created that are also adjuncts to the base, 1149.1 standard. Basically, the IEEE was running out of
numbers using only 1 suffix, so this convention was adopted.
2
This statement comes from IEEE Std. 1149.8.1, Copyright 2012 IEEE. All rights reserved.
3
This additive quality is the same seen with 1149.4 and 1149.6. Indeed it is anticipated that
1149.8.1 could coexist inside an IC with 1149.1 and 1149.6.
4
TestJet is a trademark of Keysight Technologies. Opens Xpress and Framescan are trademarks of
Teradyne Inc.
Notice the title of the standard mentions “Passive and/or Active Components”.
This is because in many cases, active ICs that do not contain 1149.1 Boundary-Scan
can be tested for opens using the capacitive sensing technique. A prevalent example
of such ICs are dynamic random access memories (DRAM). See [Park12]. The next
section gives a description and history of this technology, which helps map its evo-
lution into Boundary-Scan based application.
To tester
Signal
amplifier
Solder ball array
Sense Plate Internal
conductors
Vacant Connector
In-circuit access
AC Source in tester stimulates one board node
connected to DUT, all other nodes grounded
ICTUOT
Fig. 10.1 In-Circuit tester setup for unpowered capacitive opens test
5
“Unpowered” is an important distinction since none of the active devices receive power. Thus we
can ground many nodes without fear of any damage. Note also that all these nailed nodes can be
tested for shorts between them by using conventional In-Circuit shorts testing techniques.
10.1 Unpowered Capacitive Sensing 345
CS
Connector
pin
Connector
Sense plate
lead
CS CO
Connector AC Detector Board AC Detector
pin solder pad
Measured Measured
capacitance capacitance
= CS CS*CO
AC Source AC Source =
CS + C O
A B CapModel
Fig. 10.2 Electrical model of the capacitance measurement, defect-free (a) and with an open (b)
6
This is greatly simplified here. The learning process needs to make multiple readings and examine
their statistics, so as to set reliable limits on what constitutes a good or failed reading.
346 10 IEEE 1149.8.1: Passive Components
To tester
Solder joint
Signal
Board amplifier
node 1 Resistor Internal
Sense Plate
conductors
Vacant Connector
Board
node 2
In-circuit access Connector pin ball Defects
open circuit (in part b) this has the effect of injecting a second capacitance CO in
series with CS. The measured result is given by the equation for series capacitances
as shown. Note that when CS is larger than CO, the measured value tends to change
rather drastically. For example, if CS = 4*CO, then the measured value changes from
the defect-free CS to a defective value of 0.2*CS. Happily, the values of CS have
historically been much larger that CO, but there is a trend towards smaller values of
CS due to the shrinking physical sizes of many components.
When there are intervening series components between the tester nail and the
device that has the sense plate atop of it, there can be additional test coverage gained
by this test. For example, in Fig. 10.3 there is a surface mounted series resistor between
the nail and a vacant connector pin being tested. When the test passes, then we know:
1. the connector pin has continuity to board node 2,
2. the resistor R is present (but we don’t know its value7), and
3. the two resistor solder joints to board nodes 1 and 2 are not open.
Unpowered capacitive opens testing has been used very successfully in board
test for decades now. However, it is not immune to technology changes. Notably, it
depends on nodal access and this is increasingly difficult to obtain due to the ram-
pant trends towards miniaturization of virtually all components and the boards they
are mounted upon. One good thing about unpowered opens testing is that as access
degrades, the coverage it can supply declines linearly. Other test technologies
7
If an incorrectly placed resistor has a very large value, then it might block enough signal to the sense
plate that it will cause a failure. However, most series components have relatively low impedances
and will not be noticed, compared to the AC impedance of a typical CO of well under a picofarad.
10.1 Unpowered Capacitive Sensing 347
sometimes degrade catastrophically with access loss—that is, if you lose a few key
access points, you may lose a large amount of coverage. The question is, is there a
way to use the capacitive sensing idea in an environment where physical nodal
access is limited—that is, can we substitute a new way of providing the stimulus
needed for the technique to work?
This question occurred to board test engineers, who wondered if Boundary-Scan
could be substituted for the array of access points. (See [Dubb08] [Norr08], and
[Sunt09].) First, the “unpowered” part of unpowered capacitive opens testing would
have to be removed since at least enough power would have to be applied to a board
to make Boundary-Scan devices work. Then, since many nodes would not have phys-
ical access, you would need to do two things with Boundary-Scan drivers: first, hold
most nodes at “ground” and second, provide a stimulus frequency to a target node.
It was quickly realized that “ground” was not important to capacitive sensing.
What was needed was to provide a stable DC level to the pins that were formerly
grounded. This means using Boundary-Scan drivers to supply either a static high or
low. This is something Boundary-Scan’s EXTEST is well suited for, as long as the
required drivers can be enabled during the test. In fact, it is quite possible that some
drivers might need to be in a preferred state (0/1) to keep the surrounding (powered)
circuitry “happy” and quiescent.8
Then there is the stimulated node. This can be provided by a Boundary-Scan
driver that is toggled by successive scans to be 0 and then 1, repeatedly.9 The prob-
lem here was, could you achieve the needed stimulus frequency (again, somewhere
around 8 kHz10) with successive scans? This was a function of the TCK frequency
and the total length of the boundary register in effect at the time of the test. Since
two scans per stimulus cycle are needed, the time to do this is roughly 2*N times the
clock period of TCK, where N is the number of bits shifted. For example, if you
have a maximum 2 MHz TCK (period of 500 ns) then to achieve 8 kHz toggling at
a pin, you must have a boundary register no longer than 250 bits. This limitation can
easily be exceeded by even a single device’s boundary register11 So, using ordinary
1149.1 EXTEST may not be feasible.
8
There are two problems to be addressed. First, other devices need to “ignore” what we are doing,
for example, we might de-assert a neighboring device’s select line to keep it from reacting to our
test signals and perhaps doing something detrimental to device safety. Second, since the capacitive
technique can be frustrated by noise pickup from other board nodes, we may have to keep neigh-
boring devices from generating signals at the key sensing times.
9
The Boundary-Scan driver will drive at its native levels, often more than 400 mV peak-to-peak.
Since it is likely to be attached (via fanout) to other compatible devices, we do not have to be
concerned with protection diodes in these devices turning on and depleting the signal. Also, the
larger signal amplitude helps the sense plate amplifier recover a larger signal.
10
The In-Circuit tester supplies an 8 kHz sinusoidal wave. A Boundary-Scan driver would supply
something more like a square wave. Remember that most of its energy is in the fundamental fre-
quency at 8 kHz. Filters in the sense plate amplifier remove higher harmonics.
11
It is often true that several devices may need to be performing EXTEST, making the total bound-
ary register length much longer.
348 10 IEEE 1149.8.1: Passive Components
The model needed for 1149.8.1-based testing is shown in Fig. 10.4. There a group
of Boundary-Scan drivers are used to supply test signals to a vacant connector, as
before. One driver is supplying a square wave at the required frequency to a
pin being tested for continuity. During that time the other drivers hold a static
“background state” of 0/1 data.
To tester
Signal
amplifier
Sense Plate
Vacant Connector
Board Interconnect
TDI 0 1 1 0 0 0 0 TDO
TCK Toggling
driver
TMS
Statically held driver states
To tester
Signal
amplifier
Sense Plate
Vacant Connector
Board Interconnect
TDI 0 1 1 0 TDO
Toggling
TCK
driver
TMS To Boundary-Scan
receivers on board
Statically held driver states
Boundary-Scan IC(s) elsewhere on the board
with connectivity to the vacant connector
IOPrblm
However, this model is potentially deficient in that it assumes every pin on the
vacant connector is connected to a Boundary-Scan driver in some IC on the board.
This is often not true. For example, if the vacant connector is intended (for example)
to have an extension board plugged into it, then some pins will be inputs to the plug-
in board (with Boundary-Scan drivers on the board under test) while other pins will
be outputs from the plug-in board, which might only have Boundary-Scan receivers
on the board under test.
This is depicted in Fig. 10.5. This tells us we need some driver resources in those
pins that are not part of the normal functional requirement of the device. This may
seem oppressive—adding a Boundary-Scan driver to a pin that normally only
receives data. However, what we need is a very basic drive capability, not an exotic
or powerful drive functionality. It will be used to support opens testing; therefore it
only needs to produce a relatively low frequency square wave with a relatively
small voltage swing. It will also participate in standard shorts testing as well, and
again, no exotic requirements are needed for this either.
This realization drives the 1149.8.1 standard to divide system pins into those that
need special new resources, while others (called “normal”) are basically left alone
to implement the requirements of 1149.1 Boundary-Scan, alone. These special pins
are called “Selective Toggle”, or “ST” system pins. This closely mimics how the
350 10 IEEE 1149.8.1: Passive Components
1149.6 standard works; it divides the system pins into “DC” and “AC” categories
(see Sect. 8.2.2) where the DC pins operate exactly as specified by 1149.1, while the
AC pins take on additional new behavior.
It is envisioned that an IC could implement 1149.1, plus 1149.6 and 1149.8.1 as
well. These latter two are set up to be compatible with each other. Some pins could
then end up being both “AC” and “ST” capable.
IEEE Standard 1149.8.1 has been carefully designed to be fully compatible with the
existing 1149.1 standard. The 1149.1 standard principally addresses digital I/O pins
of devices. The 1149.8.1 standard does this too, but introduces a categorization of
I/O pins into two types, normal system pins and selective toggle system pins.
In the 1149.8.1 standard, a normal system pin is a system pin, as defined by the
1149.1 standard, which has the testability resources given to it as defined by 1149.1.
Normal system pins do not have any new capabilities provided by the 1149.8.1
standard. As will be seen later (see Sect. 10.3.3) the new instructions provided by
1149.8.1 will have a default behavior designated by 1149.1 as to how they affect
normal system pins.
In the 1149.8.1 standard, a Selective Toggle system pin (called an ST pin) is a system
pin, as defined by the 1149.1 standard, which has the testability resources given to it
as defined by 1149.1 as well as a new “Selective Toggle” capability which may
expand the resources provided by 1149.1. The principle example of this expansion
is to give a pin that 1149.1 would equip with only monitoring (receiving) resources,
the ability to drive as well. Think of it as promoting an input pin to a bidirectional
pin, but only during test. However, the drive capability need only be rudimentary,
producing 0/1 levels on the pin when activated, and with only the minimum speed
needed to keep up with the TCK rate of the device, which is typically less than
20 MHz. That is, we do not need a powerful, high-speed driver, which would be
expensive to add. The 1149.8.1 standard [IEEE12] provides this definition of ST pin:
ST-Pins: Device system pins defined as those in need of the selective toggle capability
defined by this standard and requiring an output drive capability.
10.3 IEEE 1149.8.1 Vocabulary and Basics 351
So, what is the “selective toggle” capability, and why do some pins get this label?
Selective toggle means the ability to select one pin and have its driver toggle12 at a
rate that is equal to a frequency of TCK reduced by an integer divisor.13 Non-selected
pins will maintain a static 0/1 state while the selected pin is toggling. The toggling
occurs on falling edges of TCK while the TAP is in the Run-Test/Idle state and stops
when that state is exited. Further, toggling starts from a preloaded 0/1 state and
when it completes, that same state is returned to the pin, which means one last tran-
sition may be needed as Run-Test/Idle is exited to restore that state. (This would
occur on the falling edge of TCK in the Select-DR-Scan TAP controller state.)
The assignment of the ST label to pins is intended to be a negotiation between
the IC design team, and users of their device who expect it to be used in capacitive
sensing scenarios. A classic example is a large processor chip with a memory con-
troller port. The signals that will travel to the memory subsystem may be routed
through a set of connectors to plug-in memory cards. These cards are unlikely to be
populated while the main board is being tested, leaving us with a set of passive,
vacant connectors that we would like to test for shorts and opens. We then ask the
processor design team to incorporate both 1149.1 in the processor, and, to designate
the memory port pins (address, data and control) as ST pins, which are given
1149.8.1 resources. The other pins of the processor do not need this capability, so
the design team can save time and resources by calling them “normal”.
In this particular design example, the address bus and control wires are driven,
and the data lines are bidirectional, so no additional drive capability needs to be
added—it is already there. However, the address lines coming out of the processor
should be implemented with self-monitoring capability (for example, with BC_8
cells shown in Sect. 2.6.4 on page 104) so that shorts between address lines can be
detected. The same is true for the control lines and it is inherent in the data bus since
that is bidirectional. Opens between the processor and any of the vacant connectors
are tested by the capacitive sensing technique. (There would be one sense plate over
each connector.)
Since the IEEE 1149.8.1 standard is a subsidiary standard to IEEE Std 1149.1, all
instructions mandated by 1149.1 are also mandated in 1149.8.1, and all optional
instructions from 1149.1 are also allowed, at the designer’s discretion, in 1149.8.1
12
Note, the word “toggle” here means to change state once, from 0 to 1, or 1 to 0. Two toggles
equal one cycle when we refer to “toggle frequency”.
13
This divisor is stored in a “Toggle Control Register” and may have a value of 0. The toggle fre-
quency for divisor “D” is F = FTCK/(2(D + 1)), so TCK/2 is the maximum toggle frequency. Larger
values of D produce lower toggle rates, and a minimum rate of 2 kHz is required at the maximum
rated TCK frequency of the device.
352 10 IEEE 1149.8.1: Passive Components
state is entered. What happens next is a function of the content of the Capture
flip-flop behind a given ST-pin. If the flip-flop contains a ‘1’, then that pin is
“selected” for toggling. If the Capture flip-flop contains a ‘0’, then that pin is not
selected and will maintain the state provided in the Update flip-flop, just as would
happen with the EXTEST instruction. The key is that the Boundary register Update
flip-flops are set up with the PRELOAD instruction before loading SELECTIVE_
TOGGLE. Then, when SELECTIVE_TOGGLE is loaded, we can shift a set of bits
into the Boundary register that, for ST-pins, act as “selection” bits. For these pins
only, the transfer of data from Capture to Update flip-flops (in the Update-DR TAP
state) is inhibited, so the state of pins set up by PRELOAD is preserved. Now, after
entering the Run-Test/Idle TAP state, a selected ST-pin will then toggle its state on
the first falling edge of TCK, and as we stay in Run-Test/Idle, subsequent falling
edges of TCK will cause new pin toggles as controlled by the content of the Toggle_
Control register. Basically, you should think of the integer stored in the Toggle_
Control register as count of how many falling edges of TCK to ignore before a new
toggle occurs on selected pins, while still in the Run-Test/Idle TAP state.
To review, the SELECTIVE_TOGGLE instruction behaves just like EXTEST
for normal pins. Thus, the “basic test algorithm” of Sect. 3.1.2 (on page 120) applies.
Typically, when doing a test based on SELECTIVE_TOGGLE, we want the normal
pins to stay quiescent, so every shift of data into the Boundary register, for normal
pins, would contain the same data as was originally set up by PRELOAD. However,
for the ST-pins, we would want just one14 of these to toggle while all the others held
some static state pattern of our choosing, as determined by the PRELOAD data. To
select the pin to toggle, we load only that pin’s Boundary cell with ‘1’ while all the
other ST-pin Boundary register cell get a ‘0’. Think of the ST-pin cells as pointers
to the pin we want to toggle. On successive data scans, we can change these pointers
to select different pins for toggling. Toggling always starts from the preloaded state
and only occurs while in Run-Test/Idle.15 Thus, we can predict the exact time a
given edge will occur on a pin, its frequency and its phase. This allows us to set
up our capacitive sense circuitry to look for exactly this signal and reject others
(like noise) that are sensed.
Some capacitive sensing algorithms might operate by examining just two driven
edges, effectively, the pulse response. The time between these two toggles is an
important parameter; so this means the pulse width rather than toggle frequency is
what we need to control. This means staying in the Run-Test/Idle TAP state long
enough to issue two toggles separated by this pulse width, and then exiting before a
third toggle occurs.
14
More than one pin could be selected when there are multiple sense plates in different places on a
board and the tester is capable of using them in parallel to speed up testing. Typically, only one
signal under a given sense plate is stimulated, but, there is a special case due to differential signals
covered later in Sect. 10.7.
15
As noted before, one last edge may occur after leaving Run-Test/Idle, if the number of edges cre-
ated is an odd number. This could likely be an “early” edge, so it is recommended to create an even
number, or, assure that the detection process will not be affected by it.
354 10 IEEE 1149.8.1: Passive Components
The content of the Toggle_Control register is used to reduce the frequency of pin
toggling to a value needed by the detection parameters of the capacitive sensing sys-
tem. The highest toggle frequency is TCK/2, which corresponds to the content of the
Toggle_Control register being all-zero. The 1149.8.1 standard mandates that increas-
ing integer values in Toggle_Control will decrease the toggle frequency, down to as
low as 2 kHz for the maximum frequency of TCK (FMax, in Hertz) supported by the
device. This implies the Toggle_Control register has a length N defined by:
For example, if the device has an FMax of 20 MHz, then the length of the register
must be at least 15 so as to divide the toggle frequency to the lower limit. If you have
a TCK frequency of FTCK and you want to achieve a pin toggle rate F, then the value
D loaded into the Toggle_Control register is given by16:
FTCK
D= -1
2* F
For example, if you have FTCK of 5 MHz and want to have pins toggle at F = 8 kHz,
then the value of D is 312. It is instructive to note that by the toggle frequency equa-
tion F = FTCK/(2(D + 1)), a value of D = 312 yields F of 7987 (13 Hz low), while D =
311 yields F of 8013 (13 Hz high). Thus the least significant bit has a value of 26 Hz.
The smaller the value of D, the larger the value of the least significant bit is, so this
should be considered if the frequency filters on the capacitive sensing subsystem are
very precise. A more accurate setting can also be achieved by adjusting the FTCK value.
The Toggle_Control register will capture, on the first time through the
Capture-DR TAP controller state after TOGGLE_SETUP becomes active, a value
of all-zero. Subsequently, a different value can be shifted in using the Shift-DR
state. If, while TOGGLE_SETUP is active, the Capture-DR state is re-entered, its
content may be a value defined by the device designer that could be useful for IC
testing. (This would typically never be used in board testing environments.)
As stated earlier, differential pin pairs, due to their complementary waveforms, will
not be sensed17 by a capacitive sense plate held over them. This is recognized in the
1149.8.1 standard and it provides for a concept of “unbalancing” a differential driver.
To provide a framework for discussion, see a “typical, simplified” model for a
differential driver shown in Fig. 10.6.
There could be some slight differences in coupling between the pin pair and the sense plate that
17
might lead to a small signal pickup, but usually, signal cancellation is nearly complete.
10.7 Differential Signal Unbalancing 355
Differential Neg
Driver 2.25v
1
Data
0
Time
Pos
R I1 I0
Neg
Neg
Data 2.775v
Pos 0.6v
Voltage (IS = 6ma) 2.175v
Current
IS 1
Source
Data
0
Time
DiffDrive
This picture shows a lot of information. Basically, two pairs of transistors steer
current IS in/out of the positive (Pos) and negative (Neg) legs, based on the value of
the Data pin. The two waveform charts show the voltages that appear on the legs in
time as Data changes. The top chart shows the voltages for a current source IS of
12 mA, while the bottom chart shows the voltages for IS equal to 6 mA. In both
cases, the change in the Pos and Neg legs are complementary, one rises while the
other falls by the same voltage delta. This is “balanced” behavior, and a capacitive
sense plate over the Pos and Neg pins would not see a net voltage change, that is, no
signal would be detected.
So, what does an unbalanced differential driver look like? Please examine
Fig. 10.7 for one way this can be achieved.
This driver is nearly identical with that shown in Fig. 10.6, except it has a new
input, Current Select, which can select between two values of IS, 6 or 12 mA. The
two charts in Fig. 10.7 are also a bit different. In these, we show a fixed value on the
Data line, but vary the Current Select. Notice that now, both legs move in the same
direction, although by different magnitudes depending on the setting on Data.
In either case, the movement is significant (525 or 1125 mv). A capacitive sense
plate over these two signals will see a robust signal, as there is no cancellation.
The 1149.8.1 standard gives a simple circuit for a current source, and the selectable
current feature is quite simple to add. Details of such a design are best left to IC
designers; the point is it is not difficult or expensive.
Unbalanced behavior is only enabled during testing with the SELECTIVE_
TOGGLE instruction. At all other times the differential driver remains in its bal-
anced (normal) mode of operation. The way unbalanced differential drivers are used
during test is discussed in Sect. 10.9.
356 10 IEEE 1149.8.1: Passive Components
Voltage (Data = 0)
2.175v
Pos 1.125v
1.05v
Current Select
Time
Pos
Neg
2.775v Pos
Data 2.250v 0.525v
Voltage (Data = 1) 2.175v
Neg 1.125v
IS Current 1.05v
Source
Current IS=6, 12ma Current Select
Select 0,1
Time
Unbal
This section reviews the design of Boundary-Scan I/O cell designs, as modification
of conventional cell designs such as found in Sects. 2.6.3 and 2.6.4. These modifica-
tions add the toggle capabilities for ST-Pins, and also assure that ST-Pins can par-
ticipate in interconnection shorts testing, that is, outputs are self-monitoring. The
self-monitoring property is not mandated by the 1149.8.1 standard, but is (here)
considered too valuable not to implement. While it is only recommended, not man-
dated by the standard, it was felt by the standard’s authors to be a feature that could
be dispensed with if the IC designers might otherwise omit toggling behavior on a
given pin for technical or cost reasons.
Single-ended output pins are considered first. The Boundary-Scan register cell
design is based on the BC_10 design of 1149.1 (see Sect. 2.6.4 on page 104), which
supports the self-monitoring concept. Such a cell, when executing EXTEST-based
interconnection tests, is capable of detecting shorts from its pin other pins, or power/
ground rails. This is important since the reason this pin has been designated as an
ST-Pin is there may not be any other Boundary-Scan pin on its board node that
could monitor the node’s state. For example, if the pin was connected only to a
10.8 Selective Toggle Pin I/O Cell Design 357
vacant connector on the board, that pathway would not be testable for shorts
without the self-monitoring property.
The cell design, which is called ST_10 here, is derived from the BC_10 provided
by the 1149.1 standard. Note, the 1149.8.1 standard did not document an ST_10 cell
in its BSDL specification, because, from the standpoint of BSDL, it was identical to
the BC_10 cell, in terms of its capture behavior.18 As will become clear next, there
are some significant circuitry additions that do make the ST_10 unique, and an IC
vendor (or design tool vendor) can choose to offer their own cell design with a
unique name, if they so choose.
A potential design of ST_10 is shown in Fig. 10.8. Note that there are some new
control signals needed to drive its toggle behavior, and these are broadcast from an
area near the TAP, to all the ST-Pins. These signals, called “ToggleData” and
“T-UpdateDR” are also shown in the diagram and are implemented once per IC, not
once per pin.
ST_10 Self-Monitoring
Output Data Cell
Shift Out
M2 Output
From G
Driver
System 0
Circuitry
1
Update Capture M1
M3 G
G Reg Reg 0
0 Q D Q D Input
1 Buffer
CK CK
1 C
Shift In
M od e ClockDR ShiftDR
Located near pins
ToggleData Shared resources located
T-UpdateDR near TAP
B D Q A
RTI-State
Instruction Mode
Toggle-Clk CK TogHold
BYPASS 0
UpdateDR
Test-Logic/Reset SAMPLE, PRELOAD 0
EXTEST 1
RTI-State is ‘1’ when TAP is in the Run-Test/Idle state. SELECTIVE_TOGGLE 1
TogHold is ‘1’ when SELECTIVE_TOGGLE is effective.
Toggle-Clk signal comes from TCK divider subsystem. ST_10Cell
Fig. 10.8 An “ST_10” design for a self-monitoring output pin adapted from BC_10
18
This decision is discussed in Sect. 8.3 of the 1149.8.1-2012 document.
358 10 IEEE 1149.8.1: Passive Components
The actual cell design (shown in the dotted-line box) is very similar to BC_10, but
contains an additional multiplexor M3 and a new exclusive-OR gate C. The M3
multiplexor chooses one of two signals to pass on towards the pin driver. The choice
between these two is determined by the content of the Capture flip-flop. If that con-
tent is ‘0’, then the content of the Update flip-flop is passed toward the driver, which
is what BC_10 does. But if the Capture value is ‘1’, then the output of gate C is
passed on. Gate C exclusive-ORs the Update register content with the ToggleData
signal, which is a divided version of TCK. When ToggleData is ‘0’, then the Update
data is passed on. When ToggleData is ‘1’, then an inverted version of the Update
content is passed to the pin driver. The ToggleData signal is derived from the Toggle_
Control register (see Sect. 10.6) which determines the toggle frequency ultimately
seen at the pin’s driver. The ToggleData flip-flop in the figure only changes state with
the rising edge of Toggle-Clk, and when the TAP is in the Run-Test/Idle state. This
is determined by AND gate B. Note that ToggleData will be ‘0’ when the TAP leaves
the Run-Test/Idle state, by virtue of gate B and the generation of Toggle-Clk. This
ensures that exclusive-OR gate C does not see a ‘1’ when we are (for example) shift-
ing new data through the Capture flip-flops during a PRELOAD sequence
The T-UpdateDR signal is simply the normal UpdateDR signal gated (by AND
gate A) to suppress updating the Update flip-flop when the SELECTIVE_TOGGLE
instruction is the effective instruction. Thus, when a ST-pin is being toggled, the
Update flip-flop is never updated and it continues to hold the preloaded data through-
out toggle testing. This way, an ST-pin has a start state determined by the Update
flip-flop, and this start state is returned after a toggle sequence is finished.
Single-ended input pins that are to be converted from normal to ST status, must are
given significant new capabilities; namely the ability to drive out from the pin such that
holding a state and toggling are supported. This also implies the ability to enable/disable
the drive capability under the control of an output drive control cell. This control cell
may, at the discretion of the device designer, may be shared, but sharing should be mini-
mized whenever possible, to give test generation fewer constraints to deal with.
Adding a driver that supports both EXTEST and SELECTIVE_TOGGLE means
adding much of the circuitry seen in Fig. 10.8. It is instructive to look at two single-
ended input pin situations. First, there is a single-ended input with a bare-bones
minimum observe-only boundary register cell observing it. The second is a full
control-and-observe boundary register cell. These are shown in parts a and c in
Fig. 10.9. Then in parts b and d respectively of the same figure, design modifications
are shown to make these normal inputs behave as ST-pins.
The observe-only case in part a is modified (see part b) to add a driver that
can be disabled by an added BC_2 control cell (marked with a “*” character).
The observe-only cell has an update stage added (marked with the “†” character) to
give it control-and-observe capability over the pin. This cell would also contain the
capabilities shown in Fig. 10.8 so that is can support SELECTIVE_TOGGLE. The
10.8 Selective Toggle Pin I/O Cell Design 359
ST_inputs
*
C U
System System
Logic Logic
C † BC_2 Cell
BC_4 Cell U C
A) Normal input pin with simple B) ST-pin input pin with added driver,
observe-only cell. update stage* and output enable cell † .
C U C U
System System
Logic Logic
*
U C
†
U C
BC_2 Cell
C) Normal input pin with control- D) ST-pin input pin with added driver,
and-observe cell. drive cell* and output enable cell †.
Fig. 10.9 Normal input pins and options for converting to ST-pins
BC_2 cell shows its input capturing a ‘0’ by being connected to ground. This is an
option that could be changed (to ‘1’ or “UPD”) at the whim of the device designer.
This cell does not actually monitor any system signal.
The full control-and-observe input pin shown in part c can be modified to the
design shown in part d. Here, a driver and a new data cell (marked with “*”) is
added. A new control cell (marked with “†”) is added to control the newly added
driver. This is a classic three-cell bidirectional first seen in Fig. 1.8 on page 24,
except that the data cell (“*”) also contains capabilities to support SELECTIVE_
TOGGLE, again as seen in Fig. 10.8.
It is certainly true that converting a normal single-ended input pin adds some
circuitry and complexity to the silicon. It is fortunate that we are not nearly as con-
cerned with transistor counts today as we were in (say) 1990 when Boundary-Scan
first came about, thanks to Moore’s Law.
360 10 IEEE 1149.8.1: Passive Components
Since single-ended bidirectional ST-pins already have the ability to observe and
control their connected net on the board, they are only required to be able to drive
their net the same as for single-ended outputs (see Sect. 10.8.1). This means they
already have the ability to participate in standard shorts testing algorithms, which
single-ended outputs may not have if they are not given self-monitor capability. The
cell design in Fig. 10.8 will suffice.
Differential output ST-pins differ in a key respect from single-ended output ST-pins:
they have two operational modes. These are balanced and unbalanced operation. As
seen in Sect. 10.7, this can be summarized by thinking of a differential driver as hav-
ing a data input, and a new “current select” input. To view this, consider the symbols
shown in Fig. 10.10. The differential driver is shown (at the top of the figure) with a
new “current select” input. It may or may not have a tri-state enable input that would
be fed from a control cell in the boundary register. The data line and current select
signals would also come from a boundary register cell such as shown at the bottom of
the figure. The two tables in Fig. 10.10 show how the two operational modes, bal-
anced and unbalanced, are achieved. For balanced mode, the current select line
remains fixed at 0 while the data is active, causing classic differential (complemen-
tary) outputs on the positive and negative legs. For unbalanced mode, the data line is
fixed at 0 while the current select line is active, causing the sum of the voltages on the
two legs19 to move in the same direction as the current select line when current select
changes. This provides a signal that a capacitive sense plate can observe.
Figure 10.11 depicts a device with three differential output pairs that are always
active, and two other differential output pairs that can be disabled. All five of these
differential drivers can be unbalanced, and the “Unbalance” cell in the figure is used
to govern this; when loaded with a “0”, the drivers behave in their normal, balanced
fashion. When the unbalance cell is loaded with a “1”, then the drivers, in response
to SELECTIVE_TOGGLE, will drive in an unbalanced mode. This means that both
outputs of a given unbalanced driver will have the sum of their output voltages move
higher in response to the data cell having a “1” loaded, and the sum of their voltages
will move lower in response to the data cell having a “0” loaded.
19
In the example differential driver shown in Fig. 10.7, both legs move in the same direction, but
the standard allows for them to move in opposite directions as long as the sum of the two voltages
behave as stated.
10.8 Selective Toggle Pin I/O Cell Design 361
Enable (optional)
Pos Leg
Data
Neg Leg
Current Select
Data fixed at 0
Unbalanced Differential Mode
Sum of positive and
0 negative leg
voltages lower
Current Select
Sum of positive and
1 negative leg
voltages higher
SO
PI C U PO (to Data)
Current Select
Cell symbol for
Differential ST-pin
SI Unbalance
Diff Symb
Fig. 10.10 Symbols used to depict differential drivers and their related boundary register cells
A familiar control cell (labeled “Enable”) is used by two of the drivers to disable
their outputs; if these drivers are disabled then being balanced or unbalanced will
not matter to what is detected—that is, no signal change would be detected by a
capacitive sense plate.
As is the case with control cells, the unbalance signal can originate in one bound-
ary register cell, or several may be used. This allows an IC designer some flexibility
to locate unbalance cells near to the cells they will be connected to, to alleviate
potential layout difficulties.
A possible design for a differential output ST-pin pair is shown in Fig. 10.12.
This design implements the ability to observe the differential pair (see the added
“special receiver”) which allows this pin pair to participate in shorts testing.
This capability is not mandated by the standard however, so IC designers may opt
362 10 IEEE 1149.8.1: Passive Components
Diff Use
TDO
C U
C U
C U
System
Logic
C U Unbalance Unbalance Cell
(‘Internal’ in BSDL)
C U
C U Control Cell
(optional)
C U Enable
TDI
to omit it. As before when receive capability is added for shorts testing, the added
resource does not need to be an aggressive functional design, but rather just enough
to observe (at low speeds) if the pins are behaving independently. This can reduce
its cost and design requirements significantly.
Note the controlling circuitry near the bottom of Fig. 10.12 is identical to that
seen for single-ended outputs seen in Fig. 10.8. Again, this circuitry can be shared
among many ST-pins.
The standard gives design details for a slightly simpler cell that can control a
differential pair of outputs with no receiver capability and as such, cannot partici-
pate in shorts testing. This eliminates a significant amount of test coverage, which
should be considered in the negotiations for which pins are designated as ST-pins
and how much capability they are given.
10.8 Selective Toggle Pin I/O Cell Design 363
Current Select
E
Shift Out Enable
M2 Output
From G
Driver
System 0
Circuitry
D 1
Update Capture M1
M3 G
G Reg Reg 0
0 Q D Q D Special
1 Receiver
CK CK
1 C
Shift In
Mode ClockDR ShiftDR
Located near pins
ToggleData Shared resources located
T-UpdateDR near TAP
B D Q A
RTI-State
Instruction Mode
Toggle-Clk CK TogHold
BYPASS 0
UpdateDR
Test-Logic/Reset SAMPLE, PRELOAD 0
EXTEST 1
RTI-State is ‘1’ when TAP is in the Run-Test/Idle state. SELECTIVE_TOGGLE 1
TogHold is ‘1’ when SELECTIVE_TOGGLE is effective.
Toggle-Clk signal comes from TCK divider subsystem. DiffDCell
Fig. 10.12 A fully capable boundary cell design for differential outputs
Just as was the case with single-ended inputs (seen in Sect. 10.8.2), converting a
differential input pin pair requires the addition of a differential driver and some new
cells to manage it. As before, this differential driver need not have exotic (expen-
sive) capability, it just needs to be able to (slowly) drive states onto the pin pair.
Note, it will need the balanced and unbalanced capability, just as was needed for
differential drivers seen in Sect. 10.8.4. This is summarized in Fig. 10.13, for two
cases. In part a is the case where the differential input pair was monitored by a
simple observe only cell. In part c is the case where the input pair connected to a
control-and-observe cell.
364 10 IEEE 1149.8.1: Passive Components
ST_DiffIns
*
C U
System System
Logic Logic
C †
BC_4 Cell U C
BC_2 Cell
from Unbalance Cell
A) Normal input pin pair with simple B) ST-pin input pin pair with added driver,
observe-only cell. update stage* and output enable cell † .
C U C U
System System
Logic Logic
*
U C
†
U C
BC_2 Cell
from Unbalance Cell
C) Normal input pin pair with D) ST-pin input pin pair with added driver,
control-and-observe cell. drive cell* and output enable cell †.
Parts b and d of this figure show the added differential driver (with balance and
unbalance control), an added driver enable cell marked with a “†” character, and a
driver cell (with a balance and unbalance output) marked with a “*” character. In
normal mode of operation, the added differential driver is always disabled, since it
is not part of the original functionality of the device.
In the case where a differential pin pair is bidirectional, then the receiver and driver,
plus a driver enable structure are already in place. The circuitry must be modified to
provide for balancing and unbalancing, so the result will look like that seen in
Fig. 10.13d.
10.9 Testing with 1149.8.1 Resources 365
Section 3.2 (beginning on page 128) discussed several types of testing based on the
use of Boundary-Scan chains. Each was focused on some class of defects20 such as
interconnection shorts, interconnection opens, interactions between Boundary-
Scan nets and non-scan nets, etc. Testing with 1149.8.1 resources should be
focused on finding opens and shorts among nets connected to passive (or non-
scannable) devices. The classic example is for finding such defects on passive,
vacant connectors21 that are wired to Boundary-Scan devices. These devices are
then inspected for their pins that are providing this connectivity and these are then
candidates for becoming ST-pins. As stated before, IC designers often know well
in advance of completing their IC design how an IC may be used, although board
designers are often involved in such discussions. They should negotiate the list of
ST-pins at this stage.
The board-level coverage improvement offered by capacitive sensing, as sup-
ported by the resources provided by 1149.8.1 can be quite valuable. Thus, a new
phase of testing using capacitive sensing can be added to the overall suite of
Boundary-Scan chain tests. It is probable that such testing will itself be broken
into smaller units, with a given unit focused on some target device, such as a
vacant connector. This reflects how capacitive sensing may have to use multiple
sense plates, for example, one per connector in a group of connectors. To continue
this example, imagine four vacant connectors that will ultimately be populated
with memory daughter boards. The associated Boundary-Scan devices will have
nets that fan to each connector, so separate capacitive sense plates are needed to
observe just one connector at a time, even though all four are stimulated in paral-
lel. This allows us to locate the precise location of an open pin among the four
connectors. If there is an instance of several target devices located in close prox-
imity but with distinct nets connecting them to 1149.8.1 resources, then a single
sense plate could be located over these devices and they could be tested together.
In such case, knowing which 1149.8.1 device is toggling which pin gives us
precise diagnostic information.
20
There is often overlapping coverage among these types of test. It is usually true that some defects
that are not the principal focus of a test are also detected, but perhaps with less diagnostic resolu-
tion. Thus, running several tests may detect the same defect multiple times, with some giving
better diagnostic results than others.
21
Another common situation is for such Boundary-Scan devices to be connected to non-scannable
devices—for example, bulk memory devices such as DRAM. In many cases, these non-scan
devices can be tested with capacitive sensing and are thus candidates for testing using 1149.8.1 in
the companion Boundary-Scan devices.
366 10 IEEE 1149.8.1: Passive Components
When a target device has single-ended connections to some device(s) equipped with
1149.8.1, then capacitive sense testing proceeds as follows. First, a background pat-
tern of data for the Boundary-Scan device chain is calculated. This pattern takes into
account that a board may need to be properly initialized and certain nodes fixed at
particular static “0” or “1” states in order to keep the board quiescent and otherwise
“happy” with the testing about to commence. In many cases, nets will not need to
be held at all, but will also not be directly involved in the test either (for example,
normal pins) and these can be assigned arbitrary hold states. It is advisable that only
the ST-pins required for a given test be identified, and all the rest kept quiescent for
the duration of a given test, to reduce overall noise.
Once the background pattern is calculated and the required ST-pins are identi-
fied, then testing commences by loading the background pattern into the chain using
PRELOAD in all the needed devices. Once in place, then each device in the chain is
loaded with EXTEST or SELECTIVE_TOGGLE as needed. Those with EXTEST
will continue to hold the background pattern, as this will be continually re-loaded
for each update cycle. Those with SELECTIVE_TOGGLE will also load the back-
ground pattern for its normal pins. But for the ST-pins used in the test, they will
(typically) be loaded with all zeroes, except for one ST-pin that is loaded with a “1”.
This will be the pin that is selected to toggle.
The selected pin will toggle at a frequency that is determined by the TCK fre-
quency, as divided by the number stored in the Toggle_Control register (see
Sect. 10.6). This is set up during the initialization stage before testing begins. The
toggle frequency and duration of toggling is determined by the requirements of the
capacitive sensing system. It is possible that the sensing system needs a string of
many toggles, or it may only require two toggles (a pulse) to occur. Since toggling
starts from the initial state set up during PRELOAD, some sensors may also have a
requirement on this state if they take into account phase information during signal
detection. The test tool that runs all of this will be in charge of such details.
The test then iterates down the list of ST-pins involved for the device under test.
Each is selected for toggling, and the toggling proceeds until the capacitive sense
system has collected the data needed to determine if an open is present. Note, if a
short of a given net exists to some other net, that can also show up as a bad measure-
ment. Shorts can be tested using the standard interconnect test which would be run
earlier in the sequence of overall testing. This is why it is desirable to give ST-pins
the ability to observe their action—to discover shorts in this more direct way.
The test completes by sending the chain into the Test-Logic-Reset state, which
removes the EXTEST and SELECTIVE_TOGGLE instructions. This does recon-
nect the I/O pins of all chained devices back to their internal system logic, and the
effects of this must be accounted for.
Another item to note is that capacitive sense plate measurements are analog and
may require several iterations (per pin) to gain a reliable reading. Indeed, part of
test preparation will be to run each pin and accumulate measurement statistics.
10.10 BSDL Extensions for 1149.8.1 367
The average measurement value is recorded, and then standard deviation analysis is
performed to see if the measurements are stable enough to set appropriate pass/fail
limits on the measurement value. This statistical process during test development is
best accomplished using a known-good board, or set of boards, and the test tool will
be in charge of this process as well.
Testing of differential pin pairs is more complex, because we have pairs of pins
controlled by a single cell the boundary register. In the balanced mode (see
Sect. 10.7) of operation, a pin pair will toggle with nearly perfectly complementary
waveforms, and thus be nearly invisible to the capacitive sense plate. Thus, for a
defect-free pin pair, we see no signal and cannot set up pass/fail limits. Worse, if
we simply guess at some limits and then run a test, then certain defects will also
produce no signal, and we cannot detect them. For example, if both pin have open
connections, or, are shorted together, then we may not see any signal.
This problem is attacked by running the test with the drivers in balanced mode
first. If one pin of a pin pair is open, then the sense plate will see an unexpected
signal, of either an in-phase or out-of-phase polarity depending on which of the
two legs (positive or negative) is open. This is good, but, how do we know if both
pins are open?
This is solved by running the test a second time, with the drivers set into unbal-
anced mode of operation. In this mode, the sum of voltages on the selected pin pair
will move up/down in concert with the pin pair toggling. Thus, a defect-free pair will
be seen by the sense plate and we can use this to characterize pass/fail limits. If there
is an open on both pins, then the sense plate will see an attenuated signal. If there is
short across the two pins, then this will not be sensed—which again is why we desire
ST-pins to have observation capability.
The test is essentially run two times, once iterating through the list of differential
ST-pins with the device(s) in balanced mode, and then again, with the unbalance
mode. Post-test results are then analyzed to determine what defects might be present.
An 1149.8.1 device is (again) quite similar to an ordinary 1149.1 device because the
Working took pains to carefully build the new standard atop the foundation stan-
dard. This is evident in a BSDL description for an 1149.8.1 device. Essentially,
some new instructions (TOGGLE_SETUP and SELECTIVE_TOGGLE) have to be
documented, the Toggle Control register, the ST-pins and some new Boundary
Register cells have to be identified. It is intended that an 1149.8.1 device could also
support (say) 1149.6, so a BSDL file for describing such a device would have both
368 10 IEEE 1149.8.1: Passive Components
the 1149.6 and 1149.8.1 extensions referenced. Indeed, the 1149.8.1 standard (in
Annex B) shows a Boundary register cell design that will support both standards.
The additional information needed to describe an 1149.8.1 device is contained in
a BSDL extension (see Sect. 2.3.16). BSDL extensions are used to describe new
attributes beyond the 1149.1 BSDL definition. The 1149.8.1 standard codifies an
official extension for its descriptive purposes within a VHDL package (see Sect.
2.6) called STD_1149_8_1_. This package is reproduced in Sect. 10.10.2. It is
expected to reside in a “read-only” area of a test system file space, most likely co-
resident with the 1149.1 package STD_1149_1_2001. As always, the intent of
BSDL extensions is to encode information in such a way that application software
that doesn’t know about the use of the extension is still able to read the BSDL file
and perform activities with the 1149.1 implementation.
The 1149.8.1 standard pre-defines just two Boundary Register cells. These are used
as “Unbalance” and are shown in Fig. 10.14.
Unbalance are coded in the Boundary Register description (see Sect. 2.3.13) as
“Internal” cells. These two cells, ST_UnbalX and ST_UnbalU are similar, differing
in what they capture on the rising edge of TCK in the state. The ST_UnbalX cell
captures an unknown value (actually, the state of its “Shift In” line which is not
Shift Out
Shift In Unbalance
C U
CK CK
ST_UnbalX
Clock-DR Update-DR cell
Shift Out
0
Unbalance
1 C U
CK CK
Shift In ST_UnbalU
Clock-DR Update-DR cell
Shift-DR
ST_Unbal
known). The ST_UnbalU cell captures the state of its Update flip-flop. This can
improve the testability of that portion of logic for production test22 purposes.
Cells used for driving or receiving on pins are standard BC designs, in that their
capture behavior is the same as those used in standard 1149.1. Of course, their inter-
nal design details are different, in order to support the SELECTIVE_TOGGLE
instruction, as is seen in Sect. 10.8).
10.10.2 STD_1149_8_1_2012
…
use STD_1149_1_2001.all; -- Standard ‘use’ statement
use STD_1149_8_1_2012.all; -- BSDL Extension for Selective Toggle
…
The 1149.8.1 package defines the extension attributes, and also gives the cell
descriptions for ST Boundary Register cells (see Sect. 10.10.1).
attribute ST_Component_Conformance: BSDL_Extension;
attribute ST_Pin_Behavior: BSDL_Extension;
end STD_1149_8_1_2012;
22
If the IC is built with its own internal scan capability as allowed by 1149.1 (see Sect. 1.7) then
this additional circuitry may be unnecessary.
370 10 IEEE 1149.8.1: Passive Components
Selective_Toggle ST_Pin_Behavior
ST_Unbal ST_Swing
ST_UnbalX ST_1149_8_1_2012
ST_UnbalU Toggle_Control
ST_Component_Conformance Toggle_Setup
Thus when coding BSDL for a device with 1149.8.1, these words cannot be used
for port names and such.
The selective toggle extension syntax defines two attributes. They are ST_Component_
Conformance and ST_Pin_Behavior. The syntax for the first is simple:
There is only one value for the conformance identification, but new ones are
added when the standard is updated.
The second attribute, ST_Pin_Behavior, is more detailed; it allows the identifica-
tion of ST pins and their characteristics. The syntax is:
Here are some quick examples of some device pins that have been given 1149.8.1
capabilities. First, consider some simple single-ended pins with individual (i.e., bit)
port names SEA, SEB and SEC. They could be of types output, inout or buffer, and
have a small voltage swing variation. Next, consider an output bus (i.e., bit_vector)
with port name “Address”. These pins have a rather large voltage swing between 1.0
and 3.5 V as determined by the voltage applied to the device’s VDD pin. Then,
consider a set of differential ports labeled DiffA and DiffB. (These are the positive
legs only, as the negative legs are assumed to have the same characteristics.) These
also are driven with a larger possible voltage swing as it depends on the values of
VDD connected to the device. Finally, there are some differential bidirectionals
Bidi(1) and Bidi(2) which have a minimal swing. These could all be coded with the
same pin behavior statement like so:
The differential pins have unbalancing controlled by cells 11 and 7. These would
be internal cells in the Boundary register description and would have cell names of
ST_UnbalX or ST_UnbalU. Note that there is no limit on how many differential
pins could be unbalanced from a single cell. The “variable” keyword seen in places
where the voltage swing is high (in this case due to being a function of the VDD
voltage) is used to flag such pins so if a test engineer is having problems with getting
a test to work properly, he can be flagged about how some pins might have incom-
patible voltages which could be the cause of debugging issues.
The next section gives an abbreviated BSDL description of a simple device that
contains the above pins to point out where the changes/additions are found.
372 10 IEEE 1149.8.1: Passive Components
entity ST_DEV is
generic (PHYSICAL_PIN_MAP : string := “DIP40”);
-- Logical Port Description
port (TDI : in bit; TMS : in bit;
TCK : in bit; TDO : out bit;
A : in bit; -- Normal port
B : out bit; -- Normal port
. . .
Address : out bit_vector(0 to 5); --ST port
SEA : out bit; --ST port
SEB : out bit; --ST port
SEC : out bit; --ST port
DiffA : buffer bit; -- Differential ST port
DiffB : buffer bit; -- Differential ST port
Bidi : inout bit_vector(0 to 1); --Diff ST
. . .
GND : linkage bit_vector(1 TO 10);
VDD : linkage bit_vector(1 TO 7) );
-- Use Statements
use STD_1149_1_2001.all;
use STD_1149_8_1_.all;
. . .
“11 (ST_UnbalU, *, INTERNAL, 0),” &
“10 (BC_1, DiffA, OUTPUT2, 0),” &
“ 9 (BC_1, Address(0), OUTPUT2, 0),” &
“ 8 (BC_1, Address(1), OUTPUT2, 0),” &
“ 7 (ST_UnbalU, *, INTERNAL, 0),” &
“ 6 (BC_1, Address(2), OUTPUT2, 0),” &
“ 5 (BC_1, Address(3), OUTPUT2, 0),” &
“ 4 (BC_1, *, CONTROL, 1),” &
“ 3 (BC_1, Address(4), OUTPUT2, 0),” &
“ 2 (BC_1, Address(5), OUTPUT2, 0),” &
. . .
“ 0 (BC_1, Bidi(0), BIDIR, X, 4, 1, Z)” ;
end ST_DEV;
At the time of writing this edition, we do not have an official 1149.8.1 device in
hand. There are some experimental devices (see [Dubb08]) that have given us some
early experience. The DFT rules given below are partly derived from experience
and from expectation.
As stated several times in this chapter, the best time to add 1149.8.1 features into an
IC are during its design, when the user community building boards can participate
in the enumeration of ST-pins from the list of normal pins. The first, most obvious
candidates are IC pins that are expected to be routed on a board to passive devices
such as vacant connectors. The classic example is from a memory controller IC to a
set of connectors that ultimately will hold daughter boards contain memories. Since
10.11 Design for IEEE 1149.8.1 Testability 375
most manufacturing board test will be done before these daughter boards are popu-
lated, this is an ideal time to consider capacitive sensing, with the sense plates
mounted above the memory connectors in the manufacturing tester’s fixturing.
• DFT-47: Consider adding 1149.8.1 resources to IC pins that will ultimately
be connected to pins on passive devices such as connectors.
Other candidates for ST-pins are those on an IC that will be routed to other ICs
that do not contain any 1149.x testability. A classic example of these devices are
DRAM devices, which almost never contain additional testability features. Many
(though not all) DRAMs are amenable to capacitive sensing test approaches.
• DFT-48: Consider adding 1149.8.1 resources to IC pins that will be con-
nected to IC that do not implement testability features.
The 1149.8.1 standard recommends, but does not mandate that IC inputs equipped
with 1149.8.1 capability also have the ability to monitor pin states during
EXTEST. This means testing for shorts in compromised, and while a short may show
up during capacitive sensing, this is not certain, and some diagnostic resolution may
be lost, that is, an open may be signaled when in reality a short is the actual defect.
• DFT-49: Consider adding monitor capabilities to input ST-pins to support
accurate testing for shorts.
Resources added by 1149.8.1 can add a lot of test coverage in areas that might oth-
erwise be chronically undertested. For example, an array of six memory connectors,
each with over 100 single-ended and differential signals could be largely untested
without the facilities provided by 1149.8.1. Since many such connectors today are
mounted with ball-grid attachments, there is little hope of inspecting for opens,
except possibly with an X-ray laminographic test system. Such an addition to the
test requirements can be costly. The test engineer should be aware of such
opportunities.
• DFT-50: Survey boards for passive components and determine if there are
1149.8.1 resources that can be used to support capacitive sense testing.
Of course, being a proactive test engineer can help IC designers understand the
advantages of adding 1149.8.1 resources to the right pins of the right integrated
circuits.
• DFT-51: Help define IC requirements used by IC designers to get 1149.8.1
installed in the best places in upcoming IC designs.
Negotiation with the IC design team can convince them to take the additional
time and engineering if you can show how improved board coverage will ultimately
be important to all of the design teams.
376 10 IEEE 1149.8.1: Passive Components
To reiterate some history scattered about this book, the 1149.1 Standard came into
being as a digital standard. It essentially ignored analog signals on an IC. After
some time and a large amount of debate, thought and research, the 1149.4 Standard
proposed a method for treating analog signals. This method recognized the value of
1149.1-style interconnection tests and showed how the salient features of 1149.1
could in essence be emulated by 1149.4 such that wiring tests could be supported as
well as analog metrologies.
In the 1993 time frame, the 1149.4 Working Group was talking about how analog
metrology and 1149.1-style interconnect tests were essentially “orthogonal”, and
how an ABM could, in effect, provide independent hardware to support these two
goals. Again debate swirled for a time. Ultimately this realization was accepted
after it was shown, by actually analyzing test chip designs, that an orthogonal imple-
mentation was not much different in cost to a seemingly cheaper design that inte-
grated (i.e. encoded) control for the analog and interconnect test problems.
Around 1996, Lee Whetsel proposed that the 1149.1 Working Group consider
extracting the interconnect test capability for analog wiring supported by 1149.4
and merge it back into 1149.1.23 This would take the “analog blinders” off of 1149.1.
Then by coordinating 1149.4 with this change in direction, ultimately 1149.4 would
become a true “analog” standard rather than one that “fixed up” 1149.1. However,
this move never gained momentum.
While this was going on, the PLD industry was beginning its emergence as a
factor in the industry. A big change here was the desire to program devices after they
were mounted on boards. This implied some form of I/O standard. People noted that
with the demand for these devices to contain 1149.1, came a “free” I/O port that
could be used for programming. At first, they simply wanted to extract the TAP
concept from 1149.1 and leave out the rest, but their customers insisted they wanted
all of 1149.1. Testing blank devices was just too hard otherwise. The 1532 Working
Group that evolved eventually decided to adopt all of 1149.1, and build the
programming specification on top.
In the 2000 time frame, concern suddenly sprang up about AC-coupling net-
works between ICs, and this led to the rapid development of the 1149.6 standard.
These networks were assuredly analog and an obvious candidate for testing by
1149.4. However, they seemed to form a simple class of coupling that could be
(and indeed is) testable using a spruced-up version of EXTEST and a high-speed
digital paradigm. The problem of testing arbitrary analog networks between ICs is
still best addressed by 1149.4.
This idea had been hypothesized for some time. Lee proposed the actual Boundary Register cell
23
designs within 1149.1 that could make this happen. These proposal cells were immediately called
“Whet-cells” by the two working groups.
10.12 Epilog: What Next for 1149.1, 1149.4, 1149.6, 1149.8.1 and 1532? 377
In the 2001 time frame, 1149.1 was released and put into a “maintenance mode”.
Around 2010 it was re-opened again, leading to the 2013 release, which is found in
Chap. 11 in Part 2 of this book. As you will see, the 2013 release has some rather
large implications that spread out across the industry.
The jury is still out on the long-term acceptance of the 1149.4 standard. It is not
in widespread use as of yet. One thought is that the usage of analog components is
in decline, resulting in fewer analog components on boards, and their clusters being
smaller and less complex.24 Certainly, one major use of analog parts was for damp-
ing reflections and AC coupling. However, it appears that adequate test coverage for
these applications is possible without resorting to a full 1149.4 application.
The 1532 standard will also likely evolve a bit more. One open question is how
to deal with PLD devices that have an extreme amount of programmability of I/O
pin behavior. Here the problem amounts to needing to program a device before it
can successfully communicate with its neighbors. But what if this “communication”
is actually Boundary-Scan test activity? Then we find ourselves programming a
board before it has been thoroughly tested. If an entire (large) download is needed,
this could unacceptably increase tester time. The PLD industry has yet to address
this issue. For example, could there be a “lite” version of programming that only
affects the I/O pin parameters? Could the industry agree on a rational set of default
pin parameters that avoid the problem in many cases?
Finally, the 1149.6 standard has also left an open question—that of the need for
an “INITIALIZE” instruction. This instruction would prepare a device25 for testing.
Here it is envisioned that “System-on-Chip” (SOC) devices will need some sort of
“warning” given to them so they can prepare themselves for safe and sane testing
using the Boundary-Scan facility. For example, they may have on-chip phase-lock
clocking that needs to be switched to an internal oscillator26 before EXTEST cuts
off outside communication. The concern here is that complex devices may generate
internal conflicts or other irrational behavior if not properly prepared for testing.
A prototype of this instruction was provided in the first release of the 1149.6 stan-
dard, but it is not formalized. This may happen in a later release, although it is not
yet clear that the concept belongs in 1149.6 when it might better reside somewhere
else (like 1149.127). Actually, the 1149.1 Working Group in the 1997 time frame
24
Also, some types of analog discrete components such as inductors and capacitors are becoming
very low valued, nanohenries and picofarads. These are difficult to measure on boards with any
technology.
25
Note that the ISC_ENABLE instruction in 1532 is an example of this capability. It prepares a
1532 device for programming.
26
The Agilent HDMP-2689 Quad SERDES is an example of an IC that would have benefited from
an INITIALIZE instruction had it existed. This IC must receive a system clock to condition its
phase-lock loop while testing is being conducted. This is likely to startle board test engineers who
are accustomed to shutting down all clocks while testing is done.
27
The 2013 revision of 1149.1 addresses the “Initialization” issue with three new instructions; see
Sect. 11.3.4.1 in Part 2 of this book.
378 10 IEEE 1149.8.1: Passive Components
28
Proposed by Grady Giles, then of Motorola.
Part II
Boundary-Scan Updated
In the early 2010s time frame, it was becoming apparent that Boundary-Scan, as
then described and understood, was being hampered by technology changes that
were a threat to its continued usefulness. A simple example of this is the mobile
device we all use, which is battery powered. Such devices are extremely sensitive to
power consumption issues—we all want our phones to work longer than they do.
So, IC vendors have striven to reduce power consumption, even as the underlying
technology itself was moving in the opposite direction.
This was a problem. So, IC designs are common today with power domains
within them where significant portions of internal logic may literally be powered
down when not in use. They may be powered up for a few milliseconds, then put
back to sleep, all to conserve battery life (and reduce heating). Now it is one thing
to power down some internal logic, such as a floating point math unit buried deep
inside an IC. But in many cases, circuitry directly associated with I/O pins may also
be powered or unpowered over time. For example, a device may contain a serial data
port like USB that is not always operational. It could be powered down when not in
use. But, the classical view of Boundary-Scan is that all I/O pins are always pow-
ered. Indeed, a central tenant of classical Boundary-Scan was that a Boundary reg-
ister is always a certain length at all times. This was no longer practical, and without
some change of viewpoint, Boundary-Scan could be relegated to obsolescence. This
was not acceptable to Boundary-Scan users—it is simply too valuable to discard.
Part II of this book looks at the response to this challenge. Now there is a major
upgrade to the 1149.1 standard, released in 2013. It allows for power domains inter-
rupting a Boundary register and how to handle it. It also addresses other major tech-
nology trends as well—the 2013 version is exceptional in what it introduced and
changed. All modern devices and tools are affected. Chapter 11 covers this new
paradigm of Boundary-Scan. Subsidiary standards are also affected. The first one to
respond to this with its own revision is the 1149.6 standard revised in 2015, which is
covered in Chap. 12. I expect that other subsidiary standards will also have to adapt
over time. The “Dot6” approach will serve as a useful template for such efforts.
380 Part II Boundary-Scan Updated
In 1965, Gordon Moore (then of Fairchild Semiconductor) was asked to project the
rate of change of the semiconductor industry. He stated that circuit densities tended
to double each year1 which was due to the photolithographic process improving
resolution steadily with time. Many have speculated that “Moore’s Law” would
eventually break down2 as the limits of photolithography finally became insur-
mountable, but this time still has not come. The Moore prediction of growth in logic
IC density3 since the inception of Boundary-Scan is shown in Table 11.1, using the
18 month interval. You could call it “a decade per half-decade”.
1
Nowadays, we hear the doubling rate happens in 18 months. An exponential process yields
impressive rates nonetheless.
2
The “law” should probably have been called “Moore’s Conjecture” since it is not a physical law
like those of Newton’s. However, it has been uncannily accurate for the last 50 years.
3
Logic IC density is somewhat different than memory density due to the more “random” layout of
logic as compared to regular memory structures. Analog ICs may also have different densities due
to power considerations. Then, some ICs will contain mixes of these technologies.
Given the more than 100,000-fold density increase we have witnessed in the first
25 years of Boundary-Scan, it should not be surprising that IC technology has been
driven in certain directions as a result. It will be a million-fold by 2020! What has
this driver meant to Boundary-Scan?
The increase in circuit density means that mortal humans are able to place far more
circuitry upon a substrate than they may be capable of understanding in their life-
time. Clearly, automated design is crucial to getting ICs into production. Reflecting
this trend is the move to “Intellectual Property packages” where a subsystem can be
bought and sold at will. This allows re-use of complex circuits within a larger
design, without the purchaser really knowing what is inside the IP. It is not uncom-
mon for scores or hundreds of IP circuits to exist in a major IC design today. This
trend will continue for the foreseeable future.
It is probable that some of this IP will be related to parts of an IC that contain
Boundary-Scan functions. Most obvious would be IP that implements certain I/O
functions, as these should contain a portion of the Boundary register. This means that
the IC design team would have to link multiple portions of a Boundary register
together. These portions might be indigenous, and/or purchased from outside suppli-
ers. Are they compatible? Is this linkage easy to accomplish? We did not have to deal
with these issues back in the good-ole-days, but back then, we had to design the
entire Boundary-Scan subsystem pretty much from scratch. The use of IP packages
is a significant driver for changes in the Boundary-Scan standard.
11.1 Moore’s Law, the Principle Driver 383
Increased circuit density means that wiring inside and IC gets closer together, and
junctions get progressively smaller. This means voltage field strength in volts per
meter grows very high, which can lead to unwanted circuit effects. Back in 1990, the
predominant positive voltage of a logic family was 5.0 V. Now it is unusual to see
the positive voltage much in excess of a single volt. This has had the side effect of
dropping the power dissipation of ICs, but not as much as might be hoped, as internal
leakage currents have increased with circuit density. The overall power consumption
problem is an important driver for changes to the Boundary-Scan standard.
To keep up with greater circuit density, devices need to pump larger amounts of data
around in a system to keep up with what can be processed inside an IC. It does no
good to have a 64-bit floating point processor that can compute at incredibly fast
rates, if we can’t get the data to it fast enough to keep it busy.
Another contribution of increased circuit density is increased circuit speed. In
the late twentieth century, we made systems faster by increasing bus widths. Eight
bit data paths became 16, 32 or even 64 bits. But, such paths, at the board and sys-
tem level, take up a lot of board space. Also, trying to distribute clocking to wide
busses across multiple ICs becomes a limiting factor. The clock deskew problem
grows very quickly, which limits clock speeds on wide busses.
In the twenty-first century, increased circuit density comes again to the rescue.
First, let’s get rid of wide busses by multiplexing data in time onto (say) a single bit
path. For example, transmit a byte of data on a one-bit path. This would seem to take
eight times longer, but, we use differential signaling on the path (now two wires
wide) and we also play a new trick: we encode the 8 bits into a 10-bit data string4
that balances the numbers of ‘1’ bits and ‘0’ bits such that we never have long
strings of any similar bits. This allows us to encode clocking information with the
data, which reduces the need for complex clocking and deskew, which in turn allows
us to greatly raise data transmission speed.5 Basically, an IC transmitting data this
way operates within its own local clocking domain, while a receiving IC, also oper-
ating within its own clocking domain, is able to extract 8-bit data packets from the
10-bit strings without knowing very much about the transmitting IC’s clocking.
That is, there is no deskew problem to limit frequency.
4
This is called 8b/10b encoding. Basically, the 256 possible data bytes are encoded from 1024
possibilities by an algorithm that controls the overall average DC level of the signal.
5
Older wide bus-based boards might run data rates in the 50–100 Mb range. Modern data rates are
well into the tens of gigabits.
384 11 IEEE 1149.1: The 2013 Revision
Yes, it takes a lot of circuitry to implement such a scheme, but, Moore’s Law
delivers this for us. Let me hasten to say that some of this circuitry is sophisticated
analog design needed in the differential transmitters and receivers, to make it all
work. Your average digital system designer will gladly leave this part of the design
to analog I/O pad design specialists.
Note also that defects, particularly in differential circuit pathways, can have new
effects we did not observe before. For example, two differential signals (one data
path) need a carefully constructed grounding structure surrounding them as the
move across a board. Therefore, an open ground pin on an IC or connector, while
redundant in a DC sense, may cause data errors in high-speed data paths. See
[Park05] for more about these effects.
Users of mobile electronics devices always want better battery life. The vast data
centers that support the internet consume huge amounts of power (and cooling).
There is a tremendous desire to reduce the power needs of circuitry, even as the
amounts of such circuitry grow exponentially. Reducing power consumption is an
important technology driver, as a result.
So, IC designers have responded by implementing “power domains” within their
devices. A simple example would be floating point math unit inside a processor.
This unit might be used fairly rarely in many applications such as examining email
or even processing a spreadsheet. So, why not turn off the floating point math cir-
cuitry when not in use? Indeed, this is done and it is not uncommon to have many
power domains within a device, many with independent controls that turn units on/
off at will, even hundreds of times per second.
Now, a floating point math unit deep inside an IC will very likely have no connec-
tion at all to the Boundary-Scan portion of that device. But other power domains may
indeed contain portions of the Boundary-Scan implementation as noted earlier in
Sect. 11.1.2, and of particular concern are those portions that contain device I/O pins.
Imagine a group of I/O pins that are part of an IP package that a designer has
incorporated in an IC design. Further, this package of circuitry is designed to exist
in a power domain that can be powered down when not needed. These I/O pins have
Boundary-Scan boundary register support6 in the form of some number of data and
control cells that form a “segment” of the boundary register. Now, if these cells are
powered down, we have two major problems; first, the boundary register is “bro-
ken”, meaning it cannot shift data from TDI to TDO. If, during such shifting the
power was turned off, then the data shifted out from cells downstream of the break
would be valid, but all data above that point would be lost, perhaps just a stream of
‘0’ bits, for example. This is quite similar to behavior seen in a chain of devices
6
There is also the new Init_Data register (see Sect. 11.3.4.2) that may be associated with I/O pins
and may also be part of a power domain.
11.3 The 1149.1 Response to These Drivers 385
when there is an open connection of (for example) some TDI pin. Useful testing is
stymied until this break can be found and repaired. But in this case, the break is
internal to the IC’s boundary register itself. The second problem is that whatever
data may have been successfully preloaded into the boundary register during testing
will be lost when power to the domain is cycled. This would obviously upset any
testing dependent on that data.
Clearly, the Boundary-Scan standard needed to account for what can be called
“dynamic data registers”, that is registers than may have different configurations at
times. This means there needs to be a way to reconnect a broken shift register path
when a segment within it is removed. Note this means its length will be shorter.
How this is controlled is very important; and yes, there can be multiple segments,
each with different controls.7
There have numerous changes incorporated into the 2013 version of 1149.1 to
accommodate these technology changes we absolutely must respect. This section
outlines these responses.
Two new operational modes have been added to the 1149.1 view of the world. These
modes are called “Test Mode Persistence”, one for “On” and the other for “Off”. It
is optional to implement these, and, they can be thought of as a new, two-state dia-
gram that works in parallel with the 16-state TAP state diagram (see Sect. 1.3.1).
Figure 11.1 shows this new diagram.
CLAMP_HOLD Instruction
Persistence Persistence
Off On
CLAMP_RELEASE Instruction
TAP-POR*
“BYPASS-Escape”
TMPStates
7
And worse, the controls could be mutually exclusive in perverse cases.
386 11 IEEE 1149.1: The 2013 Revision
The concept of Test Mode Persistence (called TMP) is directly related to how we
might solve the “lobotomy problem”, where an IC (or board full of them) has been
doing 1149.1-based testing, and then, the test completes. What happens to the board
when those ICs doing testing (typically using EXTEST) are suddenly placed back
into “normal” mode, usually by passing back to the Test-Logic-Reset TAP state?
This was examined in [Park10], and a case study was reported in [Park11]. In the
case study, when the boards in question were not properly managed at the point
where Test-Logic-Reset occurred, the boards had an unacceptable rate of damage
due to power supply subsystem misbehavior. Some boards were fine, but some were
damaged beyond repair. Essentially, when each board “woke up” from its testing
duties, it might cause signals to pass to the power subsystem calling for inappropri-
ate action. The irony was, the Boundary-Scan test may have passed, so the damaged
boards were passed on to later production steps.
From this realization it was decided that the 1149.1 standard should offer a tool for
test software and test engineers to use to try to control this unpredictable return to “nor-
mal mode”. This is where the term “Test Mode Persistence” comes from—it allow an
IC that has been doing test functions, to remain in test mode even when it passes the
Test-Logic-Reset TAP state. This means the I/O pins stay under the control of the
Boundary register instead of being reconnected to the IC’s system logic, which is in
some unpredictable state. When TMP is turned “On”, then test mode persists after a test
completes. If TMP is implemented in an IC but not turned “ON” (or is turned “Off”),
then the IC behaves as have all other 1149.1 ICs since 1990, that is, potentially badly.
The TMP controller is manipulated by two new instructions called CLAMP_
HOLD and CLAMP_RELEASE (see Sect. 11.3.3.3). The first turns TMP on and
the second turns TMP off. The 1149.1 working group worried that it might be pos-
sible to get a device into TMP-on mode but not be able to get it back off again. This
seems unlikely, but in some critical applications (typically in military or medical
areas), there is concern over being “trapped” in an inoperative state with no way to
get out of it. Now, powering up a trapped device will bring it to the TMP-off state as
seen in the diagram (the assertion of TAP Power-on-Reset, TAP-POR*), but in typi-
cal system operation, this is not a normal option.8 So, the working group provided a
second way to move from the on to off states, called “Bypass-Escape”. This escape
mechanism is triggered by:
• First loading a ‘1’ bit into the bypass-escape bit of the TMP status register (see
Sect. 11.3.4.4).
• Then loading the device’s TAP instruction register with a BYPASS instruction
opcode (note, the all-‘1’ pattern defaults to BYPASS).
• Updating9 BYPASS into the instruction register by passing through the Update-IR
TAP state.
8
If the device possesses the TRST* pin on its TAP, this will also set TMP to “off”. However,
TRST* is not a required pin in an 1149.1 implementation.
9
Some devices default the IR to the BYPASS instruction when passing Test-Logic-Reset. This is
not sufficient to force a Bypass-Escape since Update-IR has not (yet) been traversed.
11.3 The 1149.1 Response to These Drivers 387
Loading the TMP status register is accomplished with any of the CLAMP_
HOLD, CLAMP_RELEASE or TMP_STATUS instructions. The first two of these
three operate like the normal CLAMP instruction (see Sect. 1.5.5) in that they clamp
the I/O pins to a state defined by the Boundary register. TMP_Status is a normal
mode instruction (when TMP is off).
The previous sentence offers a new insight—when TMP is asserted on, then
some instructions that are normally non-invasive, begin to behave like test mode
instructions. Prime example: the PRELOAD instruction behaves just like EXTEST!
Be aware of this. An advantage of the TMP mode is that when one test completes,
the 1149.1 test pins retain the last test state they were in, which is presumably a safe
state. When a new test starts up in Test-Logic-Reset,10 it may begin with a PRELOAD
sequence. Normally this would be done in normal mode so the I/Os would not know
about whatever the new Boundary register state was until EXTEST was installed.
Not so with TMP asserted on, the pins will respond to Update-DR while PRELOAD
is active. This is probably not a problem since the very next thing likely to happen
was to load EXTEST, but the user should be aware nonetheless.
How is TMP implemented within test data register cells? Please refer to the
Boundary register cell designs shown in Sects. 2.6.3 through 2.6.5, starting on page
94. In the cells designs documented there you see a “Mode” signal11 that determines
whether the primary output of the cell (PO) is fed by the Update flip-flop, or by the
primary input (PI) data. A new signal from the Test Mode Persistence controller
called (say) TMP_On can be OR’ed with Mode to keep the cell blocking the system
pathway while TMP is in the On state.
In the earlier versions of the 1149.1 standard, a typical dual-rank shift/update data
register cell is depicted as shown in Fig. 11.2, with two edge-triggered flip-flops
(capture and update) that each had their own clock, Clock-DR and Update-DR. The
two multiplexors allow PI data to be passed directly to the PO, but in some data cell
designs, these may be omitted. The update flip-flop may have a reset signal keyed to
the test data register it was part of, called Reset_<TDR> in the figure.
Note that the two clock signals are so-called “gated clocks”, which means
that they are derived from TCK by combinational logic elsewhere on-chip.
This logic would, for example, allow TCK pulses to reach the test data register
only when that register is selected for use by the current instruction, and only
when the TAP was in the appropriate state.
10
Passing the TLR state jams BYPASS (or IDCODE) into the instruction register, but the pins
remain in test mode.
11
In some of the more complex drawings, the signal is “Mode_1” or “Mode_2”.
388 11 IEEE 1149.1: The 2013 Revision
Shift Out
Mode G
Parallel In 0
Parallel
Capture Update Out
Shift-DR G
Flip-Flop Flip-Flop 1
0
D Q D Q
1
CK CK
Fig. 11.2 Classic dual-rank shift/update data register cell with gated clocks
Shift Out
Capture_<TDR> Update_<TDR>
Mode G
Parallel In 0
Parallel
G
Update 1
Out
Capture Flip-Flop
G 0
Flip-Flop MU D Q
Shift_<TDR> G 0
0 MC D Q 1
CK
1
CK
1
Shift In
TCK
Reset_<TDR> ShUp2013
Fig. 11.3 Revised data cell introduced in 2013, with non-gated TCK clocking
Great care must be taken with gated clock designs to make sure that their genera-
tion is “glitch-free”, that is, free of static hazards that might inject undesired clock
pulses12 into the circuitry. Gated clock designs are sometimes more “intuitive” for
observers to fathom and are in many cases retained in the 2013 version of the 1149.1
standard. However, modern design automation tools have stricter rules about gated-
clock designs, to help them support advanced automated design rule checking
which is crucial for designing large-scale devices. Users of these tools work in a
non-gated clock design environment. The data cell design in Fig. 11.3 is a non-gated
clock design for the same cell as in Fig. 11.2.
12
These may be malformed glitches or “runt pulses” which may upset the flip-flop state in
unpredictable ways.
11.3 The 1149.1 Response to These Drivers 389
This newer design contains two new multiplexors (MC and MU) that feed the
capture and update flip-flops. They choose to feed back either the existing flop data,
or new data, on every relevant13 TCK edge (positive for capture, negative for
update). There are two new multiplexor select signals “Capture_<TDR>” and
“Update_<TDR>” which make these choices. They are generated near the TAP and
are broadcast to the data cells. Clearly, this design is less intuitive to the reader at
first look, and it contains significantly more circuitry. However, with the fabulous
circuit densities now available, the extra gates are not as important as being able to
use design automation tools to synthesize and verify gigantic IC designs.
One more advantage of these modern cell designs is that they provide a frame-
work for a standardized TAP design. This assists the industry with sharing IP across
industry segments. If you design an IP circuit that uses the non-gated concept as
seen here, then it is more likely you can provide this IP to customers who have
also adopted this convention. In the past, your IP may have been incompatible or
otherwise difficult to integrate.
The 2013 revision has added some new instructions, with concomitant registers
assigned (see Sect. 11.3.4).
13
This means these select signals must only change after the non-relevant edge, that is, 180° out of
phase with the relevant edge. Any hazards on select lines that occur at that point should be settled
before the critical edge arrives a half cycle later. This is much easier to verify during rule checking.
390 11 IEEE 1149.1: The 2013 Revision
Here are some examples of data that may be extracted from an IC by ECID_
CODE:
• A manufacturing data code, in vendor-specific format.
• Lot and wafer numbers, with positional location data on wafer.
• A readout of fuse settings programmed during manufacturing.
• A readout of accumulated error correction counts.
• Identification of “circuit-ware” installed during (or after) production.
• Any/all of the above.
Be assured clever designers will add to this list. Having such data (perhaps
encrypted) would allow an IC manufacturer to examine facts14 about a given IC that
may be germane to yield analysis, defect distributions, or other relevant statistics. The
vendor of a device may examine such data before shipment to a customer, or after a
device has been returned. The vendor could also just examine the data delivered by
this instruction, after the customer reads it out at his location and transmits it to him.
In such a case the IC vendor probably does not want to reveal what all the bits encode.
These (optional) instructions15 were added in the 2013 release of 1149.1 to facilitate
the initialization of test facilities within the IC needed for performing tests. In sim-
pler times, just powering up a device, and/or asserting TRST* was enough to do
this. Later, it was not uncommon to have an IC with test facilities that would not
work if you did not know “the secret” process for getting it ready.
What was really going on here was there were practical needs that had to be
fulfilled before the IC was ready for test—and there was no standardized way to set
these up. For example, an FPGA might have drivers and receivers with program-
mable levels. What levels should they have set for testing? If you just launch into
EXTEST testing, will the drivers drive out the right voltage for their connected
receivers? Will the device’s receiver be set to compatible receive levels to see data
coming in? Maybe the power-up default levels are not correct in a given design. The
test won’t work until this problem is solved. As stated, people would figure out the
“secret process” and write some pattern code to accomplish it. Then they would
pass that around their user community, saying, before you try to test with your tool,
plug these secret patterns in first. The family of initialization instructions is an orga-
nized approach to standardizing this process.
The INIT_SETUP, and the very similar INIT_SETUP_CLAMP instructions target
an initialization data register (known in BSDL and “INIT_DATA”). This register of
at least one bit in length is where data is inserted to set up important parameters for
14
There is much concern growing now about counterfeit devices. These codes could help identify
such cases.
15
When implemented, all three of these must be provided.
11.3 The 1149.1 Response to These Drivers 391
testing, like the voltage levels of the FPGA seen in the previous example. The data is
shifted into the register in the Shift-DR TAP state, as always. The register can be
loaded by either instruction, the difference being that INIT_SETUP is a non-invasive
instruction, not disturbing the IC’s behavior. The INIT_SETUP_CLAMP instruction
allows initialization data to be shifted into the device, while keeping its I/O pins
clamped to the values dictated by the Boundary register content (previously set up by
PRELOAD). This “clamp-like” behavior is like the CLAMP instruction (see Sect.
1.5.5), but the instruction targets the initialization register. Thus, the initialization data
register can be set up in non-invasive, or in test modes. If a test has lobotomized a
board, and you need to change the initialization data before conducting a new portion
of testing, the INIT_SETUP_CLAMP instruction should be used to keep the IC(s)
from exiting test mode while delivering the new initialization setup.
See Fig. 11.4 for an example of a portion of Boundary-Scan circuitry behind an
output driver. Two Boundary register cells supply digital data and output enable con-
trol. Then there are seven Init_Data cells that provide analog parameter controls for the
driver. These are now made visible to test engineers, where before, they were “Secret”.
Enable
C U
Boundary
Register
Segment C U
Data Driver
C U Common
Mode
Voltage
C U
Generator
C U
Swing
Init_Data Control
Register C U
Segment
C U
Transmit
C U Stregth
Control
C U
InitData
In some cases in an IC design, it may be necessary to let some time pass, along
with perhaps some TCK and system clock cycles, to allow the setting of data or the
parameters controlled thereby to take effect. The INIT_RUN instruction (which
targets the Init_Status register) serves this purpose. For example, say a device uses
internal charge pumps to develop pin reference voltages. These may require some
time and clocking to do their job before you can begin using the pins. In more com-
plex cases, you may need to set up INIT_DATA first, and then some internal state
machine, clocked by TCK, must run to execute some internal setup procedures. This
would probably be done by first running a PRELOAD sequence to ready the
Boundary register for testing, then running either INIT_SETUP or INIT_SETUP_
CLAMP to set up the INIT_DATA, and then switching to INIT_RUN to complete
the sequential process of finishing the initialization. Note that INIT_RUN is inva-
sive, so preload and initialization data need to be in place ahead of its use.
The “secret patterns” that were needed before the 2013 release of 1149.1 should
soon be replaced by the formalized initialization process now supported by these
three new instructions. Note that later, the details of the construction of the INIT_
DATA register and how data patterns inserted within fields of this register will pro-
duce specified actions, can be described in BSDL. See Sects. 11.4.19 through 11.4.21.
16
The presence of these three instructions in a BSDL file indicate the existence of the TMP
controller in the device.
17
Note that the keyword “TMP_STATUS” is both the name of a register and an instruction in the
2013 release of 1149.1. This has also been true of the keyword “BYPASS” since the advent of BSDL.
11.3 The 1149.1 Response to These Drivers 393
The 2013 release of the 1149.1 standard added new public data registers. All are
optional and are targets of new public standard instructions, also optional.
An electronic chip identification (ECID) is a bit string with a value unique to each
individual component within a set of devices of the same type. Devices with the
same Device ID (see Sect. 1.4.2) or User ID (see Sect. 1.4.3) can have differing
ECID patterns that identify unique features of interest to the vendor of the device.
394 11 IEEE 1149.1: The 2013 Revision
18
It the device is not in the Test Mode Persistence “On” state.
11.3 The 1149.1 Response to These Drivers 395
of a device are used to configure its I/O behavior. In such case, the Init_Data register
can capture these states for observation after shifting them out, to verify they are
what is expected.19
Improvements to BSDL that support identifying data fields in registers, and mne-
monics for data patterns that can be loaded into these fields, can greatly assist users
in understanding what they need to do with the Init_Data register. (See Sects. 11.4.19
through 11.4.21.) The device supplier can assist by providing PDL routines to
document how to access these fields and place the right data in them.
The INIT_Status register is the target of the INIT_RUN instruction. This register
should be thought of as a read-only register, that is, you have nothing to write into
it, because it just registers the status of a sequential initialization process driven by
INIT_RUN.
This register is at least 2 bits long, with more added at the designers wish. The
lowest bit (nearest TDO) is a “busy/done” bit, which indicates via a 1/0 whether the
initialization process in completed. An accompanying PDL routine is used to docu-
ment how long the process should take, and what clocking requirements are needed.
The busy/done bit can be shifted out periodically to implement “polling” when the
time requirements are uncertain.
The next mandatory bit (bit 1) is used to indicate whether the initialization pro-
cess was “successful”, that is, it is a 1/0 pass/fail indicator, for those processes that
can judge their success. (If they cannot so judge, then ‘pass’ is the only result.)
Higher order bits can be implemented that can be used to capture extra details about
what may have happened; perhaps an error code or an indication of how close
the initialization process came towards some limit. Again, the new register
documentation features in BSDL can assist us in understanding these higher bits.
See Sects. 11.4.19 through 11.4.21, beginning on page 429.
19
You ask, doesn’t EXTEST do this? Well, yes, but if we can observe these particular pins before
we get into testing and see they are not right, we can avoid later confusion.
20
As noted, “TMP_STATUS” is both an instruction name and register name in BSDL..
396 11 IEEE 1149.1: The 2013 Revision
The TMP-status bit is ‘1’ when the TMP controller is in the persistence on mode,
and is ‘0’ otherwise. This bit can be captured and shifted out, but not written changed
at Update-DR. Its state is determined by whether CLAMP_HOLD or CLAMP_
RELEASE has been previously executed—and is always set to ‘0’ by powering up
the device, or asserting the TRST* pin.
The Bypass-escape bit can be set or reset by any of these three instructions, to
enable or disable the bypass-escape mechanism described in Sect. 11.3.1. This bit is
also set by powering up the device or asserting TRST*.
The reset select register (called Reset_Select in BSDL) is targeted by the IC_RESET
instruction (see Sect. 11.3.3.4). This register consists of a Reset-Hold bit which is
closest to TDO, and one or more pairs of bits, where each pair consists of a Reset-
Enable bit (closer to TDO) and a Reset-Control bit, as seen in Fig. 11.5.
Upon power-up of the device, the reset select register it initialized to all-‘1’,
which means all domain resets are connected to their normal, system reset sources
TDO
TAP-POR* To TDO
(from TAP)
C U Reset-Hold
Boundary
Reset* C U
Register Cell
(from TAP)
System Reset Pin From
TDI
C U Reset-Enable 1 G
0
Domain 1
1
Reset
C U Reset-Control 1
Reset
Select
Register C U Reset-Enable 2 G
0
Domain 2
1
Reset
C U Reset-Control 2
C U Reset-Enable N G
0
Domain N
1
Reset
C U Reset-Control N
Internal System Reset
TDI ResetSel
and all the reset-control signals are in the non-asserted state. In this example,
Domains 1 and 2 are both reset by a single system input pin. The first two pairs of
reset select register bits control Domains 1 and 2, so they can be independently reset
by using the IC_RESET instruction. Domain N is reset by an internally generated
reset signal, so bit pair N is used to reset this domain. Note that the state of the
internally reset domain’s reset signal is captured by the Reset-Control N register
cell, allowing the user to verify its state.
To perform a reset, the IC_RESET instruction is used to shift a set of bits into the
reset select register. The Reset-Hold bit can be set to ‘1’, which would allow the
passing of the Test-Logic-Reset TAP state to reset all the higher bits to ‘1’. If the
Reset-Hold bit is set to ‘0’, then passing the Test-Logic-Reset TAP state will not
change the higher bits. This is the meaning of “Hold” in the Reset-Hold name.
Shifting in the remaining bit pairs allow each domain reset to be fed from either
its normal source, or from the Reset-Control cell paired with it. Putting a ‘0’ into a
Reset-Control cell asserts the reset function. As noted, this assertion may kick off a
process that needs to be completed by setting the Reset-Control back to ‘1’, which
would require a new shifting sequence.
The new feature that is perhaps most revolutionary in the 2013 version of 1149.1
is the concept of a dynamic data register. This is a register which may change it
length and organization in certain specified ways. In all earlier versions of the
standard, data registers were always fixed, having just one length and organization
at all times.
The standard contains standard public registers such as the bypass, device_id and
test mode persistence that are not allowed to have dynamic behavior. The standard
boundary register, initialization data and status registers, ECID and reset selection
registers are allowed to have “excludable segments” only, but these segments are not
allowed to be nested—that is, one excludable segment cannot contain a second
excludable segment within it.
The foremost reason for excludable segments in standard registers like the boundary
or init_data registers is to account for power domains. It is becoming common for
an IC to have multiple domains that have independently controlled power. When
(say) the boundary register passes through such a domain, then some portion (a seg-
ment) of the register may have power applied at random intervals. When not pow-
ered, the chain would be broken if we don’t deal with the idea of excluding that
segment. Therefore, the standard provides a way to switch a segment into place as
needed. See Fig. 11.6.
398 11 IEEE 1149.1: The 2013 Revision
C U
Reset* (excluded at power up)
Towards TDO
0
Segment G
Select Cell
Shift_<TDR>
Optional gates
Capture_<TDR>
Update_<TDR>
ExclSeg
In this figure we see an excludable segment, which must have at least one data
register cell. When the device powers up, the segment select cell21 is reset, so that
the segment select multiplexor22 selects the segment select cell to pass on to the rest
of the register. Note that only the excludable segment may be in power domain,
while the segment select cell and segment select multiplexor are always powered.
The segment select cell captures a logic value from a signal (here) called “Ready for
Scan”. A captured ‘1’ means the excludable segment is operational, while a ‘0’
means the segment is not functional. This bit can be shifted out for inspection to
assure that the segment is ready, or not ready, as needed. Typically, the segment is
inside a power domain that may or may not be powered. The power may be con-
trolled by some on-chip function, or it may receive power from a device power pin
which itself is receiving power from some external function, like an on-board regu-
lator. In any case, the “Ready for Scan” signal should reflect this.
Figure 11.6 also shows three signals that control shifting, capturing and updating
of the excludable segment. The updating is always gated by the segment select cell
content, to keep an excluded segment’s update flip-flops (when powered) from
changing when the segment is excluded. The shift and capture functions may or
may not be similarly controlled. Note, when a segment of a boundary register is
excluded (assuming it is powered) the I/O pins that it observes and/or controls are
in the system (not test) mode of operation. This means those pins are connected to
their system logic.
A data register may contain multiple segments, and all are excluded at power-up,
so the register’s default length is the minimum possible. As segments are inserted
into the register, its length will increase by the length of the inserted segment, and,
this has the effect of changing the cell position of all cells towards the TDI side of
21
This cell is called a “SegSel” in BSDL, seen later in Sect. 11.4.20.
22
This multiplexor is called a “SegMux” in BSDL, seen later in Sect. 11.4.20. There is also a
“SegStart” field in BSDL. Both of these are zero-length felds, whereas SegSel is one bit.
11.3 The 1149.1 Response to These Drivers 399
the register. In the boundary register for example, if cell N is above an L-bit exclud-
able register, then at power up, it is the Nth cell, but it becomes the N + Lth cell
when the segment is later included. It’s nice we have computers to help us keep
track of all of this.
Certain areas of an IC may have independent power supplies. There are two cases;
the first is where there is an on-chip power provision to a domain. The second is
where power is brought in from an external source, through a power pin. In the first
case, a “domain control” bit can be used to assure that power is supplied to the
domain, that is, it will override an on-chip controller that may be attempting to turn
the domain off. This allows us to govern which on-chip-controlled domains are not
allowed to turn off. In the case where power is externally supplied, we have no such
control we can exercise inside the IC; at best, we can try to observe if the domain is
powered before we use it.
Part of an overall test strategy for a system will be to identify those important
segments we want to have powered, and to achieve that powered state reliably. For
the on-chip controllers, we can use the domain control bits to demand power for
their domains. For those that are externally supplied, we have to figure out where
that power comes from, and how we can assure it will be there when needed. This
could be simple, for example, our tester may be able to supply the power at our con-
trol. If the power comes from some on-board power regulator, then we may have to
analyze how to get it to provide the power we need to the correct parts of the board.
Figure 11.7 shows an elementary excludable segment with a domain control
cell ahead of the segment. The output of that cell travels to the power supply for
the excludable segment and acts as a “request” for power to be supplied, when that
cell is loaded with a ‘1’. It might turn out that there is some time lag between when
the request is asserted, and when the segment gets power. The “ready for scan”
Domain-
control cell “Ready for Scan” Segment
Select Mux
Excludable Segment
From TDI 1
C U
C U
Update_<TDR>
DomCntl
indicator will be set to ‘1’ when the power is ready. Note that the domain control
cell must always be powered and not itself be in an excludable segment.23
Note that a domain control cell may not be in the same register as the segment it
is associated with. For example, for an excludable segment in a boundary register,
the domain control cell that provides power to the segment may be in the Init_Data
register. Further, there could be two domain control cells for a segment, with either
of them (by being set to ‘1’) providing power. Thus there could be a domain control
cell for a segment if both the boundary register and Init_Data register. This will be
coded in the BSDL for the device. Test engineers and their tools must be alert for
these situations.
Design-specific test data registers may have excludable segments, with nesting
allowed. Further, design-specific TDRs may have “selectable segments”, where
a segment may be included from a set of possibilities, as depicted in Fig. 11.8.
Segment 2, Length N
Segment
Select Mux
Segment
3
Selection Field
Segment 1, Length M 2
Towards TDO
1
0
G
From TDI Segment 0, Length L
C U
C U
Decode/Control
Shift_<TDR>
Capture_<TDR>
Update_<TDR> SelSegs
23
Actually, in complex registers not provided by 1149.1, it is allowed for domain controls and seg-
ment select cells to be nested within other segments. It is specifically disallowed for boundary
register and Init_Data registers. Clearly, using such nested structures can present us with sequenc-
ing issues that need to be carefully thought out.
11.4 Revisions to BSDL 401
Here, a set of register segments 0, 1 and 2, with non-zero lengths L, M and N are
selectable by a two-bit segment selection field. The segment select multiplexor has
an unused input (3), which should not be selected since that would break the chain.
The segment selection field in Fig. 11.8 is shown directly ahead of the segment
group, but it could be almost anywhere else, or in a different register altogether. The
segment selection bits may capture data if the IC designer so chooses, but there is
no requirement for a “Ready for Scan” signal being captured. Basically, with a
design-specific test data register, the IC designer sees few limits for segment selec-
tion, and users can operate them at their own risk. See how these are described
within BSDL in Sect. 11.4.21.
More complex examples are shown in the 2013 revision of 1149.1. In particular,
see the examples (in Sect. B.8.21.3) of an implementation of a “Wrapper Serial Port”
(WSR) structure from the IEEE 1500 standard.24 This structure has a nested select-
able register form, with the outer level selecting between data register and instruc-
tion register access of the 1500 WSR, and the inner level selects among a set of 1500
data registers. The example continues to show how several identical 1500 WSRs
could themselves be linked together as a set of selectable segments, with the ability
for all of them to be loaded in parallel, while only one is selected for passing its data
out. This can be used to “broadcast” input data to the WSRs, when it is intended for
them to receive the same data or setup information. Again, use at your own risk.
The 2013 release of 1149.1 makes an extensive list of changes and additions to
Boundary-Scan Description Language. This section discusses the rationale for the
changes and gives an overview. Details about syntax are found in Appendix B which
notes the changes/additions to the syntax listed in Appendix A.
24
This is IEEE 1500 Standard for Embedded Core Test (SECT). In the past, such structures may
have been embedded in ICs, unknown to outside users. With the advent of the 2013 revision of
1149.1, it is possible to describe their existence in BSDL, if the IC vendor chooses.
402 11 IEEE 1149.1: The 2013 Revision
The 2013 release of 1149.1 has broken the “proper subset” claim of BSDL. It is
now described as “based on” VHDL. The principle place this is seen is in changes
to the set of “VHDL reserved words” used in BSDL. These are “pin type” keywords
that were somewhat limited in VHDL; these are now expanded to offer more infor-
mation about what functionality a device pin might possess. Indeed, the VHDL
reserved word “linkage” has been eliminated in BSDL and replaced with an
expanded list of words that have “linkage_” as their start.
Breaking the VHDL link means that the 1994 goal of having BSDL be parsable
by a compliant VHDL compiler is no longer achievable. It was felt that this goal
was not really important since tool makers created dedicated parsers for BSDL
rather than modify existing, VHDL-based tools.
The list of VHDL reserved words that are also reserved in BSDL has been shortened
to just 30 words (see the list in Sect. A.1.1). This is another side effect of breaking
the VHDL link.
There is one reserved word missing from the table above; it is “Linkage”. This
word was reserved in all previous versions of BSDL (before 2013) and served as a
catch-all for pins that were not signals, like power/ground or analog pins. In the
BSDL reserved word section (Sect. A.1.2) you will see several words that start with
“Linkage_” and these are now used to provide more information about the nature of
a pin, such as “Linkage_out”, which might be assigned to an analog output pin not
controlled by the Boundary register. It is now the case that when a parser starts read-
ing a BSDL file of unknown vintage, it could come across the word “linkage”, or
perhaps “linkage_out” in the port declaration before is comes across the standard
use statement that identifies the date of the BSDL standard being processed. Thus,
if (say) “linkage_out” is encountered in a pre-2013 BSDL, which would easily be
recognized25 as an error. But, if the word “linkage” is found in a 2013 version of
BSDL, that cannot be flagged as an error until the standard use statement is found,
which could be many lines farther down in the file.
The 2013 version of the standard is silent on whether the word “linkage” should
be avoided as a name of some item. The fact that it no longer appears in the VHDL
or BSDL reserved word lists suggests that you could name a port “linkage”, but it
seems like asking for parser troubles and other possible confusion.
25
At least in the case of a parser that has not been upgraded to accept both 2013 and pre-2013 ver-
sions. If the parser can read both versions, then if “linkage” and later “linkage_out” were both seen
in the port statement, then an error could be issued at that point.
11.4 Revisions to BSDL 403
The list of BSDL reserved words has been enlarged with 66 new entries. Many of
these are related to the new statements that have been added. The original list
appears in Sect. A.2.3 and the new words are shown in Sect. A.1.2.
The pre-2013 versions of BSDL have four types of numeric literals, for integers,
real numbers, general pattern data (made up of ‘0’, ‘1’ and ‘X’ characters) and
32-bit patterns.
The new BSDL add three new numeric number types (see Sect. A.1.3), which
are used to describe pattern data in binary, hexadecimal or decimal formats as
found convenient in a given application. These patterns can be given friendly
mnemonic names and are used to populate named fields within registers
(see Sects. 11.4.19 and 11.4.20).
The 2013 revision of BSDL adds two new types of identifier, mnemonic identifiers
and prefix identifiers. See syntax details in Sect. A.1.4.
Mnemonic identifiers are used as names for bit patterns (see Sect. 11.4.19) that
are more readable and understandable to users. Here are some examples:
• 133 MHz.
• 60 %_Swing.
• Reserved_for_future.
• SATA.
Two of these cannot be expressed by a common VHDL identifier (they start with
a digit or contain special characters). They are equated to a bit pattern that is most
likely not easily remembered. Thus a user remembers “133MHz” rather than
“0x27”. This is even more helpful when “0x27” is a 7-bit string of data that is dis-
tributed into seven non-contiguous locations in some obscure register. It is intended
that mnemonic identifiers be displayed to users on interfaces that allow them to
select what actions they want to enable from lists of meaningful mnemonic names.
The software then takes care of bit distribution details.
Prefix identifiers are used to help resolve bit fields in nested field descriptions
(see Sect. 11.4.20).
404 11 IEEE 1149.1: The 2013 Revision
In pre-2013 BSDL the only <port type> descriptors were IN, OUT, INOUT, and
LINKAGE. The “linkage” ports were a catch-all for all the non-I/O pins, such as
power, ground, analog and unconnected pins. The 2013 revision replaces “linkage”
with a set of new descriptors with enhanced meanings. (See Table 11.2 and syntax
detail in B.2.1.) This allows tools to better analyze board topologies and create bet-
ter tests and diagnostic results (Table 11.2).
Clearly, the word “linkage” has been expanded to give a lot of new detail. Here
are some examples of device pins and how they would be typed.
• An input pin that receives a sinusoidal frequency reference: LINKAGE_IN.
• An output pin that is used to supply regulated voltage to another device:
LINKAGE_BUFFER.
• A Ground pin: VOLTAGE_0.
• An input pin that supplies a reference voltage a set of on-chip receivers:
VREF_IN.
• An output pin that supplies a reference voltage to another device so that its
receivers will properly receive data: VREF_OUT.
These <port type> values are used in the <logical port description> portion near
the top of any BSDL file. The word “logical” may seem out of place here as all these
new types help describe pins that are not commonly thought of as logic. Notice also
that the <port dimension> may be bit or bit_vector, which may also seem strange
since (say) a power pin is not usually thought of as a “bit”. These seeming anoma-
lies were not changed with the break from VHDL.
The three “power” types can help with board topology analysis. For the majority
of ICs that use positive logic (that is, the voltage of a ‘1’ is higher than the voltage
for a ‘0’), then if we see a board node connected to a device pin that is typed
“Power_0”, and then later, we see a board-mounted resistor connected between that
node and a Boundary-Scan input pin, we may assume that that input will load a ‘0’
into its Boundary register cell. This may not be a valid assumption in every case, but
it may help us find missing resistors in many instances, where the pull-down ‘0’
provided by the resistor seen as a logic ‘1’ of a floating input.
The standard use statement appears directly after the logical port description. The
name of the package identified there is used to key a parser on which version of
BSDL it is reading. The statement for the 2013 version of BSDL looks like this:
use STD_1149_1_2013.all; -- For a 2013-compliant file
The “2013” number tells software the revision level. Previous versions had revi-
sion numbers of 1990, 1994 and 2001. There is new information provided in this
new package26 (see Sect. A.3) that provides description of some standardized mne-
monics and register fields.
26
An older parser that does not know about the 2013 revision would likely produce errors when it
encountered this standard package. But since the standard use statement appears after the port
description, errors due to “linkage” changes may have already aborted the compilation.
406 11 IEEE 1149.1: The 2013 Revision
Following the standard use statement, there may be optional use statements that
identify supporting packages that may be supplied by the IC vendor, or passed along
by that vendor from some IP supplier. In particular, mnemonic data, register fields
and assemblies may be found in them—even design warnings may now appear. See
Sect. B.4 for details.
Device pin mappings now offer more detail with the 2013 revision of BSDL. As
seen in Sect. A.1.7 the syntax now allows naming a pin (by number or alphanumeric
ID) or using one of three keywords, OPEN, TIE0 or TIE1 to describe it. The reason
for this is it is now relatively common for a single die to be mounted in one of sev-
eral IC packages, where the pin counts may vary widely.
One reason to do this could happen when a die is made up of several identical
units (for example, a quad processor) and during die testing, it is determined that
only (say) dies 1 and 2 are properly functional. So, this die can be placed into a
smaller package and only those two die are wired up to package pins. However, the
die may have a full Boundary-Scan implementation inside it that doesn’t even know
about the “quad” nature of the device. Further, some of the die pads need to be con-
nected to voltage levels (power/ground are obvious) or left open. So, in the device
pin mapping, these otherwise abandoned ports are tagged with “open” or “tie” key-
words. For example, some unused input pads may be left unbonded (floating) so
they are marked “open”, meaning software should not predict a logic value being
captured on the associated Boundary register cell. Or, an input may be tied to
ground, so it could be marked “tie0”, meaning it will always capture a ‘0’. Similarly,
device outputs could be marked “open”, meaning the associated Boundary register
cells do not actually control anything—although if they are self-monitoring, soft-
ware could look for data if it so chose to do so.
11.4 Revisions to BSDL 407
Note it is an error to encode, for example, a port as “tie1” when its port type is
“power_0”, as this implies you have a logic ‘1’ level tied to ground. The three
new keywords are not allowed in association with the TAP signals TCK, TDI,
TMS and TDO. It is allowed to associate “tie1” or “open” with the TRST* TAP
signal, provided the device has an on-chip power-on reset capability. If a port
appears in a compliance port list then it cannot have “open” assigned to it—and if
such a port is set to “tie0” or “tie1”, then that should produce a compliance enabling
conditions.
Here is a partial BSDL description for an 8-bit register die that can be mounted
in either a full 8-bit package, or a 4-bit “nibble” package:
attribute PIN_MAP of ttl74bct8374: entity is
PHYSICAL_PIN_MAP;
constant Pack8:PIN_MAP_STRING:=
"CLK:1, Q:(2,3,4,5,7,8,9,10), " &
"D:(23,22,21,20,19,17,16,15), " &
. . .
constant Pack4:PIN_MAP_STRING:=
"CLK:9, Q:(open, open, open, open, 16, " &
" 17, 18, 19), " &
"D:(tie0, tie0, tie0, tie0, 2, " &
" 1, 26, 25), " &
. . .
In this example, the bit_vector ports Q and D both have 8 elements. In the P8
mapping, both are assigned 8 unique pins. In the P4 package, 4 of the Q output
ports are “open” and 4 of the D input ports are tied low. The remaining ports have
pins assigned.
The <register access description> syntax (see Sect. A.2.3) has been changed to
account for new “standard variable registers”, as differentiated from “standard fixed
registers”. Standard fixed registers are defined by the standard and all except the
Boundary register have a fixed, defined length. For example, the Bypass register is
always exactly one bit long, and the Device ID register is always 32 bits. A standard
variable register is defined by the standard (example, ECID) but its length and orga-
nization are variable from device to device. As before, there may be “design-specific
registers” which are not defined by the standard, but are allowed to be included in
the design and described (minimally) by BSDL.
Note that the <reg length> syntax item may now be an <integer> or filled in with
an asterisk (*), which is called a deferred length descriptor. If the length is deferred,
it must be specified later in either a register field description, or a register assembly
description.
408 11 IEEE 1149.1: The 2013 Revision
With the 2013 release, the Boundary register may now be of variable length27 due
to the segment exclusion capability.
As before, in the case of instructions marked “private”, they may optionally be
omitted from the register access description. If documented, they are required to
have a length specification, but it could be given there (as an <integer>) or specified
later with register descriptions.
The portion of BSDL that describes the Boundary register has been changed. First,
it is now able to describe “fixed” as well as “segmented” Boundary registers as
described in Sects. 11.4.14 and 11.4.15. So the syntax for the <boundary-scan reg-
ister description> seen in Sect. A.4 has also changed as described in Sect. A.2.4.
Next, the <cell entry> description has been augmented, with a new ability to
describe how input cells behave under certain connection conditions. The new
<input spec> syntax adds new keywords EXPECT0, EXPECT1, EXTERN0,
EXTERN1, OPEN0, OPEN1, OPENX, PULL0 and PULL128 in this area of the
description (see Table 11.3). These <input spec> keywords are associated with cell
functions of INPUT or CLOCK only, and describes what is captured by a cell when
the input pin is unconnected. A cell is unconnected when the pin is not connected to
a board signal, or when it is marked “Open” in a package mapping (Table 11.3).
27
Note the syntax shows the Boundary register as belonging to the set of standard fixed registers.
This is because its length is not described in the register access description area, but is described
later as shown in either of Sect. 11.4.14 or 11.4.15.
28
Note Pull0 and Pull1 already exist in the <disable result> field which is associated with drivers.
11.4 Revisions to BSDL 409
Board defects, such as broken traces or missing solder joints may cause cell dis-
connection. Knowing that an unconnected pin has a particular behavior can assist in
diagnosing such defects.
Take care, however, with inputs connected to upstream drivers that may be dis-
abled. What is the disabled driver’s leakage current while disabled? How might that
be perceived by an input marked (say) PULL0 or PULL1? Having these keywords
will help in many situations where, in the past, we could only assume “X” for a
cell’s content during testing. If we know a cell will actually contain predictable data
when it is open, we can find more defects. For example, if a device input pin is not
connected to a board signal (that is, its defect-free condition is open), it has an input
specification of Open1, and, a solder defect is shorting the pin to ground, then a test
will see a constant ‘0’ captured in the cell and can make a diagnosis. In the past we
would have predicted “X” and no fault would have been detected.
What is captured by a PULL0 input cell connected to a PULL1 driver that is
disabled? Again, it is not clear, and making a prediction either way could be an
error, so it is still an “X” in this situation.
Finally, the disable result keywords (see Table 2.3 on page 77) has been augmented
with two new values: Open0 and Open1. These values are only used in conjunction
with bidirectional signals where the on-chip driver is disabled and no board-level
signal is present. A single-cell bidir (like a BC_7) needs a disable spec, but also, we
would like to describe its input specification as well. This addition allows this.
Fixed Boundary register description is almost the same as in the pre-2013 versions
of BSDL. See the example shown in Sect. 2.3.13. This example is repeated here,
showing how the 2013 changes would appear in the register description.29
29
The input specifications added are speculative on the part of the author—only the IC designer
would know the correct values. They are added for illustration.
410 11 IEEE 1149.1: The 2013 Revision
Note that cell 17 now has a fifth “Pull0” word, which says the CLK input, if
unconnected, will load a ‘0’ into cell 17 upon every capture. There are two lines of
description for cell 16, due to its in/output control merger. The first gives its nature
as an input, and the cell will capture a ‘1’ if the pin is open. This would also imply
that the eight data outputs would be enabled if the OC_NEG input was left uncon-
nected. The second line of cell 16 description is unchanged, as this line describes it
control nature. Cells 9–15 are input cells, and they have “Pull1” words added, to
indicate that the data inputs will capture ‘1’ data if left unconnected. The eight data
outputs (cells 0–7) disable to ‘Z’ as before. Other values such as “Pull1” or “Weak0”
could appear there. However, “Open0” or “Open1” could not since these eight pins
are neither bidirectional nor self-monitoring.
30
The excludable segments are revealed in the register assembly description.
11.4 Revisions to BSDL 411
At this point, we don’t know which (if any) segment is excludable. We see four
segments, each of five bits. Yet the length min/max is 17/22, so some sort of exclud-
ability must be present. We also see unique port names, like E_D(0) or N_Q(1),
uniquely in each segment. Each segment has a cell table that starts numbering at 0,
up to 4. The driven ports all have control cells with the number ‘1’, and there are
four of them. Each cell table is an independent description. When the actual
Boundary register is assembled from these segments, then we get a new table with
sequential numbers, but we don’t yet know the ordering. Finally, why are there 22
cells for the maximum length, and 17 for the minimum?
412 11 IEEE 1149.1: The 2013 Revision
There are 20 cells described in the four segments. One segment is excludable,
and there are two additional cells used for domain control and segment selection.
That’s where 22 comes from, but we won’t see them until the register assembly of
the Boundary register is described, in the following section.
The assembly of a Boundary register from segments is a part of the overall register
assembly description discussed in Sect. 11.4.21. The Boundary register uses a small
portion of the assembly description capability, so, let’s finish the example
IC_NSEW of the previous section while it is still freshly in mind.
In a register assembly, the segment listed first is closest to TDI and the last seg-
ment listed will drive TDO. Within each segment, the cells can be listed in any
order, with the cell number identifying their actual order in the segment, with cell 0
being closest to TDO. Note all cell numbers must appear the tables.
The domain control cell is named PowerUp and controls a domain labeled
PwrEast. This cell is reset by TAPReset, so at power up, the PwrEast domain will
not have power. The segment select cell is named East_Start, it includes/excludes a
segment labeled SegEast, it resides in the PwrEast domain, and it is reset by
TAPReset. At power on, the segment SegEast is excluded. This cell should capture
the state of a PwrEast bit that we can look at to see if the domain is powered.
Now, what does the Boundary register look like with the East segment excluded?
Something like this31:
31
This is a visualization which is fairly close to a static cell table, except the domain control and
segment select cells (6 and 5) are descriptors since no such concept exists in static tables.
11.4 Revisions to BSDL 413
Cells 5 and 6 are the segment and domain control cells and appear between the
West signals and the South signals. Of course, no East signals are listed since that
segment is excluded.
So, what does the Boundary register look like with the East segment included?
Like this:
In this description we see all signals listed, but starting with the segment select
and domain control cells, we see they are re-numbered, to account for the insertion
of the East cells. Thus, the output signal N_Q(0) gets its data from a cell numbered
17 and is enabled by a cell numbered 21 when the East segment is included. But
when East is excluded, N_Q(0) gets its data from a cell numbered 12 and is enabled
by a cell numbered 16. This is why we need computers, to keep track of it all.
As time has progressed with Boundary-Scan technology, we have seen ICs devel-
oped where some amount of system clocking32 is needed to keep parts of the cir-
cuitry working, even in test mode. The 1149.1 working group has acknowledged
this truth and implemented a way in BSDL to describe where such clocking is
needed. This is the new SYSCLOCK_REQUIREMENTS attribute and the syntax is
detailed in Sect. A.2.5.
Here is an example of this attribute:
32
Note, this does not include the TCK clock.
33
The test engineer may have to provide this frequency from the tester or test fixture, or, he may
need to allow the board to provide it with its own oscillator that he must enable when needed.
34
We can guess from the names that they are for loopback and Bit-Error rate tests of some SerDes
channels.
11.4 Revisions to BSDL 415
The next five sections (Sects. 11.4.19 through 11.4.23) introduce new (optional) attri-
butes that greatly enhance the amount of information that BSDL can convey about
the structure, construction and content of test data registers. This information is ulti-
mately accessible to PDL routines (see Sect. 11.5) that can read/write or otherwise
manipulate the data. This data can be supplied at the entity level (the IC level) or at
the IP level, in the form of user-supplied packages. In the latter case, an IC integrator
may obtain IP from an external supplier that (for example) provides a proprietary I/O
functionality. The IP will supply the circuitry needed for this functionality, and, also
some portions of the Boundary-Scan circuitry needed to implement 1149.1 for that
I/O. This can amount to some Boundary register cells for drivers and receivers, and
perhaps some Init_Data register cells for providing setup information for those driv-
ers and receivers. The IP supplier does not know the overall IC functionality or which
I/O pins of that IC his IP will end up providing. When the IC designer integrates the
IP into the IC, then the I/O pins become known, as well as the position of the inte-
grated IP cells within the Boundary register and Init_Data register.
This new register descriptive capability can also be used to describe some amount
of mission functionality that may be useful for advanced functional testing of certain
device functions. A prominent example is for complex I/O functions that may be
capable of producing and receiving data via I/O protocols, such as “Serialize/
Deserialize” protocols35 (often abbreviated as “SerDes”). Indeed, some PLA-type
devices may offer a selection of protocols on I/O pins. Thus, by programming certain
bit patterns into various segments of an Init_Data register, you may be able to select
an I/O protocol, its voltage swing and clock settings for some of the pins on a device.
Then, a functional test can use this setup for testing the performance of the pins.
Register mnemonics provide a way to name bit patterns that can be assigned to
registers, or fields within registers. The name given is a <mnemonic identifier> (see
Sect. 11.4.5 and the syntax in Sect. Sect. A.1.4) and with it an <information tag>
(see Sect. 11.4.6 and the syntax in Sect. A.1.5) can be associated.
The new idea here is that we may need to know about the content of registers
used to set up working parameters for a test. The Init_Data register (see Sect. 11.3.4.2)
is the most obvious example, where data fields within this register may be used to
select driver voltage swings, receiver thresholds, functional I/O protocols, PLL fre-
quencies, etc. In pre-2013 Boundary-Scan, we only know that a register is targeted
35
Some examples are: Serial Advance Technology Attachment (SATA), 10 Gbps Attachment Unit
Interface (XAUI) and Serial RapidIO (SRIO).
416 11 IEEE 1149.1: The 2013 Revision
by a given instruction, and that it has some fixed length. Now we can see that the
register has a definite structure (see Register Fields in Sect. 11.4.20) with named
fields and we can label and identify bit patterns in these fields. The labels will (hope-
fully) have meaningful names like “725millivolts”36 rather than just raw bit patterns
like “0x6”. Tool makers can read the mnemonic information and combine it with
register field information to give users friendly GUI displays of the Init_Data regis-
ter content, what can be selected for each field and the tag information can also fill
in what the intent of the content is. The actual bits and how they are stored in the
register is a bookkeeping job for software to manage.
The syntax details for register mnemonics is given in Sect. A.1.6. Here is a simple
example of a single register mnemonic description:
36
Note this <mnemonic identifier> starts with a digit, which would not be allowed with a VHDL
identifier. The working group felt VHDL rules were too constraining in this context.
11.4 Revisions to BSDL 417
In this example, three mnemonic groups are named, ONOFF, CMV and SWING,
with 2, 2 and 4 mnemonic identifiers listed respectively. In this example, this attri-
bute is described within a package called “Serdes”, whereas in the previous exam-
ple, the attribute was defined at the entity level. The entity level is where an IC is
described, while a package is where IP provided by some supplier used in an entity
is described.
The syntax for register fields description is found in Sect. A.2.7, and it is complex.
Here are a number of examples with some drawings here to illuminate what is
going on.
The first is very basic. In Fig. 11.9 we see an IP that is being integrated into an
IC that implements some memory function, and this IP includes a memory test
capability that we can access from the 1149.1 TAP, via a MemTest register. This
register is divided into three fields. There is a 4-bit TestSelect field in the top bits,
followed by a StartTest bit used to initiate a test, and in the lowest bits, a 2-bit
TestStatus field. To run the test, you first scan in some algorithm control bits into the
TestSelect field, but a ‘0’ into StartTest and the bits that get sent to TestStatus are
ignored (it’s read-only). Next we scan in those same bits, except we put a ‘1’ into
the StartTest field. We then wait for a while and do another scan with those same
bits, but now we are interested in the TestStatus bits that come out. We check to see
if the test is complete, and whether it passed.
MemTest
Register
From Towards
6 5 4 3 2 1 0
TDI TDO
TestStatus
TestSelect Field
Field
StartTest
Attribute REGISTER _FIELDS of MemTest :Package is
“MemTest [7](” & -- 7 bit MemTest controller
“(TestSelect [4] is (6 downto 3)),” & -- Algorithm control
“(StartTest [1] is (2)),” & -- Initiate
“(TestStatus [2] is (1 downto 0)))”; -- Read only status
RegField1
Here it would be nice to have some register mnemonics to help us clarify what is
going on. Here is a possibility:
Given these mnemonics, we can improve the MemTest register field description
by adding a field option that assigns mnemonics, like so:
Now we have friendly mnemonic names to display for test selection or status
examination; that is, when a test completes and we scan out the status, we can show
“Passed” as the result rather than “0b01”. In this description, the TestSelect segment
is associated with the mnemonic named TESTSEL, and it is defaulted to “1-March”.
The StartTest segment is associated with the ONOFF mnemonic and defaulted to
“Stop”. The TestStatus segment is associated with the STATUS mnemonic and it
has no default value—this segment is not written, just read back. Notice that the
information tags on a given mnemonic can also be displayed to the user for yet more
user-friendly meaning.
The example in Fig. 11.9 showed the bits of the 7-bit MemTest register organized
with each segment laid out contiguously, and the attribute mimicked this layout by
enumerating them in left-to-right sequence. However, when register cells are
“stitched” together by layout software, it can happen that the bits are organized in a
way more convenient to the layout algorithm37 and the bits are thus “scrambled” as
we would think of them. This is illustrated in Fig. 11.10.
In this organization, only the top two significant bits of TestSelect and the
StartTest bit are where they were before. Looking at the register fields description,
we see the segments listed in a different order. No matter—the key is the bit assign-
ments reflect the re-organized layout. It is a software responsibility to take a bit
pattern like “0-March” (which is 0b1001) and load them into the four bits of
37
For example, the layout algorithm may be optimizing layout area and metallization length.
11.4 Revisions to BSDL 419
MemTest
Register
From Towards
6 5 4 3 2 1 0
TDI TDO
38
Yes, there are two Rs in the abbreviation, if not the name.
11.4 Revisions to BSDL 421
(g) DELAYPO, a register cell that delays any change that normally changes at
Update-DR, to two TCK cycles after that time. It is used to control potential
race conditions and is required for cells that control excludable or selectable
segments.
(h) NORETAIN, register field cells that may not retain their values when
excluded or not selected, including when not selected for scanning by the
current active instruction.
(i) SHARED, register field cells that are shared with mission mode functional-
ity and thus should not be scanned during mission mode operation.
(j) USER, as before in a value assignment (above) it attaches a user keyword to
a field.
4. A structural domain assignment option, used in register assembly descriptions
(see Sect. 11.4.21) which contains keywords:
(a) DOMAIN, the associated field are controlled, or controlled by named
domain, which has an on-chip power controller.
(b) DOMAIN_EXTERNAL, the associated field are controlled by the named
domain, which does not have an on-chip power controller.
(c) SEGMENT links with a specified name the SEGSEL with an associated
SEGSTART when a SEGSEL is not in the same TDR with the excluded
segment.
A register field description can name a known register defined by the standard, for
example, Device_ID, or ECID. In the first case, the length of the register is required to
be 32 bits. In the second case, the length must equal that shown in the Register_Access
attribute for the ECID_Code instruction, if it was actually specified there. If it was not
specified, that is, it was deferred “[*]”, then it must be provided in this description or
a subsequent register assembly description (see Sect. 11.4.21). Here is an example of
how the ECID register could be described in a register field description:
In this example, the attribute is provided in a user package, perhaps by the fabri-
cation factory for the device. The first two fields read out an IP identity code for the
device and its date (year/month) of fabrication. The next four fields give the lot
number, wafer ID name, and X/Y coordinates of the die.39 These are considered
39
This data might be set by masking options or by fusible links programmed at IC final test, or both.
422 11 IEEE 1149.1: The 2013 Revision
sensitive40 so they are encrypted. A board manufacturer could be asked to read out
the ECID and send it to the IC vendor, who could then decode the data for analysis.
There were two type assignments (Captures) included, but no others. For example,
in the last four fields, you could have seen NOPO or NOUPD listed. This, for most
testing purposes would be unnecessary clutter. It might only matter to the earlier
stages of the IP design where design consideration of the register fields are weighed.
In the syntax shown in Sect. A.2.7 we see several items having to do with “pre-
fix”. What are these? In modern designs, it is common to deal with design hierarchy
and IP from one source may incorporate IP from other sources, and those yet others,
such that when you want to refer to a field name deep down inside a design hierarchy,
you need to “get there” with a <prefix string> which may be set of <prefix identifier>
items separated with a period (.). Indeed, a design automation system may dump out
a listing of register bits like this41 as presented in 1149.1-2013:
510 TOP.n1.IO_Lane1.RX_cntl.deskew.Sequencer.state_machine_reg_Q(5)
509 TOP.n1.IO_Lane1.RX_cntl.deskew.Sequencer.state_machine_reg_Q(4)
508 TOP.n1.IO_Lane1.RX_cntl.deskew.Sequencer.state_machine_reg_Q(3)
507 TOP.n1.IO_Lane1.RX_cntl.deskew.Command_reg_Q(1)
506 TOP.n1.IO_Lane1.RX_cntl.deskew.Command_reg_Q(0)
505 TOP.n1.IO_Lane1.RX_cntl.deskew.Sequencer.state_machine_reg_Q(0)
504 TOP.n1.IO_Lane1.RX_cntl.deskew.Command_reg_Q(7)
503 TOP.n1.IO_Lane1.RX_cntl.deskew.Command_reg_Q(4)
502 TOP.n1.IO_Lane1.RX_cntl.deskew.Sequencer.state_machine_reg_Q(1)
501 TOP.n1.IO_Lane1.RX_cntl.deskew.Sequencer.state_machine_reg_Q(2)
500 TOP.n1.IO_Lane1.RX_cntl.deskew.Command_reg_Q(5)
. . . many skipped lines . . .
383 TOP.n1.IO_Lane2.RX_cntl.deskew.Sequencer.state_machine_reg_Q(5)
382 TOP.n1.IO_Lane2.RX_cntl.deskew.Sequencer.state_machine_reg_Q(4)
381 TOP.n1.IO_Lane2.RX_cntl.deskew.Sequencer.state_machine_reg_Q(3)
380 TOP.n1.IO_Lane2.RX_cntl.deskew.Command_reg_Q(1)
379 TOP.n1.IO_Lane2.RX_cntl.deskew.Command_reg_Q(0)
378 TOP.n1.IO_Lane2.RX_cntl.deskew.Sequencer.state_machine_reg_Q(0)
377 TOP.n1.IO_Lane2.RX_cntl.deskew.Command_reg_Q(7)
. . .
To interpret this data, we see register cell numbers (510, 509…) at the left. Then
the hierarchy is shown, as “TOP”, then “n1”, then “IO_Lane1”, then “RX_cntl” , etc/
until you finally reach a register bit name like “Command_reg_Q(1)”.42 Note that in
all the entries shown, “TOP” through “deskew” are always the same, except starting
40
Indeed, if sophisticated IC customers could see this, they might use this for their own yield
analysis to help them negotiate later contract pricing.
41
Only a small fraction is shown here. Apologies for the small font needed to make it fit.
42
While the leftmost register bits are numbered contiguously, the bit numbers you see in the indices
of registers are not. There is some data scrambling here.
11.4 Revisions to BSDL 423
In this example, the first PREFIX statements list, in ascending order, the prefix
names for each level of hierarchy from 0 (the top level) to 4, the lowest common
lower level. Below level 4 is one more level “Sequencer” for some “state_machine_
reg_Q” bits, and at level 4 are some “Command_reg_Q” bits. Before cell 383 is
described, PREFIX statements for levels 2–4 are re-issued. This overwrites “IO_
Lane1” with “IO_Lane2”, and the levels below “IO_Lane2 must be re-issued even
though they have the same names. The prefixes at levels 0 and 1 are unchanged.
Prefixes must always be provided in numerically ascending order, contiguously
from the starting level. If a prefix statement is issued with a minus sign (−) rather
than a name, then the prefix at that level and all levels below that (higher numbered)
are erased. In the example above, a “Prefix 3 (−)” statement would erase “RX_cntl”
and “deskew”, leaving just prefix levels 0, 1 and 2 in place.
To illustrate the simplification this gives, here is a bit of what the above attribute
would look like without the prefixes in place:
"(TOP.n1.IO_Lane1.RX_cntl.deskew."&
"Command_reg_Q [5] IS "&
" (504,500,503,507,506)), "&
. . . many MORE lines deleted . . .
"(TOP.n1.IO_Lane1.RX_cntl.deskew.Sequencer."&
"Sequencer.state_machine_reg_Q [6] IS "&
" (383,382,381,378, …)), "&
"(TOP.n1.IO_Lane1.RX_cntl.deskew."&
"Command_reg_Q [5] IS "&
" (377,380,379, …)), "&
. . . many MORE lines deleted . . .
" )";
Yes, the prefix statements are a bit of overhead, but later references are shorter
and more readable.
Perhaps the most important application of register fields to a test engineer will be
for its use in describing the content of the Init_Data register (see Sect. 11.3.4.2).
A register fields description can handle the description of non-contiguous or scram-
bled bits to define registers that are later used in a register assembly description of
Init_Data, that may describe multiple occurrences and arrays of such registers, so a
realistic example is provided in the standard. This is what it looks like:
In the above, we see Init_Data assembled from five register segments, starting
with the first, closest to TDI and the last closest to TDO. Now, the first four of these
segments are identical and contiguous, so, they could be more compactly described
with an array, as in the next example, which has an identical result.
In both these cases, no length specifications appear, we know the length of the
resulting register from the length details of the component segments. The length is four
copies of Channel (5 bits each for 20 bits) followed by ChCLock (5 bits) or 25 bits.
The 1149.1 standard has always allowed the sharing of register segments, to
compose registers of different lengths, with different names. See the example in
Fig. 11.11.
In this figure, three different instructions select Whole_Reg, Left_Reg or Right_
Reg. These three registers can be described by a register fields and register assembly
like this:
Of course, the component stages A–C and X–Y could all be larger registers than
just one bit. Here, all the bits of Whole_Reg are specified in the assembly—as
required by a register assembly.
The following example is that of a reasonably complex Init_Data register. It uses
field definitions for Configuration, Channel and ChClock given in the previous exam-
ple in Sect. 11.4.20. (The mnemonics used must have been defined previously.)
G G
External SegStart
Power Pin PonC For SegB
+ SegC
SSC
1 C C C C C C
Reg2 U U U U U U
SO 0
PwrDom
The register assembly description of this is shown next. Note there is a trailing reg-
ister association attribute (see Sect. 11.4.23) that tells us that SSC segment select bit is
associated with power port “Ext_Pwr_Pin”.
attribute REGISTER_ASSEMBLY of PwrDom:entity IS
"Reg1("& -- Two domain controls, 1 segment select
"(SegA_Pwr IS DomCtrl Domain(Dm1) CHReset), "&
"(SegB_Pwr IS DomCtrl Domain(Dm2) CHReset), "&
"(SSB IS SegSel Domain(Dm2) "&
"Segment(SegB) CHReset)), "&
"Reg2("& -- Three excludable segments, 2 seg selects
"(SSA IS SegSel Domain(Dm1) Segment(SegA) CHReset),"&
"(SegA[4]), "&
"(SegA_mux IS SegMux Segment(SegA)), "&
"(SSB_Start IS SegStart Segment(SegB) CHReset),"&
"(SegB[3]), "&
"(SegB_mux IS SegMux Segment(SegB)), "&
"(SSC IS SegSel Domain_External(Dm3) "&
Segment(SegC) CHReset), "&
"(SegC[5]), "&
"(SegC_mux IS SegMux Segment(SegC)) ";
11.4 Revisions to BSDL 429
C C C C C C
U U U U U U
From Seg2 M2 Towards
Seg1 M1 1 TDO
TDI F2
C C C C C C C C C C C C 1
C C C
U U U U U F1 U U U U U U U 0
U U U
0 G
SegIn Seg3 Seg4 SegOut
G
C C C C C
U U U U U
Seg5
RegAssy
This example lists the “Seg_In2Out” path first, which uses an as-yet undefined
variable “Seg_345”. Then “Seg_345” is defined next. These could have been
reversed which might make debug easier if there was a coding error that occurred
earlier in the code, but was not detected until later.
Now the same assembly could be coded in a “non-nested” way, by noting that the
two multiplexors in Fig. 11.12 essentially form a 3-to-1 selection function. It would
look like this:
attribute REGISTER_ASSEMBLY of Sel_Example:entity IS
"Seg_In2Out ("& -- TDI of overall register
"(SegIn [3]), "&
"(Seg1 [2], "&
"(SELECTMUX "& -- This is a 3-1 Mux
"(Seg2 [6]), "&
"(S34 IS Seg_34), "& -- Seg_34 defined below
"(S35 IS Seg_35) "& -- Seg_35 defined below
"SELECTFIELD(Seg1) SELECTVALUES((Seg2:0b1X)
(S34:0b01) (S35:0b00))), "&
"(SegOut [3])), "& -- TDO of overall register
"Seg_34 ((Seg3 [3]), (Seg4 [4])),"& --Seg3 defined
"Seg_35 ((Seg3), (Seg5 [5]))"; -- Seg3 referenced
Again in this example the definitions of “Seg_34” and “Seg_35” could have been
provided first.
Selectable fields also have the capability to shift data into more than one parallel
path while just one is being shifted out. For example, in Fig. 11.14 we see a pair of
identical IEEE 1500 assemblies inside an IC that are part of a register selection
WSPAWSPB
P1500 P1500
Assembly Assembly
Core Core
SI SO SI SO
3
2
WSP_Sel SO
1
SI C C 0
U U 1
G
0
BroadCast
structure. Since the assemblies are the same, you can load data into them both with
one set of scan operations. This might be a significant time saver, for example, if
you want each unit to run a set of internal BIST tests in parallel rather than
sequentially. Of course, when it is time to read out results, they will have to be
accessed sequentially.
The 3-bit WSP_Sel register selects which assembly will put data on the SO line.
Here is the description of this case:
Attribute REGISTER_MNEMONICS of MyIC_1500:entity is
"WSP ( "&
" None (0B00) <Bypass both WSPs>, "&
" WSP1 (0B01) <Select WSPA>, "&
" WSP2 (0B10) <Select WSPB>, "&
" Unused (0B11) <Do not use> );
In this example, the two broadcast statements identify the register used to select
the parallel elements, and which values of this register that will enable parallel load-
ing of which parallel elements. In this case, whenever either of the WSP units is
selected for TDO connection, both units are loaded with scanned in data.
43
It is perhaps confusing that for excludable segments, the word SEGMUX identifies the location
of the exclusion mux, which terminates the segment. For selectable segments, the word
SELECTMUX marks the start of a list of parallel segments and SELECTFIELD marks the end.
432 11 IEEE 1149.1: The 2013 Revision
is performed. If the expression evaluates to TRUE, then that data should not be
scanned into the TDR, or, scanned in at your own risk.44 A severity level and infor-
mation tag are supplied with the expression to assist with such a decision. The
severities come in three levels: INFO, WARNING and ERROR—with ERROR
being indicative of action by the user, that is, they should not execute a scan. The
complete syntax is shown in Sect. A.2.9. Note that the logical expression formula-
tion is adopted from Sect. 11.2 of SystemVerilog [IEEE12a].
These expressions can be complex, allowing logical operators on True/False
variables, arithmetic operations, data shifting, and bitwise logical operations. It is
most likely that practical constraint equations will be simple logic statements. Here
are two examples adapted from the 2013 version of 1149.1.
In the first example, imagine an IC with two power domains A and B within it
which it controls—with the constraint, governed by circuit limitations, that only one
domain can be powered at any given time. The DomCtrl cells to enable power are
found in the Init_Data register by the field names PDA and PDB, and there is a
mnemonic “PwrOn” which requests power turn-on. But such a request cannot be
accomplished by the hardware. Here is the attribute:
This expression shows a field PDA being logically compared (using the “==”
operator) to a mnemonic value PwrOn, which is surrounded by brace characters to
indicate it is a mnemonic. If both PDA and PDB are equivalent to the PwrOn mne-
monic, then the “&&” operator will see TRUE values on both sides and the expres-
sion is TRUE. This says an ERROR should be indicated, along with the information
tag explaining the situation.
It is becoming more common now to use the Boundary-Scan facility as a way to
configure functional tests. The second example shows a case where the Init_Data
register controls some functional parameters of some driver IP circuitry, namely, the
driver swing and transmission protocol. Here is an example of some information to
warn a test engineer about some limitations of the IP.
attribute REGISTER_CONSTRAINTS of My_SERDES:package is
"Init_Data (" &
"((TX_Swing=={200mv})&&(Protocol=={SRIO})) "&
" WARNING <A differential Swing of 200mv is not "&
"robust with SRIO. The driver will do it, but "&
"communication may have elevated error rates.> )";
44
You may have specific knowledge about what the constraint pertains to and why it could be
ignored, but in general, without such knowledge the condition should be avoided.
11.4 Revisions to BSDL 433
Attribute REGISTER_ASSOCIATION of
Init_Example:entity is
"VSEL_bits (4) : port (PwrUp_IO_VSEL(4)), "&
"VSEL_bits (3) : port (PwrUp_IO_VSEL(3)), "&
"VSEL_bits (2) : port (PwrUp_IO_VSEL(2)), "&
"VSEL_bits (1) : port (PwrUp_IO_VSEL(1)), "&
"VSEL_bits (0) : port (PwrUp_IO_VSEL(0)), "&
"SerDesChannel(0) : port "&
"(IO_TXP(0),IO_TXN(0),IO_RXP(0),IO_RXN(0)), "&
"SerDesChannel(1) : port
"(IO_TXP(1),IO_TXN(1),IO_RXP(1),IO_RXN(1)), "&
. . .
"SerDesChannel(16): port
"(IO_TXP(16),IO_TXN(16),IO_RXP(16),IO_RXN(16)),"&
"SerDesChannel(17): port
"(IO_TXP(17),IO_TXN(17),IO_RXP(17),IO_RXN(17))";
So here we see the five read-lnly VSEL_bits enumerated, and each is observing
a power pin from the port bit_vector PwrUp_IO_VSEL. If we scan out the Init_
Data register and see a bad VSEL_bits value, we can “look up” what IC pin this
monitor was observing. The second section of the data shows how a group of 18
SerDesChannel controls are associated with differential I/O pin drive and receive
pairs. Thus if we see (say) a driver pair misbehaving, we can link it back to a
particular SerDes channel controller. In this example, we see the “Port” keyword in
434 11 IEEE 1149.1: The 2013 Revision
the association list. Other keywords, “Info”, “SysClock”, “User” and “Unit” may
appear. Here is what they mean:
1. Port: Links device pins to register bits that are in a control and/or observe rela-
tionship together, or have other more parametric effects. For example, a register
bit may enable/disable a pull-down on a device pin.
2. SysClock: Links device pins to register bits (like Port) but with the special inten-
tion of showing clocking relationships. The pins identified must have already
appeared in a SYSCLOCK_REQUIREMENTS attribute (see Sect. 11.4.17).
This list shows which register bits are clocked by which system clock pin.
3. Info: Links text strings (<info tag>) with register fields or bits. This allows label-
ing of fields and bits used in functional testing or BIST applications.
4. User: Allows a component supplier to provide one or more named lists of identi-
fiers or even text string with register fields or bits. This allows for design-specific
or tool-specific communication within a user community.
5. Unit: Links a “unit description” with a field for interpreting the value contained
in that field. The unit description is a machine-readable format standardized by
the IEEE 1451.0 standard [IEEE07].
An example of a unit specification is:
Attribute REGISTER_ASSOCIATION of MyChip : entity is
"frequency:unit(KHz "&
" {0x00808080807E8080808000 1.0E+3} ), "&
"phase:unit(ms "&
" {0x0080808080828080808000 1.0E-3} )";
The content of the hex string is documented in IEEE 1451.0, and is not human
compatible.
Next see an example of a Power_Port_Association attribute, where three refer-
ence voltage pins are mapped onto the pins they affect.
attribute POWER_PORT_ASSOCIATION of MyChip:entity is
"DDR_REF1:( DDR_DATA(3), "&
" DDR_DATA(2), "&
" DDR_DATA(1), "&
" DDR_DATA(0)), "&
"IO_REF1:( SERDES(0), SERDES(1)), "&
"IO_REF2:( SERDES(2), SERDES(3))";
In this example, power ports DDR_REF1, IO_REF1 and IO_REF2 provide ref-
erence voltages to a total of eight pins. If any of these pins should fail (during test
debug or actual testing) then this information can supply useful clues as to what
might causing the problem—sometimes an open solder joint on an isolated power
pin is the reason you can’t get a Boundary-Scan test on some signals to work.
11.5 The New “Procedural Description Language” (PDL) 435
The BSDL language has been around since 1994 (officially) to document the fea-
tures of an 1149.1 implementation within an IC. With the 2013 release, BSDL was
given much more structural information content about registers and the fields within
them, as well as data patterns (mnemonics) that can be used in those registers.
However, with the weak exceptions of the RUNBIST_EXECUTION and INTEST_
EXECUTION attributes (see Sects. 2.3.14 and 2.3.15), BSDL does nothing to
describe how activities are done. With the 2013 release of the standard, a Procedural
Description Language is introduced that allows the documentation of how to use
1149.1 registers and instructions.
Now, for operations using EXTEST for structural testing, or, reading out the
Device_ID register, the use of the instructions is basically inherent as it is part of the
“DNA” of the standard. But for non-standard public instructions, especially those
that can be used to support various gradations of functional testing, it is very impor-
tant to know how to set up and use such features.
In the earlier days of the standard, private features were inserted into 1149.1
implementations that the IC vendor might find handy for their own purposes. These
were hidden from the user’s view. However, in time, users became very vocal about
wanting to use those functions for the support of functional testing. For example, a
device might be able to produce a pseudorandom bitstream of data on a differential
driver, and another receiver (on that IC or a different IC on a board) might be able
to coordinate with that bitstream to perform a Bit-Error rate analysis on a differen-
tial receiver. Users would find out about this and demand access to such functional-
ity. For a while, such features were enabled by passing “secret” pattern sets around
that would set up and kick off such tests. It was very difficult to know what those
pattern sets were really doing, as they could amount to setting up private registers
(using private instructions), then loading new test instructions and doing more
scans, supplying a bunch of TCK and/or system clocks, then reading out data
(maybe using other instructions) to see if a certain bit pattern was observable some-
where in the sea of bits so obtained. This process is wildly prone to error, especially
when you have several IC you are trying to coordinate within a chain of several (or
many) other ICs that will need to stay “out of the way” while all this is going on.
There may be some number of instruction register scans interspersed with scores of
data register scans. How do manage this?
Procedural Description Language is an important step towards making functional
usage of internal IC facilities possible. Of course, IC vendors can still hide some of
their proprietary functions by declaring the related instructions “private”, but now
they have the option of documenting those instructions and their target registers and
register details to the general public (in BSDL) and how such facilities are used, in
PDL. PDL is intended to utilize the structural information provided by the new reg-
ister attributes (see Sects. 11.4.19 through 11.4.23) now available in BSDL. It is
used to describe how to load and/or unload register fields independent of packaging
level, that is, you can write a PDL for an entity (IC) or for a package (IP). It is
436 11 IEEE 1149.1: The 2013 Revision
intended that IP be supplied with PDL for its feature set, which can be utilized by
higher hierarchy levels, all the way to the IC level, without modification.
PDL follows the conventions of the (open-source) “Tool Command Language”
(Tcl)45 and designed to be an extension of Tcl. PDL is defined in two stages, called
Level-0 and Level-1. Briefly, Level-0 PDL does not allow embedded Tcl com-
mands, while Level-1 PDL does. (Later, Sects. 11.5.2 and 11.5.3 give rationale and
details of each.)
Level-0 PDL is intended to “keep it simple” so that it can describe straightforward
loading and unloading of registers or fields within. It is stated in the 2013 standard
that Level-0 is intended to support “load-and-go” automatic test equipment.46
Basically, this view of test is that of loading bit patterns into registers, passing from
Update-DR to Capture-DR and reading captured bits out for immediate comparison
to expected bits and recording simple pass/fail results. There is no passing of actual
readout data back for analysis, and only the most primitive if-then-else sequencing
of test activities. Basically, it supports pass/fail testing, perhaps as simplistic as
“stop-on-fail” testing at the point where a miscompare on scanned out data is first
seen. Such test schemes do have advantages of execution speed and throughput.
Level-1 PDL is intended to support more advanced diagnostic, debug and test
procedures where interactive or complex if-then-else action sequences are employed.
It is a superset of Level-0 PDL. It allows the full Tcl language for manipulating data
and making complex decisions. Basically, it is more of an interpretive approach and
will not normally achieve higher speed or throughput. None-the-less, it is very capa-
ble of sophisticated test activities, particularly those needed for functional testing.
The bottom line is PDL is the official language for documenting and exchanging
IEEE 1149.1-compliant procedures in a standard format. That said, PDL routines
could be called from or translated to other languages, if needed. The following dis-
cussion is a very brief description of the PDL language. Serious users of PDL should
always consult the standard for full details.
PDL is an environment where we can describe what we want to do with a scan chain
in terms of loading fields within it with data to shift in, and data we expect to see
coming out. This means we need to specify target registers, and this in turn implies
an instruction that must be in the Instruction register. In the case where there may be
several instructions that target the same register, we need to specify which to use.
PDL is also an execution engine linked to test hardware that does the actual 1149.1
I/O protocols.
45
Often pronounced as “Tickle”, there is no standard for Tool Command Language. A websearch
for useful syntax guides currently yields these: http://wiki.tcl.tk/299 and http://wiki.tcl.tk/10259.
It is widely used in engineering circles for developing executable programming scripts.
46
The standard does not define what the term “load-and-go automatic test equipment” means.
11.5 The New “Procedural Description Language” (PDL) 437
Bypass 0
Device_ID 0 0 1 0 1
Boundary X X X X X
Init_Data X X X X X
My_TDR X X X X X
PDLFrame
Exclusive-ORing the TDO stream with expected data and using the mask data to
zero-out bits that are don’t cares. Thus, when an iRead action is specified, it loads
0/1 data bits into the expect data register, and also 0/1 bits into the mask register.
Expected 0/1 bits load those bits into the expect data register, and ‘1’ bits into the
expect mask. Any ‘X’ bits produce ‘0’ bits in the mask, so that a difference at the
XOR gate for that bit position is zeroed-out. The fail data register records ‘0’ for
passing (matching) bits and ‘1’ for failing bits. Using captured data with failed data
gives us enhanced diagnostic information.
Figure 11.16 notes that the capture data and fail data registers are not used by
Level-0 PDL, only Level-1 uses this data. The two fail flag bits are all that Level-0
PDL sees. The “local” flag is set to ‘1’ if any bit failure is seen during a single iAp-
ply action and it is automatically initialized to ‘0’ at the start of each iApply action.
The “accumulated” flag is set to ‘1’ for any fails seen in a set of consecutive iApply
actions, and it must be explicitly set to ‘0’ before such a set is applied.
Note also that the output data, expect data and expect mask data registers have
data shifted into them during iApply. The output data register content is cycled back
to the register’s input, so upon completion, the original data is still there. This gives
“sticky” behavior to the output data register, meaning any new iWrite actions per-
formed will only update targeted fields and the rest is retained. The expect data and
mask registers are zeroed-out. Thus, for a new iApply action that occurs without
updating the expect registers with iRead actions, no failure will be indicated (the
mask is all-zero). There is an exception to this however; if a field has a “Captures”
specification, then the capture value will be restored to the field.
Now, just when you think you have command of these concepts, something
comes along to upset that view. What if the TDR that was recently updated with
iWrite/iRead actions is not the target of the presently loaded instruction? What
about segment exclusion and domain controls? Indeed, it is the responsibility of
iApply to keep track of this information (as part of the PDL scan frame data) and to
perform extra IR or DR scans such that the final result is achieved. For example, if
an iWrite puts new data into a register segment that is currently excluded, then that
means the excluded segment must be brought into the shift path before we can actu-
ally get the data into it. To do that may mean writing bits to a different TDR where
the domain and segment controls reside. But to do that will mean loading a different
instruction into the IR. Then the segment in the first TDR can be included with a
data scan that sets the needed bits, while keeping the other bits unchanged (they are
sticky). Once done, iApply must switch back to the first TDR again with another IR
scan to load the needed instruction. Now, finally, iApply can do the DR scan for the
iWrite data that started all of this.
So, a single iWrite/iRead can generate a lot of ancillary activity during a subse-
quent iApply. Indeed, Annex E in IEEE 1149.1-2013 contains a 2.5-page long block
of pseudo-code that in very condensed form lays out the iApply actions. It contains
13 if-then-else statements, a while-loop, and can exit with errors in two places.
A long note at the end of this passage warns the user that ambiguous results are
possible having to do with the order segments might be included. It offers some
clues to the PDL writer about how to remove potential ambiguities, but this is small
11.5 The New “Procedural Description Language” (PDL) 439
comfort. The downside of this is that two tool vendors could, in good faith, read the
same PDL but execution seen at the UUT level could be quite different between the
two. Could the end results be different as a consequence? If the difference was
consequential, who is “right”?
Being aware of this issue, a PDL coder could try to head off trouble by specify-
ing actions in other registers by expressly writing to them and issuing iApply
actions, one at a time rather than allowing iApply to do it all behind your back.
That’s a bit of pain, but it could lead to fewer support problems and finger-pointing
between users, IC vendors, IP providers and tool makers.
PDL is a scripting language with some significant differences from BSDL that need
to be kept in mind. There is a liberal use of curly brace characters “{“ and “}” in
PDL which are called <L brace> and <R brace> in syntax descriptions.
First, it is important to know that PDL is a string of characters containing one or
more “commands”. These are separated by semicolons and newlines.47 Every com-
mand is composed of a sequence of “words”, where words are separated by “white
space”. White space is composed of spaces and horizontal tabulation characters.
Commands that exceed a comfortable line length can be expressed across multiple
lines by using “backslash-newline” characters. When a command is parsed, the
backslash-newline characters are eliminated (replaced with a space) so that the
entire command appears on a virtual line, before the command is then broken into
words. (Do not break an intended word into two words by careless use of backslash-
newlines when writing PDL.) The first word in the command is the name of a com-
mand processor. The processor is called to perform actions using the remaining
words in the command.
Once the command is broken into individual words, other substitutions are then
performed. A value substitution for words containing a dollar sign ($) is used to
replace a portion of a word with the value of an identifier. For example, here are two
words, each containing a dollar sign: “ My$reg $code”. If these appear within a
procedure with parameters “reg” and “code” with values of “Protocol” and “0xa3”
respectively, then value substitution is performed verbatim and yields: “ MyProtocol
0xa3”, and these newly formed words are processed as part of the command. In
Level-0 PDL, value substitutions are limited to parameter values or default values.
More complex substitutions48 are not allowed. Do note that if the value of a param-
eter contains spaces, then the verbatim replacement will also contain those spaces,
but, the result is still considered one word. (Now, how could that be confusing?)
47
An end-of-file marker (EOF) is treated as a newline.
48
Examples are provided by the standard, such as $name(index) and ${non-PDL name}. Level-0
PDL is deliberately designed to be very simple since it is the principle method for conveying pro-
cedural information from vendors to users.
440 11 IEEE 1149.1: The 2013 Revision
When a word starts with a double-quote (“) character, it must terminate with a
double-quote. Other characters like semicolon, close brackets, white space or
newline are treated as ordinary characters, but substitutions are still performed. The
double-quotes are removed before the word is passed to the command processor.
If the word starts with a left brace ({) and ends with a right brace (}), then no sub-
stitutions are performed within the braces, except for backslash-newline replace-
ments. The braces are removed before the word is passed to the command processor.
Comments can be placed inside PDL, but they must start with the hash mark (#)
and this character must appear where parsing is expecting the start of a command. All
characters up to a trailing newline are part of the comment. Thus a comment can start
a new line, or may follow a semicolon, but cannot break a command into two parts.
PDL does not possess the concept of a “string”. Every “word” may be enclosed
in double-quotes (“”) or curly braces ({}). They are discarded. Thus the two follow-
ing commands are equivalent:
iWrite myreg 0xAC09
“iWrite” {myreg} “0xAC09”
PDL has no formal reserved words, except for those that start with “STD_1149_”.
PDL has <PDL identifiers> and these are case sensitive, unlike <VHDL identifier>
elements, but are more liberal with regard to underscore (_) characters, allowing
trailing or consecutive underscores.
PDL supports the definition and usage of callable test procedures. The form for
these is given here as:
iProc <proc_name> <proc_options> { <arguments> }{ <PDL commands> }
Notice: This is not formal syntax, and it should not be confused with the syntax
expressions used to describe BSDL. A formalized49 syntax for PDL can be found in
IEEE 1149.1-2013, Annex C.
Here we have a mandatory procedure name <proc name> which is a PDL identi-
fier, followed by zero or more <proc options> which are PDL identifiers prepended
with a dash (–) character. Examples are “-info”, “-export”, “-TRSTreset” etc. Then
there is a first set of curly braces which enclose zero or more arguments. Next is a
second set of curly braces which enclose a set of PDL commands.
PDL procedures may call other procedures using iCall commands. Level-0 PDL
procedures do not return values nor do they manipulate variables seen outside of them.
The standard defines several PDL procedures that are intended to support ICs
that have various features. For example, an IC may implement the “INIT*” family
49
PDL is based on Tool Command Language (Tcl) which has no “formalized” definition itself.
Annex C provides useful definitions that are helpful for tool implementation.
11.5 The New “Procedural Description Language” (PDL) 441
of instructions that target the Init_Data and Init_Status registers. The IC vendor
would then supply procedures to read/write these registers, using register mnemon-
ics, register fields and/or register assemblies provided in the BSDL for that IC.
Further, IP providers might supply so-named procedures for their pieces of Init_
Data, also using their register definitions. The IC level routines would make appro-
priate iCalls to these routines.
These defined PDL iProc procedures (which are spelled in lowercase) are:
• “init_setup” is intended to set up various I/O parameters that can be controlled
from the Init_Data register. When there are choices for parameters, such as volt-
age drive levels, then the most common might be set as a default, and a user
might want to choose alternates as needed by his board testing problem. This
might be as simple as changing a mnemonic name used in the procedure body.
The goal is to prepare the IC for EXTEST-based test. Note that the procedure
may have the choice of using INIT_SETUP versus the INIT_SETUP_CLAMP
instruction. In the latter case, a Boundary register preload might be needed, and
the user would investigate what that entails.
• “init_run” will document the activities needed by the INIT_RUN instruction to
get the IC into testing condition, where clocking or other sequential stimuli are
needed to complete initialization.
• “ecid” will document reading out the ECID_code register using the ECID
instruction.
• “main” will document other tests that are provided by the IC (or IP) that would
probably be run after interconnect testing, if desired. For example, the IC might
contain two instances of a memory IP, for which the IP supplier has implemented
a BIST routine. The IC level main would call the BIST routine for each block.
There are numerous PDL Level-0 commands and they are organized in groups for
procedure definition, test setup, test execution, flow control, optimization, miscel-
laneous and low-level.
Procedure definition commands appear at the top of PDL code file. Remember PDL
routine names are case sensitive.
• iSource: This optional statement takes a single <PDL file name> parameter. This
is an “include” statement that copies PDL code from a file inline. All PDL proce-
dures must be defined before being called.
• iPDLLevel: has two parameters, a <level> which is 0 or 1, and a <1149.1_ver-
sion> which identifies the version of the standard this file adheres to. Currently,
only “STD_1149_1_2013” is a recognized version.
442 11 IEEE 1149.1: The 2013 Revision
• iProcGroup: takes a single parameter, the name of the entity, package or instance
name the following iProc procedures are associated with.
• iProc: one or more PDL procedures, each with a <procedure name>, zero or
more <options>, then zero or more <arguments> enclosed in curly braces, and
then a set of <commands> enclosed in curly braces.
Test execution commands appear within iProc procedures. Note that except for iAp-
ply, these commands do not cause tester hardware to manipulate UUT signals. They
set up the register image with data to either write and/or expect. It may take a num-
ber of iWrite, iRead and iScan calls to set up this data before the iApply command
takes charge and causes hardware activity.
11.5 The New “Procedural Description Language” (PDL) 443
(see Sect. 11.4.22) and if the constraint evaluates to True, with a severity level of
error,50 then the shifting is not performed and the test is halted.
In the iWrite command, we saw keywords -reset, -default, or –safe. These have
to do with specific cases in certain registers. If the register being written to is the
Boundary register and the keyword is -reset, then if a cell being written is of type
ControlR, then the <safe bit> for that cell is inserted (see Sect. 2.3.13). If a
Boundary register cell is specified and either –default or –safe is specified, then the
<safe bit> for that cell is inserted. If the register being written to has been specified
with a <value assignment> (see Sect. 11.4.20) of RESET, SAFE or DEFAULT, then
the specified value is inserted.
The iApply command keeps track of the current TAP state (see Sect. 1.3.1) and
maneuvers through the TAP state diagram like so: When there is a –shiftPause
option on the command for the first time, the TDR is shifted in/out and the TAP is
left in the Pause-DR state, where a subsequent iApply would resume shifting more
data using the Exit2-DR and Shift-DR TAP states. This can be useful when you are
trying to test a register that has a “length problem”, for example, some excludable
segment is missing. If –shiftPause is not specified, the TAP is left in the Run-Test/
Idle TAP state, unless the –skipRTI option is specified. Some instructions use the
Run-Test/Idle TAP state to perform actions that take some number of clocks and/or
time to occur, and we would want to control these actions explicitly. But when –
shiftPause is not present and –skipRTI is, the standard requires the iApply com-
mand to stop in the Pause-DR state anyway.
The iApply command is charged not only with shifting data into a TDR, but with
managing the instruction register and any selection or exclusion controls needed to
get data to a register. (This is laid out in detail in Annex E of 1149.1-2013.) This can
get complicated. For example, say an iWrite has specified a data field in a TDR that
resides inside an excludable segment. The tool reading the PDL would have to sense
this, and figure out where the exclusion control bits are; and let’s assume they are in
some other register. So, the iApply will have to go to that register and set (a virtual
iWrite) the control bits. But before it can shift that data, it has to load the instruction
register with an instruction that accesses that TDR, so an IR-shift operation first
happens, then the data shift can be done to get the excludable segment included
(back in that first register). Now, we have to do another IR-shift to get the first
instruction back again to access that first register. Now, we can finally do a data scan
to the formerly excluded segment. So what seemed like a single TDR scan turned
into an IR-scan, followed by a DR-scan, followed by another IR-scan and finally,
the DR-scan we originally wanted.
The iApply command can appear in a Level-1 PDL routine. When it does, it also
manages the two addition registers shown in Fig. 11.16, the raw output data from
the device, and a pass/fail indication register showing the bits that mis-compared.
50
If the severity level is warning or info, then the action taken is left to the tool’s discretion.
11.5 The New “Procedural Description Language” (PDL) 445
Another caveat about iApply needs to be stated. The standard says little about the
“end state” of iApply activities. Indeed, the term “ending state” is used in Annex E
without definition. Now in the –skipRTI and –shiftPause forms of iApply, the end
state is defined as Pause-DR. However, the standard is silent on what the end state
would be for a “naked” iApply statement (no option given). This can matter to the
author of PDL, especially if the execution engine (the tester) being driven by PDL
has its own definition of “ending state”. For example, one form of tester may be able
to stop TCK (in the low state) while decisions are made about where to go next in
the state diagram. Thus, it could stop in Update-DR, where it could restart after
choosing to go to Run-Test/Idle, or Select-DR-Scan. This means that iApply would
perform a full Capture-Shift-Update sequence. But on a tester that always has TCK
free running, it can only stop in a Pause-xR state or Run-Test/Idle. In the first case,
the final Update-xR state passage occurs on the next iApply (or trip to Test-Logic-
Reset). In the second case, the state machine passes Update-DR and is spinning in
Run-Test/Idle, which for some instructions means something is getting clocked by
TCK. So, it may be problematic to be casual about this end state issue. Knowing
what your hardware will do may make a difference in how you code your PDL. What
then do you as (say) an IP provider do when you don’t know the target machine? It
may behoove those in such situations to write very simple PDL, complete with
warnings to the user about end-state assumptions.
• iLoop: This command is paired with the iUntil command (next). The two com-
mands enclose a block of commands that are to be executed at least once and
possibly more times until a termination condition occurs, as determined by the
iUntil command. The iLoop command has no parameters.
• iUntil: This command is paired with the iLoop command (above), and deter-
mines if the commands between iLoop and iUntil will be executed again, succes-
sively until a termination condition is met. When met, commands following the
iUntil are executed next. The iUntil command is followed by a <condition> and
an optional <timeout> specification. The <condition> is either the –match or –
mismatch keyword. The <timeout> specification is the keyword –maxloop fol-
lowed by a <maxcnt> and optional text string. The <maxcnt> is an integer
specifying the maximum times the loop will be executed before stopping with a
“Fail” indication. If a loop times out, the optional text string will be passed to the
user as an explanation. The commands between iLoop and iUntil must have
included at least one iRead or iScan, with an iApply called to possibly set the fail
flag. On a –match condition, the loop will execute again if the iApply set the
local fail flag. On a –mismatch condition, the loop will execute again if the local
fail flag is not set. Note the commands between iLoop and iUntil may not be
conditional (iLoop, iUntil, ifTrue, ifFalse or ifEnd) nor low-level commands
(iTMSreset, iTRST and iTMSidle). Timeout conditions protect against the pos-
sibility of an infinite loop.
• ifTrue: The ifTrue command heads a list of commands, followed by either an
ifEnd command, or an ifFalse command which head a list of commands followed
by an ifEnd command. (See ifFalse next.) The ifTrue command checks for the
state of the local fail flag being True, and executes the following commands
when it is True.
• ifFalse: The ifFalse command heads a list of commands, followed by either an
ifEnd command, or an ifTrue command which head a list of commands followed
by an ifEnd command. (See ifEnd next.) The ifFalse command checks for the
state of the local fail flag being False, and executes the following commands
when it is False.
• ifEnd: The set of three “if” commands are used to form classic “if statements”
and “if-then-else statements. Either ifTrue or ifFalse may be paired with subse-
quent ifEnd command. Or, both an ifTrue and ifFalse may precede an ifEnd
command. No other mix is allowed (no nesting), nor is a iLoop/iUntil structure.
When a set of commands is to be skipped, all of them until the following “if”
command are skipped. Clearly, a command (like iApply or an iProc containing
an iApply) that sets or clears the local fail flag must have been executed ahead of
an “if” structure for it to be useful. No “if” commands are allowed within an
iMerge block (see Optimization commands).
Here is an example of some flow control where we are looking for an event to
occur in response to a stimulus. If the event does not occur, we time out.
11.5 The New “Procedural Description Language” (PDL) 447
iProc TurnOnVref { } {
iLoop ; # Loop until non-zero voltage appears
iWrite ADDRESS VREF_ADDR
iWrite WE 0
iApply
iWrite WE 1
iApply
iRead VREF-VOLTAGE 0x00;# Loop until VREF is ON
;# (a non-zero value)
iApply –nofail; # don’t accumulate fails
iUntil -mismatch -maxloop 10 “VREF never turned on”
}
iProc initial { } {
iRead fuse(0) 0b0
iApply –nofail; # Don’t accumulate failure
ifTrue ; # Rev 0 has a limited feature set
iCall init_setup1; # Setup for Fuse = 0
ifFalse; # Rev 1 has larger feature set
iCall init_setup2; # Setup for Fuse = 1
ifEnd
}
11.5.4.5 Optimization
Optimization commands appear within iProc procedures. These allow a PDL pro-
grammer to “offer guidance” for tools that can optimize execution performance. As
such, they are useful in a given tool environment where a PDL programmer is con-
fidently familiar with how optimization is performed. Optimization cues placed in
PDL code in one tool environment might not be effective in another tool environ-
ment with different optimization capabilities. The tool environment may have on/
off controls for optimization to help in cases where test outputs seem to be affected
by optimization, which may prove difficult to debug.
• iMerge: The iMerge command has two options, -begin and -end, and are used
in begin-end pairs to surround a block of PDL code that can be executed in
parallel. For example, imagine an IC which contains two instances of an IP
block that have an internal BIST function. The designer knows these two func-
tions can be executed in parallel, so before the two iCall statements are written
to call those functions, an iMerge –begin is written, and after the second func-
tion call, an iMerge –end is written. The optimizer would then wind its way
448 11 IEEE 1149.1: The 2013 Revision
into the two called procedures and line up the various iWrite, iRead, iScan and
iApply statements it finds to execute them in parallel. Note that the iRunLoop
statements in the two routines can be executed in parallel, saving overall run
time. However, conditional statements are not allowed within an iMerge block.
• iTake: The iTake command claims a resource, which a later iRelease command
can release. The idea is that if procedures are being merged, a portion of code
inside an iTake/iRelease pair (with the same resource) within each procedure are
not to be merged, but executed separately. This allows some fine tuning of a
merge operation to be specified by a PDL programmer. See iRelease for more
discussion on resources.
• iRelease: This command releases a resource claimed by iTake, above. A resource
may have three forms: a –register resource, a –port resource, or it can be a –
name resource. The word following these keywords is a register name, port ID
or a PDL identifier, respectively. Register or port names may be a fully qualified
path passed to the procedure it is in or as established by iPrefix commands. Note
that iTake and iRelease commands of a given resource must both appear inside a
procedure. A name resource is a PDL identifier that is the same when used in a
set of PDL procedures for a UUT. (It does not appear in BSDL.)
11.5.4.6 Miscellaneous
11.5.4.7 Low-level
Low-level commands appear within iProc procedures. These allow some detailed,
low level operations to be controlled. For the most part, PDL shields the user from
most of the details of 1149.1 hardware execution, for example, what the current
TAP state is, or what trajectory through the TAP state diagram is taken. But occa-
sionally, a user might want to gain control of some choices. Note the two reset com-
mands will affect the stored data image of device registers, as those with RESETVAL
specification in their BSDL will determine what values they contain as a result of
being reset. Note that device instruction registers are also set to a reset instruction,
as specified in BSDL.
• iTRST: This command tells the tester hardware to assert the TRST* output,
which would be connected to a device (or chain of devices) that possess this pin.
The command has –on and –off options, the idea being you assert (-on) TRST*
and then let some time pass (use iRunLoop) before de-asserting TRST* (-off).
• iTMSreset: This command tells the tester hardware to execute a TAP synchro-
nizing sequence—TMS held high for five cycles of TCK, to force a device (or
chain of devices) into the Test-Logic-Reset TAP state.
• iTMSidle: This command tells the tester hardware to move the TAP state
machine to the Run-Test/Idle TAP state. Then if an iRunLoop command is exe-
cuted, the TAP will loop in the Run-Test/Idle state for the number of TCKs
specified.
Note that iTRST and iTMSreset commands would be used by top level PDL
code, and would not appear in low-level procedures, since executing either would
reset registers and change instructions as (rather drastic) side effects. PDL proce-
dures intended for re-use would typically never contain these resets.
PDL Level-1 has more data available to it, in that it manages raw (unprocessed)
TDO capture data and TDO fail data to be saved, accessed and acted upon. This data
is shown in Fig. 11.16. Thus, the iApply command is a superset of the iApply com-
mand in Level-0 PDL. All other Level-0 PDL commands behave the same in Level-
1. PDL Level-1 provides two new commands, iGet and iGetStatus. Unlike Level-0
commands, these commands return values that can be save and operated upon.
It is important to note that Level-0 PDL code may be interpreted, meaning it can
maintain data records shown in Fig. 11.15 and this data would be available to
Level-1 PDL. However, if PDL Level-0 code is compiled or otherwise translated
into code that runs on a specific tester architecture, then this data may not be avail-
able. Such testers have the advantage of being “fast”, as seen at the UUT pins,
whereas interpreted code may be considerably slower, with significant latencies
between bursts of pin activity.
450 11 IEEE 1149.1: The 2013 Revision
– –fail: the data returned is derived from “fail data” register, with a “0” indicat-
ing no failure and a “1” indicating failure, of that bit location, after comparing
expected data with actual shifted out data. Some data is “0” because the
expect data at that location was “X”.
It is useful to look at some examples of PDL iGet and iGetStatus calls. First,
consider a 4-bit register Reg1 which always captures 0b0101. The following code
will fail, and we can see that and put out a message (with the “puts” TCL output
command).
iWrite Reg1 0b1111; #Data to scan in
iRead Reg1 0b0000; #Will fail, Reg1 captures 0b0101
iApply; #Scan in data, expect zeros out
set result [ iGetStatus –clear ]
#Fail flag is copied into local variable “result”
if { $result == “FAIL” } { puts “Test failed” }
In this example, the iGetStatus call was enclosed in square brackets [ ]. This is
TCL syntax that tells the interpreter to evaluate the enclosed command first before
analyzing the overall command. Here is an example of code to examine a device ID
register inside a device called U1.
iWrite U1.device_id 0x55555555; #alternating 01 bits
iRead U1.device_id ; #Initialized to value in BSDL
iApply; # This device captures ID = 14366603
set rslt_a [iGet U1.device_id]; # –so –hex default
set rslt_b [iGet –si U1.device_id]; # -hex default
puts “The Device ID is $rslt_a”
puts “$rslt_b was scanned into Device ID”
When executed this code produces two messages: “The Device ID is 0x14366603”
and “0x55555555 was scanned into Device ID”.
Now consider an example using mnemonics. Here assume two register fields
within a register exist called “swing” and “protocol” and that swing has mnemonics
“500mv”, and “1500mv”, while protocol has mnemonics “SATA” and “SRIO”.
This code could be used to check for a compatibility problem.
set val_a [iGet –si –mnem swing]
set val_b [iGet –si –mnem protocol]
if {$val_a == “500mv” && $val_b == “SRIO”} {
puts “Error, SRIO does not support 500mv swing”
}
This code could cause an exit before an iApply was executed, to prevent setting
up the incompatible pair of parameters. The use of mnemonics greatly improves
code readability here. The two iGet statements find the bit patterns in the register
fields, and look up the associated mnemonic names, which are then passed back.
452 11 IEEE 1149.1: The 2013 Revision
There is one fine point about iGet which is believed to be true,51 but it is not
explicitly stated in the 2013 revision. If you have a register field that has never been
written to, and it does not have an associated reset value either, then it could be
thought of as containing ‘X’ values, even for a write-only (e.g., binary) register.
Thus, say an iGet -mnem command is executed to a single-bit field with an “ON”
and “OFF” value of ‘1’ and ‘0’. What gets returned? If the field was never accessed
(and doesn’t have a reset value), it is believed to be ‘X’ and thus the iGet should
return an error, rather than “ON” or “OFF”. Those tools that don’t adhere to this
belief would not produce an error.
Please refer to Sect. 12.5 for an integrated example of BSDL and PDL, for a pair of
ICs that contain IP blocks. This example is for 1149.6 devices, but the example
serves well as an example for both standards. It is a comprehensive example, so it
takes a bit of space to present.
The new Electronic Chip IDCODE feature (see Sect. 11.3.4.1) allows an IC vendor
to embed useful design tradeoff information and various manufacturing details
unique to each IC produced. Some of this would surely be proprietary, so those
details could be encrypted. The idea here is to give an IC user a way to extract this
information and send it back to the IC vendor for analysis.
DFT-52: Consider implementing the ECID_CODE instruction and ECID
register, to capture design specifics and manufacturing details for later support
evaluation.
The new Init_Data register (see Sect. 11.3.4.2) and its associated instructions
allow easy and transparent access to initialization parameters needed for testing to
perform correctly. The days of “secret registers” with “special instructions” to
access them are now a thing of the past. We should no longer be passing around
“secret pattern” sets to set up drivers and receivers. Also, liberal use of register
fields and mnemonics should be included in BSDL to describe all these parameters
and label their values.
51
This assertion was made by C. J. Clark, the chairman of the 2013 revision. The concept appar-
ently was discussed but did not get written into the standard. It could be added in a future revision.
I share it here in case you run into tools that have implemented this behavior. It affects error-
checking of values returned from iGet.
11.6 Design for IEEE 1149.1 Testability 453
The 1149.1 standard was given a major upgrade in the 2013 release, which is cov-
ered at length in Chap. 11. Several of these upgrades are capability additions such
as new abilities to describe registers in great detail in terms of fields within them,
and data content described with human-friendly mnemonic names.
The 2013 revision adopted the idea of “data initialization” which was actually
proposed in the 2003 edition of 1149.6 [IEEE03] (see Annex E). The overall data
initialization problem really does belong in 1149.1, since it is common to both
standards, and others to come. See Sect. 11.3.3.2.
The 2013 revision of 1149.1 greatly expands the ability of Intellectual Property
(IP) to be used and described, when that IP implements test circuitry needed for
1149.x implementations. It is now possible that a BSDL file that describes an IC’s
1149.x implementation will refer to (that is: “use”) information packages supplied
by IP vendors. Thus a BSDL file may actually be a compressed (“zipped”) file
containing a number of coordinated files.1
1
In principle, one could “flatten” a BSDL file that uses package information to restore the model
of one file describes one IC. However, that invites the introduction of errors at the IC vendor’s
site—and what happens if the IP vendor sends out an updated package? The IC vendor would have
to find the updated information and where it became incorporated into a BSDLto make concomi-
tant changes.
One rather startling change introduced in the 2013 revision of 1149.1 was the
concept of register segmentation.2 Register segmentation (see Sect. 11.3.5.1), is
where a register may contain segments that can be included or excluded, and this
could change from time to time, hopefully under the control of users. Register seg-
mentation can be found in the two key registers that affect 1149.6, namely the
Boundary register and Init_data register (see Sect. 11.3.4.2).
The last “big deal” that is provided by the 2013 revision is the introduction of
Procedural Description Language (PDL). This new language (see Sect. 11.5) is
adopted by 1149.6 as a means of documenting how to access/manipulate certain test
features provided by 1149.6. This indeed is the intention of PDL, and 1149.6 is the
first standard to make use of this facility.
More than ever, intellectual property (IP) is used by IC designers to implement spe-
cial functions. This is often true for I/O pins that have high performance criteria for
speed and/or protocols that are supported. Since 1149.6 specifically involves
“advanced I/O”, this means that 1149.6 functionality is likely to be supplied as part
of an externally supplied IP package.
The supplier of IP that contains some 1149.6 capabilities documents this in a
user package. This in turn is read as part of the IC’s BSDL when it is referenced by
a “use statement” which would be given near the top of the BSDL, after the “stan-
dard use statement” appears. In the 2003 version of 1149.6, only new Boundary
register cell definitions might be provided in a user package. Now, several descrip-
tive attributes may also appear. These are described in Sect. 1.3.1.
With the 2013 revision of 1149.1 and BSDL, we now have advanced capabilities to
describe registers, the register fields that they may contain, and register mnemonics
that give human-friendly names to data patterns. (See Sects. 11.4.19 to 11.4.23)
This is quite useful for the 2015 release of 1149.6 since it allows us to describe the
many register fields that make up the parametric control of 1149.6 features. These
fields are to be found in the Init_Data register (see Sect. 11.3.4.2). See examples
given in 12.3 below.
2
It also introduced register selection, but this feature is not adopted in 1149.6.
12.2 Fixes to 1149.6 Driven by Experience 457
Also with the 2013 revision of BSDL, we can describe registers that are segmented,
with the ability to exclude a segment. Register segmentation is the only “dynamic”
feature3 allowed for the Boundary register and Init_data registers, which are those
used by 1149.6. Register segmentation support causes some changes in the “behavior”
attribute where AIO pins are described. This is because a dynamically reconfigurable
register does not have permanently mapped cell numbers. See Sect. 12.3.4 below.
A long overdue improvement brought by the 2013 release of 1149.1 is the introduc-
tion of “Initialization”, with the Init_data and Init_status registers that contain initial-
ization data (see Sect. 11.3.4.2), and new instructions (Init_Setup, Init_ _Clamp and
Init_Run) that target these registers (see Sect. 11.3.3.2). The initialization capability
allows IC designers to bring out parametric controls into the user’s view where before
they were hidden away, with each IC vendor hiding them in some different place (see
Sect. 12.2 below). Now, they aren’t hidden, and we have a standardized way of see-
ing them and setting them up. The 1149.6 standard was the first to really force this
need, since more and more, its operation depends on properly setup parameters.
The 2013 revision of 1149.1 recognized that while BSDL is critical for describing
the structure and resources of an 1149 implementation, there was a new need to
describe procedures for using these resources. This is the Procedural Description
Language, or PDL. PDL is a way to describe how to load certain registers or fields
therein, with data patterns that set up parameters, and when to scan such data in/out
of a chain. The 1149.6 standard now utilizes PDL to describe how to initialize AC
parameters within a device, going so far as to enumerate a set of named routines that
perform such actions. It is expected that these routines will be provided with each
IC that a vendor provides to users. These are described in Sect. 1.4 below.
As the 1149.6 standard became available in ICs, users began finding problems and
idiosyncrasies in the devices that implemented it. When they contacted the IC ven-
dors for help, they would sometimes be told that the IC needed some “setup” before
the ICs would perform correctly. Typically, this amounted to setting up some
3
The other dynamic feature is that of “selectable registers” which is not adopted by 1149.6.
458 12 IEEE 1149.6: The 2015 Revision
parameters in drivers and/or test receivers such that they would cooperate in sending
data across the board from one to another. This in turn led to sets of undocumented
pattern sets being passed around—you would hear about a pattern set in your Puerto
Rico factory that would make a test work, and have that sent to your Chinese con-
tractor to see if it would work there. Nobody really knew what the patterns did, but
they had to be applied between powering up a board and beginning an 1149.6 test.
Also, some devices might have radical mismatches in (say) driver parameters ver-
sus what the receivers need. This is one reason for (board level) capacitive coupling—
to remove some DC offset that prevents data reception. But if you use EXTEST to test
for testing for shorted board capacitors (see Sect. 8.4) it might turn out that when the
short occurs, the mismatch between driver and receiver frustrates the test.
Some devices have on-chip series coupling capacitors. But now, such capacitors
might be provided by a bypass link that can be switched on/off, again by some bits
that are passed in before testing. Thus the capacitor may be in-line for normal opera-
tion, but can be “shorted” if desired to provide a DC path to a pin. If this capability
is available, then a test for a board-level capacitor4 may be enabled.
Since the 2003 introduction of 1149.6, we have found that many parameters of I/O
pins are basically variable, with some being programmable and others scaled—by
being a function of (say) a power pin which can be connected to one of several volt-
ages. For example, in one device, a driver’s output voltage swing might be (say)
80% of the VDD value that driver is connected to. On programmable devices like
FPGAs, a given driver may have a programmable voltage swing that can be selected
at will from several possibilities. While it is likely in a given application such a
driver would be “frozen” at some configuration, this programming may not be
applied before we want to use the driver in a test. Thus, we have to set up the driver,
and likely, its downstream receivers to be compatible for data transport.
The 1149.6 standard embraces the concept of making such initialization trans-
parent and easy to perform. The Init_data register is central to this. New BSDL
features are essential to making this visibility practical and usable.
Board level capacitors in I/O pathways are one of the principle reasons that 1149.6
exists. They block DC signals. They are critical to a path’s transmission success.
Thus we want to test that they are there, with no open pins, and, no shorts across
4
It might seem strange to have a board-level capacitor present when the IC has an on-chip capaci-
tor as well, but it happens. One explanation might be how much voltage difference an on-chip
capacitor can tolerate. A board-level capacitor can tolerate a large difference.
12.2 Fixes to 1149.6 Driven by Experience 459
them. The 2003 1149.6 standard envisioned using EXTEST to test for these shorts.
The idea was that EXTEST’s DC transmission of data would be blocked by a (non-
shorted) capacitor. Thus, we could set up the hysteretic memory of a test receiver
with a ‘0’ value, and have EXTEST transmit a ‘1’ across the net. If the ‘0’ was still
there after this transmission, then the capacitor must have been blocking the DC, that
is, it was not shorted. A robust test would run twice, with opposite data values, so that
some other defect, (like a shorted receiver pin) would not confuse the result – that is,
a shorted capacitor would transmit both polarities and be reliably diagnosable.
Alas, that view was tripped up by reality, as was found out by experience. If a
driver on one side of the capacitor had radical voltage levels, then perhaps only one
polarity of the test would “fail” (meaning the bit was transmitted) while the other
would not. For example, if a 3.5 volt driver was capacitively coupled to a 1.2 volt
receiver, then there is a chance that either of the drivers voltage levels might look
like a ‘1’ to the receiver, when a short inserted DC coupling.
The 2015 revision addresses two ways. First, it allows the IC designer who
designs a test receiver to anticipate the issue and choose a receiver threshold (for DC
testing) that is near a power volgage (Vdd or Gnd). He then documents this with a
keyword in the BSDL description of the test receiver, which basically tells test gen-
eration software that only one polarity of the test will work. This will save some
time in debug, since you will not be trying to figure out why your test isn’t passing
both polarities, you already know.
The concept of on-chip capacitive coupling has been around since 2003, but the
2015 standard allows for the case where this capacitor can be bypassed (deliberately
shorted) so as to re-instate DC coupling. Indeed, there are cases where, when
EXTEST is loaded, this bypass is automatically enabled, and when an AC EXTEST
instruction is loaded, the capacitor is in place and blocking DC. Several new key-
words have been added to the 1149.6 BSDL extension to describe these cases. See
Sect. 1.3.3 below.
The new version of 1149.6 recognizes that the SAMPLE instruction’s ability to
actually capture high-speed data on a pin5 is basically a fiction. Therefore, this is
recognized by allowing a Boundary register cell, during SAMPLE, to capture a
static ‘0’ or ‘1’. Two new Boundary register cells (AC_40 and AC_41) are intro-
duced in the STD_1149_6_2015 package to implement this. Now, a designer is
encouraged to put in a redundant observe cell on a differential receiver’s output,
where SAMPLE might be attempted, particularly if there is a “slow” or “single-
cycle” operational mode.
As just mentioned above, SAMPLE may not work on some signals. Therefore, two
new cells are introduced that look like the BC_4 design (see Sect. 2.6.3) and are
coded in STD_1149_6_2015 as this:
There are some important changes to the BSDL extension that describe 1149.6 fea-
tures as of the 2015 release. See the syntax description in A.5. Most of these changes
are contained in the AIO_Pin_Behavior attribute. A new attribute called AIO_Port_
Behavior is introduced to allow the specification of “port links” which are place-
holder names for features provided by IP packages, which will later be referenced
at the entity level when describing port behavior. This reflects how, at the IP level,
it is not yet known what the entity ports are going to be.
5
Imagine a device with a 10 MHz TCK monitoring an I/O pin transmitting 10 Gbps data. The TCK
skews alone would amount to dozens of data bits passing by before SAMPLE captured something.
12.3 Changes to BSDL for 1149.6 461
The 2015 release of 1149.6 recognizes the increased prevalence and importance of
Intellectual Property contributions to IC design. It is anticipated that there may be
several, maybe even many, IP packages needed to convey information relevant to an
1149.6 implementation at the IC level, that come from IP. Therefore, a user package
for 1149.6 may contain much more information that such a package would have
contained at the 2003 version of the standard. In the earlier version, it was possible
to convey the existence of a new Boundary register cell design, such as “My_AC_
Cell”, if a unique 1149.6-supporting cell was included in an IC design. However,
this was the extent of what was conveyed.
With the 2015 revision, a user package can still include and describe new AC
cells, but it can also include between one and four extension attributes, as described
in A.5. They describe component conformance, EXTEST_PULSE and EXTEST_
TRAIN descriptions (optionally), and port links (optionally). The port link concept
is described below in Sect. 12.3.6.
The extension for 1149.6 BSDL now contains an enlarged list of AC parameters for
drivers and test receivers. A few “limits” are also now described, such as whether a
pin can support EXTEST_PULSE, or what a driver’s limits are for EXTEST perfor-
mance. The list of described AC parameters come in groups: time constants, and
voltage parameters. A few others pertain to in-line on-chip capacitors. The syntax for
AC parameter specification is given in A.5.3. There you see numerous keywords:
• LP_time and Edge_detect_time: used to describe an LP time constant of a test
receiver. Example: “ LP_Time = 5.0e-9”.
• HP_time and Coupling_time: used to describe an HP time constant of a test
receiver. There may be a trailing<cap spec>and/or a trailing<detection modi-
fier>. Examples: “HP_Time = 1.5e-8”, “HP_Time = 2.2e-8 On_Chip”, and
“HP_Time = 1.7e-8 Detect_EXTEST_High”.
• On_Chip, On_Chip_AC: These are<cap spec>words, the first describes an on-
chip in-line capacitor which is always present. The second describes an on-chip
capacitor that is switched out when EXTEST is the effective instruction.
• On_Chip_Programmable, On_Chip_AC_Programmable: these are<cap
spec>words, the first says there is a programmable shunt to switch out the on-
chip capacitor. The second says the on-chip capacitor is shunted out by EXTEST,
or by programming.
• On_Chip_Bus_Programmable, On_Chip_AC_Bus_Programmable: these
are also<cap spec>words that are followed by a group name enclosed in paren-
thesis. Both say there is a group-programmable shunt for the capacitor (shared
with others) and the second says that EXTEST also shunts the capacitor.
462 12 IEEE 1149.6: The 2015 Revision
The new 1149.6 revision makes it possible for programmable features to be sup-
ported and their existence to be described. It is not mandated that circuit designers
make these features “TAP accessible” but the standard heartily encourages design-
ers to do so. Users will undoubtedly want access to them to “tune” their tests for best
performance. In the past, if such features were programmable, a user had to discover
this, and then entreat the IC vendor to tell him “the secret” to getting access to it.
This can become an ugly support problem for the IC vendor.
Programmable features include:
• Driver high/low voltage levels, where more than one can be selected,
• Driver common-mode voltage levels,
• Receiver reference thresholds, where more than one can be selected,
12.3 Changes to BSDL for 1149.6 463
With the 2013 version of 1149.1, we have the concept of a segmented Boundary
register and indeed, some segments could even be excludable. This has affected the
1149.6 standard where pin behavior is concerned, and nowhere else.
AIO pin behavior is described by the AIO_Pin_Behavior attribute (see next sec-
tion, Sect. 12.3.5) and it makes reference to Boundary register cell numbers. When
a BSDL describes a segmented Boundary register, there may be several instances of
a cell number scattered across several cell tables listed for the segments. Thus, cell
numbers may be prefaced with a segment name to indicate their segment of resi-
dence. See an example of this in Sect. 12.3.7.
Note that a pin behavior description may reference “port links”, which are
described by a port link behavior description (see Sect. 12.3.6 and A.5.2) in a pack-
age referenced in a BSDL use statement. Examples of pin behavior description are
given in Sect. 12.3.7.
The 2013 release of 1149.6 allows for pin circuitry to be supplied as IP from an IP
vendor. This would be documented in a supporting user package. By definition, the
IP supplier cannot know the pin names that an IC vendor will attach the IP to.
Therefore a “port link” mechanism is provided for packages to document port
behavior that will be associated later with pins at the IC level.
The AIO_Port_Behavior attribute is used to document the parametric behavior
of “ports” in an IP block. The syntax for this is shown in A.5.2. Basically, this attri-
bute starts with a port link declaration that gives temporary names to ports and
identifies their I/O nature. Following this is a list of ports and what their AC param-
eters are. Sometimes, not all the parameters may be known at the IP level, so these
are indicated by the external keyword, meaning, they well be provided by the IC
that the IP gets embedded in. At that point, the IC vendor will describe that param-
eter as that of a pin on his device. There is an example of this below in Sect. 12.3.7.
Here are some examples of portions of BSDL that describe 1149.6 AC pins, both
those at an entity level, and those that come from IP user packages.
First, consider an entity with four bidirectional AC pins, described with the name
Bidir which is a bit_vector(1 to 4) of inout ports:
Here we see a port link list with two link members, both named “Lane”, with one
being “out bit_vector(0 to (0)” and the other being “in bit_vector (1 to 1)”. These
port links are later referenced in the package and subsequent entity BSDL. Lane(0) is
the transmit lane with a programmable common-mode voltage and a swing of 320
mv. The receive lane has a bypassable on-chip capacitor, only detects DC levels in the
high state, has an externally supplied threshold voltage and a hysteresis voltage of 80
mv. The IP supplier will need to provide a PDL routine for accessing the on-chip
capacitor bypass and another routine for setting the driver common-mode voltage.
Now, consider an IC that uses the IP from the previous example and refers to the
ACPKG package that contains the port description we just saw. This IC has a set of
four outputs called TX_Nibble out bit_vector (3 downto 0) and a set of four inputs
called RX_Nibble in bit_vector (3 downto 0). The two nibbles will reference the
links set up in ACPKG, like this:
Notice here that both TX_Nibble and RX_Nibble are not qualified with sub-
scripts or ranges, so the entire bit_vector in each case is assigned values obtained by
following the path “package ACPKG” down to a link name—Lane(1) and Lane(0)
respectively. So we have now described the AC parameters of four outputs and four
inputs, very compactly. Notice that RX_Nibble has a “bus_programmable” thresh-
old voltage, and the ACPKG:Lane(1) specification showed the threshold was com-
ing from an external source. The IC vendor will supply a PDL routine to set up this
voltage, since only they know how that got wired up, and under what control. The
IC might have other AC pins to document from the entity level. These would appear
466 12 IEEE 1149.6: The 2015 Revision
In the list of Bidir’s cell numbers, the first is prefaced with the segment name and
colon, and the rest are understood to be in that same segment. The AC_Select phrase
is also so qualified so we know where to find the select cell. A rule in 1149.6 requires
the AC_Select cell to be in the same segment as the cells it controls.
12.3.8 STD_1149_6_2015
The standard package for defining 1149.6 attributes (extensions) is provided here,
but not in its totality since it is very similar to the original package definition
(STD_1149_6_2003) shown in Sect. 8.6.2. Therefore, just the few changes, all
additive, are shown here.
At around lines 4-7 of the 2003 package we see four attribute extension defini-
tions, the last of which is:
Attribute AIO_Pin_Behavior: BSDL_Extension;
The 2015 package adds this new definition after the above:
Attribute AIO_Port_Behavior: BSDL_Extension;
Following the extension definitions, there are a number of “constant” definitions
which define AC Boundary register cells, such as AC_SelX, AC_SelU, AC_1,
AC_2, up to AC_10. The 2015 revision adds two new cell constant definitions after
these, and they are:
Next comes the package body description, where the actual cell information for
each constant is populated. In the 2003 package, the last cell defined is AC_10.
In the 2015 version, the two new AC_40 and AC_41 cells are populated directly
after the AC_10 cell. Those are already shown above in Sect. 1.2.6. These are the
only changes to the 1149.6 support package driven by the 2015 revision.
The 2015 revision of 1149.6 allows for the BSDL specification of I/O pin parame-
ters of common-mode voltage (VCM) and driver swing (VPP) on driven ports, and
comparison threshold voltage (VTH) and hysteresis voltage (VHyst) for test receiv-
ers. For some ports, these may be programmable from a menu of selections. When
programmable in-line on-chip capacitors are present, these are indicated in BSDL,
and some of these may have programmable shunts.
With the 2015 revision, an IC vendor is now required to document all program-
mable features with a set of pre-named6 PDL procedures. These are listed in
Table 12.1. Each programmable voltage parameter requires three procedures, “Set”,
“Get” and “Getall”—the programmable capacitors require two, just “Set” and “Get”.
The voltage “Set” procedures are used to set a voltage parameter on a port to a
valid value, with a possible scale factor. The scale factor is used to account for volt-
age values that may scale7 with the power supply voltage a device is connected to.
Basically, the routine is given a voltage value to set, and a scale factor (defaults to
“1.0”) that is used to divide the requested voltage before the routine uses it to look
up how to set the requested voltage. The port parameter in the call is used to look up
what the choices are for setting a voltage. Note, if a port is misspelled or otherwise
does not have a settable voltage, an error occurs. All errors encountered by any of
these routines will cause an error string to be returned, which is “AIO_ERROR”.
The routine is responsible for checking the parameters for errors, and can issue mes-
sages (using the output command “puts”) that explain what caused the error.
6
Remember PDL is case-sensitive, so the names have the indicated required spellings.
7
The scaling may be non-linear so a table lookup may be needed.
468 12 IEEE 1149.6: The 2015 Revision
iProc AIO_set_*<AIO_proc_option>
<L_brace>voltage<L_brace>port ""<R_brace>
<L_brace>vscale "1.0"<R_brace><R_brace><executables>
Above, AIO_set_* is one of the four voltage “set” routines from Table 12.1.
The<AIO_proc_option>is zero or more of –export, -mission or –info<text>. Then
comes the first parameter named voltage (an integer in millivolts), followed by the
second parameter port, which is provided in-line with a default of the null string
"". Next is the third parameter vscale (a real number) which is provided with an
in-line default of "1.0". After that is a set of executable PDL/Tcl commands, with
the set enclosed in a pair of curly braces. These commands are the processing code
needed to set a given port or ports to the proper voltage. Basically, the routine code
checks the value of $port8 against a list of valid port names for a match, then checks
the requested (possibly scaled) $voltage to see if the port will support it. If all this
is correct, then the code issues iWrite calls to set the port voltage. Note the PDL
code may “group” port names into named groups, and if a group name is passed into
the routine, it can then process the command for all the group members. Thus, if a
port name is part of a bus programmable set of ports, then setting just one port will
have the effect of setting them all, since this is also what the hardware will do. When
all this work is completed, then the procedure passes back a string containing the
names of all ports (or group names) that had their voltage set. Any error encoun-
tered will result in the string “AIO_ERROR” being passed back.
The voltage “Get” routines all look like this:
iProc AIO_get_*<AIO_proc_option>
<L_brace><L_brace>port ""<R_brace>
<L_brace>vscale "1.0"<R_brace><R_brace><executables>
Above, AIO_get_* is one of the four voltage “Get” routines from Table 12.1.
The<AIO_proc_options>are the same as before. The first parameter is port with a
"" default value. The second parameter is vscale, same as for the “Set” procedures.
A “Get” procedure takes a port (or group) name and looks it up. It then issues an
iRead to find out what voltage that port (or group) was set to, using the scaling fac-
tor to account for how the voltage originally “Set” was scaled. The routine passes
back a string with the port’s voltage setting in integer millivolts. If an error is
encountered in all of this processing, it returns the string “AIO_ERROR”.
The voltage “Getall” procedures are nearly identical with the “Get” set. They
look like this:
iProc AIO_getALL_*<AIO_proc_option>
<L_brace><L_brace>port ""<R_brace>
<L_brace>vscale "1.0"<R_brace><R_brace><executables>
8
Inside a procedure, the “$” indicates a reference to a parameter’s value.
12.5 Integrated BSDL-PDL Example 469
iProc AIO_set_DC_couple<AIO_proc_option>
<L_brace>state<L_brace>port ""<R_brace>
<R_brace><executables>
iProc AIO_get_DC_couple<AIO_proc_option>
<L_brace><L_brace>port ""<R_brace>
<R_brace><executables>
This routine is used to return the “ON”/”OFF” state of a port (or group)
parameter.
All of these procedures are to be supplied by the component vendor for all param-
eters that are programmable. The calling sequences are all that can be mandated,
since each port’s attributes may be implemented in numerous ways. Therefore the
code within a given routine will likely be unique to a given device implementation.
This section shows an example9 of a board containing two ICs, each of which con-
tain an IP block. IC1 contains IP-A and IC2 contains IP-B as seen in Fig. 12.1.
These two IC communicate across two board nets with on-board capacitors in the
paths. IC1 is driving the two differentially, and IC2 is receiving them. Both ICs are
implementing 1149.6-2015 on these pins.
The circuitry for IP block A is shown next in Fig. 12.2. Note the figure omits
details such as the TAP signals. The differential driver has a “swing” selection
which controls the output voltage swing to one of four levels, as selected by the two
bottom bits in the Init_Data register segment. The next bit up is a power control bit,
9
This example is adapted from 1149.6 to 2015, which has several other examples as well.
Board
IC 1 IC 2
Board
Capacitors IP
IP
A B
AB-Board
Clock In
SO
BC_1
C U
EN
Boundary
Register
AC_1
Segment Data
C U
SI
SO
BC_4
C
Swing
BC_4 Control
C
BC_1
Init Data
Register C U Power
Segment
BC_4 Mission +
0
VCM
C 1
CMV -
SEL
C U
BC_1
SI
IP-TX
which is used to completely remove power from the driver, as differentiated from
just disabling the driver. When power is enabled, the INIT_RUN instruction must
be used to provide clocking (TCK) for the driver to become ready.
The next bit up from there is a “CMV” bit used to select one of two possible
common-mode voltages (VCM) on the driven outputs. Finally, there is a select bit
that allows us to choose whether to use the “mission” VCM or the value in the CMV
bit on the driver. This would allow us to use mission mode driver behavior for some
functional testing if desired.
The IP block A also contains a two-bit segment of the Boundary register, a driver
data bit and driver enable bit. The data bit is an 1149.6 AC_1 cell to enable
EXTEST_PULSE and EXTEST_TRAIN performance. All these bits together allow
us to power, enable, set data bits, set data voltage levels and common-mode volt-
ages on the differential driver.
The circuitry for IP block B is shown in Fig. 12.3. Again, the figure omits details
such as TAP connections. This block contains three bits of the Init_Data register.
The bottom two bits are a VTH selection control which select one of four VTH
levels, and corresponding VBias levels on the mission receiver. The VTH voltage
determines the 0/1 voltage threshold used by the two test receivers that monitor the
input pins. The higher bit is a select bit to allow test VTH bits to control VTH gen-
eration, or, to let the device’s mission circuitry do it. Again, this could be useful
during functional testing that uses mission behavior. There is a three-bit segment of
the Boundary register in this block, with the bottom two bits receiving the test
receiver results and the upper bit monitoring the mission receiver result.
The two IP providers supply a BSDL user package and some PDL for their
IP. The use of register fields and mnemonics makes this very readable and friendly.
Here is the code provided by IP vendor A. Note the use of ellipses (…) in the code
to shorten it by skipping over some code that is not essential to this example.
SO
BC_4
Test
Receiver C
BC_4 Boundary
Test
Receiver C Register
Segment
++ BC_1
C U
_-
SI
+
VTH
2
-
+
VBias
2
-
SO
C Mission 0
2
VTH 1 Init_Data
Control 2 Register
C
Segment
C U SEL
SI
IP-RX
This package defined three sets of mnemonics (ONOFF, CMV and SWING) and
within each, provides mnemonic names and values for each. For example, in
SWING, we see the name “700mv” given a 2-bit value of “0b01”. Later, in the
register field description, we see a 2-bit field (also) called SWING which uses the
SWING mnemonics, with a DEFAULT set to “800mv”, which is “0b10”. This
means the 2-bit SWING register field will be defaulted to the 800mv selection until
an iWrite statement overrides that with some other value.
Finally, this package defines a port_link_list which names the (one) out bit port
called TX_A. This port link will be used later in other BSDL and PDL since the IP
vendor does not know what IC pin this circuitry will ultimately drive. The port
behavior of TX_A is listed as programmable for both AIO_VCM and AIO_VPP,
under control of the Init_Data register. Note that the POWER bit is documented but
its existence is not conveyed by the port behavior attribute. The routines below will
set and/or interrogate POWER.
Next, IP Vendor A provides PDL code for setting the VPP and VCM values of
the circuitry. You will see “PDL_CONTEXT_PATH” in the code. This is a string
provided by IEEE 1149.1-2013 that gets used in “puts” commands in the code to
produce error messages that identify the IC that has produced an error message.
This example code defines a total of six routines, for “get”, “set” and “getall” rou-
tines of the two driver voltages. Please note the code checks for calling errors in
passed parameters, and this accounts for much of the length of the code. This should
cut down on support calls to the IP vendor if their customers use the PDL routines
but make mistakes when calling them.
Some of these routines perform iWrite commands to fields within their portion
of the Init_Data register. These routines do not perform iApply operations. This is
because these are the lowest level routines, and at the IC or board levels, there may
be other calls to initialize data that we would want to apply in parallel to these. Note
too that because of the POWER function on the driver, the outer level routines will
be in charge of executing INIT_RUN to get the power on this pin (and others that
might also be instantiated as well) correctly set up.
474 12 IEEE 1149.6: The 2015 Revision
# VPP routines:
# The VPP parameter is affected by the value of VDD_IO,
# so scaling is used. There are no iApply commands.
#######################################################
# AIO_set_VPP returns a port
iProc AIO_set_VPP {voltage {port ""} {vscale "1.0"}} {
set ucport [string toupper $port] ; #Uppercase port
if {$ucport != "TX_A" && $port != ""} {
puts "SERDESA port $PDL_CONTEXT_PATH.$port is\
not recognized.\n"
return "AIO_ERROR"
}
# calculate the scaled voltage
set adj_volt [expr {$voltage / $vscale}]
if {$adj_volt >= 595 && $adj_volt <= 605} {
iWrite SWING 600mV
} elseif {$adj_volt >= 695 && $adj_volt <= 705} {
iWrite SWING 700mV
} elseif {$adj_volt >= 795 && $adj_volt <= 805} {
iWrite SWING 800mV
} elseif {$adj_volt >= 895 && $adj_volt <= 905} {
iWrite SWING 900mV
} else {
puts "The requested peak-to-peak voltage $voltage\
mv is unsupported for SERDESA port\
$PDL_CONTEXT_PATH.$port.\n"
return "AIO_ERROR"
}
iWrite SEL ON ; # Assure driver is in test mode.
iWrite POWER ON ; # Assure driver is powered.
# Note a higher level routine should do an iApply to set
# the power on, and then invoke INIT_RUN to finish the
# power turnon.
return "TX_A"
}; # End AIO_set_VPP procedure
#######################################################
# AIO_get_VPP returns a voltage.
iProc AIO_get_VPP {{port "" } {vscale "1.0"}} {
set ucport [string toupper $port] ; #Uppercase port
if {$ucport != "TX_A" && $port != ""} {
puts "SERDESA port $PDL_CONTEXT_PATH.$port is\
not recognized.\n"
return "AIO_ERROR"
}
12.5 Integrated BSDL-PDL Example 477
Some of the above routines check to see if the driver is in mission mode and
powered up. If not so, warnings are issued, but the routine completes its job without
error. The first call to AIO_set_VPP will set the driver in test mode and enable its
power.
Now let’s look at the BSDL and PDL from IP Supplier B (for the IP shown in
Fig. 12.3). This is a receiver design.
478 12 IEEE 1149.6: The 2015 Revision
Next, component vendors of IC1 and IC2 take IPs A and B respectively and inte-
grate them into their chips as seen in Fig. 12.1. In this example each IP is included
only once, but, they could have been instantiated in many places, per the IC ven-
dor’s design requirement. Each IC vendor then provides supporting BSDL entity
descriptions and PDL for these programmable resources. Again, note the use of
ellipses (…) where code irrelevant to the example is omitted.
12.5 Integrated BSDL-PDL Example 481
In this BSDL, we see four references to the SerdesA BSDL package content. The
first is a “use” statement that reads the SerdesA content. The second is a reference
to “SerdesA:init_data”, which assigns the portion of Init_Data delivered by the IP
block to “i13”, a segment in the assembled Init_Data register of the IC itself. The
third reference is to “SerdesA:boundary”, which brings the IP block’s portion of the
Boundary register into the assembly as “b13”. The last is a reference to
“SerdesA:TX_A”. This reference is to a port link (TX_A) defined in the IP BSDL
package. This assigns the AIO_Port_Behavior of the port link to the IC’s pin “Diff_
Drvr_P” AIO_Pin_Behavior.
482 12 IEEE 1149.6: The 2015 Revision
Next are the PDL procedures created by IC Vendor 1, which utilize iCall com-
mands to iProcs in the IP-A PDL code. They have error checks in them.
As before we see four references to “SerdesB” information, the first to read the
package, the second to bring the IP-B Init_Data segment into the ICs Init_Data
register, the third to bring the IP-B Boundary register segment into the IC’s Boundary
register and finally, the attachment of the “RX_B” port link behavior to two IC pins,
the differential pair Diff_Rcvr_P and Diff_Rcvr_N. Both of these are linked as they
have independent 1149.6 test facilities, which is why they did not appear in a port
grouping attribute.
Next, see the PDL delivered by IC Vendor 2 for an IC using IP block B. Again
there is a lot of error checking.
Now, imagine you have the board shown in Fig. 12.1 and you want to run
Boundary-Scan tests on it. Your first task is to round up the BSDLs for all the ICs
on the board. You notice IC1 and IC2 come with supporting BSDL packages, and
also, some supporting PDL code. You must look into these to see if they too have
supporting BSDL/PDL from IP suppliers, which indeed these ICs do. Now you can
do some strategy thinking.
The BSDL shows you that the two nets driven from IC1 to IC2 will need to have
programmable voltages set for them, and this means checking what driver parame-
ters to set, and what parameters the receiver should have to work properly. Note
these might be different levels for AC testing (with EXTEST_PULSE) versus DC
testing for the board-level capacitor shorts tests, using EXTEST. You also note the
PDL mentions scaling must be accounted for if the devices are connected to a non-
nominal VDD voltage. You check that first, and find the nominal voltages are con-
nected, so scaling is not an issue. If it were, you would need to figure out the scale
factors for the PDL calls. When this research is done, you have some choices
488 12 IEEE 1149.6: The 2015 Revision
prepared for programmable voltages. You noticed during this study that all the
PDLs did not do any iApply commands, but left that step for you. This allows you
to call several PDL routines to set up parameter values inside the Init_Data register,
and then issue a single iApply that will scan all the values in (along with loading the
INIT_SETUP instruction) only one time, which will improve throughput.
You also noticed that INIT_RUN is required sometime after the AIO_set_VPP
routine is called, to “finish the job” of turning driver power on, before the driver will
produce correct voltages. This will be simple, just load INIT_RUN and wait for the
specified number of TCK cycles to pass. A data sheet tells you it needs 500 cycles.
And the action is deterministic so the INIT_STATUS register does not need to be
sampled for completion. Great!
But before you do that, your board testing tool needs a model of the Boundary-
Scan chain as it exists on the board. So you run it in the mode where it picks up the
board netlist data and finds all the devices, device pins and interconnection data for
the board. It also picks up all the BSDL files that you have obtained for the devices.
Using this data, it automatically figures out the chain of Boundary-Scan devices and
their ordering in the chain. It can then build an image of the board’s complete set of
Boundary-Scan data registers. These form a data image that a PDL interpreter for a
board could use to manage a board test. We assume this board data is named “Chain”,
and we have a hierarchy. For example, “Chain.IC_1” is how to refer to IC_1, which
is a “Part_1” device. (There could be multiple instances of Part_1 on a board.)
So now you can write some PDL that sets up the driver/receiver pair. You’ve
picked a driver VPP of 800mv, a driver common-mode voltage of 500mv and the
receiver threshold also to be 500mv. This should work for both AC and DC testing
which is good too. So here it is:
Close analysis shows that the second iApply must also do an instruction load in
the chain, so all the devices except IC_1 get the same instruction loaded as before,
but IC_1 gets INIT_RUN loaded. Note that IC_2 still has INIT_SETUP loaded, so
its data (unchanged) will get scanned in again. No harm, but good to be aware of.
This example is (of course) for a fictional tester. Real testers do exist, but they
likely have their own operating environment and might use PDL code as a start to
creating a test, after translating it into their realm. They might take in this infor-
mation, and display all the activities it causes, in some form of graphical display
for the test engineer to view. It might display the coupled I/O driver/receiver com-
binations on the board and show the engineer what fixed parameters are at work,
and where parameters might be selectable. It could “suggest” voltage parameters
that could work, but allow the engineer to fine tune or override those selections. It
could also display what connections are likely to be problematic, so the engineer
can see what portions of the board networks might not be testable or need an
alternative approach. Finally, it could show the engineer where some activities
could be run in parallel. In the example, above, two registers in IC_1 and one
register in IC_2 are all scanned with a single data scan to set up voltage parame-
ters. However, they could have been done individually (though less efficiently) by
having an iApply after each call. A good tester operating system will look for
such opportunities for parallelism and offer them to the engineer. In most cases
they would make sense, but sometimes, for special instructions or functional tests,
it might be important to sequence activities in a preordained order under the con-
trol of the test engineer.
This has been a long example, but of a relatively simple case of two IP blocks
and two ICs. The 1149.6-2015 standard offers other, more complex examples. In
particular, see the example given in Sect. 7.8.2 of a custom programmable I/O IP
block with several bus-programmable parameters, instantiated four times into an
IC. The IP BSDL/PDL, and the IC BSDL/PDL is presented in the space of about 15
pages. It’s good we have computerized tools to help us deal with this information.
Though it may seem daunting, we are benefiting from having such data that was so
difficult to see and/or obtain in the past.
Here are two DFT rules that should be considered by device designers.
DFT-58: For all selectable features of an 1149.6 I/O pin, assure they are
controlled by fields within the Init_Data register and supply a BSDL register
fields description for them, with friendly register mnemonics to help users
identify them.
The 2015 release should make the features of an IC’s 1149.6 implementation
much more transparent and useable. This will pay off for the IC vendor in a reduc-
tion of support issues from their customers.
490 12 IEEE 1149.6: The 2015 Revision
A.1 Conventions
All reserved words, predefined words, and punctuation are shown in Courier New
type within this document. VHDL reserved and predefined words will be shown in
lowercase letters, and BSDL reserved words will be shown in UPPERCASE letters.
(BSDL itself is case-insensitive; this convention is adopted for descriptive clarity.)
The lexical elements of BSDL are a subset and standard practice of those of VHDL
as defined in IEEE Std 1076-1993. The following sections enumerate the lexical
elements needed to understand the BSDL language definition.
• Digits: 0–9.
• Special characters: " & ‘ ( ) * , - . : ; < = >
• Logical separators: The space character, horizontal tabulation, vertical tabulation,
carriage return, line feed, and form feed.
A.2.2 Identifiers
Boundary_Scan
IEEE_Std_1149_1
The identifiers listed in this section are BSDL reserved words with a fixed signifi-
cance in the language. These identifiers cannot be used for any other purpose in a
BSDL description. For example, a reserved word cannot be used as an explicitly
declared identifier. BC_0 to BC_99 are variable names used in the Standard VHDL
Package. Names BC_0 through BC_10 are used today, while BC_11 through BC_99
are reserved for future use. Similarly, the names STD_1149_1_1990,
STD_1149_1_1993, STD_1149_1_1994 and STD_1149_1_2001 have been
reserved, with the potential for new names to be added later. Therefore, avoid using
identifiers that start with “STD_1149_”.
AT_PINS INTERNAL
BC_0 to BC_99 INTEST
BIDIR INTEST_EXECUTION
BIDIR_IN KEEPER
BIDIR_OUT LOW
BOTH OBSERVE_ONLY
BOUNDARY OBSERVING
BOUNDARY_LENGTH ONE
BOUNDARY_REGISTER OUTPUT2
A.2 Lexical Elements of BSDL 493
BSCAN_INST OUTPUT3
BSDL_EXTENSION PHYSICAL_PIN_MAP
BYPASS PI
CAP PIN_MAP
CAP_DATA PIN_MAP_STRING
CAPTURES PO
CELL_DATA PORT_GROUPING
CELL_INFO PRELOAD
CELL_TYPE PULL0
CLAMP PULL1
CLOCK REGISTER_ACCESS
CLOCK_INFO RUNBIST
CLOCK_LEVEL RUNBIST_EXECUTION
COMPLIANCE_PATTERNS SAMPLE
COMPONENT_CONFORMANCE STD_1149_1_1990
CONTROL STD_1149_1_1993
CONTROLR STD_1149_1_1994
DESIGN_WARNING STD_1149_1_2001
DEVICE_ID TAP_SCAN_CLOCK
DIFFERENTIAL_CURRENT TAP_SCAN_IN
DIFFERENTIAL_VOLTAGE TAP_SCAN_MODE
EXPECT_DATA TAP_SCAN_OUT
EXTEST TAP_SCAN_RESET
HIGHZ UPD
ID_BITS USERCODE
ID_STRING USERCODE_REGISTER
IDCODE WAIT_DURATION
IDCODE_REGISTER WEAK0
INPUT WEAK1
INSTRUCTION_CAPTURE X
INSTRUCTION_LENGTH Z
INSTRUCTION_OPCODE ZERO
INSTRUCTION_PRIVATE
The identifiers listed below are called VHDL (IEEE Standard 1076-1993) reserved
and predefined words with a fixed significance in the language. These identifiers
may not be used for any other purpose in a BSDL description. For example, a
reserved word cannot be used as an explicitly declared identifier. Reserved words
shown in the list below in lowercase letters are part of the BSDL subset of
VHDL. Those in uppercase letters are not part of BSDL, but should not be used as
494 A BSDL Syntax Specifications
identifiers. The latest edition of the VHDL standard [IEEE93b] shall be consulted as
the final authority.
A.2.5 Strings
Strings are used extensively in BSDL. Because many of the BSDL strings are
potentially much longer than a single line, the concatenation operator & is used to
break them into manageable pieces. For example,
BSDL does not permit replacement of the quotation mark with any other charac-
ter. A string literal must fit on one line since it is a lexical element.
A.2.6 Comments
Any text between a double dash (--) symbol and the end of a line is treated as a
comment. The text is allowed to contain any characters allowed by VHDL. Comments
syntactically terminate a line of a description. Comments may be interspersed with
lexical elements. For example, the following represents a single VHDL string:
• Any item enclosed in chevrons (i.e., between the character “<” and the character
“>”) is the name of a syntax item that will be defined in this appendix.
• Items enclosed by braces (i.e., between the character “{” and the character “}”)
may be omitted or included one or more times.
• Items enclosed between square brackets (i.e., between the character “[” and the
character “]”) may be omitted or included only one time.
• Items enclosed between the symbols “→” and “←” may appear in any order.
• Except with regard to case, text shown in Courier New type font has to be
included exactly as it is presented in this appendix.
• Alternative syntaxes are separated by a vertical bar (“|” ).
• The symbol “::=” should be read as “is defined as.” Note that the non-boldface
“::=” is only part of a BNF description; in the BSDL file, the boldface characters
“:=” are used to indicate assignment.
496 A BSDL Syntax Specifications
• White space (spaces, tabulation, carriage returns, etc.) is used in these BNF
descriptions to enhance readability and is not part of the syntax. However, white
space needed for resolving lexical ambiguity is required.
• A <port ID> identifies a component signal that may be used to interface to exter-
nal signals. A port may be dimensioned as a bit or a bit_vector. Subscripted
names are allowed only when bit_vector-dimensioned port signals are used.
<BSDL description>::=
entity <component name> is
<generic parameter>
<logical port description>
<standard use statement>
{<use statement>}
<component conformance statement>
<device package pin mappings>
[<grouped port identification>]
<scan port identification>
[<compliance enable description>]
<instruction register description>
[<optional register description>]
[<register access description>]
<boundary-scan register description>
[<runbist description>]
[<intest description>]
{<BSDL extensions>}
[<design warning>]
end <component name>;
<generic parameter>::=
generic (PHYSICAL_PIN_MAP: string); |
generic (PHYSICAL_PIN_MAP: string :=
<default device package type>);
<default device package type>::= " <VHDL identifier> "
<logical port description>::= port (<pin spec>
{; <pin spec>});
<pin spec>::= <identifier list>: <pin type> <port dimension>
<identifier list>::= <port name> {,<port name>}
<pin type>::= in | out | buffer | inout | linkage
<port dimension>::= bit | bit_vector (<range>)
<range>::= <integer_1> to <integer_2> |
<integer_2> downto <integer_1>
<integer_1>::= <integer>
<integer_2>::= <integer>
<standard use statement>::=
use <standard VHDL package identifier>.all;
<standard VHDL package identifier>::= STD_1149_1_1990 |
STD_1149_1_1994 | STD_1149_1_2001 |
<other package identifier>
<other package identifier>::= <VHDL identifier>
498 A BSDL Syntax Specifications
<TRST stmt>::=
attribute TAP_SCAN_RESET of <port ID> : signal is true;
<clock record>::= <real number> , <halt state value>
<halt state value>::= LOW | BOTH
<compliance enable description>::=
attribute COMPLIANCE_PATTERNS of <component name> :
entity is <compliance pattern string> ;
<compliance pattern string>::= " ( <compliance port list> )
( <pattern list> )"
<compliance port list>::= <port ID> { , <port ID>}
<pattern list>::= <pattern> { , <pattern> }
<instruction register description>::=
<instruction length stmt>
<instruction opcode stmt>
<instruction capture stmt>
[<instruction private stmt>]
<instruction length stmt>::=
attribute INSTRUCTION_LENGTH of <component name>
: entity is <integer>;
<instruction opcode stmt>::=
attribute INSTRUCTION_OPCODE of <component name> :
entity is <opcode table string>;
<instruction capture stmt>::=
attribute INSTRUCTION_CAPTURE of <component name> :
entity is <pattern list string>;
<instruction private stmt>::=
attribute INSTRUCTION_PRIVATE of <component name> :
entity is <instruction list string>;
<opcode table string>::=
" <opcode description> {, <opcode description>} "
<pattern list string>::=" <pattern list> "
<pattern list>::= <pattern> {, <pattern>}
<instruction list string>::= " <instruction list> "
<instruction list>::= <instruction name>
{, <instruction name>}
<opcode description>::=<instruction name> (<pattern list>)
<optional register description>::=
→ <idcode statement> [<usercode statement>] ←
<idcode statement>::=
attribute IDCODE_REGISTER of <component name>: entity is
<32-bit pattern list string>;
<usercode statement>::=
attribute USERCODE_REGISTER of <component name>
: entity is <32-bit pattern list string>;
<32-bit pattern list string>::= " <32-bit pattern list> "
500 A BSDL Syntax Specifications
The 1149.6 extension contains some new attributes with a specific syntax that needs
to be recognized by tools that support 1149.6. An example is shown in Sect. 8.6.3
on page 331. This syntax is listed here:
There are two categories of reserved words in BSDL; first are those inherited from
VHDL (see Sect. A.2.4) and second are those defined by BSDL itself (see
Sect. A.2.3).
In Sect. A.2.4 there is a table of VHDL reserved words. These are divided into two
groups with one group (in lowercase letters) being a set of reserved words from
VHDL that have specific meaning in BSDL. The second group (in uppercase letters)
were other VHDL reserved words not adopted by BSDL. These were considered
reserved anyway and BSDL code was not to use them, since that would prevent
such code from being parsed by a VHDL tool. That is no longer the case with the
2013 release, so the only VHDL reserved words are shown in this abbreviated table.
In Sect. A.2.3 there is a table of BSDL reserved words. This list has been lengthened
by adding the following 66 reserved words.
Broadcastfield Open0
Broadcastvalues Open1
Clamp_hold OpenX
Clamp_release Power_0
Default Power_pos
DelayPO Power_neg
Domain Power_port_association
Domain_external Pulse0
Domctrl Pulse1
Dompor Register_access
ECID Register_assembly
ECIDcode Register_association
Expect0 Register_constraints
Expect1 Register_fields
Hierreset Register_mnemonics
IC_reset Reset_select
Init_data Resetval
Init_run Segment
Init_setup Segmux
Init_setup_clamp Segsel
Init_Status Segstart
Linkage_buffer Selectmux
Linkage_in Selectfield
Linkage_inout Selectvalues
Linkage_mechanical Shared
B.1 Reserved Word Changes 507
Linkage_out TAPreset
Mon Tie0
NoPI Tie1
NoPO TMP_Status
Noretain TRSTreset
NoUPD User
One_hot Vref_in
Open Vref_out
Appendix A lists several numeric literals: <integer>, <real number>, <pattern> and
<32-bit pattern> (see Sect. A.3.2). The 2013 revision of BSDL adds three new
numeric literal types:
• <binary pattern> is a contiguous string starting with 0b or 0B, followed by one
character from the set [01xX] and zero or more characters from the set [01xX_].
No spaces or format effectors1 may be embedded.
• <hex pattern> is a contiguous string starting with 0x or 0X, followed by one
character from the set [0-9a-fA-F] followed by zero or more characters from the
set [0-9a-fA-F_]. No spaces or format effectors may be embedded.
• <decimal pattern> is an unsigned contiguous string of characters from the set
[0-9], that does not have ‘0’ for the most significant (leftmost) digit of a multi-
digit number, contains no spaces or format effectors, and has a binary representa-
tion that fits within a 32-bit binary field.2
B.1.4 Identifiers
Identifiers are user-supplied names with the syntax token of <VHDL identifier>
(see Sect. A.2.2). The 2013 revision of BSDL adds the concept of a <mnemonic
identifier> and it is formed according a list of requirements. It also defines <prefix
identifier>.
A <mnemonic identifier> any combination of alphabetic characters (case insen-
sitive), digits and certain special characters such that:
• It contains at least one alphabetic character.
• It cannot be resolved to a <real>, <integer>, <binary pattern> <hex pattern>,
<decimal pattern> or <pattern> value.
• It is not the single character “U” (or “u”).
1
Format effectors include carriage returns, tab characters, line feeds, page ejects, etc.
2
This means the decimal number must be less than or equal to 232-1, which is 4,294,967,295.
508 B 2013 BSDL Syntax Revisions
• It cannot start with, or contain the BSDL comment characters, that is, double-
dash “--”.
• It may include these special characters:
– At-sign (@)
– Asterisk (*)
– Underscore (_)
– Minus sign (−)
– Plus sign (+)
– Vertical bar (|)
– Percent sign (%)
– Tilde (~)
– Period (.)
• It may be a valid <VHDL identifier>.
A <prefix identifier> is any combination of letters (case insensitive), digits and
the underscore character, not starting with a digit. A valid <VHDL identifier> may
serve as a <prefix identifier>. (With the exception of case insensitivity, a <prefix
identifier> follows the rules for Verilog identifiers.3) Prefix identifiers are used in
<register fields statement> descriptions (see Sect. 11.4.20) and certain PDL state-
ments (see Sect. 11.5).
3
Verilog is a hardware description language alternative to VHDL in common use.
B.2 BSDL Syntax 509
In Sect. A.4 you will see pins identified by <pin ID> tokens, and these can be either
<integer> values, or <VHDL identifier> values, reflecting pins that are numbered (33,
52, etc.), or have alphanumeric names like G13 or B7. This has been expanded in the
2013 revision so <pin ID> has been recast as <pin desc> and we see this syntax:
B.1.8 Instructions
In Sect. A.3.3 we see a definition of <instruction name>. This has been expanded
with the 2013 release of BSDL.
The new instructions are only defined for the 2013 release, so the conformance
identification must be STD_1149_1_2013 for them to appear.
A BSDL entity description documents an IC at the die level, and also includes infor-
mation about one or more packaging alternatives, including just a bare die, if it is
ever operated as such.4 The 2013 revision of BSDL added a number of new descrip-
tive attributes to the language, and made some other changes. Those are shown
4
For example, if the Boundary-Scan circuitry is tested on an IC tester before packaging, the die pad
mapping will be needed.
510 B 2013 BSDL Syntax Revisions
below and are commented on the right side of the page. The comments are not part
of the description.
The BSDL entity description must have the following structure:
<BSDL description>::=
entity <component name> is
<generic parameter>
<logical port description> --changed at 2013
<standard use statement>
{<use statement>}
<component conformance statement>
<device package pin mappings> --changed at 2013
[<grouped port identification>]
<scan port identification>
[<compliance enable description>]
<instruction register description>
[<optional register description>]
[<register access description>] --changed at 2013
<boundary-scan register description> --changed at 2013
[<runbist description>]
[<intest description>]
[<system clock description>] --added at 2013
{<register mnemonics description>} --added at 2013
{<register fields description>} --added at 2013
{<register assembly description>} --added at 2013
{<register constraints description>} --added at 2013
{<register association description>} --added at 2013
{<power port association description>} --added at 2013
{<BSDL extensions>}
[<design warning>]
end <component name>;
The changed or added syntax structures are described in the remainder of this
section.
The <logical port description> syntax has undergone a few simple changes, in the
area of <pin type>:
The pin type assignments are expanded. See Sect. 11.4.7 for their meanings.
Some new detail is provided by the <device package pin mappings> area of
BSDL. This is <pin desc> information and is described in Sect. 11.4.11.
The original <register access description appears as part of Sect. A.4. It has been
expanded as shown here:
The Boundary-Scan register syntax has been expanded to describe both the pre-
2013 “static” or “fixed” register and the new “segmented” register form. More
descriptive detail for individual cells is also included, as discussed in Sect. 11.4.13.
The syntax of Boundary register description starts out like this:
Here we see the two forms, fixed and segmented. Each has a length statement
followed by the register description, either fixed or segmented. First let’s look at the
fixed form, discussed in Sect. 11.4.14.
<boundary length stmt> ::= attribute BOUNDARY_LENGTH of
<component name> <colon> entity is <register length> <semicolon>
<register length> ::= <integer>
<boundary register stmt> ::= attribute BOUNDARY_REGISTER of
<component name> <colon> entity is <cell table string>
<semicolon>
<cell table string> ::= <quote> <cell table> <quote>
<cell table> ::= <cell entry> { <comma> <cell entry> }
B.2 BSDL Syntax 513
<cell entry> ::= <cell number> <left paren> <cell info> <right
paren>
<cell number> ::= <integer>
<cell info> ::= <cell spec> [ <comma> <input or disable spec> ]
<cell spec> ::= <cell name> <comma> <port ID or null> <comma>
<function>
<comma> <safe bit>
<cell name> ::= <VHDL identifier>
<port ID or null> ::= <port ID> | <asterisk>
<function> ::= INPUT | OUTPUT2 | OUTPUT3 | CONTROL | CONTROLR |
INTERNAL | CLOCK | BIDIR | OBSERVE_ONLY
<safe bit>::= 0 | 1 | X
<input or disable spec> ::= <input spec> | <disable spec>
<input spec> :: = EXTERN0 | EXTERN1 | PULL0 | PULL1 | OPEN0 |
OPEN1 | KEEPER | OPENX | EXPECT1 | EXPECT0
<disable spec>::= <ccell> <comma> <disable value> <comma> <disable
result>
<ccell>::= <integer>
<disable value>::= 0 | 1
<disable result>::= WEAK0 | WEAK1 | PULL0 | PULL1 | OPEN0 |
OPEN1 | KEEPER | Z
Note above that both <input spec> and <disable result> have expanded lists of
keywords, as discussed in Sect. 11.4.13. Also note that a token called <input or dis-
able spec> has been inserted into the <cell info> syntax. This accounts for the new
<input spec> that may appear in a cell entry.
Next, here is the syntax for segmented Boundary register description, discussed
in Sect. 11.4.15.
<assembled boundary length stmt> ::= attribute
ASSEMBLED_BOUNDARY_LENGTH of <component name>
<colon> entity is <left paren> <reset length> <comma>
<register length> <right paren> <semicolon>
<reset length> ::= <integer>
<boundary register segments> ::= <boundary register segment>
{ <boundary register segment> }
<boundary register segment> ::= attribute BOUNDARY_SEGMENT of
<component name> <colon> entity is
<boundary segment string> <semicolon>
<boundary segment string>::= <quote> <boundary segment list>
{ <comma> <boundary segment list> } <quote>
<boundary segment list>::= <boundary segment name>
<left bracket> <boundary segment length> <right bracket>
<left paren> <cell table> <right paren>
<boundary segment name> ::= <VHDL identifier>
<boundary segment length> ::= <integer>
514 B 2013 BSDL Syntax Revisions
Note that <register length> and <cell table> definitions are given up in the fixed
register syntax, and is the same. The length statement differs in that it gives two
numbers for the Boundary register length, a “reset length” followed by a “register
length”. This is also discussed in Sect. 11.4.15.
The <port ID> must refer to a port with an input capability (IN, INOUT,
LINKAGE_IN or LINKAGE_INOUT) and if it is a differential clock input pair, the
representative port is identified. Note that if the compliance level of the device is
pre-2013, then only RUNBIST or INTEST may be the clocked instruction. If the
device is a 2013-compliant device, then more standard instructions are allowed (see
<clocked instruction> above) but not those like EXTEST, BYPASS, SAMPLE,
PRELOAD, etc. These instructions use only TCK for clocking. Designer-specified
instructions that require clocking are provided by their <VHDL identifier>. See
more discussion and an example in Sect. 11.4.17.
The register fields description is used to describe a data register and any segments that
make it up. The overall length of a register is given, followed by a listing of its seg-
ments, also named and with lengths provided. Note that not all bits of the data register
may be described within some segment, that is, some may be left undefined. The
syntax is given next, but, is divided into two portions. The first portion is unique to
the register fields attribute. The second is used by both the register fields and register
assembly attribute (see Sect. A.2.8) and it provides definitions of items like <value
assignment>, <type assignment> and <reset assignment>. The first syntax portion is:
The definition of <range> is found in Sect. A.4. The definition of <prefix identi-
fier> is found in Sect. A.1.4. When a <reg or seg name> is that defined by the stan-
B.2 BSDL Syntax 517
dard (e.g., DEVICE_ID, BOUNDARY, etc.) then the value of <reg or seg length>
must equal the length of the register as already provided. Any bit number listed in a
<bit list> must be less than the <reg or seg length> for that <reg field list>. The bit
number zero is closest to TDO. When one or more <prefix statement> elements are
first found in a <register field list>, then they must be listed in numerical order start-
ing with Prefix 0. If a <prefix statement> is found in a subsequent <register field
list>, then it will overwrite the previous <prefix statement> with the same number
and erase all statements with larger numbers. If a <prefix statement> is given with a
name of <minus sign> that will erase all previously defined prefixes. When an
<extended field name> is encountered and there are defined prefixes, then that name
will have all of the prefixes prepended in their numerically ascending order, sepa-
rated with ‘.’ characters. All <extended field name> elements must be unique within
a BSDL entity or package. When a <field length> is zero, then the associated <bit
list> must be empty “()”. A test register bit number may be referenced in more than
one <register field>, but within a given <register field>, it may only appear once.
See examples in Sect. 11.4.20.
Next is the second portion of syntax, shared with the register assembly attribute:
The <register assembly elements> are ordered with the first being closest to TDI
and the last being closest to TDO. If the <reg or seg name> is that of a standard
register (e.g., Device_ID) then the length must be what is specified in the standard
(e.g., 32) or what has been described before in a register access statement. In the
case of the Boundary register, it must match either the length given in <boundary
length stmt> or the minimum length given in an <assembled boundary length stmt>.
Otherwise, the specified length is used for a register that has a deferred length speci-
fication [*]. For user registers specified in a <package target> the length shall be the
sum of the lengths of the non-excludable segments in the <register assembly>.
520 B 2013 BSDL Syntax Revisions
In a <field and options> segment, the <field name> must be unique in any <reg-
ister assembly list>. Also, all <segment ident> and <array segment ident> elements
within a <register assembly list> must be unique within an entity or package. A <reg
or seg name> in an <instance definition> must be defined in a <register field list> or
<register assembly list> contained in the current entity or package, or in a package
the <package hierarchy> given by the most recent “USING” statement.
Between a SEGSEL (or SEGSTART5) element and a SEGMUX element that are
associated with the same segment <association name>, all register assembly ele-
ments listed are excludable as a unit.
Between a SELECTMUX element and a SELECTFIELD element, all register
assembly elements listed are members of a parallel group of segments, of which
only one is selected by the SELECTVALUES element to drive out towards
TDO. Optionally, following the selection elements there may be a
BROADCASTFIELD and BROADCASTVALUES element pair that enumerate
which of the parallel segments, receive TDI data in parallel for a given selection
value. In both cases, all segments mentioned between SELECTMUX and
SELECTFIELD must appear as selectable segments in the SELECTVALUE and
BROADCASTVALUE lists.
When multiple <array ident> statements have the same <array segment ident>
then all associated <range> specification must not have any duplicated indices, and
all indices must be present or implied within the total range specification.
The definition of the <field reference> register used in a SELECTFIELD or
BROADCASTFIELD element must have a RESETVAL specification, so the
selected segment upon reset is known.
When the register being assembled is the Boundary register, then it must be com-
posed only of instances of DOMCTRL, SEGSEL, SEGSTART or SEGMUX regis-
ter fields, which are defined in the standard package STD_1149_1_2013 (see
Sect. A.3), or defined <boundary segment name> elements defined found in a
Boundary_Segment attribute (see Sect. A.2.4). Note that any excludable segment in
a Boundary register must have a DOMCTRL and SEGSEL field associated with
that segment in the same register assembly list. This does not preclude having other
such controls in (say) the Init_Data register, but these are duplicates.6
Any excludable segments in the Init_Data register must be controlled by
DOMCTRL and SEGSEL fields in the Init_Data register. All excludable seg-
ments in a public TDR (standard or design-specific) must have DOMCTRL and
SEGSEL fields in that same TDR, or, in another public TDR that is not the
Boundary register. This means all such exclusion controls for public registers
must be visible (public).
5
SEGSEL represents a 1-bit register cell that directly precedes an excludable segment, In the case
where this bit exists in a different register, then SEGSTART, a zero-length segment indicator starts
the excludable segment. All must have the same <association name>.
6
In effect, the duplicate bits are OR-ed with those in the Boundary register to control the power/
exclusion mechanism. Thus, to exclude a segment, you should be aware of any duplicate bits else-
where and manage them along with the bits in the Boundary register.
B.2 BSDL Syntax 521
The register constraints attribute allows the description of register contents that
should be avoided—for example, where two domain control cells that turn on power
to two domains should not be both turned on at the same time (see example in Sect.
11.4.22) because the hardware itself cannot support this. Here is the register con-
straints syntax:
The logical expression formulation is a subset adopted from section Sect. 11.2 of
SystemVerilog [IEEE12a].
The definition of <target> is found in Sect. A.2.6. A <constraint domain> of
PACKAGE or ENTITY must match the type of <target>. The <field reference>
must be a previously defined register or register field, as provided by the standard
(e.g., Boundary or ECID) or by a register access, register fields or register assembly
definition. A <mnemonic pattern> must resolve to previously defined mnemonic
value given in a register mnemonics definition.
A <check expression> must contain at least one <field reference>. (For example,
the expression “2 < 3” does not meet this requirement.) The field length of a <field
reference> must be greater than zero. Operator meanings, precedence and symbols
are given in below in Table A.1. The logical value of zero if FALSE, and the logical
value of a non-zero number is TRUE. Note a binary number with ‘x’ bits is consid-
ered non-zero. Arithmetic operators do not operate on ‘x’ bits, only ‘1’ and ‘0’ bits
are allowed in operands.
Operators of higher precedence (that is, lower precedence number) are evaluated
before those of lower precedence. Operators of the same precedence are evaluated
left-to-right.
These two new optional attributes are described together since they share some
syntax definitions and rules of use. These attributes allow ports of an IC to have
associated information that may be quite helpful during test debugging or defect
diagnosis.
The 2013 BSDL standard package has some changes from the previous (2001) ver-
sion. The package comes in two sections, the “package” and then the “package
body”. The 2013 package body contains cell descriptions that are very similar to the
previous package body so to conserve space, refer to the 2001 package body seen in
Sect. 2.6.1 for those cell descriptions.
The first section in the standard package is essentially a set of data and type dec-
larations. These were used to support VHDL compilers so that they could understand
data structures in BSDL. There are additions that come with the 2013 version. These
are shown next. Those statements that have been added by the 2013 revision are
commented at the right side of the page.
The standard package body follows here. The cell descriptions are substantially
unchanged from 2001 (see Sect. 2.6.1). These are omitted for brevity.
The syntax for a user package is expanded to account for nesting of IP packages and
register mnemonics, fields, assembly, constraints and association descriptions. The
syntax below has comment in the right sides of lines that are added by the 2013
revision. (These comments are not part of the description.)
The various register descriptions used above are defined in this Appendix. The
addition of a design warning inside a user package will allow IP providers to alert
their users to any special considerations their IP requires.
B.5 Modified 1149.6 Extention Attribute Syntax 529
The 1149.6 extension contains syntax that defines 1149.6 attributes. This syntax
may appear in the extension area of an entity (chip) description, or in the extension
area of a user package. Note that the two extensions differ in that for an entity exten-
sion, the <AIO port link behavior description> syntax may not appear, and in a user
package extension, a <AIO optional pin behavior description> may not appear.
Both of these items appear in the following syntax description since they make use
of some common elements. Three of the five statements are identical to the 2003
version and the comments point to their definition in Sect. A.6.
<port links> ::= <port link name> { <comma> <port link name> }
<port link name> ::= <VHDL identifier>
<port link type> ::= in | buffer | out | inout
<AC package info list> ::= <package pin info>
{ <semicolon> <package pin info> }
<package pin info> ::= <port link list> <colon> <AC parameter list>
NOTE – The definitions of <port link name>, <subscripted port link name>
and <ranged port link name> were given above in Sect. A.5.1.
<AC parameter list> ::= [ <LP time constant> ] [ <HP time constant> ]
<voltage parameters> [No_pulse]
<voltage parameters> ::= <voltage parm> <voltage parm>
[ <voltage parm> <voltage parm> ]
<voltage parm> ::= <output VCM> | <output VPP> | <input threshold> |
<input hysteresis>
<LP time constant> ::= <LP key> <equal> <time constant>
<LP key> ::= LP_time | edge_detect_time
<HP time constant> ::= <HP key> <equal> <time constant> [ <cap spec> ]
[ <detection modifier> ]
<HP key> ::= HP_Time | coupling_time
<time constant> ::= <real>
<cap spec> ::= On_Chip | On_Chip_Programmable | On_Chip_AC |
On_Chip_AC_Programmable | <group on-chip>
532 B 2013 BSDL Syntax Revisions
[Agra88] “Test Generation for VLSI Chips”, V. D. Agrawal and S. C. Seth, IEEE Computer
Society Press, Los Alamitos CA, 1988
[Albe01] “A Practical Guide to Combining ICT and Boundary-Scan Testing”, A. Albee,
Proceedings, International Test Conference, Baltimore MD, pp 487–494, Oct 2001
[AMD91] “Am29030 and Am29035 Microprocessors User's Manual and Data Sheet”, Advanced
Micro Devices, Inc. 1991
[Avra87] “A VHSIC ETM-Bus Compatible Test and Maintenance Interface”, L. Avra,
Proceedings, International Test Conference, pp 964–971, Washington DC, 1987
[Ball89] “Board-Level Boundary-Scan: Regaining Observability with an Additional IC”,
W. D. Ballew and L. Streb, Proceedings, International Test Conference, pp 182–189,
Washington DC, Aug 1989
[Barr00] “End-to-End Testing for Boards and Systems Using Boundary-Scan”, R. Barr and
E. Wallace, Proceedings, International Test Conference, Atlantic City NJ, pp 585–
591, Oct 2000
[Been85] “Systematic and Structured Methods of Digital Board Testing”, F. P. M. Beenker,
Proceedings, International Test Conference, pp 380–385, Philadelphia, Nov 1985
[Blee93] “Boundary-Scan Test: A Practical Approach”, H. Bleeker, P. van den Eijnden and F.
de Jong, Kluwer Academic Publishers, Norwell MA, 1993
[Breu88] “A Test and Maintenance Controller for a Module Containing Testable Chips”, M. A.
Breuer and J. C. Lien, Proceedings, International Test Conference, Washington DC,
pp 502–513, 1988
[Bruc91] “Implementing 1149.1 on CMOS Microprocessors”, W. C. Bruce, M. G. Gallup,
G. Giles and T. Munns, Proceedings, International Test Conference, Nashville TN,
pp 879–886, Oct 1991
[Bull87] “Designing SMT Boards for In-Circuit Testability”, M. Bullock, Proceedings,
International Test Conference, pp 606–613, Washington DC, Sept 1987
[Bush84] “Measuring Thermal Rises Due to Digital Device Overdriving”, G. S. Bushanam
et al, Proceedings, International Test Conference, pp 400–407, Philadelphia PA. Oct
1984
[Cald92] “Is IEEE 1149.1 Boundary-Scan Cost Effective: A Simple Case Study”, B. Caldwell,
T. Langford, Proceedings, International Test Conference, pp 106–109, Baltimore
MD, Sept 1992
[Chil91] “Using Boundary-Scan Description Language in Design”, D. Chiles and J. DeJaco,
Proceedings, International Test Conference, pp 865–868, Nashville TN. Oct 1991
[Chun01] “AC-JTAG: Empowering JTAG Beyond Testing DC Nets”, S. Chung, S. Baeg,
Proceedings, International Test Conference, pp 30–37, Baltimore MD, Oct 2001
[Clar10] “Solutions for Undetected Shorts on IEEE 1149.1 Self-Monitoring Pins”, Clark,
C. J., Dubberke, D., Parker, K. P., Tuthill, B., Proceedings, International Test
Conference, Paper 19.1, Austin TX, Oct 2010
[Cogs02] “A Structured Graphical Tool for Analyzing Boundary-Scan Violations”,
M. Cogswell, S. Mardhani, K. Melocco and H. Arora, Proceedings, International
Test Conference, Baltimore MD, 755–762, Oct 2002
[Coom95] “Printed Circuits Handbook, 5th Edition”, C. F. Coombs, Editor, McGraw-Hill,
New York, 2001
[Covi92] “Boundary-Scan Testing with ATEs”, R. R. Covington, R. C. Goodwin, T. A. Reed,
Proceedings, ATE&I Conference, pp 32–37, Anaheim CA. Jan 1992
[Croo79] “Analog In-Circuit Component Measurements: Problems and Solutions”, D. T.
Crook, Hewlett-Packard Journal, vol 30, No. 3, March 1979
[Crou94] “Low Power Mode and IEEE 1149.1 Compliance: A Low Power Solution”, A. L.
Crouch, R. Ramus, C. Maunder, Proceedings, International Test Conference, pp 660–
669, Washington DC, Oct 1994
[Dahb89] “An Optimal Test Sequence for the JTAG Boundary-Scan Controller”, A. Dahbura,
M. U. Uyar and C. W. Yau, Proceedings, International Test Conference, Washington
DC, pp 55–62, Aug 1989
[DeJo91] “Testing the Integrity of the Boundary-Scan Test Infrastructure”, F. de Jong and F.
van der Heyden, Proceedings, International Test Conference, Nashville TN, pp 106–
112, Oct 1991
[DeJo00] “Power Pin Testing: Making the Test Coverage Complete”, F. de Jong and R. Schuttert,
Proceedings, International Test Conference, Atlantic City NJ, pp 575–584, Oct 2000
[DeJo01] “Testing and Programming Flash Memories on Assemblies During High Volume
Production”, F. de Jong, A. S. Biewenga, D. van Geest and T. F. Waayers, Proceedings,
International Test Conference, Baltimore MD, 470–479, Oct 2001
[Derv88] “Using Scan Technology for Debug and Diagnostics in a Workstation Environment”,
B. I. Dervisoglu, Proceedings, International Test Conference, Washington DC,
pp 976–986, 1988
[Dubb08] “Solving In-Circuit Defect Coverage Holes with a Novel Boundary-Scan
Application”, D. Dubberke, J. J. Grealish, B. van Dick, Proceedings, International
Test Conference, paper 11.2, Santa Clara, CA, Oct 2008
[EDIF91] “EDIF Test Technical Subcommittee Test Extension”, Version 2 0 32, EDIF Test
Technical Subcommittee, Oct 1991
[Eklo01] “Unsafe Board States During PC-Based Boundary-Scan Testing”, B. Eklow,
R. Sedmak and D. Singletary, Proceedings, International Test Conference, Baltimore
MD, pp 615–623, Oct 2001
[Eklo02] “IEEE P1149.6: A Boundary-Scan Standard for Advanced Digital Networks”,
B. Eklow, C. F. Barhart, K. P. Parker, Proceedings, International Test Conference,
pp 1056–1065, Baltimore MD, Oct 2002
[Eklo05] "An update on IEEE 1149.6 - successes and issues", B. Eklow, Proceedings,
International Test Conference, Austin TX, Nov 2005
[Fasa89] “ASIC Testing in a Board/System Environment”, F. P. Fasang, IEEE Custom
Integrated Circuits Conference, New York NY, pp 22.4.1–22.4.4, 1989
[Fout06] “Automation of IEEE 1149.6 Boundary Scan Synthesis in an ASIC Methodology”,
B. Foutz, V. Chickermane, B. Li, H. Linzer, G. Kunzelman, 15th Asian Test Symposium,
Fukuoka Japan, Nov 2006
[Gall90] “The Testability Features of the 68040”, M. Gallup et al, Proceedings, International
Test Conference, pp 749–757, Washington DC, Sept 1990
[Gree93] “Benefits of Boundary-Scan to In-Circuit Test”, D. A. Greene, Proceedings,
International Test Conference, p 263, Baltimore MD, Oct 1993
[Gols00] “Test and On-Line Debug Capabilities of IEEE Std 1149.1 in UltraSparc(TM)-III
Microprocessor”, F. Golshan, Proceedings, International Test Conference, Atlantic
City NJ, pp 141–150, Oct 2000
References 535
[Stan02] “An Implementation of IEEE 1149.1 to Avoid Timing Violations and Other Practical
In-compliance Improvements”, D. Stang and R. Dandapani, Proceedings,
International Test Conference, Baltimore MD, 746–753, Oct 2002
[Sunt95] “The P1149.4 Mixed-Signal Test Bus: Costs and Benefits”, Proceedings, International
Test Conference, pp 444–450, Washington DC, Oct 1995
[Sunt96] “Cost/benefit Analysis of the P1149.4 Mixed-Signal Test Bus”, S. Sunter, IEEE
Proceedings, Circuits, Devices, and Systems, December 1996, pp 393–398.
[Sunt01] “A General Purpose 1149.4 IC with HF Analog Test Capabilities”, S. Sunter,
K. Filliter, J. Woo, P. McHugh, Proceedings, International Test Conference, Baltimore
MD, Oct. 2001, pp 38–45
[Sunt02] “Complete, Contactless I/O Testing - Reaching the Boundary in Minimizing Digital
IC Testing Cost”, S. Sunter, B. Nadeau-Dostie, Proceedings, International Test
Conference, Baltimore MD, Oct 2002
[Sunt09] "Testing Bridges to Nowhere - Combining Boundary-Scan and Capacitive Sensing",
Sunter, S. and Parker, K. P., Proceedings, International Test Conference, Austin TX,
Nov 2009
[Swee88] “JTAG Boundary-Scan: Diagnosing Module Level Functional Failures”, J. Sweeney,
National Communications Conference, 1988, pp 1801–1804
[Swen86] “Thermal Analysis of Backdriven Output Transistors”, R. L. Swent and M. J. Ward,
Proceedings, International Test Conference, pp 295–303, Washington DC, Sept 1986
[Tege96] “Opens Board Test Coverage: When is 99% Really 40%?”, M. V. Tegethoff, K. P.
Parker and K. Lee, Proceedings, International Test Conference, pp 333–339,
Washington DC, Oct 1996
[Tell52] “A General Network Theorem with Applications”, B. D. H. Tellegen, Phillips
Research Report No. 7, pp 259–269, 1952
[Texa90] “ASSET Diagnostic System Overview”, (Literature SATT113), Texas Instruments,
Inc., 1990
[Texa91a] “54BCT8244/74BCT8244 Octal Buffer with Boundary-Scan”, Texas Instruments,
Inc., 1991
[Texa91b] “54BCT8374/74BCT8374 Octal D Flip-Flop with Boundary-Scan”, Texas
Instruments, Inc., 1991
[That93] “Towards a Test Standard for Board and System Level Mixed-Signal Interconnects”,
C. W. Thatcher and R. E. Tulloss, Proceedings, International Test Conference,
pp 300–308, Baltimore MD, Oct 1993
[USP93] “Powered Testing of Mixed Conventional/Boundary-Scan Logic”, United States
Patent 5,260,649, Nov 1993
[Verm02] “IEEE 1149.1-Compliant Access Architecture for Multiple Core Debug on Digital
System Chips”, B. Vermeulen, T. Waayers, S. Bakker, Proceedings, International
Test Conference, pp 55–63, Baltimore MD, Oct 2002
[Vinn98] “Analog and Mixed-Signal Test”, B. Vinnakota, Editor, Prentice Hall, Upper Saddle
River, NJ, 1998
[Wagn87] “Interconnect Testing with Boundary-Scan”, P. T. Wagner, Proceedings, International
Test Conference, pp 52–57, Washington DC, Sept 1987
[Wagn88] “Design for Testability of Mixed-Signal Integrated Circuits”, K. D. Wagner and T. W.
Williams, Proceedings, International Test Conference, pp 823–828, Washington DC,
Oct 1988
[Wagn91] “Enhancing Board Functional Self-Test by Concurrent Sampling”, K. D. Wagner and
T. W. Williams, Proceedings, International Test Conference, pp 633–640, Nashville
TN, Oct 1991
[Whet90] “Event Qualification: a Gateway to At-Speed System Testing”, L. Whetsel,
Proceedings, International Test Conference, pp 135–141, Washington DC, Sept 1990
[Whet92] “A Proposed Method of Accessing 1149.1 in a Backplane Environment”, L. Whetsel,
Proceedings, International Test Conference, pp 206–216, Baltimore MD, Sept 1992
540 References
Common mode noise, 66, 257, 273 missing capacitor, 290, 291
Comparator, 292, 293, 295, 296, 298–300 model, 110, 148, 288–291
Complex programmable logic device (CPLD), open circuit, 292
118, 164, 201, 334 open solder joint, 291
Compliance enable pins, 43, 51, 56, 68, 69, shorted capacitor, 319, 458–459
75, 105, 117, 194, 195 shorted driver, 132, 133, 291
Compliance limit shorted receiver, 459
current, 206, 207 Designated driver, 130–132, 134–136, 139
voltage, 206, 207 Design for testability (DFT)
Concurrent programming, 322, 338–340 board level, 187–198, 263, 319, 375
Confounding, 131–134 built-in logic block observer, 172
Counting sequence, 127, 131, 133, 134, 142 device programming, 14, 31, 335, 341
CPLD. See Complex programmable logic integrated circuit level, 173–187, 263, 318,
device (CPLD) 374
Crosstalk, 263, 295 LSSD, 172
system level, 173, 186, 189, 198–200
Device identification register, 12, 13, 20, 22,
D 34–36, 52, 70
Data register capture pattern, 106, 178, 179, 184, 186
boundary register, 22 Device under test (DUT), 5, 7, 144, 207,
bypass, 22, 34 343–345, 348, 366
capture data, 20, 90, 91, 437, 450 DFT. See Design for testability (DFT)
device identification, 22 Differential
dynamic data register, 385, 397–401 AC coupled, 269, 277
ECID, 23 current balancing, 273
halt shifting, 15 driver, 66, 159, 161, 178, 257, 258, 273,
Init_data, 384, 392, 394–395, 397, 400, 274, 282, 291, 316, 354–356, 360,
415, 416, 424–427, 432, 433, 441, 361, 363, 364, 408, 435, 469–471
452, 453, 456–458, 469, 471, 473, receiver, 161, 257, 258, 273, 282, 288, 292,
478, 481, 486, 488, 489 295, 296, 312, 408, 435, 460, 472
init_status signals, 66, 105, 159–161, 256–258, 266,
busy/done bit, 395 273, 277, 278, 281, 282, 287, 288,
pass/fail bit, 123 297, 318, 319, 348, 353–356, 375,
mode of operation, 12 383, 384
parallel hold latches, 20 testing, 256, 367
reset selection transmission, 269, 271
reset-control bit, 396 unbalancing, 354–356
reset-enable bit, 396 Differential signaling
reset-hold bit, 396, 397 EXTEST paradox, 258
segmented data register, 400 noise rejection, 257, 258
shift portion, 17, 112 Digital boundary module (DBM), 31, 231,
shift ripple, 18 233, 247–248
target register, 112, 113 DRAM. See Dynamic random access memory
TMP_status (DRAM)
bypass-escape bit, 386, 392, 395, 396 Drive conflicts
TMP-status bit, 392, 395, 396, 417 board level, 136
toggle_control, 354, 358, 366 duration, 129
user-defined, 22, 42, 72, 106, 429 Driver
DBM. See Digital boundary module (DBM) asymmetrical, 40, 75, 78, 81
DC pins, 281–283, 287, 312, 350 clear the throat, 303
DC test mode, 282 damage resistant, 179–180
Defects disabling, 78, 471
detectable with 1149.6, 290 ECL open emitter, 40, 75
masking, 421 “Keepers”, 75
Index 545
F
Fault I
detected, 408 ICT. See In-circuit test (ICT)
dictionary, 120 IEEE/ANSI standard 1149.1-1990
failure mechanism, 5 supplement A, 4
model, 5 supplement B, 4
Field-programmable gate array (FPGA), 26, IEEE standard 1076, 50
118, 164, 189, 201, 334, 390, 391, IEEE standard 1149, 25, 48, 58, 63, 64, 73, 83,
394, 458 85–89, 103, 104, 106, 305,
Field-programmable IC 309–313, 315, 322, 405, 406, 424,
blank page, 31 440, 441, 455, 457, 460, 466, 471,
in chains, 189 474, 478, 479, 482, 485, 486
cook time, 165 IEEE standard 1149.1
hard-wired, 31, 32 architecture summary, 19
input/output blocks (IOBs), 31 automation, 46, 49, 382, 388, 389, 422
parallel programming, 32 basic architecture, 10–33
programming, 31, 32, 43, 189 benefits, 43–48
Fine-pitch, 7 conformance and documentation
Fixed system pins, 323 requirements, 49
FLASH RAM, 165–167, 321 costs, 43–48
programming, 166–167 critical mission, 38
FPGA. See Field-programmable gate array ensuring compliance, 53
(FPGA) extensibility, 85
Framescan, 343 gate overhead, 44
increased design time, 45
inserted delay, 44, 45
G lack of discipline, 45
Gallium arsenide, 180 lack of hierarchy, 162
Garbage In, Garbage Out, 3, 267 non-invasive mode, 9, 151, 183
3GIO, 272 pad overhead, 44
Grandfathering, 64, 65 pin-permission mode, 9, 10, 183
Ground-bounce, 174, 175, 178, 295 private instructions, 69
Guardband, 205 public instructions, 42
Guarding reuse of tests, 46
546 Index
P
M P1149.2, 48
Manufacturing faults P1149.3, 48
dead component, 172 Package port link description, 464
missing component, 172 Packaging hierarchy, 162, 200, 422, 423, 436,
open solder, 291 442, 445, 488
solder shorts, 143 Parallel test vector (PTV), 115, 116, 130
wrong component, 172, 229 Parasitic devices, 204, 205, 239, 241, 246,
Matsushita electric industries, 47 253, 258, 263, 264
MCM. See Multi-chip module (MCM) PCI express, 272
Measurement errors, 212 PDL commands (Level-0)
Measuring impedance iApply, 437–439, 442–451, 473, 488, 489
imaginary waveform, 215–217 iCall, 440, 445, 447, 482
reactive devices, 216 iClock, 442, 445
real waveform, 217 iCLockOverride, 442, 445
6-wire measurement, 212 ifEnd, 446
Measuring operational amplifier (MOA), 212 ifFalse, 446
Mixed logic families, 191–193 ifTrue, 446
Mixed-signal, 158, 159, 195, 223–226, iLoop, 446
228–231, 267 iMerge, 446–448
Modes of operation iNote, 448
extensible, 10 iPDLLevel, 441
non-invasive, 9, 10 iPrefix, 442, 448
pin-permission, 9, 10 iProc, 441, 442, 445–449, 467, 482
Monte carlo simulations, 219 iProcGroup, 442
Moore’s law, 48, 270, 272, 274, 275, 334, 359, iRead, 437, 438, 442, 443, 446, 448, 450,
381–382, 384 468, 469
Motorola 68040, 44 iRelease, 448
Multi-chip module (MCM), 47, 161–162, 171, iRunLoop, 445, 448, 449
201 iScan, 442, 443, 446, 448
Multidrop systems, 198–200 iSetFail, 448, 450
Multiple IDCODEs, 71 iSetInstruction, 442
iSource, 441
iTake, 448
N iTMSidle, 446, 449
Node voltage analysis, 218–219, 221, 252 iTMSreset, 446, 449
limited access, 217–223 iTRST, 446, 449
Noise iUntil, 446
common mode, 66, 257 iWrite, 437, 439, 442–444, 448, 450, 468,
crosstalk, 295 469, 473
ground-bounce, 295 PDL commands (Level-1)
immunity, 66, 266, 277 iGet, 449–452
I/O, 273 iGetStatus, 449–451
radiated interference, 273 PDL_CONTEXT_PATH, 473
rejection, 257, 258, 295 PDL use model
small signal, 297, 299 data flow (iApply), 437
Normal system pins, 350 PDL scan frame, 437, 438
548 Index
120–122, 151, 178–180, 183, 186, update-DR, 16–18, 28, 37–39, 112, 113,
198, 325, 366, 386, 393, 398, 419 129, 155, 167, 168, 174, 175, 278,
System modal state 279, 283, 296, 297, 300, 330, 353,
ISC accessed, 325, 328–330, 338 387, 393, 396, 420, 421, 436, 445
ISC complete, 325, 326, 328, 330, 340 update-IR, 15–20, 28, 37, 40, 41, 71,
operational, 326, 327, 330, 340 112–114, 116, 120, 122, 174, 179,
unprogrammed, 326, 330, 337 186, 303, 324, 328, 352, 386, 394
System-on-chip (SOC), 45, 161, 171, 377 Tape automated bonding (TAB), 171
TAP instruction
BYPASS, 13, 20, 22, 34, 35, 37, 38, 57,
T 70, 72, 90, 93–95, 97, 98, 100–102,
TAP. See Test access port (TAP) 107, 110, 112, 125, 144, 155, 162,
TAP controller 165, 167, 179, 186, 190, 192, 198,
asynchronous reset, 10 199, 240, 241, 246, 249, 252, 261,
data column states, 12, 13, 113, 144, 199 282, 326, 328, 340, 386, 387, 392
finite state machine, 11, 12 CLAMP, 41, 57, 93–95, 97, 98, 100–102,
instruction column states, 12, 13, 175 110, 155, 165, 186, 240, 252–254,
power-up reset, 420 282, 306, 329, 330, 342, 387,
state diagram, 12, 20, 33, 48, 52, 56, 110, 391–393, 442
111, 113, 123, 167, 174, 179, 186, CLAMP_HOLD, 386, 387, 392, 395, 396
223, 283, 385, 444, 449 CLAMP_RELEASE, 386, 387, 392, 395,
state transitions, 12, 13 396
synchronizing sequence, 12, 111, 449 ECID_CODE, 389–390, 394, 421, 441,
temporary state, 14–17 452
TAP controller state EXTEST, 28, 38, 39, 41, 57, 70, 72, 90,
capture-DR, 14, 16–18, 22, 34–40, 52, 70, 93–95, 97–103, 107, 110, 112–115,
72, 90, 112, 122, 142, 143, 152, 121, 151, 155, 157, 166, 167, 175,
154, 155, 181, 186, 279, 297, 303, 179–181, 183, 184, 186, 190, 191,
305, 354, 394, 419, 420, 436 240, 241, 246, 248–252, 258, 261,
capture-IR, 14, 17–20, 53, 70, 106, 112, 283, 284, 286, 287, 290, 291,
124, 175, 178, 179 295–297, 301, 306, 319, 329, 330,
Exit1-DR, 16–18, 112, 300 342, 347, 352, 353, 358, 366, 369,
Exit2-DR, 16, 17, 300, 444 370, 373, 375–377, 386, 387, 390,
Exit1-IR, 14, 15, 17, 18, 20, 112, 179 395, 435, 442, 458, 459, 461, 463,
Exit2-IR, 15, 20 487, 490
pause-DR, 16, 17, 188, 444, 445 EXTEST_PULSE (see AC EXTEST
pause-IR, 15, 20, 188 Instruction)
run-test/idle, 13–14, 16, 17, 40, 76, 113, EXTEST_TRAIN (see AC EXTEST
122, 125, 144, 283–285, 291, 300, Instruction)
303, 317, 318, 325–328, 336–340, HIGHZ, 40, 57, 76, 98, 99, 151, 155, 165,
351–353, 357, 358, 444, 445, 449 186, 240, 241, 245, 246, 249,
select-DR-scan, 13, 14, 16, 17, 152, 174, 252–254, 261, 282, 306, 329–334,
175, 283, 351, 445 342
select-IR-scan, 14, 113, 175 IC_RESET, 393, 396, 397
shift-DR, 16, 17, 38, 112, 125, 144, 354, IDCODE, 12, 20, 22, 34–37, 70–72, 90,
391, 420, 444 94, 95, 97, 98, 100–102, 107, 110,
shift-IR, 14, 15, 17, 18, 20, 111, 112 112, 125, 184, 186, 199, 240, 249,
test-logic-reset, 12–14, 20, 33, 35, 37, 57, 282, 315, 326, 387, 389, 452
74, 90, 111, 116, 122, 123, 125, INIT_CLAMP, 390–392, 394
165, 168, 183, 186, 199, 326, 328, INITIALIZE, 366, 379
338–340, 366, 386, 387, 394, 397, INIT_RUN, 390–393, 395, 414, 441, 457,
420, 445, 449, 453 471, 473, 488, 489
550 Index
V
Very large-scan integration (VLSI), 44, 119, X
171, 174 Xilinx 4005, 31, 32
VHDL identifiers. See Boundary-scan Xilinx XC9500, 31
description language (BSDL), X-ray laminography, 133, 375
identifier X-Y coordinate location data, 8