Dftbist
Dftbist
User Guide
Version K-2015.06-SP4, December 2015
Copyright Notice and Proprietary Information
2015 Synopsys, Inc. All rights reserved. This software and documentation contain confidential and proprietary
information that is the property of Synopsys, Inc. The software and documentation are furnished under a license
agreement and may be used or copied only in accordance with the terms of the license agreement. No part of the
software and documentation may be reproduced, transmitted, or translated, in any form or by any means, electronic,
mechanical, manual, optical, or otherwise, without prior written permission of Synopsys, Inc., or as expressly provided
by the license agreement.
Destination Control Statement
All technical data contained in this publication is subject to the export control laws of the United States of America.
Disclosure to nationals of other countries contrary to United States law is prohibited. It is the reader's responsibility to
determine the applicable regulations and to comply with them.
Disclaimer
SYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH
REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Trademarks
Synopsys and certain Synopsys product names are trademarks of Synopsys, as set forth at
http://www.synopsys.com/Company/Pages/Trademarks.aspx.
All other product or company names may be trademarks of their respective owners.
Third-Party Links
Any links to third-party websites included in this document are for your convenience only. Synopsys does not endorse
and is not responsible for such websites and their practices, including privacy practices, availability, and content.
Synopsys, Inc.
690 E. Middlefield Road
Mountain View, CA 94043
www.synopsys.com
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
following conditions are met:
1.Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
2.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.
3.All advertising materials mentioning features or use of this software must display the following acknowledgement:
This product includes software developed by the University of California, Berkeley and its contributors.
4.Neither the name of the University nor the names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software is not subject to any license of the American Telephone and Telegraph Company or of the Regents of the
University of California.
Permission is granted to anyone to use this software for any purpose on any computer system, and to alter it and
redistribute it freely, subject to the following restrictions:
1.The authors are not responsible for the consequences of use of this software, no matter how awful, even if they arise
from flaws in it.
2.The origin of this software must not be misrepresented, either by explicit claim or by omission. Since few users ever
read sources, credits must appear in the documentation.
3.Altered versions must be plainly marked as such, and must not be misrepresented as being the original software.
Since few users ever read sources, credits must appear in the documentation.
4.This notice may not be removed or altered.
1. Introduction to LogicBIST
Introduction to LogicBIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
LogicBIST Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
The LogicBIST Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
v
DFTMAX LogicBIST User
DFTMAX LogicBIST User Guide
Guide Version K-2015.06-SP4
K-2015.06-SP4
Contents vi
DFTMAX LogicBIST User Guide Version K-2015.06-SP4
Glossary
Chapter 1: Contents
Contents vii
1-vii
DFTMAX LogicBIST User
DFTMAX LogicBIST User Guide
Guide Version K-2015.06-SP4
K-2015.06-SP4
Contents viii
Preface
This preface includes the following sections:
About This User Guide
Customer Support
ix
DFTMAX LogicBIST User
DFTMAX LogicBIST User Guide
Guide Version K-2015.06-SP4
K-2015.06-SP4
Audience
This manual is intended for ASIC design engineers who have some experience with
testability concepts, are familiar with the DFT Compiler and DFTMAX tools, and want to
implement built-in self-test (BIST) logic in their design.
Related Publications
For additional information about the DFTMAX LogicBIST tool, see the documentation on the
Synopsys SolvNet online support site at the following address:
https://solvnet.synopsys.com/DocsOnWeb
You might also want to see the documentation for the following related Synopsys products:
DFT Compiler and DFTMAX
Design Compiler
TetraMAX
VCS
Preface
About This User Guide x
DFTMAX LogicBIST User Guide Version K-2015.06-SP4
Conventions
The following conventions are used in Synopsys documentation.
Convention Description
Customer Support
Customer support is available through SolvNet online customer support and through
contacting the Synopsys Technical Support Center.
Preface 1: Preface
Chapter
Customer Support 1-xi
xi
DFTMAX LogicBIST User
DFTMAX LogicBIST User Guide
Guide Version K-2015.06-SP4
K-2015.06-SP4
Accessing SolvNet
The SolvNet site includes a knowledge base of technical articles and answers to frequently
asked questions about Synopsys tools. The SolvNet site also gives you access to a wide
range of Synopsys online services including software downloads, documentation, and
technical support.
To access the SolvNet site, go to the following address:
https://solvnet.synopsys.com
If prompted, enter your user name and password. If you do not have a Synopsys user name
and password, follow the instructions to sign up for an account.
If you need help using the SolvNet site, click HELP in the top-right menu bar.
Preface
Customer Support xii
1
Introduction to LogicBIST 1
This chapter provides an introduction to the LogicBIST tool, which is a synthesis-based
solution for in-system self-test of digital integrated circuits used in automotive, medical, and
aerospace applications. LogicBIST addresses functional safety requirements set forth by
standards such as ISO 26262 for the automotive semiconductor industry.
The following topics introduce LogicBIST compression:
Introduction to LogicBIST
LogicBIST Requirements
The LogicBIST Flow
1-1
DFTMAX LogicBIST User
DFTMAX LogicBIST User Guide
Guide Version K-2015.06-SP4
K-2015.06-SP4
Introduction to LogicBIST
Built-in self-test (BIST) capability enables a design to test itself autonomously, without test
data supplied from an external source. The LogicBIST tool provides a low-overhead logic
BIST (LBIST) solution for digital logic designs, such as automotive applications. The
characteristics of this solution are:
Low BIST controller area overhead
Reuses the scan chain and test-mode control logic already implemented for
manufacturing test
Limited LogicBIST-mode pin requirementsthree functional pins, plus two scan-ins and
a scan-out that can be shared with non-LogicBIST scan modes
Seed and expected signature values can be hardcoded or programmable
Targets stuck-at and transition-delay faults
Simple one-pass DFT insertion flow
LogicBIST Requirements
The LogicBIST flow requires the following:
You must have the Design Compiler, DFTMAX, and LogicBIST tools installed and
licensed at your site.
You must have an HDL-Compiler license for compressed scan insertion.
Blocks must be X-clean.
The design must have three functional signals (START, STATUS_0, STATUS_1), plus
two scan-ins and a scan-out that can be shared with non-LogicBIST scan modes
3. Modify the bused seed, signature, and pattern count values in the netlist to use the
values computed by TetraMAX ATPG.
4. Simulate the resulting netlist in a Verilog simulator, such as VCS, to verify the
correctness of autonomous BIST operation.
Figure 1-1 shows the flow diagram for LogicBIST insertion, pattern generation, and
verification.
Figure 1-1 The LogicBIST Flow
0RGLI\QHWOLVWZLWK
WRSBSUHB')7Y ')7
/RJLF%,67 LQVHUWLRQ
353*VHHG0,65
VLJQDWXUHSDWWHUQFRXQW
WHVWEHQFKVWLO
8VHUVSHFLILHG
SDWWHUQFRXQWYDOXH /%,67VSI WRSBLQLWLDOYJ VHULDOVWLO
VWLOYHULORJ
5XQ$73*FRPSXWH353*VHHG
7HWUD0$; 0,65VLJQDWXUHIDXOWFRYHUDJH
WRSYJ WHVWEHQFKY
WHVWEHQFKGDW
9&6 6LPXODWHDXWRQRPRXV/RJLF%,67
RURWKHU FKHFN'21(DQG3$66UHVXOWV
2-1
DFTMAX LogicBIST User
DFTMAX LogicBIST User Guide
Guide Version K-2015.06-SP4
K-2015.06-SP4
&$5(353* /(
0<B62
;25SKDVHVKLIWHU
/%,67B(1 /RJLF%,67 &RPELQDWLRQDO
/(7(
67$57 FRQWUROOHU
6HTXHQWLDO
0<B6, )60 /(
/(7(
0<B6, /( /HDGLQJHGJH
;25FRPSDFWRU
8VHUSDWWHUQYDOXH 3DWWHUQFRXQWHU /( 7( 7UDLOLQJHGJH
0,65 /(
8VHUVKLIWYDOXH 6KLIWFRXQWHU /(
8VHUVLJQDWXUHYDOXH
RSWLRQDO
&RPSUHVVRU
67$786B 67$786B
353* ;25SKDVHVKLIWHU
2XWSXWVFDQGDWD
0,65 &XUUHQW0,65VLJQDWXUHYDOXH
During the test program, the sequence of MISR values is dependent on the scan data that it
captures. At the end of the test program, the signature value of the MISR is compared
against the user-specified expected signature value, and the STATUS_* signals are set to
indicate test completion and pass/fail status.
LogicBIST compression supports multiple clock configurations, each of which uses its own
clock controller logic structure. For more information, see LogicBIST Clock Control on
page 2-9.
LogicBIST self-test begins when the START signal is asserted while the LBIST_EN
signal is already asserted. The test runs to completion as long as the START signal
remains asserted. If the START signal is deasserted during the test, the test halts and the
LogicBIST logic returns to its idle state.
When the LBIST_EN signal is deasserted, any DFT logic associated with the LogicBIST
compression mode (wrapper chains, test points, and so on) is disabled.
The START signal is synchronized the to the BIST clock, as shown in Figure 2-4, to avoid
metastability issues. Due to the synchronizer delay, the pattern counter and MISR are reset
even if the LBIST_EN and START signals are asserted at the same time. The metastability
registers are included in scan testing.
Figure 2-4 Synchronization of the START Signal to the BIST Clock
&/.
&/. &/.2
(1
67$57 767 ,&*
PHWD PHWD
)60VWDWH
UHJLVWHUV
/RJLF%,67
HQDEOHG
See Also
Enabling DFT Logic During Autonomous Self-Test on page 2-17 for more information
on how test-mode signals are used in a LogicBIST design
Figure 2-5 Status Signal Behavior When Self-Test Completes and Passes
/%,67B(1
67$57
67$786B
67$786B
Figure 2-6 shows the status signal behavior when self-test completes and fails. The failing
status is held until START is deasserted
Figure 2-6 Status Signal Behavior When Self-Test Completes and Fails
/%,67B(1
67$57
67$786B
67$786B
These scan-in signals are used as described only in TetraMAX mode. For other test modes,
these scan-in ports are free to be used as regular scan-in ports.
Figure 2-7 shows how TetraMAX accesses the scannable LogicBIST access chain in
TetraMAX mode.
/RJLF%,67FRQWUROOHU 'HFRPSUHVVRU
/%,67B(1
67$57
)60 &$5(353* 0<B62
0<B6,
/RJLF%,67
0<B6, 3DWWHUQFRXQWHU
'5&VLJQDO
6KLIWFRXQWHU
67$57V\QFKURQL]HU 0,65
&RPSUHVVRU
67$786B 67$786B
If the communication between asynchronous clock domains is small, you can use test
points to block the capture path between clock domains.
All clocks in the design must use the same configuration. If you have a mix of external and
OCC-controlled clocks, you must use an OCC controller for the external clocks. If you have
an asynchronous set or reset in your design, you must disable it or use weighted clock
captures-even for a single clock.
External Clocks
If the design has no on-chip clocking (OCC) sources, then all clocks are external (driven by
input ports).Figure 2-8 shows how the clock controller passes all clocks transparently when
LogicBIST self-test is inactive.
Figure 2-8 External Clocks When LogicBIST Self-Test Is Inactive
/RJLF%,67
,3
&/.
)XQFWLRQDO
&/.
ORJLF
&/.
/RJLF%,67FORFN
FRQWUROOHU
When LogicBIST self-test is active, if the design contains multiple scan clock domains, the
clock controller drives all scan clock domains with a single BIST clock. The non-BIST clock
input ports do not clock any scan chains.
Figure 2-9 shows how the clock controller drives all scan clock domains with the LogicBIST
clock when LogicBIST self-test is active (gated under the control of the LogicBIST
controller).
&/.
)XQFWLRQDO
&/.
ORJLF
&/.
/RJLF%,67FORFN
FRQWUROOHU
Important:
When the design contains multiple external clocks, you must ensure that cross-domain
paths meet timing in LogicBIST mode because the clock trees are driven by a single port
but might have different latencies.
The LogicBIST clock controller logic structure is shown in Figure 2-10. (The figure is
intended to show the logic function; actual implementation might vary.)
Figure 2-10 External Clock Controller Structure
' 4
/$7
*
%,67&/.
' 4
/$7 &/.
*
&/.
' 4
/$7 &/.
*
&/.
' 4
/$7 &/.
*
&/.
E OELVWBFONBHQDEOH>
@
/RJLF%,67PRGH
3//
UHIBFON &/., &/.2 SOOFON
')7LQVHUWHG
LQWFON )XQFWLRQDO
2&& ORJLF
WHVWBVH FRQWUROOHU
WHVWBPRGH
RFFBUHVHW
/RJLF%,67
SOOBE\SDVV
7HWUD0$;PRGH
SOOBE\SDVV ,3
DWHBFON
If you have multiple OCC-controlled clocks in your design, all clocks capture in each pattern.
If capture paths exist between the clock domains, you must use weighted-clock captures as
described in the next section, or you must block the capture paths using RTL logic or test
points.
Some limitations apply to designs with OCC controllers. See Chapter 5, LogicBIST
Limitations and Known Issues.
Because LogicBIST does not use the clock chain registers, they are repurposed for clock
group selection during LogicBIST self-test. In each pattern, the clock chains load a
pseudorandom value from the PRPG. This value feeds a weighted clock group selector that
enables the pulse pattern for one of the capture groups, as shown in Figure 2-13.
Figure 2-13 Weighted Capture Groups Logic Structure
&DSWXUH
)XQFWLRQDO
SUREDELOLW\
3XOVH ')7LQVHUWHG ORJLF$
&ORFNFKDLQ
SDWWHUQ 2&&
ORJLF FRQWUROOHU
)XQFWLRQDO
ORJLF$
/RJLF%,67PRGH &DSWXUH
SUREDELOLW\
)XQFWLRQDO
ORJLF%
&ORFNFKDLQ
3XOVH ')7LQVHUWHG
SDWWHUQ 2&&
ORJLF FRQWUROOHU
&DSWXUH
)XQFWLRQDO
SUREDELOLW\
ORJLF%
OELVWBFONBSDWWHUQ>
@ ;
E ; :HLJKWHQDEOHG
; FORFNSDWWHUQV
The comparator value is seven bits. Thus, you must have at least seven clock chain bits in
the design; additional bits are not used for clock selection. In addition, all OCC controller
clocks must have the same clock chain length.
The clock pulses are determined by a pulse pattern signal instead of the clock chain. The
width of this bus is the value specified for the -cycles_per_clock option. By default, the
first clock pulse bit is tied to logic 1 and any remaining bits are tied to logic 0. You can
optionally drive this bus from design logic to make the pulse behavior programmable.
Table 2-1 shows the minimum clock chain length as a function of clock count.
Table 2-1 Minimum Total Clock Chain Length in a LogicBIST Design
2 4
3 3
4 to 6 2
7 or more 1
Additional limitations apply to designs with OCC controllers. See Chapter 5, LogicBIST
Limitations and Known Issues.
See Also
Configuring Clock and Reset Weights on page 3-4 for details on configuring clock
weights
Simplifying the Weighted Capture Groups Comparator on page 4-3 for details on
simplifying the comparator logic
')7LQVHUWHG /RJLF%,67
&/.$ FON$ )XQFWLRQDO
2&& ZHLJKWHG
SOOFON% FRQWUROOHU
ORJLF$
FORFN
3//% JDWLQJ
5()&/. &/., &/.2
)XQFWLRQDO
ORJLF%
$7(&/.
For more information, see Specifying OCC Controllers for External Clock Sources in the
On-Chip Clocking Support chapter of the DFT Compiler, DFTMAX, and DFTMAX Ultra
User Guide.
&RUH
ORJLF
,QWHUQDO
&/.
:UDSSHUFKDLQ
If your design already implements wrapper chains, you use this approach by default.
If the I/O ports in your design are mostly registered, you can reuse the existing I/O registers
to build the wrapper chain, which minimizes area. This is called the maximized-reuse flow.
If the self-test design drives top-level logic that cannot tolerate pseudorandom output data
during self-test, you can specify safe values to be driven at the outputs during self-test.
See Also
Configuring Wrapper Chain Isolation Logic on page 3-5 for details on using wrapper
chains for self-test isolation
Figure 2-16 Isolating the Self-Test Design Using User-Defined Test Points
6FDQFKDLQ
&RUH
) ,QWHUQDO
ORJLF 2
&/.
Multiple test points can share a single test-point register, which reduces the area.
Use this isolation method only if your design is not already core-wrapped.
Note:
If the I/O ports in your design are mostly registered, a maximized-reuse wrapper chain
might require less area than adding test points.
See Also
Configuring User-Defined Test Point Isolation Logic on page 3-6 for details on using
test points for self-test isolation
DOZD\V#/%,67B(1RUWHVWBPRGHRUWHVWBPRGH
EHJLQ
^0LVVLRQBPRGHZUSBLIZUSBRIOELVW`
E
WHVWBPRGH FDVH^WHVWBPRGHWHVWBPRGH`
0LVVLRQBPRGH
ELI/%,67B(1 ZUSBLI
WHVWBPRGH OELVW
EDXWRQRPRXVPRGH
HOVH ZUSBRI
0LVVLRQBPRGH
EPLVVLRQPRGH
EZUSBLI
E OELVW
EZUSBRI
E
EOELVW
E7HWUD0$;PRGH
/%,67B(1 HQGFDVH 7&0
HQG
&25(
This enables all testability logic controlled by the DFT-inserted TCM, such as reconfiguration
MUXs, wrapper chains, and so on.
If you have testability logic in your RTL that is enabled directly from test-mode input ports,
you must also enable it during autonomous self-test when the LBIST_EN signal is asserted,
as shown in Figure 2-18. (In TetraMAX mode, the RTL testability logic is activated by the
DFT_TM signal instead of the LBIST_EN signal.)
7&0
/%,67B(1 WR/RJLF%,67ORJLF
')7B70
,QWHUQDOUHVHW
Q567JHQ
JHQHUDWLRQORJLF
Q567
5671
&25(
These signals are similar to clocks in that they cause sequential cells to capture a value. As
a result, you must ensure that there is no capture interaction between clock and reset
signals during LogicBIST operation.
If you have OCC-controlled clocks, you must use weighted clock capture groups to allocate
capture cycles between clocks and reset signals.
If all clocks are external (port-driven), you can choose either of the following:
Use the external clock controller and disable the reset signal during LogicBIST
operation.
Because all clocks capture on every cycle, this method improves clock capture efficiency
but does not provide coverage on the reset network.
Insert OCC controllers for the external clocks and use weighted clock capture groups to
allocate capture cycles between clocks and reset signals.
Because clocks and resets are separated into groups that avoid capture interactions, this
method provides coverage of the reset network but might increase pattern count.
/RJLF%,67PRGH
5HVHW
5671 SUREDELOLW\
%,67FORFN
SDWWHUQ :HLJKWHQDEOHG
E
; LQDFWLYH
E FORFNUHVHWVLJQDOV
; YDOXH
6FDQHQDEOHIURP
/RJLF%,67)60
For a design with multiple reset signals, you typically include all reset signals in a single
reset group.
If your design uses external clocks, see Specifying OCC Controllers for External Clock
Sources in the On-Chip Clocking Support chapter of the DFT Compiler, DFTMAX, and
DFTMAX Ultra User Guide.
See Also
OCC-Controlled Clocks With Weighted Clock Capture Groups on page 2-12 for details
on how weighted capture groups work
If you declare multiple clock-gating scan-enable signals, the tool inserts a separate control
register for each signal declaration.
3-1
DFTMAX LogicBIST User
DFTMAX LogicBIST User Guide
Guide Version K-2015.06-SP4
K-2015.06-SP4
You can also define these signals on internal pins using the -hookup_pin option.
If you do not define these signals, the tool automatically creates them using the following
signal port names: LBIST_EN, START, STATUS_0, STATUS_1.
You must explicitly configure the LogicBIST codec using the -chain_count or
-max_length option of the set_logicbist_configuration command; there is no default
for these options.
To ensure that the LogicBIST mode can use the two required user-defined scan-in signals,
the chain count of the underlying base mode must be set to a minimum of two.
If your design has multiple scan clocks, you can use the -clock option to specify which
clock to use for LogicBIST operation. The specified clock must be previously defined as a
scan clock using the set_dft_signal command. The default is the first-defined scan clock.
In some cases, the PRPG might be one bit wider than the specified value due to PRPG
architecture requirements.
By default, the tool sizes the shift counter register according to the longest shift chain in the
design. To change the shift counter width, use the following option:
set_logicbist_configuration \
-shift_counter_width width_value
The -occ_clock_weights option takes a list of group definitions, where each group is itself
a list containing a weight value followed by the OCC-controlled clock signals in that group.
If you also have asynchronous reset (or set) signals, specify their weights with the
-reset_weights option using the same group syntax. Typically there is a single reset
group.
For example,
set_logicbist_configuration \
-occ_clock_weights {{80 UPLL/CLKO CLK33} {44 CLK266}} \
-reset_weights {{4 RSTN1 RSTN2}}
The weight values must be positive integers. There is no fixed scale for the weights; each
group's capture probability is relative to the sum of all clock and reset group weights.
However, the weight comparator logic uses a 7-bit PRPG word. Thus, the most accurate
total weight values are powers of 2, from 2 to 128. For other total weight values, the weights
are remapped to comparator values between 0 and 127, which might perturb the
probabilities due to rounding errors.
You can also specify two special weight values, always_on and always_off, for clocks that
should always pulse or never pulse, respectively. These values do not affect the sum of all
numeric clock and reset group weights.
2. Define global DFT signals, wrapper configuration settings, and LogicBIST configuration
settings.
Any logic between the I/O ports and wrapper chain cannot be tested by LogicBIST
self-test. To minimize such logic, either use the simple wrapper flow, or use the
maximized-reuse flow and specify a low value for the -depth_threshold option of the
set_wrapper_configuration command.
3. If the self-test design drives top-level logic that cannot tolerate pseudorandom output
data during self-test, specify safe values for the output wrapper cells:
# global:
set_wrapper_configuration -class core_wrapper \
-safe_state 0 ;# or 1
# per-port:
set_boundary_cell -class core_wrapper \
-ports port_list -safe_state 0 ;# or 1
4. Define the uncompressed wrapper modes, scan compression modes, and LogicBIST
self-test modes:
define_test_mode WRP_IF -usage wrp_if
define_test_mode WRP_OF -usage wrp_of
5. When configuring the LogicBIST test mode, reference the inward-facing uncompressed
test mode as its base mode:
set_logicbist_configuration -test_mode BIST -base_mode WRP_IF ...
The LogicBIST test mode becomes an inward-facing mode that drives LogicBIST-generated
data into the input wrapper chain, and incorporates the captured output wrapper chain data
into the MISR. As with other DFT signals, LogicBIST-specific signals (LBIST_EN, START,
STATUS_0, and STATUS_1) are not wrapped.
See Also
Isolating the Self-Test Design Using Core Wrapping on page 2-15 for details on how
core wrapping provides design isolation
Example Core Insertion Script Using Core Wrapping on page 3-15 for an example
script
Do not include this port in the test-mode encodings defined with the define_test_mode
command.
3. Make a collection or list of all input ports that capture input data values. Do not include
clock, asynchronous set or reset, or DFT signals.
set list_of_functional_data_inputs ...
See Also
Connecting LogicBIST Self-Test to Functional Design Logic on page 3-13 for details on
controlling these test points from the functional logic
Isolating the Self-Test Design Using User-Defined Test Points on page 2-16 for details
on how user-defined test points provide design isolation
Example Core Insertion Script Using User-Defined Test Points on page 3-16 for an
example script
The pattern counter, PRPG seed, and MISR signature value are set to all-zeros in the initial
implementation; these values are determined later in TetraMAX. The shift counter is
automatically set according to the longest scan chain length in LogicBIST mode.
When you are satisfied with your DFT configuration, run the insert_dft command. Do not
run an explicit incremental compile yet.
Post-DFT DRC (running the dft_drc command after DFT insertion) is supported for
LogicBIST designs. DRC checking is also performed in the TetraMAX tool during seed and
signature calculation.
If desired, you can leave your synthesis session up while you generate seed and signature
values in TetraMAX, then return to the synthesis session to set the seed and signature
values.
# Run LogicBIST ATPG for 133 patterns and 1 capture clock cycle
run_atpg -auto -jtag_lbist {1 133 1}
run_simulation
report_patterns -all
The values provided to the -jtag_lbist option are: number of seed values (always 1),
pattern count, number of capture cycles (usually 1). The maximum pattern count value is
(2^pattern_count_width)-2, to allow for an additional load-only pattern at the beginning of
self-test.
The run_atpg command uses seed values from a pseudorandom sequence of seed values.
To evaluate a new seed value, run the run_atpg command again. Identical TetraMAX
sessions yield the same sequence of seed values.
After ATPG completes, the serial.stil pattern file contains the seed, signature, pattern
counter, and shift counter values for the test, provided in STIL annotation comments.
Note that the write_testbench command in the TetraMAX tool writes a testbench that uses
TetraMAX mode to externally access seed and signature values. It does not write a
testbench that tests autonomous LogicBIST operation, as the write_test command does.
See Also
SolvNet article 2220819, Identifying an Optimal Seed Value for the LogicBIST PRPG
for details on evaluating multiple seed values to find the best one
the same DFT session where you wrote out the files for TetraMAX ATPG. If that session is
no longer running, reload the design from a .ddc file.
To set the constant values in the design to the values contained in the serial STIL file, use
the set_logicbist_constants command:
dc_shell> set_logicbist_constants -file_name serial.stil
Found LogicBIST controller for 'LBIST' test mode.
Obtained data from 'serial.stil' file.
The command also verifies that the shift counter constant values (set by the insert_dft
command) match the values in the STIL file.
After setting the constants, write out the final netlist:
dc_shell> write -format verilog -output top.vg -hierarchy
Once you have set the constant values, the serial STIL pattern file is no longer needed. The
LogicBIST simulation is performed using only the testbench created by the write_test
command in the tool.
Note:
This automation works only for seed, signature, and pattern counter values that are set
to constants (the default). You must create your own initialization protocol to initialize any
programmable values implemented as described in Using Programmable LogicBIST
Configuration Values on page 4-1.
You can now run an incremental compile to optimize the DFT logic. For more information,
see Post-DFT Design Optimization on page 4-6.
See Also
SolvNet article 2231010, Setting the Seed and Signature Constant Values in a
LogicBIST Design to obtain the set_logicbist_constants Tcl procedure
This generates a Verilog testbench file (bist_tb.v) and associated data file (bist_tb.dat). You
can now simulate autonomous operation using this testbench along with the final netlist.
An example VCS command line is as follows:
vcs \
-notice -Mupdate -timescale=1ns/10ps \
+nospecify +notimingcheck +tetramax +delay_mode_zero \
-l vcs_lbist.log \
-v libs/class.v \
bist_tb.v \
top.vg
./simv -l vcs_sim_lbist.log
V C S S i m u l a t i o n R e p o r t
Time: 6144800 ns
If the design logic is modified, the simulation should complete with unexpected values on the
STATUS_0 output:
% ./simv -l vcs_sim_lbist.log
Notice: timing checks disabled with +notimingcheck at compile-time
Chronologic VCS simulator copyright 1991-2014
Contains Synopsys proprietary information.
Compiler version J-2014.12-SP2; Runtime version J-2014.12-SP2; Jun 23 15:34 2015
#############################################################################
MAX TB Version K-2015.06
Test Protocol File generated from original file "bist_tb.stil"
STIL file version: 1.0
#############################################################################
V C S S i m u l a t i o n R e p o r t
Time: 6144800 ns
See Also
Using MAX Testbench in TetraMAX Help for more information on the stil2verilog
command
lbistStatus_0 Required Reports current self-test status (idle, running, pass, fail)
lbistStatus_1
lbistSeedValue Optional Specifies the initial seed value loaded into the PRPG
lbistSignatureValue Optional Specifies the expected final signature value of the MISR
For LogicBIST signals connected by DFT insertion to input and output ports of the core
module, the connections should preexist (or be manually made) at the next hierarchical level
where the core is integrated, as shown in Figure 3-1.
Figure 3-1 Connecting LogicBIST Self-Test Port Signals at the Top Level
723
&25(
/%,67B(1 67$786B
/RJLF%,67
70B%,67
VHOIWHVWORJLF
67$57 67$786B
)XQFWLRQDO
WRSOHYHO )XQFWLRQDO
ORJLF FRUHOHYHOORJLF
For LogicBIST signals that connect to hookup pins inside the core module, the connections
are made inside the core itself during DFT insertion, as shown in Figure 3-2. The hookup
pins can be pins of leaf cells or hierarchical cells.
Figure 3-2 Connecting LogicBIST Self-Test Hookup Pin Signals Inside the Core
&25(
/%,67B(1 67$786B
/RJLF%,67
70B%,67
67$57
VHOIWHVWORJLF 67$786B
)XQFWLRQDO
FRUHOHYHO
ORJLF
preexist (or be manually made) prior to DFT insertion, as DFT insertion does not modify
existing test-mode signal connections.
You do not need to connect any scan-in, scan-out, or test-mode signals to your functional
design logic. LogicBIST self-test automatically enables any required DFT logic during
autonomous mode, as described in Enabling DFT Logic During Autonomous Self-Test on
page 2-17.
See Also
Isolating the Self-Test Design Using User-Defined Test Points on page 2-16 for details
on how user-defined test points provide design isolation
# enable clients
set_dft_configuration -logicbist enable -wrapper enable
-clock_mixing mix_clocks
set_logicbist_configuration -test_mode LBIST -base_mode SCAN \
-chain_count 32 \
-pattern_counter_width 16 ;# maximum of 2^16 patterns
# enable clients
set_dft_configuration -logicbist enable
-control_signal TM_LBIST
set_test_point_element -type observe \
$all_functional_data_outputs \
-test_points_per_source_or_sink 32 \
-clock_signal CLK1
# set seed and signature values in design and write out final netlist
set_logicbist_constants -file_name serial.stil
write -f verilog -h -o top.vg
quit
The following script is the tmax_bist.tcl script referenced by the preceding synthesis script.
read_netlist -library /project/libs/my_class.v
read_netlist top_no_seed_signature.vg
run_build top
# Run LogicBIST ATPG for 133 patterns and 1 capture clock cycle
run_atpg -auto -jtag_lbist {1 133 1}
run_simulation
report_patterns -all
4-1
DFTMAX LogicBIST User
DFTMAX LogicBIST User Guide
Guide Version K-2015.06-SP4
K-2015.06-SP4
You can use the -port or -hookup_pin option when defining these signals. For each signal
type, define the individual signal bits in order of most significant bit to least-significant bit.
The most common application would be to drive the signals from existing design registers.
For example,
# define a 31-bit initial PRPG seed register
for {set i 30} {$i >= 0} {incr i -1} {
set_dft_signal -view spec -type lbistSeedValue \
-hookup_pin CONFIG/SEED_reg[${i}]
}
When you define internally driven LogicBIST configuration signals, the preview_dft
command reports the connections on a bitwise basis so you can confirm their correctness.
For example,
****************************************
LogicBIST Compression
There is no equivalent removal of the XOR phase shifter in the LogicBIST decompressor
because it is needed to remove correlations from the LFSR values.
Weight values that result in boundary (comparator) values with a longer sequence of
least-significant zeros, like 32 (7'b0100000) or 96 (7'b1100000), require less comparator
logic than boundary values with a shorter sequence of least-significant zeros, like 34
(7'b0100010) or 98 (7b'1100010).
If your design is area sensitive, you can consider this effect while determining weight values
that meet your coverage requirements.
No 1 X
67$786B
67$786B
5811,1* 3$66 ,'/( 5811,1*
Yes 1 0
67$786B
67$786B
5811,1* )$,/ ,'/( 5811,1*
Yes 1 1
67$786B
67$786B
5811,1* )$,/
When the lbistBurnInEnable signal is deasserted, the LogicBIST engine runs in its normal
mode of operation to completion, generating the pass or fail indication as described in The
STATUS_0 and STATUS_1 Signals on page 2-7.
The burn-in capability is not implemented by default. To implement it, specify the following
option:
dc_shell> set_logicbist_configuration -burn_in enable
Define the burn-in configuration signals on existing ports using the following signal types:
dc_shell> set_dft_signal -view spec \
-type lbistBurnInEnable -port my_burnin_enable
dc_shell> set_dft_signal -view spec \
-type lbistBurnInStopOnFail -port my_burnin_SOF
You can also define these signals on internal pins using the -hookup_pin option.
If you do not define these signals, the tool automatically creates them using the following
signal port names: burnin_mode, fail_mode.
The burn-in capability is implemented by modifying existing states in the BIST state machine
rather than adding states; the area overhead is negligible.
Shift count
1 design_U_LogicBISTController_mode/shift_count_data[*]
1. This value is set by DFT insertion and does not need to be user-modified (unless the BIST mode
scan length is manually changed later in the flow). Accordingly, this bus name has no user_ prefix.
These values are set in the design after determining the values in TetraMAX ATPG, as
described in Setting the Seed and Signature Values in Synthesis on page 3-10.
By default, these BIST values are driven by constants. If post-DFT optimization propagates
these BIST constants into the design, they become permanently integrated into the logic
and their values cannot be changed, as shown in Figure 4-1.
Q
E
Q
Q
E
Q
E
This prevents you from performing design ECOs later in the flow, which would require new
seed and signature values to be set in the design.
If you use programmable (register-driven) values as described in Using Programmable
LogicBIST Configuration Values on page 4-1, you do not need to worry about constant
propagation for those values.
To preserve the BIST constants, do not ungroup the LogicBIST controller, decompressor, or
compressor blocks.
See Also
Ungrouping LogicBIST Blocks for Additional Area Reduction on page 4-9 for
information on ungrouping the LogicBIST blocks
See Also
Ungrouping LogicBIST Blocks for Additional Area Reduction on page 4-9 for
information on ungrouping the LogicBIST blocks
You must zero out the pattern counter before regenerating new seed and signature values.
This process requires that the seed and signature constant values have not been
propagated in the design.
The following script shows how to regenerate and apply new seed and signature values to
an ECO-modified design. No timing or DFT constraints are needed for this process. You
reuse the original testbench to simulate the updated netlist.
# read netlist containing ECO change and pre-ECO seed/signature values
read_verilog top_eco_oldseedsig.vg
current_design top
link
# set seed and signature values in design and write out final netlist
set_logicbist_constants -file_name serial_eco.stil
write -format verilog -hierarchy -output top_eco.vg
The following script is the tmax_bist_eco.tcl script referenced by the preceding synthesis
script.
read_netlist -library /project/libs/my_class.v
read_netlist top_eco_zeroed.vg
run_build top
# Run LogicBIST ATPG for 133 patterns and 1 capture clock cycle
run_atpg -auto -jtag_lbist {1 133 1}
run_simulation
report_patterns -all
See Also
SolvNet article 2231010, Setting the Seed and Signature Constant Values in a
LogicBIST Design to obtain the set_logicbist_constants Tcl procedure
The LogicBIST Operational Modes on page 2-6 for more information on TetraMAX
mode versus autonomous mode
Important:
Ungrouping propagates the BIST constants, which prevents future modifications to their
values. Use this only when the design is finalized (including scan reordering) or when
you can re-perform synthesis and DFT insertion if the design logic changes.
# group LogicBIST controller and OCC blocks together into a new
# block named "LogicBIST"
group -cell_name LogicBIST -design_name LogicBIST \
[get_cells * -filter {ref_name == LOGICBIST_CONTROLLER ||
ref_name =~ top_DFT_clk_mux_* || name =~ *compressor_bist}]
# incrementally compile
compile_ultra -scan -incremental
5-1
DFTMAX LogicBIST User
DFTMAX LogicBIST User Guide
Guide Version K-2015.06-SP4
K-2015.06-SP4
ATPG
Automated Test Pattern Generation, the generation of scan data sequences used for
scan testing, with the goal of achieving as much test coverage as possible using the
smallest possible number of patterns. The test patterns contain nonfunctional data
selected to detect faults on nets in the design.
BIST
Built-in self-test, design-for-test logic where both the scan data generation and the scan
data comparison logic are included in the design.
Burn-in mode
A mode that runs autonomous self-test continuously. The scan and capture activity
stresses the tested logic and causes continuous power draw during self-test. Burn-in
operation can be configured to stop or continue if self-test fails.
Clock chain
A special scan chain segment associated with an on-chip clocking (OCC) controller
whose scanned-in values control the pulse sequence of a controlled clock.
Clock gating
A method of reducing power by shutting off clocks to circuits that are not being used.
Codec
The combination of the decompressor and compressor in a compressed scan flow. A
single design can have multiple codecs, but each codec consists of its own
decompressor/compressor pair.
Compressed scan
A scan methodology that uses more scan chains (called compressed scan chains) than
scan-in/scan-out pairs. A decompressor decompresses the scan-in data to drive the
greater number of scan chains. A compressor compresses the scan chain data to drive
GL-1
DFTMAX LogicBIST User
DFTMAX LogicBIST User Guide
Guide Version K-2015.06-SP4
K-2015.06-SP4
the lesser number of scan-outs. The combination of the decompressor and compressor
wrapped around the scan chains is called the codec.
Compressor
In a compressed scan flow, the part of a codec that compresses the scan chain data to
drive the lesser number of scan-outs.
Core wrapping
See wrapped core.
Decompressor
In a compressed scan flow, the part of a codec that decompresses the scan-in data to
drive the greater number of scan chains.
DFT
Design-For-Test, pertains to logic that helps the testability of a design.
DRC
Design Rule Checking, checking a design against a rule set that ensures good testability
and reporting any violations of those rules.
Leading edge
The first edge of a clock waveform definition. It is a rising edge for a return-to-zero clock,
and it is a falling edge for a return-to-one clock.
MISR
Multiple-input signature register, a recirculating shift register that XORs scan-captured
data values into the loop. After capturing all values, the MISR contains a signature value
for that test.
OCC controller
On-chip clocking controller, a DFT design structure that controls a free-running on-chip
clocking source (such as a PLL output clock) in test mode.
PLL
Phase-locked loop, an analog design block that creates a stable on-chip
latency-adjusted clock from a free-running (and possibly less stable) input clock.
Pre-DFT DRC
DRC checking run before DFT insertion, evaluates the readiness of the design for DFT
insertion. Certain types of pre-DFT DRC violations result in scan cells being excluded
from scan chains.
Glossary GL-2
DFTMAX LogicBIST User Guide Version K-2015.06-SP4
Post-DFT DRC
DRC checking run after DFT insertion, evaluates the implemented DFT functionality of
the design for correct operation.
PRPG
Pseudo-random pattern generator, uses an LSFR and an XOR phase shifter to generate
a stream of pseudorandom data values that have the appearance of random values, but
are actually a function of a seed value.
Scan cell
A sequential cell that has both functional and scan-shift modes of operation.
Scan compression
See compressed scan.
Seed value
The initial value loaded into a PRPG. Different seed values result in different
pseudorandom value sequences.
Signature value
The final value present in the MISR. After self-test completes, the test passes if the
actual signature value (captured by the hardware) matches the expected signature
value (determined by the TetraMAX tool.
SPF
STIL Procedure File, a file written out by DFT Compiler to describe DFT aspects of the
design, such as: test ports, test clocks, primary input constraints, scan chains, codecs,
and test modes. It is used by TetraMAX ATPG (or other ATPG tool) for DRC and ATPG.
STIL
Standard Test Interface Language, documented in IEEE Std 1450, which is a language
used to describe the DFT capabilities of a design. It is a standard for simplifying the
number of test vector formats that automated test equipment (ATE) vendors and
computer-aided engineering (CAE) tool vendors must support.
Standard scan
A scan methodology in which there is a one-to-one relationship between each scan-in/
scan-out pair and each scan chain.
Wrapped core
A core that has a wrapper chain along the I/O boundary of the design. Wrapped cores
are used to implement hierarchical testing capability, which allows different hierarchy
levels of the design to be tested independently.
Chapter GL:
Glossary GL-3
DFTMAX LogicBIST User
DFTMAX LogicBIST User Guide
Guide Version K-2015.06-SP4
K-2015.06-SP4
Wrapper chain
A special scan chain in a core-wrapped design that consists of wrapper cells along the I/
O boundary of the design. It can operate in inward-facing or outward-facing modes
during testing to isolate the logic inside the core from logic outside the core.
Glossary GL-4