Tshell Lbist User
Tshell Lbist User
This Documentation contains trade secrets or otherwise confidential information owned by Siemens Industry
Software Inc. or its affiliates (collectively, “Siemens”), or its licensors. Access to and use of this Documentation is
strictly limited as set forth in Customer’s applicable agreement(s) with Siemens. This Documentation may not be
copied, distributed, or otherwise disclosed by Customer without the express written permission of Siemens, and may
not be used in any way not expressly authorized by Siemens.
This Documentation is for information and instruction purposes. Siemens reserves the right to make changes in
specifications and other information contained in this Documentation without prior notice, and the reader should, in
all cases, consult Siemens to determine whether any changes have been made.
No representation or other affirmation of fact contained in this Documentation shall be deemed to be a warranty or
give rise to any liability of Siemens whatsoever.
If you have a signed license agreement with Siemens for the product with which this Documentation will be used,
your use of this Documentation is subject to the scope of license and the software protection and security provisions
of that agreement. If you do not have such a signed license agreement, your use is subject to the Siemens Universal
Customer Agreement, which may be viewed at https://www.sw.siemens.com/en-US/sw-terms/base/uca/, as
supplemented by the product specific terms which may be viewed at https://www.sw.siemens.com/en-US/sw-
terms/supplements/.
SIEMENS MAKES NO WARRANTY OF ANY KIND WITH REGARD TO THIS DOCUMENTATION INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, AND NON-INFRINGEMENT OF INTELLECTUAL PROPERTY. SIEMENS SHALL NOT BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL OR PUNITIVE DAMAGES, LOST DATA OR
PROFITS, EVEN IF SUCH DAMAGES WERE FORESEEABLE, ARISING OUT OF OR RELATED TO THIS
DOCUMENTATION OR THE INFORMATION CONTAINED IN IT, EVEN IF SIEMENS HAS BEEN ADVISED OF
THE POSSIBILITY OF SUCH DAMAGES.
TRADEMARKS: The trademarks, logos, and service marks (collectively, "Marks") used herein are the property of
Siemens or other parties. No one is permitted to use these Marks without the prior written consent of Siemens or the
owner of the Marks, as applicable. The use herein of third party Marks is not an attempt to indicate Siemens as a
source of a product, but is intended to indicate a product from, or associated with, a particular third party. A list of
Siemens' Marks may be viewed at: www.plm.automation.siemens.com/global/en/legal/trademarks.html. The
registered trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds,
owner of the mark on a world-wide basis.
Siemens Digital Industries Software is a global leader in the growing field of product lifecycle management (PLM),
manufacturing operations management (MOM), and electronic design automation (EDA) software, hardware, and
services. Siemens works with more than 100,000 customers, leading the digitalization of their planning and
manufacturing processes. At Siemens Digital Industries Software, we blur the boundaries between industry domains
by integrating the virtual and physical, hardware and software, design and manufacturing worlds. With the rapid
pace of innovation, digitalization is no longer tomorrow’s idea. We take what the future promises tomorrow and make
it real for our customers today. Where today meets tomorrow. Our culture encourages creativity, welcomes fresh
thinking and focuses on growth, so our people, our business, and our customers can achieve their full potential.
Author: In-house procedures and working practices require multiple authors for documents. All
associated authors for each topic within this document are tracked within the Siemens
documentation source. For specific topic authors, contact the Siemens Digital Industries
Software documentation department.
Revision History: Released documents include a revision history of up to four revisions. For
earlier revision history, refer to earlier releases of documentation on Support Center.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
4 Hybrid TK/LBIST Flow User’s Manual, v2023.4
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Table of Contents
Chapter 1
Introduction to the Hybrid TK/LBIST Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Hybrid TK/LBIST Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Tessent Core Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Tessent EDT and LogicBIST IP Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Test Point Analysis and Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Scan Insertion and X-Bounding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
LogicBIST Fault Simulation and Pattern Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Top-Level ICL Network Integration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
ICL Extraction and Pattern Retargeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Considerations for Top-Down Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Limitations for the Hierarchical TK/LBIST Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Chapter 2
EDT and LogicBIST IP Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
EDT and LogicBIST IP Generation Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Hybrid TK/LBIST IP Generation Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Integrating a Third-Party TAP in the Hybrid TK/LBIST Flow . . . . . . . . . . . . . . . . . . . . . 27
Clock Controller Connections to the EDT/LogicBIST IP . . . . . . . . . . . . . . . . . . . . . . . . . 28
EDT and LogicBIST IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Clock Control Logic and Named Capture Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Programmable Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Programmable Shift and Capture Pause Cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Low-Power Shift. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Warm-Up Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Chain Test Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Asynchronous Set/Reset Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Single Chain Mode Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Controller Chain Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
IJTAG Network in EDT/LogicBist IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Burn-In Test Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
LBIST Controller Hardware Default Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Self-Test Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
IP Generation for Self-Test Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Self-Test Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Performing Self-Test Pattern Generation During IP Creation . . . . . . . . . . . . . . . . . . . . . 65
Generating the EDT and LogicBIST IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Dual Compression Configurations for the Hybrid IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Timing Constraints for EDT and LogicBIST IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Chapter 3
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding . . . . . . . . . . . . . . . . 79
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding Overview . . . . . . . . . . 79
X-Bounding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
X-Bounding Control Signals (Existing or New Scan Cells). . . . . . . . . . . . . . . . . . . . . . . . 85
Clock Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Multiple Clock Domain Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
False and Multicycle Paths Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
X-Sources Reaching Primary Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
X-Bounding and no_observe_point and no_control_point Attributes . . . . . . . . . . . . . . . . 87
EDT IP Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
X-Bounding and the Tessent Memory BIST Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Test Point Insertion, Scan Insertion, and X-Bounding Command Summary . . . . . . . . . . . . 89
Chapter 4
LogicBIST Fault Simulation and Pattern Creation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
LogicBIST Fault Simulation and Pattern Creation Overview . . . . . . . . . . . . . . . . . . . . . . . . 91
Initial Static DFT Signal Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Performing LogicBIST Fault Simulation and Pattern Creation. . . . . . . . . . . . . . . . . . . . . . . 94
Specifying Warm-Up Patterns During Fault Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Fault Simulation When There Are Inversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Fault Coverage Report for the Hybrid IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Fault Simulation and Pattern Creation Command Summary. . . . . . . . . . . . . . . . . . . . . . . . . 99
Chapter 5
Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Pattern Generation Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Pattern Generation for the TSDB Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Performing Pattern Generation for the TSDB Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Performing Pattern Generation for CCM in the TSDB Flow . . . . . . . . . . . . . . . . . . . . . . . 106
Pattern Generation in Multiple, Shorter Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Pattern Generation for Low Power LBIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Single Chain Mode Diagnosis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Pattern Mismatch Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Debug Based on MISR Signature Divergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Debug Based On Scan Cell Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Usage Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Chapter 6
Performing LogicBIST Diagnosis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Understanding LogicBIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Execution Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Diagnosis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Chapter 7
Top-Level ICL Network Integration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Top-Level ICL Network Integration Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Performing Top-Level ICL Network Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Top-Level ICL Network Integration Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Chapter 8
ICL Extraction and Pattern Retargeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
ICL Extraction and Pattern Retargeting Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Performing ICL Extraction and Pattern Retargeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Usage Examples for ICL Extraction and Pattern Retargeting . . . . . . . . . . . . . . . . . . . . . . . . 143
ICL Extraction and Pattern Retargeting Command Summary . . . . . . . . . . . . . . . . . . . . . . . 146
Chapter 9
Hybrid TK/LBIST Embedded Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Shared Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Inserted Hybrid TK/LBIST IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Scan Chain Masking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
New LogicBIST Control Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Clocking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Programmable Registers Inside Hybrid IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Low-Power Shift Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Hybrid TK/LBIST Area Reduction Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Disable Bypass Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Use Channel Outputs to Drive the MISR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Use Basic Compactor for EDT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Reduce the Size of the Static Masking Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Chapter 10
Tessent OCC for Hybrid TK/LBIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Tessent OCC TK/LBIST Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Tessent OCC for TK/LBIST Flow Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
NCP Index Decoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
OCC Generation and Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Scan Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
OCC EDT/LBIST IP Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
NCP Index Decoder Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Fault Simulation with a Tessent OCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Pattern Generation with a Tessent OCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Example Tessent OCC TK/LBIST Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Generating and Inserting the Tessent OCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Tessent OCC Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Chapter 11
Third-Party OCC for Hybrid TK/LBIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Overview of the Third-Party OCC Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
ThirdPartyOcc TCD File Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Chapter 12
Observation Scan Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
DFT Insertion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Test Point and Scan Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
LogicBIST Fault Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Pattern Mismatch Debugging Based on Scan Cell Monitoring . . . . . . . . . . . . . . . . . . . . . . . 198
Pattern Mismatch Debugging for Parallel Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Two-Phase OST Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Flow Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Hardware Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Test Data Register (TDR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Pattern Counter For Two-Phase Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Two-Phase Fault Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
External Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
DftSpecification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Fault Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Chapter 13
Independent Hybrid TK/LBIST Insertion Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Independent Insertion Flow Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Tessent EDT and LogicBIST IP Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
EDT and LogicBIST IP Generation Overview (Independent Insertion Flow) . . . . . . . . . . . 212
IJTAG Network in EDT/LogicBIST IP (Independent Insertion Flow) . . . . . . . . . . . . . . . 212
LBIST-Related Clock Signals for the Independent Insertion Flow . . . . . . . . . . . . . . . . . . 213
LBIST Load/Unload Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Timing Constraints (SDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
SDC File Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
LBIST-Ready Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Hierarchical STA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
STA For Legacy Hierarchical TK/LBIST Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Extended SDC Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
SDC Procedure Generation for Hybrid EDTs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
SDC Procedures for Hierarchical STA With Independent Insertion Flow . . . . . . . . . . . 232
Generating EDT and LogicBIST IP for Independent Insertion . . . . . . . . . . . . . . . . . . . . . . . 235
Generating LogicBIST-Ready EDT Child Blocks Without OCC . . . . . . . . . . . . . . . . . . . 236
Independently Inserting the LogicBIST-Ready EDT in Child Blocks. . . . . . . . . . . . . . . 236
Generating the LogicBIST Controller With Parent Level EDT. . . . . . . . . . . . . . . . . . . . 238
Generating LogicBIST-Ready EDT Child Blocks With OCC . . . . . . . . . . . . . . . . . . . . . . 242
Independently Inserting the LogicBIST-Ready EDT in Child Blocks With OCC . . . . . 242
Generating the LogicBIST Controller at the Parent Level With EDT and OCC . . . . . . . 244
Generating LogicBIST-Ready Grandchild Blocks with OCC . . . . . . . . . . . . . . . . . . . . . . 248
Independently Inserting the LogicBIST-Ready EDT in Grandchild Blocks . . . . . . . . . . 248
Instrumenting the Child Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Generating the LogicBist Controller at the Grandparent Level With EDT and OCC . . . 252
SSN and Hybrid TK/LBIST Insertion Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Appendix A
The Dofile Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
EDT and LogicBIST IP Generation Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Generating the EDT and LogicBIST IP (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Performing Scan Insertion and X-Bounding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Example Dofiles for Core-Level Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Pattern Generation for the Dofile Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Performing Pattern Generation for the Dofile Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Performing Pattern Generation for CCM in the Dofile Flow . . . . . . . . . . . . . . . . . . . . . . . 297
Pattern Mismatch Debugging in the Dofile Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Debug Based on MISR Signature Divergence (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . 301
Debug Based on Scan Cell Monitoring (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Tessent OCC for Hybrid TK/LBIST in the Dofile Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Tessent OCC TK/LBIST (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Tessent OCC for TK/LBIST Flow Configuration (Dofile Flow). . . . . . . . . . . . . . . . . . . 310
NCP Index Decoder (Dofile Flow). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
OCC Generation and Insertion (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Scan Insertion (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
OCC EDT/LBIST IP Creation (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
NCP Index Decoder Synthesis (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Fault Simulation with a Tessent OCC (Dofile Flow). . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Pattern Generation with a Tessent OCC (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Observation Scan Technology Dofile Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Example Tessent OCC TK/LBIST Flow (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Generating and Inserting the Tessent OCC (Dofile Flow). . . . . . . . . . . . . . . . . . . . . . . . 321
Inserting the Scan Chains (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Generating the Hybrid TK/LBIST IP (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Synthesizing and Inserting the LBIST NCP Index Decoder (Dofile Flow). . . . . . . . . . . 325
Generating the EDT Patterns (Dofile Flow). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Performing the LBIST Fault Simulation (Dofile Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Tessent OCC Dofile Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
File Examples for the Dofile Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Synthesis Script Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Timing Script Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
ICL Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Appendix B
Low Pin Count Test Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Low Pin Count Test Controller Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Type-2 LPCT Controller Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Appendix C
EDT Pattern Generation for the Hybrid IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
EDT Mode Initialization with IJTAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
The EDT Setup iProc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Usage Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Appendix D
Interface Pins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
LogicBIST Controller Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Clock Controller Pins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
EDT/LogicBIST Wrapper Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Segment Insertion Bit Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Appendix E
Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
The Tessent Documentation System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Global Customer Support and Success . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Third-Party Information
Figure 12-1. High-Level DFT Insertion Flow with Observation Scan . . . . . . . . . . . . . . . . . 191
Figure 12-2. Observation Scan Observe Point Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Figure 12-3. IJTAG Network in the LogicBIST Controller . . . . . . . . . . . . . . . . . . . . . . . . . 193
Figure 12-4. Failing Flop in Schematic Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Figure 12-5. Compare Simulation Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Figure 12-6. Vector_cnt Counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Figure 13-1. Independent Insertion Flow Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Figure 13-2. Block Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Figure 13-3. LBIST Controller Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Figure 13-4. SIBs Insertion and Integration of Cores for the Independent Insertion Flow . . 213
Figure 13-5. LBIST-Ready Block Before Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Figure 13-6. LBIST-Ready Block After Insertion Using shift_en . . . . . . . . . . . . . . . . . . . . 214
Figure 13-7. LBIST-Ready Block After Insertion Using capture_en . . . . . . . . . . . . . . . . . . 215
Figure 13-8. LBIST Controller Clock-Gating Signals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Figure 13-9. LBIST-Ready Block With PI Clocking Scheme and No OCC. . . . . . . . . . . . . 220
Figure 13-10. LBIST-Ready Block With PI Clocking Scheme and OCC. . . . . . . . . . . . . . . 221
Figure 13-11. LBIST-Ready Block With test_clock Clocking Scheme and OCC . . . . . . . . 222
Figure 13-12. LBIST-Ready Physical Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Figure 13-13. LBIST Controller in Parent Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Figure 13-14. Hybrid EDT for External Mode Controlled by Parent-Level LBIST . . . . . . . 225
Figure 13-15. Illustration of the Legacy Hierarchical TK/LBIST Flow . . . . . . . . . . . . . . . . 226
Figure 13-16. LBIST-Ready EDT Child Block. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Figure 13-17. LBIST Controller Inserted After Second Pass . . . . . . . . . . . . . . . . . . . . . . . . 241
Figure 13-18. LBIST-Ready EDT Child Block With OCC. . . . . . . . . . . . . . . . . . . . . . . . . . 244
Figure 13-19. LBIST Controller With OCC Inserted After Second Pass . . . . . . . . . . . . . . . 247
Figure 13-20. LBIST-Ready Grandchild Block with OCC . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Figure 13-21. LBIST-Ready Grandparent, Intermediate, and Grandchild Block With OCC 255
Figure 13-22. Independent Insertion With SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Figure 13-23. Independent Insertion With SSH Child Block Contents. . . . . . . . . . . . . . . . . 257
Figure 13-24. SSH With scan_signals_bypass: controls_only . . . . . . . . . . . . . . . . . . . . . . . 258
Figure 13-25. SSN-Equipped LBIST -Ready Child Block . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Figure 13-26. Independent Insertion With SSN and OCC at Parent Level . . . . . . . . . . . . . . 264
Figure 13-27. Using ssn_bus_clock as test_clock Bypass. . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Figure 13-28. Top-Level Functional Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Figure 13-29. Core-Level Chains Driven by Top-Level OCC . . . . . . . . . . . . . . . . . . . . . . . 267
Figure 13-30. Top-Level Reference Clock and Core-Level PLL . . . . . . . . . . . . . . . . . . . . . 268
Figure 13-31. Core-Level Chains Driven by Core-Level OCC. . . . . . . . . . . . . . . . . . . . . . . 271
Figure 13-32. Hybrid EDT for the External Mode Controlled by Parent-Level LBIST . . . . 272
Figure 13-33. Hybrid EDT for Wrapper Chains Shared Between Core-Level and Parent-Level
LBIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Figure 13-34. Single-Pass EDT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Figure 13-35. EDT and LBIST Association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Figure A-1. The Dofile Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Figure A-2. Modified TK/LBIST Flow for Tessent OCC . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Figure A-3. NCP Index Decoder Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Figure A-4. OCC/LogicBIST Connection Intercept With Same Signal Source . . . . . . . . . . 316
Figure A-5. OCC/LogicBIST Connection Intercept With Different Signal Sources . . . . . . 317
Figure A-6. Clock Gating With DFT Signals and OCC in the First Pass . . . . . . . . . . . . . . . 334
Figure A-7. Clock Gating With EDT and LogicBIST in the Second Pass . . . . . . . . . . . . . . 334
Figure C-1. Example of Tool-Generated Setup iProc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Table 3-1. Test Point Insertion, Scan Insertion, and X-Bounding Commands . . . . . . . . . . 89
Table 4-1. Initial Static DFT Signals for Fault Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Table 4-2. Fault Simulation and Pattern Creation Commands . . . . . . . . . . . . . . . . . . . . . . . 100
Table 7-1. Top-Level ICL Network Integration Commands . . . . . . . . . . . . . . . . . . . . . . . . 140
Table 8-1. ICL Extraction and Pattern Retargeting Commands . . . . . . . . . . . . . . . . . . . . . . 146
Table 12-1. Modes of Operation for Observation Scan Cells . . . . . . . . . . . . . . . . . . . . . . . . 192
Table A-1. EDT and LogicBIST IP Generation Commands . . . . . . . . . . . . . . . . . . . . . . . . 281
Table A-2. Output Files, EDT and LogicBIST IP Generation, TSDB Flow . . . . . . . . . . . . 284
Table A-3. Output Files, EDT and LogicBIST IP Generation, Dofile Flow . . . . . . . . . . . . 285
Table D-1. LogicBIST Controller Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Table D-2. Clock Controller Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Table D-3. EDT/LogicBIST Wrapper Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Table D-4. SIB Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
The hybrid TK/LBIST flow combines TestKompress (EDT) functionality with Tessent
LogicBIST functionality in the Tessent Shell environment. Sharing Tessent EDT and Tessent
LogicBIST IP functionality reduces hardware overhead. You can implement hybrid TK/LBIST
as a dofile or specification-based flow, depending on how the command files are written, and as
bottom-up or top-down, depending on the IP implementation.
This manual describes the flow to generate the hybrid TK/LBIST hardware, integrate it into the
design, and perform scan insertion, fault simulation and pattern generation. This flow uses the
configuration-based methodology. For details on using a dofile-based approach, refer to “The
Dofile Flow” on page 279. Although the tool supports a dofile-based flow, it is recommended to
migrate to the configuration-based flow to take advantage of its automation, seamless
integration, and ease-of-use features.
Note
This manual uses the terms “LogicBIST” and “LBIST” interchangeably.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Introduction to the Hybrid TK/LBIST Flow
Hybrid TK/LBIST Implementation
The tool stores the output files for each step in the Tessent Shell Database (TSDB). For
information about the TSDB, refer to “Tessent Shell Database” in the Tessent Shell Reference
Manual.
Note
For the Tessent On-Chip Clock Controller (OCC) flow, the tool automatically generates the
named capture procedures (NCPs) and test setups as inputs to fault simulation. For more
information, refer to “Tessent OCC for Hybrid TK/LBIST” on page 161.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Introduction to the Hybrid TK/LBIST Flow
Tessent Core Description
The tool generates the TCD file and other hybrid logic files during IP generation and places
them in the TSDB directory. The TCD file contains the description of the generated Tessent
EDT IP and Tessent LogicBIST IP. With a TCD file, Tessent Shell can automatically extract the
connectivity between the hybrid IP and the chip, adjust test procedures, and enable pattern
generation.
If your hybrid IP can operate in multiple configurations (for example, low power, bypass, and
so on), a single TCD file contains all the configurations in contrast to the multiple EDT IP dofile
usage. During pattern generation, you can specify how you want those parameters of the EDT
IP configured for that ATPG mode.
Note
Do not use instrument TCD files during pattern retargeting; instead, use the core-level TCD
files.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Introduction to the Hybrid TK/LBIST Flow
Tessent EDT and LogicBIST IP Generation
There is no TAP controller at the core level. The tool integrates the access mechanism in the
IJTAG network at the core level. This step of the flow creates new core-level pins
corresponding to the Segment Insertion Bit (SIB) control signals, tck, and LBIST scan I/O. The
core-level Verilog patterns operate these pins directly. These pins connect to the TAP controller
at the top level of the design. See “Top-Level ICL Network Integration” on page 1 for more
information.
As part of IP generation, the tool writes the following files to the TSDB:
• ICL file — Consists of the ICL module description for the LBIST controller, the NCP
index decoder, and all EDT and LogicBIST blocks that the controller tests.
• PDL file — Contains iProcs at the core level that use the ICL modules.
During IP generation, the generated ICL file describes only the LogicBIST, NCP index decoder,
and EDT modules. The extracted ICL file includes the core-level pin names and connectivity
found from the core-level design netlist. The tool uses the extracted ICL file during top-level
pattern generation. See “ICL Extraction and Pattern Retargeting” on page 1 for more
information. You can write Verilog patterns in this step and simulate them to verify the test
operation at the core level.
For complete information, see “EDT and LogicBIST IP Generation” on page 1. During
integration with the top level, the tool adds new top-level test pins or uses existing top-level test
pins controlled internally by the EDT and LogicBIST IP.
Logic Synthesis
You must synthesize all of the EDT and LogicBIST blocks and the common LogicBIST
controller. Synthesis is fully automated. In the gate-level flow, you can use the run_synthesis
command to synthesize the controllers and the test logic in the TSDB and integrate them into
the gate-level design. When the run_synthesis command completes successfully, it creates a
concatenated netlist of the design that contains the synthesized test logic and modified design
modules and places them in the dft_inserted_designs directory of the TSDB.
In the RTL-level flow, you can use the run_synthesis command to synthesize the test logic
inserted by the tool, but the netlists are not concatenated.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Introduction to the Hybrid TK/LBIST Flow
Test Point Analysis and Insertion
• PatternDB file — Contains the pattern data and the relevant LBIST register values per
pattern, such as PRPG, MISR, and low-power registers.
• Tessent Core Description file (TCD) — Describes relevant information about the core
for the LogicBIST mode.
For subsequent diagnosis, you can use Tessent Diagnosis to perform diagnosis with the EDT
patterns. You can use the Single Chain Mode logic for LBIST diagnosis. See “Single Chain
Mode Logic” on page 50
See “LogicBIST Fault Simulation and Pattern Creation” on page 91 for more information.
Pattern Generation
In this step of the flow, you generate core-level patterns for the bottom-up method and top-level
patterns (including a Verilog testbench) for the LogicBIST controller for the top-down method.
This step also generates chip-level serial patterns that you can apply from the tester.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Introduction to the Hybrid TK/LBIST Flow
Top-Level ICL Network Integration
See “Pattern Generation” on page 103 for complete information on all ATPG formats Tessent
LogicBIST supports.
You must provide a pattern retargeting dofile that includes all LogicBIST cores and the required
scheduling.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Introduction to the Hybrid TK/LBIST Flow
Considerations for Top-Down Implementation
• Top-level steps (perform once with the top-level netlist containing the cores):
o ICL network integration:
• Input files: core netlists and top-level interconnect between cores
• Output: top-level netlist
o ICL extraction and pattern retargeting:
• Hybrid TK/LBIST insertion at the top level if required (steps similar to core-
level insertion)
• Input files: top-level netlist, ICL, and PDL; core TCD, patDB, ICL, and PDL;
pattern retargeting dofile
• Output: Verilog simulation patterns and tester patterns (WGL and STIL)
Related Topics
ICL Extraction and Pattern Retargeting
Figure 1-1 on page 18 illustrates the steps when using the top-down method. See “Hybrid TK/
LBIST Implementation” for more information. You define blocks for insertion and run Steps 1-
5 as follows:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Introduction to the Hybrid TK/LBIST Flow
Limitations for the Hierarchical TK/LBIST Flow
If you define the OCC without shift_only_mode, it shifts with the core’s fast_clk, which is
controlled by the parent-level OCC.
Other Limitations
• The Hybrid TK/LBIST gate-level dofile flow is not supported in the independent Hybrid
TK/LBIST insertion flow.
• The following DftSpecification/LogicBist/Controller properties have been deprecated:
o pre_post_shift_dead_cycles: this property is replaced by the
SetLoadUnloadTimingOptions wrapper properties and the
set_load_unload_timing_options command.
o ShiftCycles/counter_resolution: this property is not configurable. The bit setting is
now the default.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 2
EDT and LogicBIST IP Generation
As part of the hybrid IP generation step, you generate the Tessent shared EDT and LogicBIST
RTL. You can begin with RTL or a gate-level netlist.
The generated EDT and LogicBIST IP can be written out only in Verilog format.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
EDT and LogicBIST IP Generation Overview
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Integrating a Third-Party TAP in the Hybrid TK/LBIST Flow
These steps create the ICL, PDL, SDC, TCD, and a BIST-ready netlist. Then they store them in
the TSDB with a unique design ID.
Overview Details
You use Tessent Shell to generate the shared EDT/LogicBIST RTL. Modular EDT is supported
in this step, where both shared EDT/LogicBIST IP per block and LogicBIST controller are
inserted at the same time.
The new core-level pins corresponding to the SIB control signals and TCK, and LogicBIST
scan I/O are created at this step. The core-level Verilog patterns operate these pins directly.
These pins are later connected to the TAP controller at the top level of the design (see “Top-
Level ICL Network Integration”).
• The ICL file consists of the ICL module description for the LogicBIST controller, the
NCP index decoder, and all EDT blocks tested by this controller.
• The PDL file contains iProcs at the core level that use the ICL modules written out.
During the IP generation step, the generated ICL file describes only the LogicBIST and EDT
modules. This extracted ICL includes the core-level pin names and connectivity found from the
core-level design netlist. The extracted ICL is used during top-level pattern generation—see
“ICL Extraction and Pattern Retargeting.” Verilog patterns can be written out in this step and
simulated to verify the test operation at the core level.
• tck
• setup_shift_scan_in
• setup_shift_scan_out
• capture_dr
• shift_dr
• update_dr
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Clock Controller Connections to the EDT/LogicBIST IP
• test_logic_reset
• tap_instruction_decode
Figure 2-1 shows the TAP controller with these signals highlighted in red.
• The tool generates the ICL/PDL for the TAP—see “Pattern Generation.”
• The tool automatically inserts a pipeline stage after the last SIB in the tool-produced ICL
network for the LogicBIST controller to account for designs where the TAP already has
a retiming flop on the TDO output pin. Consequently, you do not need to modify the
ICL to account for the retiming flops at the output.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Clock Controller Connections to the EDT/LogicBIST IP
Figure 2-2 shows the Clock Controller before the EDT/LogicBIST IP has been generated.
Figure 2-3 shows the clock controller connections to the BIST controller after EDT/LogicBIST
IP generation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
EDT and LogicBIST IP
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
EDT and LogicBIST IP
For detailed description of Hybrid EDT/LogicBIST IP, refer to the following sections:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
EDT and LogicBIST IP
During EDT mode of operation, all EDT control signals except EDT clock, meaning update,
bypass, and low power enable, are directly connected to the EDT logic without passing through
the LogicBIST controller. The scan cells are shifted using a top-level shift clock. The Shift
Clock controller chooses the EDT clock to be delivered to the EDT blocks.
In addition, in EDT mode, the tool calls an automatically generated iProc procedure that
initializes the hybrid IP.
During LogicBIST mode of operation, the scan cells are shifted using the shift clock output
from the LogicBIST controller. The shift clock controller chooses a gated version of the
LogicBIST clock to be delivered to the LogicBIST blocks. This gating ensures that the PRPG
and MISR are not pulsed during capture as well as the transition between shift and capture
modes.
The core scan cells receive the capture clock pulses from the clock controller logic. The
LogicBIST clock input to the PRPG and MISR is turned off during capture.
Figure 2-6 shows the clock and EDT control signals in the LogicBIST IP.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Clock Control Logic and Named Capture Procedures
EDT Mode
All existing EDT capabilities for controlling capture mode clocking can be used in the shared
EDT/LogicBIST architecture. For example, suppose you have a clock pin that is a design top-
level pin controlled by the tester. When using a PLL, clock control register values for functional
clocks can be shifted in during scan shift. You can control the number of capture cycles on a per
pattern basis, either through a named capture procedure or clock_control definition.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Clock Control Logic and Named Capture Procedures
LogicBIST Mode
You can describe specific capture clock sequences to be applied using NCPs using the
following commands:
• add_bist_capture_range
• set_lbist_controller_options, specifically, the -capture_procedures switch
In general, you associate the percentage of patterns for which each NCP is applied. This should
reflect the number of faults that can be detected with the specified NCP. The number of cycles
in capture should be uniform across all NCPs. You can specify the number of BIST clock cycles
for capture. When not specified, the maximum value possible for the capture counter register in
the hardware is used.
The LogicBIST controller consecutively applies the NCPs for the specified percentage of
patterns, with the cycle repeating after 256 patterns. An additional output that identifies the
index of the currently targeted NCP is available as a counter calculating the total number of
NCPs. The NCP index is generated by decoding from the least significant bits of the pattern
counter.
Again, you must ensure your design generates the correct clock sequence corresponding to the
NCP based on this index signal bits.
If you define only a single NCP, then the NCP index output is not generated. You should do this
in cases where the clock controller is initialized during test_setup to generate a particular
capture procedure. All patterns in this session use the same capture procedure.
See “LogicBIST Fault Simulation and Pattern Creation Overview” on page 91 for more
information on NCP generation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Programmable Registers
To ensure that the tool accounts for the extra cycles, generate the LogicBIST capture width
register with a bigger counter. For example, for an OCC with a four-bit shift register, configure
the LogicBIST capture width counter to support up to eight cycles in the capture, as follows:
DftSpecification(mymodulename,mymoduleid) {
LogicBist {
Controller(id) {
CaptureCycles {
max : 8 ;
}
}
}
}
Likewise, during fault simulation, OCC is configured as having up to four pulses through NCPs,
but you can load eight pulses into the capture width register by specifying the following
command:
set_external_capture_options -fixed_cycles 8
Programmable Registers
Programming of the BIST registers is the same for both TAP and non-TAP cases. The BIST
controller and EDT blocks use the same control interface.
When using a TAP, these signals are generated by the TAP controller. When not using a TAP,
these signals are presented as top-level pins that operate similarly to the TAP controller output
signals. This is done automatically in the next step of the flow—see “Pattern Generation” on
page 103.
Related Topics
Programmable Registers Inside Hybrid IP
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Programmable Shift and Capture Pause Cycles
To change the number of dead cycles in the shift and capture pauses, change the number of dead
cycles by specifying the pre_post_shift_dead_cycles parameter, as shown below:
LogicBist {
Controller(id) {
parent_instance : name ;
leaf_instance_name : name ;
pre_post_shift_dead_cycles : int ; // default: 8
}
}
The option accepts integer values from 2 to 8, with 8 being the default. When specified, the
hardware changes so that the requested number of dead cycles is used for both the shift and the
capture pauses. You cannot use a value of 1 because it might allow the capture enable and shift
phase signals to toggle on the same clock edge.
Figure 2-8 shows the waveform when you have specified 2 for the dead cycle pause.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Low-Power Shift
Low-Power Shift
During EDT and LogicBIST IP generation, you can configure the low-power scheme to control
the switching activity during “shift” to reduce power consumption.
Use the DftSpecification/EDT/Controller/LogicBistOptions/ShiftPowerOptions/
SwitchingThresholdPercentage wrapper to create the low-power shift controller for LogicBist.
For example:
DftSpecification(module_name, id) {
EDT {
Controller(id) {
LogicBistOptions {
ShiftPowerOptions {
SwitchingThresholdPercentage {
hardware_default : 10 ;
}
}
}
}
}
}
For a detailed description of the embedded structure inserted for this purpose, see “Low-Power
Shift Controller.”
Warm-Up Patterns
At the beginning of pattern generation, several patterns can elapse before the voltage in the chip
stabilizes. This voltage droop can cause pattern mismatches. To remedy the impact of voltage
droop, the tool inserts a warm-up pattern count register in the logic BIST controller. Warm-up
patterns are those for which the scan chain unload values are not accumulated in the MISR, and
for which no fault credit has been taken during fault simulation.
Figure 2-15 on page 59 shows the placement of the warm-up pattern count register within the
logic BIST controller. By default, the tool creates an 8-bit register to enable up to 255 warm-up
patterns. The tool loads the warm-up pattern count register with the value of the pattern count
register when the warm-up is completed. For example, if there are 13 patterns, 4 of which are
warm-up patterns, the value in the warm-up pattern count register is 10.
The logic BIST controller operates as follows: The first pattern that the tool uses for fault
detection during fault simulation corresponds with begin_pattern=0. The PRPG value for this
pattern is determined by the initial hardware PRPG seed, followed by applying the default
number of warm-up patterns. When a non-default number of warm-up patterns is applied, the
PRPG must be loaded such that it still reaches the same initial PRPG value for this first pattern.
If begin_pattern is not zero, then the PRPG must be loaded such that it reaches the correct value
that was specified for that pattern during fault simulation. When begin_pattern is zero, the tool
loads the MISR with the value for that pattern (since the MISR does not update during warm-up
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Warm-Up Patterns
patterns). However, when begin_pattern is non-zero, the tool must load the MISR with the value
that was computed during fault simulation for that pattern.
The tool masks the scan chain unload values for warm-up patterns to enable the voltage in the
chip to stabilize. You can specify the number of patterns to mask by setting the
warmup_pattern_count argument when executing the run_lbist_normal or scan_unload_register
iCall. If this argument is not provided with the iCall command, the iProc procedure defaults it to
0.
Logic BIST patterns are typically applied starting with pattern 0. This is the default for the
hardware, and is also the default for the run_lbist_normal ICL procedure. The most common
reason for specifying a non-zero value for begin_pattern is during debug or diagnostic when you
want to quickly apply a small range of patterns, or just a single failing pattern.
In the following example, the user wants to run LBIST starting from a specific pattern. The
pattern specification instructs the logic BIST controller to run from patterns 100 to 199 with 16
warm-up patterns. Since there are 16 warm-up patterns, the tool seeds the PRPG with a seed
corresponding to pattern 84, which is equal to:
begin_pattern - warmup_pattern_count
In this case, the controller executes 116 patterns but the MISR only observes the last 100
patterns.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Warm-Up Patterns
PatternsSpecification(coreA,gate,signoff){
Patterns(LogicBist_coreA){
ClockPeriods {
refclk : 10.00ns;
}
TestStep(serial_load){
LogicBist{
CoreInstance(.){
run_mode : run_time_prog;
begin_pattern : 100;
end_pattern : 199;
warmup_pattern_count : 16;
}
}
}
}
}
In the following example, the PRPG initial seed originates from the warm-up PRPG seed-only
patterns. Beginning from pattern 0, the tool seeds the MISR with d‘0, and the PRPG is based on
the number of specified warm-up patterns. Suppose your pattern specification states:
PatternsSpecification(coreA,gate,signoff){
Patterns(LogicBist_coreA){
ClockPeriods {
refclk : 10.00ns;
}
TestStep(serial_load){
LogicBist{
CoreInstance(.){
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 99;
warmup_pattern_count : 16;
}
}
}
}
}
Assuming a maximum of 255 warm-up patterns, the PRPG seed starts with the 240th warm-up
pattern.
With respect to warm-up patterns and the PRPG seeding, scan unload pattern operations
function the same as described above for logic BIST patterns.
For the hardware default mode, the tool performs the warm-up period within the hardware so no
additional IJTAG access is required. The number of warm-up patterns, PRPG seed, and low-
power register seeds are hard-coded in the iProc, and these values are checked against the
PatternDB file to ensure they match. If the iProc values do not match the PatternDB, the tool
generates an error and the hardware default patterns cannot be saved.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Warm-Up Patterns
Fault Simulation
You can use the set_edt_options -decompressor_seed command to change the initial seed of the
PRPG. This seed applies to both the warm-up patterns and the actual patterns. If you do not
specify a PRPG seed, the tool uses the value from IP generation. Using the PRPG seed, the tool
calculates the PRPG seed for the first regular pattern, which it then stores in the Tessent Core
Description file and flat model.
If you use a different decompressor seed than that used during IP generation, then the hardware
default mode cannot be used with the current pattern set.
The tool does not include warm-up patterns in the number of logic BIST patterns it simulates,
which means these patterns do not contribute to fault coverage analysis. For example, if you
specify set_random_patterns 32000 and you have a maximum of 255 warm-up patterns, then
the tool creates 255 warm-up patterns followed by 32000 logic BIST patterns.
When creating parallel patterns with the write_patterns -parallel command, the tool excludes the
warm-up patterns because the parallel patterns are primarily used for validating logic BIST
operation. However, the PatternDB file includes the warm-up patterns so that the tool can apply
them during pattern retargeting.
The following TCD file example shows a warm-up pattern register capable of 255 patterns.
Core(CoreA) {
LbistMode(lbist) {
Registers {
PrpgRegister(CoreA_edt_i.lfsm_vec) {
length : 31;
type : prpg;
}
WarmupPatternRegister(CoreA_lbist_i.warmup_pattern_count) {
length : 8;
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Warm-Up Patterns
Example
In the following example, the logic BIST controller needs to support up to 300 warm-up
patterns with 128 hardware default warm-up patterns. During IP generation, you would use the
following values in the WarmupPatternCount wrapper:
DftSpecification(coreA, gate) {
LogicBist {
Controller {
WarmupPatternCount {
max : 300 ;
hardware_default : 128 ;
}
}
}
}
The Logic BIST controller generates a warm-up pattern counter register with 9 bits, enabling up
to a maximum of 511 warm-up patterns.
The following example illustrates how you can apply the warm-up patterns for various
scenarios.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Warm-Up Patterns
PatternsSpecification(coreA,gate,signoff) {
// Run the first 1K patterns with 300 warm-up patterns
Patterns(warmup_300) {
...
TestStep(serial_load) {
LogicBist {
CoreInstance(w2_A) {
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 1023;
warmup_pattern_count : 300;
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Chain Test Patterns
}
}
When chain test patterns are enabled, they are applied after any warm-up patterns and before the
asynchronous set/reset and scan patterns. The number of chain test patterns applied count
towards the total number of random patterns applied. For example, if you request 2000 random
patterns, and there are seven chain test patterns, then patterns 0:6 are chain test patterns and
7:1999 are normal scan patterns. During the chain test patterns, the capture procedure does not
pulse any clocks, and the capture window is one shift cycle wide. The capture_en signal remains
low during the chain test.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Chain Test Patterns
Note
Fault simulation can create a dedicated chain test pattern set if the dedicated chain test
hardware is not present. To do this, use the “-parameter_values {pattern_set chain_test}
option of the add_core_instances or set_core_instance_parameters commands.
You can enable the chain test patterns with the set_bist_chain_test command when using the
dofile flow where the add_core_instances or set_core_instance_parameters commands are not
used.
Example
In the following example, the logic BIST controller needs to support up to 16 chain test patterns
with seven hardware default patterns. Include the following in the DFT specification to generate
the IP:
DftSpecification(coreA,dft) {
LogicBist {
Controller(1) {
ChainTestPatternCount {
max : 16;
hardware_default : 7;
}
}
}
}
During fault simulation, the tool overwrites the default seven chain test patterns with 12 chain
test patterns.
When performing pattern retargeting, you do not need to specify additional properties. You can
control the number of chain test patterns with the begin_pattern and end_pattern properties.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Asynchronous Set/Reset Patterns
PatternsSpecification(coreA,gate,signoff) {
// Run the first 1K patterns with 12 chain test patterns
Patterns(first_1k_with_chain_test) {
...
TestStep(serial_load) {
LogicBist {
CoreInstance(w2_A) {
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 1023;
}
}
}
}
// Run the first 1K patterns without the 12 chain test patterns
Patterns(first_1k_without_set_reset) {
...
TestStep(serial_load) {
LogicBist {
CoreInstance(w2_A) {
run_mode : run_time_prog;
begin_pattern : 12;
end_pattern : 1035;
}
}
}
}
// Run the first 12 patterns to only perform the chain test patterns
Patterns(set_reset_only) {
...
TestStep(serial_load) {
LogicBist {
CoreInstance(w2_A) {
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 11;
}
}
}
}
}
Related Topics
add_core_instances [Tessent Shell Reference Manual]
set_core_instance_parameters [Tessent Shell Reference Manual]
DftSpecification [Tessent Shell Reference Manual]
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Asynchronous Set/Reset Patterns
The dynamic DFT signal, created by combining the static DFT signal with scan_en, disables the
set and reset signals only during shift (when scan_en is high), as shown in Figure 2-10. The
state of the functional circuit then determines whether the set/reset signals are active during the
capture.
Figure 2-10. DFT Signal to Turn Off Set/Reset Signals During ATPG
In most cases, it is sufficient to test only the set and reset signals during ATPG. However, if you
want to test the set and reset signals with LogicBIST, you can add hardware to achieve this. You
must declare the dynamic DFT signal, lbist_async_set_reset_dynamic_enable, to enable the
LogicBIST controller to pulse the set and reset signals. The
lbist_async_set_reset_dynamic_enable DFT signal multiplexes with the
async_set_reset_dynamic_disable DFT signal using the lbist_en static DFT signal as a select
signal.
An output port on the LogicBIST controller, async_set_reset_en, drives the DFT signal so that
the tool pulses the set/reset signals during the logic BIST run modes (see Figure 2-11). An
asynchronous set/reset pattern count register within the logic BIST controller determines which
patterns are testing the set/reset pins. See Figure 2-15 on page 59 for register placement.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Asynchronous Set/Reset Patterns
The tool applies the asynchronous set/reset patterns after the warm-up patterns, if any, and
before the regular scan patterns. When the set/reset patterns are active, the async_set_reset_en
port is low during the shift. Because these patterns are testing only the asynchronous set/reset
pins, the capture procedure does not pulse any clocks. The capture window is two shift clock
cycles wide to ensure sufficient propagation time for the set/reset pulse to reach the flip-flops.
Fault Simulation
The TCD for the logic BIST controller carries forward the size of the asynchronous set/reset
pattern count register, so that during fault simulation, the default and maximum number of set/
reset patterns are known. You can control the number of asynchronous set/reset patterns to
simulate with the async_set_reset_pattern_count parameter of the add_core_instances
command.
The number of asynchronous set/reset patterns applied count towards the total number of
random patterns applied. For example, if you request 2000 random patterns, and there are seven
asynchronous set/reset patterns, then patterns 0:6 test the set/reset pins and 7:2000 are normal
scan patterns.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Asynchronous Set/Reset Patterns
Example
In the following example, the logic BIST controller needs to support up to 16 asynchronous set/
reset patterns with seven hardware default patterns. During IP generation, you would have the
following in the DFT specification:
DftSpecification(coreA,dft) {
LogicBist {
Controller(1) {
AsyncSetResetPatternCount {
max : 16;
hardware_default : 7;
}
}
}
}
During fault simulation, the tool overwrites the default seven asynchronous set/reset patterns
with 12 asynchronous set/reset patterns.
When performing pattern retargeting, no additional properties need to be specified. Using the
begin_pattern/end_pattern properties, you can control the number of asynchronous set/reset
patterns.
PatternsSpecification(coreA,gate,signoff) {
// Run the first 1K patterns with 12 set/reset patterns
Patterns(first_1k_with_set_reset) {
...
TestStep(serial_load) {
LogicBist {
CoreInstance(w2_A) {
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 1023;
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Asynchronous Set/Reset Patterns
Limitations
The testing of asynchronous set/reset pins during LogicBIST does not currently support flip-
flops that have both a set and a reset pin. The testing drives both set and reset pins with the same
enable signal on the LogicBIST controller, which means that both pins are active at the same
time. Therefore, the flip-flop model determines which signal has priority.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Single Chain Mode Logic
Consider the example below, where there are three flip-flops: a_reg has a set and reset, b_reg
has only a set, and c_reg has only a reset. After running process_dft_specification, a_reg has
both of its set and reset pins driven by the same source when LogicBIST is running.
This results in errors during LogicBIST fault simulation because the tool reads both the set and
reset pin of the a_reg flip flop active at the same time. The following figure shows how you can
prevent this error by editing the design such that the set or reset pin of the a_reg flip flop is
disabled during LogicBIST:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Controller Chain Mode
The single chain mode logic disables EDT bypass and single bypass pins to ensure that they do
not interfere with LBIST operation. During diagnosis, a TDR control bit within the logic
provides access to the single chain mode for scan chain unload.
Note
When you disable either EDT bypass or EDT single bypass in any EDT block, the tool does
not generate the single chain mode logic. You can turn off bypass and single bypass by
using the BypassChains wrapper:
DftSpecification(module_name, id)
EDT {
Controller(id) {
BypassChains {
present : off ;
single_bypass_chain : off ;
}
}
}
}
Caution
Setting these properties to off is not recommended because doing so also turns off LBIST
pattern diagnosis.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Controller Chain Mode
You can use either test_clock or tck as the clock when implementing CCM. Specify the clock at
the time of IP generation. For example, select the tck clock as follows:
DftSpecification(module_name, id) {
LogicBist {
Controller (id) {
ControllerChain {
clock : tck ;
}
}
}
}
When you configure CCM to use tck, perform scan insertion for the CCM mode chains in a
separate run from regular scan cell insertion. When inserting the CCM mode chains, configure
the LogicBIST clock mux to choose tck as the clock by setting the controller_chain_mode DFT
signal to 1. This avoids a situation in which the source of the edt_lbist_clock at the LogicBIST
controller output differs between scan insertion and pattern generation for CCM mode.
When you implement CCM with the default, test_clock, the scan insertion view remains
consistent with the CCM pattern generation view, so a separate CCM mode scan insertion run is
not required.
Usage Details
To enable the generation of CCM logic, specify the following property in the LogicBist
wrapper:
DftSpecification(module_name, id) {
LogicBist {
Controller (id) {
ControllerChain {
present: on ;
}
}
}
}
You can modify the names of CCM-specific ports using the DftSpecification/EDT/
ControllerChain wrapper, as shown in Figure 2-12 on page 54.
As described in “RTL and Scan DFT Insertion Flow With Hybrid TK/LBIST” in the Tessent
Shell User’s Manual, in the configuration-based flow, you insert the hybrid IP before
performing scan chain insertion. By default, the tool inserts CCM scan segments for each
instrument but does not connect them into one chain. This enables flexible scan chain stitching
during scan insertion.
During scan insertion, configure the controller chains by creating a controller chain scan mode
with the add_scan_mode command. This scan mode should only contain the CCM scan
segments as valid scan elements.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Controller Chain Mode
The CCM scan segments in Tessent IP cores are inactive by default in order to not be confused
with standard scan elements (design flops, segments on sub_blocks, and so on). Therefore, you
must activate a controller_chain_mode scan mode on Tessent IP instances before adding them
to the scan mode population. You should also reset the active child scan mode after adding
CCM scan mode. You can perform these tasks using the DftSpecification/LogicBist/
ControllerChain wrapper.
Note
To benefit from flow automation, use the controller_chain_mode DFT signal as a scan mode
enable signal. See add_dft_signals in the “Tessent Shell Reference Manual” for more
information.
DftSpecification(module_name, id) {
LogicBist {
Controller(id) {
ControllerChain {
segment_per_instrument : on;
present : on;
clock : tck;
max_segment_length : unlimited;
}
}
}
}
You can generate multiple CCM chains within the EDT or LBIST controller, using a specified
maximum length to guide the CCM scan chain stitching during IP creation.
Note
The minimum max_segment_length is 32.
For details about scan chain insertion when you are using the configuration-based flow, refer to
“Perform Scan Chain Insertion” in the Tessent Shell User’s Manual.
For information about generating CCM patterns in the configuration-based flow, refer to
“Performing Pattern Generation for CCM in the TSDB Flow” on page 106.
To connect the CCM scan segments into one controller scan chain during IP generation, set the
segment_per_instrument property to “off.”
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Controller Chain Mode
To enable generation of CCM logic, set the CCM mode to “on” in the ControllerChain wrapper:
DftSpecification(module_name, id) {
LogicBist {
Controller(id) {
ControllerChain {
present : on;
}
}
}
}
By default, the tool inserts CCM scan segments for each instrument but does not connect them
into one chain. You perform scan chain insertion prior to inserting the IP, which means that if
you want to configure the controller chains, you must perform an incremental scan insertion to
create the CMM scan chain from the segments.
To automatically generate the EDT/LBIST IP with a single RTL scan chain assembled from the
CCM scan segments in each IP block, set the segment_per_instrument property to “off”:
DftSpecification(module_name, id) {
LogicBist {
Controller(id) {
ControllerChain {
segment_per_instrument : off ;
}
}
}
}
Use the ControllerChain and Connections wrappers to define port names and other properties.
The complete definition of these wrappers is as follows:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Controller Chain Mode
DftSpecification(module_name,id) {
EDT {
ControllerChain {
present : on | off ; // default: off
clock : enum ; // legal: tck | edt_clock
segment_per_instrument : on | off ; // default: on
Interface {
enable : port_name ; // default: ccm_en
scan_in : port_name ; // default: ccm_scan_in
scan_out : port_name ; // default: ccm_scan_out
scan_en : port_name ; // default: ccm_scan_en
}
Connections {
scan_en : port_pin_name ;
// default: OptionalDftSignal(scan_en)
controller_chain_enable : port_pin_name ;
// default: OptionalDftSignal(controller_chain_mode)
controller_chain_scan_in : port_pin_name ;
// default: control_chain_%s_scan_in
controller_chain_scan_out : port_pin_name ;
// default: control_chain_%s_scan_out
}
}
}
LogicBist {
Controller(id) {
ControllerChain {
present : on | off ;
clock : enum ; // legal: tck | edt_clock
segment_per_instrument : on | off ;
max_segment_length : int | unlimited; // int >= 32
}
Interface {
ControllerChain {
enable : port_name; // default: ccm_en
scan_in : port_name; // default: ccm_scan_in
scan_out : port_name; // default: ccm_scan_out
scan_en : port_name; // default: ccm_scan_en
}
}
Connections {
controller_chain_enable : port_pin_name ;
controller_chain_scan_in : port_pin_name ;
controller_chain_scan_out : port_pin_name ;
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Controller Chain Mode
The tool inserts CCM scan in and CCM scan out ports, and muxes controlled by the CCM
enable signal, into each IP instrument that contains CCM scan segments. After IP insertion, the
ccm_scan_in and ccm_en ports are tied to 0, and the ccm_scan_out is unconnected. The tool
internally generates the ccm_scan_en signal within each IP block by performing an AND
operation on the ccm_en and scan_en signals. The input port (ccm_en) enables the CCM. The
tool reuses the existing ATPG scan enable for CCM.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Controller Chain Mode
When you set the property segment_per_instrument to “off” so that the tool automatically
connects the scan segments into one controller scan chain, the inserted architecture design is:
CCM uses the existing ICL network chain that already contains most of the flops in the
controllers. Flops that are not in the ICL network are multiplexed into it during the CCM shift.
The result is a single chain that is accessible through a new scan input (ccm_scan_in) and output
(ccm_scan_out).
Related Topics
Performing Pattern Generation for CCM in the TSDB Flow
Performing Pattern Generation for the Dofile Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
IJTAG Network in EDT/LogicBist IP
The EDT/LogicBIST blocks contain SIB registers to provide access to various registers, such as
the PRPG, the EDT chain mask register, MISR, and programmable NCP count registers. The
EDT SIBs are clocked by tck, and the data registers they control are clocked by edt_clock. The
tool adds a lockup cell to avoid clock skew between these two clock domains. A SIB inside the
LogicBIST controller controls access to the EDT SIBs. The enable output of this LogicBIST
controller SIB is used as the input enable for the EDT SIBs.
For each specified NCP, an 8-bit register is created and inserted on the ICL network. These
registers are loaded at run time so that the number of patterns applied for the NCP is
programmable. When an integer percentage is provided during IP generation, the NCP registers
reset to those values when sib_reset is asserted. Otherwise, these registers are reset to equal
percentages across all NCPs. For more information, see “Generating the EDT and LogicBIST
IP” on page 67.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Burn-In Test Mode
Figure 2-15. SIBs Insertion and Integration of Cores for Concurrent Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
LBIST Controller Hardware Default Mode
DftSpecification(module_name, id) {
LogicBist {
Controller(id) {
burn_in : bool ; // default: off {symbols: on off}
}
}
}
When using the pattern specification in the TSDB flow, enable burn-in mode by setting the
run_mode property to burn_in and specifying the burn_in_time property, as defined here:
In burn-in mode, the hardware prevents the LogicBIST controller from reaching an end state in
its FSM, which enables the PRPG to run continuously for the specified amount of time. Because
the burn-in runtime can easily exceed the pattern counter, no MISR comparisons are performed
when the test completes.
To (re-)run fault simulation to generate a dedicated burn-in mode pattern set, do the following:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
LBIST Controller Hardware Default Mode
hardware, this run mode requires the least amount of time to set up the controller for launching
the test.
This section documents considerations for configuring hardware default mode.
• ShiftCycles
• CaptureCycles
• PatternCount
• AsyncSetResetPatternCount
• WarmupPatternCount
Register Initialization
Hardware default mode uses the least initialization for manufacturing patterns of any of the run
modes. When you run hardware default mode, the LBIST controller synchronously resets the
PRPG, MISR, pattern_count, and other registers to their hardware_default values. The
controller performs this reset as part of its “run” operation. Because the controller itself
initializes these registers (by the synchronous reset), the pattern runtime is reduced because
there is no need to load those registers with an initial value through the IJTAG network.
Compatibility Restrictions
Running hardware default mode is possible only when hardware_default values hardcoded in
the IP match fault simulation settings. When incompatible, hardware default mode pattern
generation is not possible, although regular LBIST pattern generation is always possible.
DftSpecification(module_name, id) {
LogicBist {
Controller(id) {
ShiftCycles {
max : 100;
hardware_default : 30;
}
}
}
}
But after scan insertion, perhaps due to an ECO, some scan chains have a length larger than 30
flops. In this case, you cannot run hardware default mode because the controller's hardcoded
shift cycle length is 30.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
LBIST Controller Hardware Default Mode
Compatibility Reporting
You can detect compatibility problems with your controller’s configuration that prevent the
controller from being able to run in hardware default mode. Report compatibility with the
“report_lbist_configuration -hardware_default_compatibility” command during fault
simulation. The command compares your hardware_default settings with the values specified
during fault simulation, and reports which settings are compatible. For some parameters, like
NCP count, the values have to exactly match to be considered compatible. Other parameters,
like pattern count, are compatible when more than the hardware_default number of patterns are
fault-simulated.
The “shift length” setting is hard to predict during IP creation, but you can use a reasonable
upper bound to set the hardware_default value. When the actual (Fault Simulation) value is less
than this value, you can use the set_number_shifts command to make the actual value
compatible with the hardware_default value. When the actual value is greater than the
hardware_default value, running in hardware default mode is not possible.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Self-Test Mode
Self-Test Mode
The hybrid TK/LBIST flow supports self-testing of the LogicBIST and EDT controllers. This
enables you to improve latent fault metrics (LFM) in conformance with ISO26262 by
generating an InSystemTest pattern set or a manufacturing pattern set to test the EDT/LBIST
controller in a stand-alone mode. You can also use this pattern set to perform an RTL simulation
and validation of the embedded EDT/LBIST controller when the design RTL is ready.
In Self-Test Mode, the LBIST controller tests itself by directly feeding PRPG data into MISRs.
The FSM of the LBIST controller goes through all the possible states that it would during a
normal LBIST run. This confirms that the controller is operating correctly whether or not your
design is in place.
The scan chains are also bypassed during self-test. When CCM is available, the same
multiplexing can be reused with an additional enable signal to enable and disable the self-test,
as shown in the following figure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Self-Test Mode
When CCM is not available, the bypass muxes are added along with the self-test enable signal.
Note
Controller Chain Mode is not required for Self-Test Mode.
The self-test enable signal comes from a TDR. When the self-test signal is enabled, pattern data
from the PRPG is fed directly into the MISR. The self-test runs in a manner similar to that of a
normal LBIST run mode, except that the scan chains are bypassed. This requires a different run
mode. During self-testing, the PRPG and MISR behave similarly to a regular LBIST run, and
the LBIST controller’s FSM goes through all normal LBIST tests. These tests cover most of the
registers in the LBIST controller.
Note
Although NCP limits and NCP counters are covered during the operation of the LBIST
controller FSM, the corresponding NCP for a specific pattern cannot be verified by the self-
test. Any defect in the NCP index logic that propagates to the OCC is covered during Logic
BIST and the monitoring of the clock outputs during system operation.
Also, this self-test is not capable of verifying the LBIST controller’s output signals, such as
scan_en, xbounding_en, mcp_bounding_en, control_point_en, observe_point_en, and
lbist_async_set_reset_en. These signals must be separately targeted by adding redundancy and
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Self-Test Mode
ensuring that a Single Event Upset (SEU) doesn’t affect the functional operation of the design.
This is beyond the scope of this feature and is covered separately.
When pattern specifications are processed, the Self-Test patterns are simulated and generated
based on the given pattern specification configurations, and stored in the TSDB. You can create
multiple sets of pattern data by using different configurations. Whenever the settings (such as
shift length, capture length, low power settings, chain mask settings, or pattern count) are
changed, new pattern data is created. For new settings specified with a lower pattern count,
process_patterns_specification uses the existing pattern data.
Note
Self-Test pattern generation does not require fault simulation results.
See Performing Pattern Generation for the TSDB Flow for an example of how to generate self-
test patterns during IP creation.
Related Topics
create_patterns_specification [Tessent Shell Reference Manual]
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Self-Test Mode
Procedure
1. Set the context:
SETUP> set_context dft -rtl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Generating the EDT and LogicBIST IP
13. Specify or change any pattern specification requirements. For example, the self-test
shift_length option can be specified as follows:
SETUP> set_config_value /PatternsSpecification(piccpu,rtl,signoff)/
Patterns(LogicBist_piccpu)/TestStep(self_test)/LogicBist/CoreInstance(.)/
SelfTestOptions/shift_length 10
Once you have nested the LogicBIST wrapper within the DftSpecification wrapper, you use
Tessent Shell to validate and process the wrapper, and create the hybrid IP. The flow is the same
as that used for EDT, with the addition of the LogicBIST wrapper. Refer to “Validating the
EDT Specification and Creating the EDT IP” in the Tessent TestKompress User’s Manual for
details.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Generating the EDT and LogicBIST IP
DftSpecification(module_name,id) {
LogicBist {
ijtag_host_interface : name
Controller(id) { // configure the LBIST controller
...
ControllerChain { // configure controller chain mode
...
}
SingleChainForDiagnosis { // configure single chain mode logic
...
}
ShiftCycles { // configure shift cycles
...
}
CaptureCycles { // configure capture cycles
...
}
PatternCount { // configure the pattern counter
...
}
WarmupPatternCount { // configure warm-up pattern count
...
}
AsyncSetResetPatternCount { // configure asynchronous set/reset
... // pattern count
}
NcpOptions { // configure NCP-related hardware options
...
}
Interactions
When you specify the LogicBist/Controller wrapper, the following interactions apply:
• EDT. By default, all EDT controllers are converted into EDT/LBIST hybrid controllers.
To create both hybrid and non-hybrid controllers in the same process_dft_specification
run, set the property DftSpecification/EDT/Controller/LogicBistOptions/present to
“off.”
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Dual Compression Configurations for the Hybrid IP
• OCC. OCC signals are intercepted by the LogicBIST controller. For proper LogicBIST
support, generate the OCC with capture enable trigger and static clock control enabled.
When you generate OCC in the same pass as the LogicBIST controller, these properties
are automatically configured to support LogicBIST.
• NCP Index Decoder. When you specify the NCP Index Decoder and the LogicBIST
controller within the same DftSpecification, the tool automatically populates the count
for NcpOptions from the count specified by the NcpIndexDecoder/Ncp wrapper. You
cannot manually specify the NcpOptions count parameter. You should use the count
when the NCP Index Decoder is implemented in a different DftSpecification, or when
not using a decoder (that is, when the number of NCPs is 1).
Limitations
The following limitations apply when you are using the LogicBist wrapper to generate the
hybrid IP:
• When the NcpIndexDecoder and LBIST controller are generated in the same pass, they
are automatically connected. When not inserted together, the user is responsible for the
connections.
• LogicBIST does not support child OCCs.
• Pre-inserted mini-OCCs, such as those created during MemoryBIST insertion or with
boundary scan, may not be automatically intercepted. Ensure that you have explicitly
specified these OCCs by using the add_core_instances command.
• For scan-chain clocking, input design scan chains must have first scan cell clocked by an
LE clock edge and last scan cell clocked by an TE clock edge.
• Does not support Low Pin Count Controller.
• You must specify the LogicBist/Controller wrapper with its associated EDT wrappers,
and you can only specify one LogicBIST controller. You must use the LogicBIST
controller in conjunction with EDT to generate hybrid IP.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Dual Compression Configurations for the Hybrid IP
For more information about dual compression configurations, see “Dual Compression
Configurations” in the Tessent TestKompress User’s Manual.
The following example IP creation dofile enables dual compression configurations, where “LC”
is the low compression configuration that uses 8 channels and “HC” is the high compression
configuration that uses 2 channels. The add_edt_configurations command enables the dual
compression functionality.
# Set the location of the TSDB. Default is the current working directory.
set_tsdb_output_directory ../tsdb_outdir
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Dual Compression Configurations for the Hybrid IP
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Dual Compression Configurations for the Hybrid IP
report_config_data $spec
read_config_data -in $spec -from_string {
LogicBist {
ijtag_host_interface : Sib(lbist);
Controller(id) {
burn_in : on ;
pre_post_shift_dead_cycles : 8 ;
SingleChainForDiagnosis {
Present : on ;
}
ControllerChain {
present : on;
clock : tck;
}
Connections {
shift_clock_src:lbist_shift_clk;
}
NcpOptions {
count : 1;
}
process_dft_specification
# Make patterns
create_pattern_specification
process_pattern_specification
# Run Simulation
run_testbench_simulations
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
Timing Constraints for EDT and LogicBIST IP
${tsdb}/dft_inserted_designs/${design_name}_${design_id}.dft_inserted_design
Every instrument type (for example, MBIST, IJTAG) of the current design and all sub-blocks
that provide SDC constraints are represented by a separate proc in the SDC file. Constraints for
logic test-related instruments such as OCC, EDT, or LBIST, including logictest-related DFT
signals, are all grouped under similar placeholder “ltest” instrument procs.
Refer to “Timing Constraints (SDC)” in the Tessent Shell User’s Manual for details about
specifying timing constraints for logic test instruments when you are using the TSDB flow.
The following sections describe how to generate timing constraints when you are using the
dofile flow.
• EDT — EDT shift, slow and fast capture. The capture mode constraints are the same for
EDT and EDT-bypass.
• EDT-bypass — Bypass shift, slow and fast capture. The capture mode constraints are
the same for EDT and EDT-bypass.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
LogicBIST Timing Constraints
• LogicBIST — LogicBIST setup, shift, capture and diagnostic modes. The diagnostic
mode constraints are generated only when single chain mode logic is synthesized in the
IP.
The TDI and TDO pins of the TAP controller are used for seeding, hence IO delays are defined
for those pins. These delays are defined with respect to virtual clocks named force_pi and
measure_po that reflect the timing described in the test procedures.
The following constraints/exceptions are specified for the LogicBIST Setup mode:
• Set LogicBIST enable TDR bit to 1. Set the BIST setup registers to “001” corresponding
to the LongSetup mode of operation for the BIST controller.
• Set false paths from EDT control signals that are not used like EDT reset and EDT
update.
• Set false paths from EDT channel input pins and to EDT channel output pins.
• Set false paths through TAP controller's LogicBIST instruction enable and test logic
reset outputs. The TAP controller paths for shift, capture and update are enabled.
• EDT chain mask registers are active in this mode. The paths from these registers to the
design scan cells, specifically the hold paths, where the source and destination are on
different clock domains are not explicitly disabled. This works correctly because the
destination design scan cells are not clocked in this mode.
• Set variables for sequentially propagating case analysis constraints through the user
clock controller.
• Disable clock gating checks on the shift controller clock muxes. This is because only the
tck path is selected in this mode.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
LogicBIST Timing Constraints
clock. The BIST controller is clocked by the free running shift clock source. IO pins are not
involved in this, hence no IO pin delays are specified.
The following constraints/exceptions are specified for the LogicBIST Shift mode:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
LogicBIST Timing Constraints
• Constrain the internally generated LogicBIST scan enable that reaches the scan cells to
OFF. There is a 4 cycle window around the time the scan enable changes during which
the design scan cells are not clocked, which enables the scan enable to be described as a
constant.
• Constrain the prpg_en, misr_en, and scan_en signals to MCP 4, and constrain the
lbist_reset signal to MCP 3.
• Constrain the internally generated clock controller scan enable to OFF.
• Set the clock source for LBIST test. The shift mode constraints TCL procedure takes a
clock_select parameter to choose from LBIST shift clock source, EDT clock or TCK.
The default is LBIST clock. To analyze timing when either EDT clock or TCK is used
for logic test, call the top-level procedure with the required clock parameter. For
example, lbist_shift_mode edt_clock. Both shift and capture modes run with the same
clock, so clock_select should be consistent for shift and capture mode.
• Constrain or exclude EDT pins like EDT clock, update, reset and other control signals
• Exclude all paths from the TAP controller
• EDT chain mask registers are static throughout test, so declare all paths from these
registers as false.
• Set variables for sequentially propagating case analysis constraints through the user
clock controller
• Turn off clock gating checks on the shift controller clock muxes. This is because only
the free running shift clock source is selected in this mode
The following constraints/exceptions are specified for the LogicBIST Single Chain mode:
• Set LogicBIST enable TDR bit to 1. Set the BIST setup registers to 100 corresponding
to the SingleChain mode of operation for the BIST controller.
• Constrain or exclude EDT pins like EDT clock, update, reset and other control signals.
• Set false paths from EDT channel input pins and to EDT channel output pins.
• Set false paths through TAP controller's LogicBIST instruction enable and test logic
reset outputs. The TAP controller paths for shift, capture and update are enabled.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
ECO Implementation in the Hybrid TK/LBIST Flow
• EDT chain mask registers are static throughout test, so declare all paths from these
registers as false.
• Set the single chain mode TDR bit to 1.
• Set variables for sequentially propagating case analysis constraints through the user
clock controller.
• Turn off clock gating checks on the shift controller clock muxes. This is because only
the tck path is selected in this mode.
• During IP creation, the tool generates a shift counter that is used during LogicBIST
mode. By default, the tool adds seven more clock cycles to the number of shift cycles.
This enables additional flip-flops to be added later through an ECO. Note that this is
across all scan chains, so many flip-flops can be added in ECO mode if you want.
However, you should not exceed seven per chain.
Note
This is true only when DftSpecification/LogicBist/Controller/ShiftCycles/
counter_resolution is set to “byte” (the default is “bit”).
• You should specify the size of the pattern counter. Although not directly related to the
ECO process, you should specify the hardware in such a way that you can double the
number of LogicTest patterns that you think are necessary during IP generation.
• Handle timing exception paths after placement and routing as follows:
Note
Make sure you declare only the timing exception paths that are discovered late. Do
not provide the entire SDC or the tool inserts muxes for FP/MCPs that are already
bounded.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT and LogicBIST IP Generation
ECO Implementation in the Hybrid TK/LBIST Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 3
Test Point Analysis and Insertion, Scan
Insertion, and X-Bounding
Analysis and insertion of test points, dedicated wrapper cells, and X-bounding logic can be
performed at RTL or gate level.
See “RTL DFT Analysis and Insertion” in the Tessent Shell User’s Manual for more
information on insertion at RTL.
Starting at RTL, the existing process_dft_specification command inserts test points, dedicated
wrapper cells, and X-bounding logic in your RTL design at the same time as other Tessent IP,
including EDT controllers and LBIST. See “Test Point Analysis at RTL” in the Tessent Shell
User’s Manual for more information on test point insertion. Gate-level incremental analysis and
insertion capabilities enable you to fine-tune the test points, wrapper cells, and X-bounding
logic before generating test patterns. See “Incremental Insertion” in the Tessent Shell User’s
Manual for more information and an example of increasing LBIST test coverage with
incremental test point insertion.
This section covers insertion using the synthesized gate-level netlist with the inserted hybrid
TK/LBIST IP from the previous step for these tasks.
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding Overview . . . . . . 79
X-Bounding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
X-Bounding Control Signals (Existing or New Scan Cells). . . . . . . . . . . . . . . . . . . . . . . . 85
Clock Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Multiple Clock Domain Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
False and Multicycle Paths Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
X-Sources Reaching Primary Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
X-Bounding and no_observe_point and no_control_point Attributes . . . . . . . . . . . . . . . . 87
EDT IP Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
X-Bounding and the Tessent Memory BIST Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Test Point Insertion, Scan Insertion, and X-Bounding Command Summary . . . . . . . . 89
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding Overview
During test point analysis and insertion, you add random pattern test points to certain locations
in your design. By adding these test points, you can increase the testability of the design by
improving controllability or observability.
• Load the design with the read_design command. The inputs are the synthesized gate-
level netlist and the TSDB from the hybrid TK/LBIST insertion step.
• Specify test points.
• Analyze test points.
• Specify the X-bounding options and settings.
• Analyze X-bounding.
• Specify wrapper cell options.
• Analyze wrapper cells.
• Specify scan modes, scan chain families, or scan segments.
• Analyze scan chains.
• Insert test points, X-bounding, scan chains, and (optionally) wrapper chains with the
insert_test_logic command. This command also automatically updates the TSDB with
the output files.
After this step, the tool writes out a netlist with test points and scan chains inserted, upon which
X-bounding has been performed. Optionally, the tool may have also performed wrapper
analysis on the design. This netlist and a Tessent Core Description (TCD) file are available in
the TSDB directory and are linked to the unique design ID associated with this step.
Requirements
Performing test point analysis and insertion has certain requirements. You must adhere to the
following:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding Overview
• You should define black boxes using the add_black_boxes command so that test point
analysis can incorporate this information.
• If you are performing test point analysis on a pre-scan netlist that has unconnected clock
gaters, you should add the “set_clock_gating on” command to your dofile.
You can also insert Observation Scan Technology (OST) during this step. For more
information, see “Observation Scan Technology” on page 189.
For more information on this step, refer to “Test Points for LBIST Test Coverage
Improvement” in the Tessent Scan and ATPG User’s Manual.
• Inputs — The modified design netlist with test points and the TCD file you have
generated using the Tessent Shell insert_test_logic command.
• MCPs and failing paths — You read in SDC to identify MCP/FP, which enables
X-bounding to add DFT logic that prevents the capture of any transition on such paths.
Requirements for Using a Third-Party Scan Insertion Tool
Tessent Shell must make certain assumptions about which flip-flops in the design are converted
to scan and which cells remain non-scan. If you are using a third-party scan insertion tool, then
these assumptions might not be correct.
Specifically, the primary factors in determining the conversion of non-scan flops to scan flops
are the S-rule DRC violations and the availability of a suitable scan model. In general, flops
with S-rule violations are not converted to scan cells unless you use the following command:
You might need to read the design into Tessent Shell and go through DRC. You can
subsequently post DRC use the report_scan_elements command to report the exact status for
each flop in the design.
• If low power is used in the hybrid TK/LBIST flow, the scan chain length must be equal
to or greater than the decompressor size. The minimum decompressor size in the hybrid
flow is 31. Therefore, the scan chain length cannot be less than 31. The reason for this
requirement is that the size of the low-power register and the size of the decompressor
are the same; to initialize the low-power register, the shift length must be equal to or
greater than the decompressor size. If the tool generates a larger decompressor, say a
size of 62 bits, the required minimum shift length is 62.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding Overview
• X-bounding analysis does not take into account wrapper cells identified with the
analyze_wrapper_cells command and inserts X-bounding multiplexers at the primary
input pins that feed the wrapper cells. The workaround is to perform wrapper chain
identification and insertion in a separate pass, prior to X-bounding. In addition, you
must constrain the scan enable signal for the input wrapper chains to keep these chains
in “shift mode” during the capture cycles. This pin constraint prevents insertion of extra
X-bounding multiplexers at the primary input pins that drive the wrapper cells in
functional mode.
• The tool performs X-bounding first, and targets each primary input with an X-bounding
mux. However, when you issue the analyze_wrapper_cells command, the X-bounding
results change because the primary input pins receive a dedicated wrapper cell, or the
reachable scan flops become part of the input wrapper chains. This is sufficient to block
the unknown value from reaching any scan cells during intest.
Note
The tool does not remove X-bounding logic for ports specifically excluded from
wrapper analysis using the -exclude_ports switch of the
set_wrapper_analysis_options command.
Example
The following example script performs test point analysis and insertion, scan insertion, and
X-bounding.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding Overview
# 9. Analyze X-bounding
analyze_xbounding
# 12. Insert all test logic that was analyzed in the previous steps -
# insert_test_logic command automatically updates the TSDB as well
insert_test_logic
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding
X-Bounding
X-Bounding
You must perform the X-bounding to prohibit all X generators (that is, non-scan cells, black
boxes, and primary inputs) from reaching a scan cell. The source of the X-bounding mux could
either be existing scan cells in the design or newly inserted scan cells.
Tessent Shell performs the following operations during X-bounding:
Note
There are several limitations you should keep in mind:
• When an X-source does not reach a scan flop or scannable flop, and feeds only a
small number of combinational gates that may drive output pins, then this signal is
not x-bounded, but all the affected logic is marked as no_control_point and
no_observe point, with no_control_reason and no_observe_reason set to xbounding.
• Sometimes, it is not possible to bound the signal directly at the source. In that case,
any combinational logic that is driven by the X-source and is upstream of the
X-bounding mux is also marked as no_control_point and no_observe_point, with
no_control_reason and no_observe_reason set to xbounding.
• If the tool needs to bound an unknown state that originates from a primary input with
a pad, the X-bounding logic is inserted on the core side of the pad.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding
X-Bounding Control Signals (Existing or New Scan Cells)
You also can choose to drive the test mode input of the new multiplexers from new scan cells
using the -connect_to new_scan_cell switch of the set_xbounding_options command. The clock
signal that drives the new scan cell is selected using the same algorithm that applies when using
existing scan cells. The new scan cells are merged into existing chains whenever possible. The
output of the flip-flops directly drives the data input of the new flip-flops.
Clock Selection
The tool analyzes the location of each X-bounding multiplexer to identify the clocks if a new
flip-flop is chosen to drive the multiplexer. The tool looks at clocks for the controlling flip-flops
that feed into this location and also the clocks for the flip-flops that are fed from this signal.
When only a single clock domain is involved, that clock is used to drive the test points.
However, when multiple clock domains are involved, the behavior depends on the definition of
the false or multicycle paths. X-bounding could potentially introduce a new false path that
would not be bounded because the false path did not exist in the original netlist. Therefore,
when an SDC file is loaded, the tool uses static bounding (forcing a constant 0 or 1 via an AND
or OR gate) to avoid creating a new false path. When no false or multicycle paths are defined,
the tool chooses the clock domain that is most frequently used by the memory elements in the
fanout of the X-source.
set_xbounding_options -exclude_sdc_cross_domain_path on
modify the tool’s behavior such that paths that meet the following criteria are not X-bounded:
1. Identifies all the clock domains that feed into the test point location.
2. Identifies all the clock domains that observe the signal from the test point.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding
False and Multicycle Paths Handling
3. If there is no overlap between the clocks identified in (1) and (2), then this is considered
a cross clock domain path that cannot be activated by pulsing only a single clock, and it
is excluded from X-bounding.
Re-circulating muxes with an inverter in the feedback path are inserted on the D input of the
destination scan cells of false and multicycle paths. The inversion ensures that the destination
scan cell output has a transition during broadside test to achieve higher coverage.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding
X-Sources Reaching Primary Outputs
From this information, the tool looks at the data input(s) of scannable flops and wrapper cells to
determine if they are marked in any false or multicycle path effect cone. These gate inputs are
bounded using a mux and an inverted feedback loop. In addition, if the wrapper cells are
constructed of separate library cells (for example a separate DFF and MUX), then the tool
searches the fan-in of the DFF to find a non-scan path input that can be bounded. Note: this only
works if the wrapper cells are part of existing traced scan chains since that enables the tool to
differentiate between the shift path and the capture path.
In addition, the tool checks the set and reset ports of each flop and disables any set/reset ports
that are also marked as false or multicycle paths. In this case, however, a combinational gate
(either an AND gate or an OR gate) is used to force the set/reset port into the off state.
The inverting loopback path inserted during X-bounding may still be considered as a false path
during fault simulation if the data-input of the flop is defined as the “-to” gate for the false path.
To avoid capturing an X at the input of this flop during fault simulation, the tool searches
forward from the MCP bounding enable signal, identifying these inverting loopback paths, and
modifying the simulation such that these paths are no longer treated as false paths. The source
of the MCP bounding enable signal is typically specified as the mcp_bounding_en signal, added
with add_dft_signals during the logic BIST insertion steps.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding
EDT IP Handling
The X-bounding muxes are inserted as close to the X-source as possible. However, there may be
combinational logic between the X-source and the input of the X-bounding mux. If the test
point analysis algorithm inserts an observe point at any of these locations, this observe point
would capture the signal from the X-source. Therefore, the X-bounding algorithm marks all
gate-pins in the combinational fan-in cone of the functional mode input of the X-bounding mux
and sets the no_observe_point attribute value to true at those locations. The no_observe_reason
attribute for these gate-pins returns “xbounding” as the reason.
In addition to marking these locations with the no_observe_point attribute, the tool also sets the
no_control_point attribute. Inserting a control point at any of these locations cannot improve
test coverage during Logic BIST because all the logic in the fanout of the control point is
blocked by X-bounding muxes and is unobservable. The no_control_reason attribute for these
gate-pins also returns “xbounding” as the reason.
For more information, see DFT Test Logic Attributes no_control_point and no_observe_point
in the Tessent Scan and ATPG User’s Manual.
EDT IP Handling
When EDT and LogicBIST IP have been inserted in the design, the tool uses information about
these cores to avoid guarding any “perceived” X-sources in this IP.
This usually happens when you are using the pre-synthesis flow where the EDT IP is inserted
and synthesized together with the design. The X-bounding analysis happens only after scan
stitching has been completed and the tool sees a gate-level design. For more information, see
ICL Extraction and Pattern Retargeting.
In the absence of such information, the tool uses information about the scan chains to avoid
inserting bounding logic in the scan path and in the paths from the scan chain outputs to the
primary outputs that are used as channel outputs. In some cases, particularly when third-party
IP is involved, the tool may conservatively treat a functional primary output as a channel output.
In such situations it does not guard an X source that reaches that primary output (see X-Sources
Reaching Primary Outputs). You should provide the TCD for the EDT IP so that the tool can
easily identify these instruments and mark them as non-scan sources. Another way to identify
the EDT instances in the design is to use the set_edt_instances command when the TCD flow is
not used.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding
Test Point Insertion, Scan Insertion, and X-Bounding Command Summary
When the memory BIST controller is generated with the DftSpecification AdvancedOptions/
use_multicycle_paths property set to “off”, X-bounding is not necessary. If the controller is
generated with this property set to “on”, X-bounding is accomplished by doing the following:
• During the dft insertion stage (memory bist + logic bist), you must use
"add_dft_signals" and specify the following:
add_dft_signals async_set_reset_static_disable
• During dft insertion, the memory BIST controller is generated by default with a clock
gating cell and includes the static dft signal mcp_bounding_en. This signal is used to
disable all clocks during capture.
• During the scan insertion stage, do the following:
o Setting mcp_bounding_en to “1” disables all clocks during capture:
set_static_dft_signal_values mcp_bounding_en 1
Note
Scannable flops inside the MemoryBIST controller that hold state during capture are
identified as constant, and the tool ignores them during X-bounding analysis.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Point Analysis and Insertion, Scan Insertion, and X-Bounding
Test Point Insertion, Scan Insertion, and X-Bounding Command Summary
Table 3-1. Test Point Insertion, Scan Insertion, and X-Bounding Commands (cont.)
Command Description
process_dft_specification Validates and processes the content contained in a
DftSpecification wrapper.
read_cell_library Loads one or more cell libraries into the tool.
read_sdc Reads in the SDC file that describes the false and multicycle
paths that should be blocked during LogicBIST.
read_verilog Reads one or more Verilog files into the specified or default
logical library.
report_rtl_complexity Reports the metrics related to RTL designs before and after
quick synthesis, and test point analysis and insertion
metrics.
report_scan_elements Reports information and testability data for the sequential
instances in the design.
report_test_points Displays test points inserted with the insert_test_logic
command.
report_xbounding Reports the X-sources and the scan cells used in bounding.
set_context Specifies the current usage context of Tessent Shell. You
must set the context before you can enter any other
commands in Tessent Shell.
set_dedicated_wrapper_cell_options Controls how the tool infers the dedicated wrapper cells
(DWCs) for primary IOs.
set_rtl_dft_analysis_options Specifies options for wrapper cell, X-bounding, and test
point analysis in RTL.
set_scan_signals Sets the pin names of the scan control signals.
set_system_mode Specifies the operational state you want the tool to enter.
set_test_point_analysis_options Sets the maximum number of test points, the breakdown in
control and observe points, the target fault coverage, and the
number of pseudo random patterns to be applied. You can
also set some other parameters to be taken into account
during test point analysis.
set_test_point_insertion_options Sets parameters related to test point insertion.
set_test_point_sharing_restrictions Specifies sharing restrictions during test point insertion.
set_test_point_types Specifies the type of test points to insert in the design.
set_xbounding_options Enables X-bounding and sets X-bounding parameters.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 4
LogicBIST Fault Simulation and Pattern
Creation
In this step of the flow, you perform fault simulation and save the parallel LogicBIST patterns.
LogicBIST Fault Simulation and Pattern Creation Overview . . . . . . . . . . . . . . . . . . . . 91
Initial Static DFT Signal Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Performing LogicBIST Fault Simulation and Pattern Creation. . . . . . . . . . . . . . . . . . . 94
Specifying Warm-Up Patterns During Fault Simulation. . . . . . . . . . . . . . . . . . . . . . . . . 96
Fault Simulation When There Are Inversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Fault Coverage Report for the Hybrid IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Fault Simulation and Pattern Creation Command Summary . . . . . . . . . . . . . . . . . . . . 99
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
LogicBIST Fault Simulation and Pattern Creation
Initial Static DFT Signal Values
The core level fault simulation run computes the test coverage for the core, MISR signature, and
power consumption. Running the write_tsdb_data command during this step generates the
following output files:
• PatternDB — Contains the relevant LogicBIST register values per pattern like PRPG,
MISR, and low-power registers.
• Tessent Core Description (TCD) — Contains the description of the core in the
LogicBIST mode of operation.
• Flat model — Contains the flattened circuit model, the scan trace, and all DRC-related
information to a specific binary file.
• Fault list — Contains the fault information from the current fault list.
set_system_mode analysis
set_power_control shift on -switching_threshold_percentage 15
...
NCP Order
For fault simulation, the order of the specified NCPs must match the NCP order in the design.
The tool automatically ensures this ordering when you use an NcpIndexDecoder generated with
the LogicBist/NcpIndexDecoder wrapper.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
LogicBIST Fault Simulation and Pattern Creation
Initial Static DFT Signal Values
The following table lists the DFT signals that are required for fault simulation and their default
initialization values for fault simulation.
Table 4-1. Initial Static DFT Signals for Fault Simulation
DFT Signal Value
async_set_reset_static_disable 0
control_test_point_en 1
ext_ltest_en 0
int_ltest_en 1
ltest_en 1
mcp_bounding_en 0
memory_bypass_en 1
observe_test_point_en 1
se_pipeline_en 0
x_bounding_en 1
The mcp_bounding_en signal is set to 0 to obtain optimal test coverage when performing fault
simulation for stuck-at faults. To maintain the disabled state for MCP bounding, the following
criteria must be met:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
LogicBIST Fault Simulation and Pattern Creation
Performing LogicBIST Fault Simulation and Pattern Creation
See “X-Bounding and the Tessent Memory BIST Controller” on page 88 for more information.
After invocation, the tool is in unspecified setup mode. You must set the context before
you use the fault simulation commands.
3. Set the tool context to fault simulation using the set_context command as follows:
SETUP> set_context patterns -scan
5. Load the design netlist using the read_design command. For example:
SETUP> read_design gpu
6. Load one or more cell libraries into the tool using the read_cell_library command.
SETUP> read_cell_library atpg.lib
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
LogicBIST Fault Simulation and Pattern Creation
Performing LogicBIST Fault Simulation and Pattern Creation
10. Change the tool’s system mode to fault using the set_system_mode command as
follows:
SETUP> set_system_mode analysis
During the transition from setup to analysis mode, the tool creates NCPs according to
the NcpIndexDecoder specification and performs design rule checking.
11. Add faults using the add_faults command as follows:
ANALYSIS> add_faults -all
12. Specify the number of random patterns the tool simulates using the command as
follows:
ANALYSIS> set_random_patterns 100
13. Set the pattern source to LogicBIST and execute fault simulation using the
simulate_patterns command as follows:
ANALYSIS> simulate_patterns -source bist -store_patterns all
14. Save the TCD, PatternDB, flat model, and fault list needed for the next step, Pattern
Generation, using the write_tsdb_data command as follows:
ANALYSIS> write_tsdb_data -replace
By default, the write_tsdb_data command only saves the scan chain data for the first
1024 patterns. To save more patterns—for example, if you discover during diagnosis
that additional patterns are required—use the –max_scan_load_unload_size option.
15. Write out the parallel testbench using the write_patterns command as follows:
ANALYSIS> write_patterns lbist_patt_parallel.v -verilog -parallel \
-mode_internal -param ../data/paramfile
Results
Now you are ready to perform Pattern Generation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
LogicBIST Fault Simulation and Pattern Creation
Specifying Warm-Up Patterns During Fault Simulation
When you specify this value for fault simulation, the hardware default PRPG seed and low
power mask shift register values are used as the starting point for the warm-up patterns. This
provides a known starting seed and avoids serially loading the registers for InSystemTest
applications. However, you also lose the ability to change the warm-up pattern count when
specifying patterns.
To maximize the benefit of test program size reduction for InSystemTest, use a 2022.2 or later
version of Tessent Shell that generates the decompressor with separate low-power SIBs.
Note
A Tessent Core Description (TCD) for the EDT IP creation is required when using this
feature.
Tessent Shell attempts to match each EDT block declared in the tool (through
import_scan_mode or by add_core_instances or add_edt_block) with those described in the
TCD by matching the SCI and SCO pins. If at least one AtpgMode section is found for the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
LogicBIST Fault Simulation and Pattern Creation
Fault Coverage Report for the Hybrid IP
current top module, but not all EDT blocks are successfully matched in the TCD, then the tool
reports a warning:
// Warning: Could not match the following EDT instance in the TCD file and,
// as a result, the decompressor to scan chain input and scan chain
// output to compactor inversions are not imported for them:
// <instance_name1>
// <instance_name2>
// You can specify the inversions manually with the
// set_scan_chain_options command or provide a TCD that includes
// all EDT instances.
If you do not run the K rules, then you can specify the inversions manually using the
set_scan_chain_options command. For example, the following example indicates that there is
an inversion between the decompressor and SCI at scan chain “chain1”:
When an inversion for the same scan is specified by set_scan_chain_options as well as the
TCD, the user-specified inversion has priority. If the values do not match, Tessent Shell issues a
warning.
As shown in the example below, the default fault classification for faults found within the
hybrid IP controller are designated as ATPG untestable (AU) faults with sub-class hybrid
LBIST (LBIST) if they have not already been identified with another designator, such as unused
(UU), tied (TI), or blocked (BL).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
LogicBIST Fault Simulation and Pattern Creation
Fault Coverage Report for the Hybrid IP
// command: report_statistics
Statistics Report
Stuck-at Faults
-------------------------------------------------------------------
Fault Classes #faults #faults
(total) (total relevant)
---------------------------- ---------------- --------------------
FU (full) 37280 29117
-------------------------- ---------------- --------------------
UC (uncontrolled) 50 ( 0.13%) same ( 0.17%)
UO (unobserved) 870 ( 2.33%) same ( 2.99%)
DS (det_simulation) 22790 (61.13%) same (78.27%)
DI (det_implication) 3444 ( 9.24%) same (11.83%)
PT (posdet_testable) 53 ( 0.14%) same ( 0.18%)
UU (unused) 106 ( 0.28%) same ( 0.36%)
TI (tied) 11 ( 0.03%) same ( 0.04%)
BL (blocked) 2 ( 0.01%) same ( 0.01%)
AU (atpg_untestable) 9954 (26.70%) 1791 ( 6.15%)
-------------------------------------------------------------------
Fault Sub-classes
--------------------------
AU (atpg_untestable)
PC* (pin_constraints) 616 ( 1.65%) same ( 2.12%)
TC* (tied_cells) 95 ( 0.25%) same ( 0.33%)
MPO (mask_po) 1039 ( 2.79%) same ( 3.57%)
LBIST (hybrid_lbist) 8163 (21.90%) deleted
Unclassified 41 ( 0.11%) same ( 0.14%)
*Use "report_statistics -detailed_analysis" for details.
-------------------------------------------------------------------
Coverage
--------------------------
test_coverage 70.67% 90.56%
fault_coverage 70.44% 90.19%
atpg_effectiveness 97.46% 97.46%
-------------------------------------------------------------------
#test_patterns 10000
#clock_sequential_patterns 10000
#simulated_patterns 10000
CPU_time (secs) 7.8
-------------------------------------------------------------------
The following example shows that these faults appear as AU.LBIST faults in the report
generated after LogicBIST fault simulation completes.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
LogicBIST Fault Simulation and Pattern Creation
Fault Simulation and Pattern Creation Command Summary
FaultInformation {
version : 1;
FaultType (Stuck) {
FaultList {
FaultCollapsing : FALSE;
Format : Identifier, Class, Location;
Instance ("") {
0, DI.SCAN, "/u1/STATD_reg_1_/Q";
1, DI.SCAN, "/u1/STATD_reg_1_/Q";
...
1, UU, "/occ/occNX2/clk_enable_latch_reg/Q";
1, EQ, "/occ/occNX2/U7/B";
0, AU.LBIST, "/m8051_single_chain_mode_logic_i/tdr_sib_i/sib_reg/Q";
1, AU.LBIST, "/m8051_single_chain_mode_logic_i/tdr_sib_i/sib_reg/Q";
...
0, AU.LBIST, "/m8051_single_chain_mode_logic_i/tdr_single_bypass_reg/Q";
1, AU.LBIST, "/m8051_single_chain_mode_logic_i/tdr_single_bypass_reg/Q";
0, AU.LBIST, "/m8051_edt_i/m8051_edt_decompressor_i/m8051_edt_sib_i/U8/A";
0, EQ, "/m8051_edt_i/m8051_edt_decompressor_i/m8051_edt_sib_i/U8/B";
...
0, AU.LBIST, "/m8051_edt_i/m8051_edt_misr_i/m8051_edt_sib_i/sib_latch_reg/Q";
1, AU.LBIST, "/m8051_edt_i/m8051_edt_misr_i/m8051_edt_sib_i/sib_latch_reg/Q";
0, AU.LBIST, "/m8051_lbist_i/m8051_lbist_ctrl_i/
m8051_lbist_capture_phase_size_reg_i/U9/Z";
1, EQ, "/m8051_lbist_i/m8051_lbist_ctrl_i/
m8051_lbist_capture_phase_size_reg_i/U9/A";
...
0, AU.LBIST, "/m8051_lbist_i/lbist_scan_out_reg/CP";
1, AU.LBIST, "/m8051_lbist_i/lbist_scan_out_reg/CP"; }
}
}
}
When you are not reading ICL during fault simulation, the single chain mode logic instance
faults are not classified as AU.LBIST.
AU.LBIST faults are not reclassified when you use the reset_au_faults command to reclassify
AU faults.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
LogicBIST Fault Simulation and Pattern Creation
Fault Simulation and Pattern Creation Command Summary
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
LogicBIST Fault Simulation and Pattern Creation
Fault Simulation and Pattern Creation Command Summary
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
LogicBIST Fault Simulation and Pattern Creation
Fault Simulation and Pattern Creation Command Summary
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 5
Pattern Generation
In this step of the flow, you generate core-level patterns for the bottom-up method and top-level
patterns (including a Verilog testbench) for the LogicBIST controller for the top-down method.
Pattern Generation Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Pattern Generation for the TSDB Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Performing Pattern Generation for the TSDB Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Performing Pattern Generation for CCM in the TSDB Flow . . . . . . . . . . . . . . . . . . . . . . . 106
Pattern Generation in Multiple, Shorter Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Pattern Generation for Low Power LBIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Single Chain Mode Diagnosis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Pattern Mismatch Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Debug Based on MISR Signature Divergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Debug Based On Scan Cell Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Usage Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Pattern Generation Overview
o Perform top-level ICL network extraction, pattern retargeting, and integration, using
the TSDB data from the core-level pattern generation step. The output extracted
ICL, retargeted PDL, TCD, and PatDB are stored in the Top-level TSDB.
The tool supports all the formats currently supported for ATPG.
Required Inputs
To program the LogicBIST controller, you use Tessent Shell to retarget the patterns and create
hardware default mode testbench/vectors and pattern_range specific vectors.
The information you need to program the LogicBIST controller is stored in the TSDB,
specifically in the ICL and PDL files created during EDT and LogicBIST IP Generation:
• ICL — The ICL file consists of ICL module description for the LogicBIST controller
and all EDT blocks tested by this controller.
• PDL — The PDL file contains iProcs at the core level that use the ICL modules written
out.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Pattern Generation for the TSDB Flow
4. Unless it is already in memory, read the current design’s extracted ICL. For example:
SETUP> read_icl ./tsdb_outdir/dft_inserted_designs/m01_gate.dft_inserted_design/
m01.icl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Performing Pattern Generation for CCM in the TSDB Flow
Note
When the Self-Test or burn-in features are available, pattern specification
configurations can be specified here according to user requirements.
11. Point to the simulation library sources so all design files can be found. For example:
SETUP> set_simulation_library_sources -y ./techlib -extensions { v }
13. As needed, monitor or check the simulation with the following command:
SETUP> check_testbench_simulations
Results
Upon completion, Tessent Shell outputs the testbench and vectors for the entire pattern set,
range specific vectors, or hardware default mode as specified in the dofile.
• If you are using the Considerations for Top-Down Implementation, you finished all
necessary steps in this flow.
• If you are using the Hybrid TK/LBIST Implementation, you are ready to perform the
Top-Level ICL Network Integration.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Performing Pattern Generation for CCM in the TSDB Flow
Note
When generating CCM patterns, do not use add_core_instances for the EDT/LogicBIST/
OCC instruments. The presence of this command infers non-hybrid EDT pattern generation
or LogicBIST fault simulation, as applicable.
Prerequisites
• Modified design netlist found in the TSDB.
• The LogicBIST instruments ICL data file found in the TSDB.
• Top-level ICL describing how the signals at the interface of the LogicBIST controller
are connected to chip-level pins.
• A PDL that describes the test setup at the chip level if there is any. For example, if there
is a TAP controller at the top level, then the tool requires an ICL and, optionally, PDL
for the TAP controller.
Procedure
1. From a shell, invoke Tessent Shell using the following syntax:
% tessent -shell
4. Import the controller scan chain mode that you created during scan insertion. For
example:
SETUP> import_scan_mode controller_chain_mode
Refer to the second example below for a dofile that shows the flow when you have
turned off segmented controller chain generation in favor of connecting the controller
chain scan segments into one chain during IP generation. See “Usage Details” on
page 52 for details.
5. Turn off all core clock and reset activity. Set these constraints because the faults in the
design are not targeted during CCM.
SETUP> add_input_constraints clk -c0
SETUP> add_input_constraints reset -c0
SETUP> add_input_constraints shift_capture_clock -c0
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Performing Pattern Generation for CCM in the TSDB Flow
Examples
Example 1: Generating Patterns for Controller Chain Mode, Default Flow for TSDB
set_context pattern –scan
read_design piccpu
read_cell_library ../library/tessent/adk.tcelllib ../data/picdram.atpglib
set_current_design
import_scan_mode controller_chain_mode
set_system_mode analysis
add_faults piccpu_rtl_tessent_lbist \
piccpu_rtl_tessent_edt_lbist_c0_inst \
piccpu_rtl_tessent_single_chain_mode_logic
create_patterns
write_patterns ccm_patt.v -verilog -replace -serial
Example 2: Generating Patterns for Controller Chain Mode, Non-Default Flow for TSDB
The following dofile example generates CCM patterns when you specify to connect the
controller chain scan segments into one chain during IP generation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Pattern Generation in Multiple, Shorter Sessions
# Define a scan group. Assuming you defined scan_en as a DFT signal when
# you generated the IP, you can define a scan group without a test
# procedure file
add_scan_groups grp1
set_system_mode analysis
add_faults piccpu_rtl_tessent_lbist \
piccpu_rtl_tessent_edt_lbist_c0_inst \
piccpu_rtl_tessent_single_chain_mode_logic
create_patterns
write_patterns ccm_patt.v -verilog -replace -serial
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Pattern Generation in Multiple, Shorter Sessions
PatternsSpecification(top,gate,signoff) {
Patterns(logicbist) {
ClockPeriods {
refclk : 5ns ;
}
TestStep(test1) {
LogicBist {
CoreInstance(chip) {
run_mode : run_time_prog ;
begin_pattern : 0 ;
end_pattern : 4999 ;
}
}
}
}
}
When you run create_patterns_specification, the tool generates a patterns specification with one
Patterns wrapper. To run pattern generation in shorter sessions, split the patterns into multiple
Patterns wrappers.
As an alternative to performing fault simulation for 5000 patterns in a single session, do the
following:
1. Use the design editing commands as described in the Configuration Data Editing and
Introspection Commands table in the Tessent Shell Reference Manual to modify the
patterns specification.
2. Use the begin_pattern and end_pattern properties to specify the pattern subsets. Rename
the Patterns wrappers accordingly.
For example:
PatternsSpecification(top,gate,signoff) {
Patterns(pat1) {
ClockPeriods {
refclk : 5ns ;
}
TestStep(test1) {
LogicBist {
CoreInstance(chip) {
run_mode : run_time_prog ;
begin_pattern : 0 ;
end_pattern : 999 ;
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Pattern Generation in Multiple, Shorter Sessions
Patterns(pat2) {
ClockPeriods {
refclk : 5ns ;
}
TestStep(test1) {
LogicBist {
CoreInstance(chip) {
run_mode : run_time_prog ;
begin_pattern : 1000 ;
end_pattern : 1999 ;
}
}
}
}
Patterns(pat3) {
ClockPeriods {
refclk : 5ns ;
}
TestStep(test1) {
LogicBist {
CoreInstance(chip) {
run_mode : run_time_prog ;
begin_pattern : 2000 ;
end_pattern : 2999 ;
}
}
}
}
Patterns(pat4) {
ClockPeriods {
refclk : 5ns ;
}
TestStep(test1) {
LogicBist {
CoreInstance(chip) {
run_mode : run_time_prog ;
begin_pattern : 3000 ;
end_pattern : 3999 ;
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Pattern Generation for Low Power LBIST
Patterns(pat5) {
ClockPeriods {
refclk : 5ns ;
}
TestStep(test1) {
LogicBist {
CoreInstance(chip) {
run_mode : run_time_prog ;
begin_pattern : 4000 ;
end_pattern : 4999 ;
}
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Single Chain Mode Diagnosis
Example
Assume that you have generated LBIST low power hardware with the following settings:
Enable LBIST low power with the command below, which uses the edt instrument to set up the
LBIST low power enable pin. This is because LBIST re-uses EDT IP in the hybrid TK/LBIST
flow.
Any percentage is legal, independent of the percentage specified during IP creation (25% in the
example above).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Single Chain Mode Diagnosis
By default, during IP generation the tool adds additional SIB logic to each EDT block so that
their scan cells can be bypassed as needed. During fault simulation, you specify scan chains that
should be masked. If the scan chain has a bad capture, you can mask only that scan chain with
an -unload_value during the single chain diagnosis. If a chain has a shift problem, mask the
chain with a -unload_value and -load_value. During pattern generation, the tool uses the added
SIB to skip EDT blocks that contain at least one masked chain with a -load_value applied. The
scan_unload_register iProc automatically skips those blocks during single chain mode
diagnosis. Single chain diagnosis cannot be performed on those blocks, but the MISR signature
can still be used even in the presence of masked scan chains. This enables the tool to achieve a
functional diagnosis on the rest of the blocks in the design.
The tool issues an error message when all the EDT blocks in a design have at least one masked
chain with a -load_value. You can turn off the default behavior with the
set_lbist_controller_options -single_chain_mode_skip_edt_blocks switch or the
DftSpecification/LogicBist/Controller/SingleChainForDiagnosis/skip_edt_blocks property.
Note
You cannot use single chain mode diagnosis on a design in which MISR mismatches occur
in a block that contains masked scan chains with a -load_value. Because the
scan_unload_register iProc does not have access to the MISR mismatches, this iProc cannot
detect and report errors in this scenario. It is your responsibility to determine whether you can
use single chain mode diagnosis based on the failing EDT block and masked scan chain
information.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Pattern Mismatch Debugging
The setup_and_clock_verify value exercises the full 256-pattern NCP count range. If
you want to run a single pattern per NCP, specify the
setup_and_clock_verify_one_per_ncp value instead. This is equivalent to specifying
“one_pattern_per_ncp 1” in the dofile flow.
2. Run Verilog simulation with the LogicBIST debugging feature enabled as shown below,
and identify any failing LogicBIST patterns.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Debug Based on MISR Signature Divergence
For both flows, the resulting transcript includes mismatch statements such as those
shown in bold below. The statements tell you at which pattern the MISR signature
started to diverge from the expected value.
Note
To display the passing data, specify “+show_passing_regs” when you start the
simulator.
3. Re-run the simulation so that you can identify the failing flop associated with the
particular pattern where the MISR started to diverge.
Regenerate the LogicBist wrapper with the Diagnosis Options/extract_flop_data
property enabled and execute the run_testbench_simulations command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Debug Based On Scan Cell Monitoring
PatternsSpecification(CHIP,gate,signoff) {
Patterns(LogicBist) {
TestStep (diagnostic) {
LogicBist {
CoreInstance(CHIP) {
run_mode : run_time_prog ;
begin_pattern : 2;
end_pattern : 2;
DiagnosisOptions {
extract_flop_data : on ;
}
}
}
}
}
}
Examine the results of the re-run simulation to identify the failing flops, noting the
Verilog simulation results against what fault simulation predicted. Use Tessent
Visualizer to trace the flops to the cause of the failure. For detailed usage examples,
refer to “Usage Examples.”
Results
The following transcript example shows a mismatch at an lbist_scan_out pin.
...
300ns: piccpu MISR Seed : 0x000000
49300ns: Starting controller TLB_coreB_I1.coreB_edt_lbist_i in Normal
mode, patterns 0 to 0
51000ns: Checking that the controller TLB_coreB_I1.coreB_edt_lbist_i
DONE signal is NO at the beginning of the test
62800ns: Test Complete for controller TLB_coreB_I1.coreB_edt_lbist_i
69000ns: Scanning out capture results of vector 0 for controller
TLB_coreB_I1.coreB_edt_lbist_i
180024ns: Mismatch at pin 0 name lbist_scan_out,
Simulated x, Expected 0
180100ns: Corresponding ICL register:
TLB_coreB_I1.coreB_edt_single_chain_mode_logic_i.TLB_coreB_I1.coreB_edt_i
nternal_scan_registers_i.coreB_A_chain1[18]
180100ns: Corresponding design object: coreB_A/u11/PRB_reg/DFF1
181700ns: Turning off LogicBist controller TLB_coreB_I1.coreB_edt_lbist_i
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Debug Based On Scan Cell Monitoring
Prerequisites
• You have performed the hybrid TK/LBIST flow through the pattern generation step.
Procedure
1. Verify the clocks as described in step 1 of “Debug Based on MISR Signature
Divergence” on page 115.
2. If clock verification fails, investigate and fix possible causes as described in step 2 of
“Debug Based on MISR Signature Divergence” on page 115.
3. Run Verilog simulation with the monitor_scan_cells LogicBIST debugging feature
enabled as shown below. When specified, the tool monitors the scan chain output pins,
detects when an unexpected value is unloaded, and reports which shift cycle and scan
cell failed.
Set the SimulationOptions/logic_bist_debug property in the PatternsSpecification
wrapper as follows:
SimulationOptions {
logic_bist_debug : bist_registers_and_clock_verify;
}
Results
When a mismatch occurs the tool first reports the scan chain output pin where the mismatch was
observed, and then maps the mismatch to a pattern, shift cycle, and scan cell. For both messages
it reports the simulated and expected values. If there is inversion between the scan cell and the
scan out, the simulated/expected values on these two lines is different. If the failing scan cell is
within a sub-chain of a hard module, then the message only reports the scan cell and not the pin
of the scan cell that failed.
The following transcript example shows mismatches when the wrong values are observed on
scan chain cells.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Usage Examples
Usage Examples
Your debugging efforts may include debugging clock verification and MISR signature
mismatches. In addition, to help with debugging, you can display passing capture clocks and
BIST register values.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Usage Examples
DftSpecification(cpu, gates2) {
LogicBist {
NcpIndexDecoder {
Ncp(CLK1) {
cycle(0): cpu_gates_tessent_occ_NX1_inst;
cycle(1): cpu_gates_tessent_occ_NX1_inst;
}
Ncp(CLK2) {
cycle(0): cpu_gates_tessent_occ_NX2_inst;
cycle(1): cpu_gates_tessent_occ_NX2_inst;
}
Ncp(CLK3) {
cycle(0): cpu_gates_tessent_occ_NX3_inst;
cycle(1): cpu_gates_tessent_occ_NX3_inst;
}
Ncp(ALL) {
cycle(0): cpu_gates_tessent_occ;
cycle(1): cpu_gates_tessent_occ;
}
Ncp(ALL_1p) {
cycle(0): cpu_gates_tessent_occ;
}
}
}
}
During IP generation, the NCPs CLK1, CLK2, CLK3, ALL, and ALL_1p are specified to
operate at 10%, 10%, 10%, 60%, and 10%, respectively.
During pattern retargeting, you can enable the clock verification functionality using the
logic_bist_debug property in the PatternsSpecification wrapper.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Usage Examples
Suppose you have a testbench that runs from pattern 0 to 99 with LogicBIST debugging enabled
with the logic_bist_debug property. For example:
PatternsSpecification(cpu,gates,signoff) {
Patterns(lbist_normal) {
SimulationOptions {
logic_bist_debug : bist_registers_and_clock_verify;
}
TestStep(serial_load) {
LogicBist {
CoreInstance(.) {
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 99;
}
}
}
}
}
# Pattern_set lbist_normal
# Setting up controller cpu_gate_tessent_lbist_i
# Number of patterns : 100 (100 + 0 warm-up patterns)
# Pattern Length : 72
# Shift Clk Select : 0b01
# Capture Phase Width : 0x2 Shift Clock Cycles
# PRPG Seed : 0x597fc27a
# MISR Seed : 0x000000
# Starting controller cpu_gate_tessent_lbist_i in Normal mode, patterns 0 to 99
# Checking that the controller cpu_gate_tessent_lbist_i DONE signal is NO at the
beginning of the test
# Mismatch at pattern 98 for cpu_inst.cpu_gate_tessent_edt_lbist_i.misr: Expected = 0x11504d
Actual = 0x665059
# Mismatch at pattern 99 for cpu_inst.cpu_gate_tessent_edt_lbist_i.misr: Expected = 0xc71675
Actual = 0x33473f
# Test Complete for controller cpu_gate_tessent_lbist_i
# Checking that signal DONE is YES for controller cpu_gate_tessent_lbist_i
# Checking results of controller cpu_gate_tessent_lbist_i
# Expected Signature for controller cpu_gate_tessent_lbist_i: 0x397758
# Mismatch at pin 1 name SIB_SCAN_OUT, Simulated 1, Expected 0
# Previous scan out : pin SIB_SCAN_OUT = cpu_gate_tessent_edt_lbist_i.misr[0]
# Mismatch at pin 1 name SIB_SCAN_OUT, Simulated 1, Expected 0
# Previous scan out : pin SIB_SCAN_OUT = cpu_gate_tessent_edt_lbist_i.misr[1]
# Mismatch at pin 1 name SIB_SCAN_OUT, Simulated 1, Expected 0
...
# Previous scan out : pin SIB_SCAN_OUT = cpu_gate_tessent_edt_lbist_i.misr[21]
# Mismatch at pin 1 name SIB_SCAN_OUT, Simulated 1, Expected 0
# Previous scan out : pin SIB_SCAN_OUT = cpu_gate_tessent_edt_lbist_i.misr[22]
# Turning off LogicBist controller cpu_gate_tessent_lbist_i
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Usage Examples
You can now identify the failing flop associated with pattern 97 by creating a diagnostic
LogicBIST pattern, as follows:
PatternsSpecification(cpu,gates,signoff) {
Patterns(lbist_diag) {
TestStep(diagnosis) {
LogicBist {
CoreInstance(.) {
run_mode : run_time_prog;
begin_pattern : 97;
end_pattern : 97;
DiagnosisOptions {
extract_flop_data : on;
}
}
}
}
}
}
# Pattern_set lbist_diag
# Setting up controller cpu_gate_tessent_lbist_i
# Number of patterns : 1 (1 + 0 warm-up patterns)
# Pattern Length : 72
# Shift Clk Select : 0b01
# Capture Phase Width : 0x2 Shift Clock Cycles
# PRPG Seed : 0x5c953748
# MISR Seed : 0x6f2d3a
# Starting controller cpu_gate_tessent_lbist_i in Normal mode, patterns
97 to 97
# Checking that the controller cpu_gate_tessent_lbist_i DONE signal is
NO at the beginning of the test
# Test Complete for controller cpu_gate_tessent_lbist_i
# Scanning out capture results of vector 97 for controller
cpu_gate_tessent_lbist_i
# Mismatch at pin 1 name SIB_SCAN_OUT, Simulated 0, Expected
1
# Corresponding ICL register:
cpu_gate_tessent_single_chain_mode_logic_i.cpu_gate_tessent_edt_internal_
scan_registers_i.chain2[27]
# Corresponding design object: uINTR/SERVICE_LEVEL_0_reg
# Turning off LogicBist controller cpu_gate_tessent_lbist_i
The diagnostic pattern identifies uINTR/SERVICE_LEVEL_0_reg as the failing flop. You can
find the cause of the failure by comparing the simulation waveform results against the
LogicBIST fault simulation prediction in Tessent Visualizer.
Note
There are several items to consider in this example:
• Without enabling simulation debug, the only failure you would see is the final MISR
signature that is scanned out and compared at the end of the pattern. To isolate the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Usage Examples
pattern at which the MISR started to fail, you would have to rerun the simulation
multiple times, possibly with a binary search. This can be time consuming for serial
simulations for large designs.
• Simulation debug provides two mismatches on the MISR register, observed after the
capture windows at patterns 98 and 99. Because the MISR comparison occurred before
the pattern 98 scan chains were unloaded into the MISR, the MISR signature failure
actually corresponds to the previous pattern, 97.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Usage Examples
To show the passing BIST register comparisons, use the +show_passing_regs plusarg. As the
simulation runs, the tool displays the MISR, PRPG, and low-power (if present) values for each
pattern. For example:
# Pattern_set lbist_normal
# Setting up controller cpu_gate_tessent_lbist_i
# Number of patterns : 3 (3 + 0 warm-up patterns)
# Pattern Length : 72
# Shift Clk Select : 0b01
# Capture Phase Width : 0x2 Shift Clock Cycles
# PRPG Seed : 0x2070a3dc
# MISR Seed : 0x05aed3
# Starting controller cpu_gate_tessent_lbist_i in Normal mode, patterns
25 to 27
# Checking that the controller cpu_gate_tessent_lbist_i DONE signal is
NO at the beginning of the test
# Expected value 0x2070a3dc after initialization for
cpu_inst.cpu_gate_tessent_edt_lbist_i.lfsm_vec
# Expected value 0x11e23c4d after initialization for
cpu_inst.cpu_gate_tessent_edt_lbist_i.lbist_lp_mask_shift_reg
# Expected value 0x05aed3 after initialization for
cpu_inst.cpu_gate_tessent_edt_lbist_i.misr
# Expected value 0x4dd3bf15 at pattern 25 for
cpu_inst.cpu_gate_tessent_edt_lbist_i.lfsm_vec
# Expected value 0x67bb5c4f at pattern 25 for
cpu_inst.cpu_gate_tessent_edt_lbist_i.lbist_lp_mask_shift_reg
# Expected value 0x05aed3 at pattern 25 for
cpu_inst.cpu_gate_tessent_edt_lbist_i.misr
# Expected value 0x04b71551 at pattern 26 for
cpu_inst.cpu_gate_tessent_edt_lbist_i.lfsm_vec
# Expected value 0x434886a2 at pattern 26 for
cpu_inst.cpu_gate_tessent_edt_lbist_i.lbist_lp_mask_shift_reg
# Expected value 0x3a2db4 at pattern 26 for
cpu_inst.cpu_gate_tessent_edt_lbist_i.misr
# Expected value 0x7a9fb426 at pattern 27 for
cpu_inst.cpu_gate_tessent_edt_lbist_i.lfsm_vec
# Expected value 0x3f32bc25 at pattern 27 for
cpu_inst.cpu_gate_tessent_edt_lbist_i.lbist_lp_mask_shift_reg
# Expected value 0xf4968c at pattern 27 for
cpu_inst.cpu_gate_tessent_edt_lbist_i.misr
# Test Complete for controller cpu_gate_tessent_lbist_i
# Checking that signal DONE is YES for controller
cpu_gate_tessent_lbist_i
# Checking results of controller cpu_gate_tessent_lbist_i
# Expected Signature for controller cpu_gate_tessent_lbist_i:
0x268b4d# Turning off LogicBist controller cpu_gate_tessent_lbist_i
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Usage Examples
To show the passing clock comparisons, use the +show_passing_clocks plusarg. As each
pattern runs, the expected number of pulses for each clock displays, including the currently
active NCP name. For example:
# Pattern_set lbist_normal
# Setting up controller cpu_gate_tessent_lbist_i
# Number of patterns : 3 (3 + 0 warm-up patterns)
# Pattern Length : 72
# Shift Clk Select : 0b01
# Capture Phase Width : 0x2 Shift Clock Cycles
# PRPG Seed : 0x2070a3dc
# MISR Seed : 0x05aed3
# Starting controller cpu_gate_tessent_lbist_i in Normal mode, patterns
25 to 27# Checking that the controller cpu_gate_tessent_lbist_i DONE
signal is NO at the beginning of the test
# 2 expected pulses at pattern 25 (NCP 'CLK1') for clock
'cpu_inst.cpu_gates_tessent_occ_NX1_inst.tessent_persistent_cell_clock_ou
t_mux.y'
# 0 expected pulses at pattern 25 (NCP 'CLK1') for clock
'cpu_inst.cpu_gates_tessent_occ_NX2_inst.tessent_persistent_cell_clock_ou
t_mux.y'
# 0 expected pulses at pattern 25 (NCP 'CLK1') for clock
'cpu_inst.cpu_gates_tessent_occ_NX3_inst.tessent_persistent_cell_clock_ou
t_mux.y'
# 0 expected pulses at pattern 26 (NCP 'CLK2') for clock
'cpu_inst.cpu_gates_tessent_occ_NX1_inst.tessent_persistent_cell_clock_ou
t_mux.y'
# 2 expected pulses at pattern 26 (NCP 'CLK2') for clock
'cpu_inst.cpu_gates_tessent_occ_NX2_inst.tessent_persistent_cell_clock_ou
t_mux.y'
# 0 expected pulses at pattern 26 (NCP 'CLK2') for clock
'cpu_inst.cpu_gates_tessent_occ_NX3_inst.tessent_persistent_cell_clock_ou
t_mux.y'
# 0 expected pulses at pattern 27 (NCP 'CLK2') for clock
'cpu_inst.cpu_gates_tessent_occ_NX1_inst.tessent_persistent_cell_clock_ou
t_mux.y'
# 2 expected pulses at pattern 27 (NCP 'CLK2') for clock
'cpu_inst.cpu_gates_tessent_occ_NX2_inst.tessent_persistent_cell_clock_ou
t_mux.y'
# 0 expected pulses at pattern 27 (NCP 'CLK2') for clock
'cpu_inst.cpu_gates_tessent_occ_NX3_inst.tessent_persistent_cell_clock_ou
t_mux.y'
# 0 expected pulses at pattern 28 (NCP 'CLK2') for clock
'cpu_inst.cpu_gates_tessent_occ_NX1_inst.tessent_persistent_cell_clock_ou
t_mux.y'
# 2 expected pulses at pattern 28 (NCP 'CLK2') for clock
'cpu_inst.cpu_gates_tessent_occ_NX2_inst.tessent_persistent_cell_clock_ou
t_mux.y'
# 0 expected pulses at pattern 28 (NCP 'CLK2') for clock
'cpu_inst.cpu_gates_tessent_occ_NX3_inst.tessent_persistent_cell_clock_ou
t_mux.y'
# Test Complete for controller cpu_gate_tessent_lbist_i
# Checking that signal DONE is YES for controller
cpu_gate_tessent_lbist_i
# Checking results of controller cpu_gate_tessent_lbist_i
# Expected Signature for controller cpu_gate_tessent_lbist_i: 0x268b4d
# Turning off LogicBist controller cpu_gate_tessent_lbist_i
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Pattern Generation
Usage Examples
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 6
Performing LogicBIST Diagnosis
This chapter provides step-by-step instructions on how to perform a final production check and
detailed diagnosis of logic with the LogicBist controller.
This chapter includes the following topics:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Performing LogicBIST Diagnosis
Understanding LogicBIST
Understanding LogicBIST
The LogicBIST controller consists of three main components.
• PRPG — The pseudo-random pattern generator, located in the Hybrid EDT controllers,
provides random patterns that are scanned into the internal scan chains.
• MISR — The multiple-input signature register, located in the Hybrid EDT controllers,
compresses results scanned out of the scan chains into a multiple-bit signature.
• Control and Timing block — This block sequences the activities of the PRPG, MISR,
and scan chains.
Figure 6-1. Basic LogicBIST Architecture
Although a single LogicBIST controller can test all logic within a chip, most large chips contain
several of these controllers. Additionally, most large designs consist of several cores. A typical
scenario is to have a LogicBIST controller within each physical region and an additional
controller to test the interconnect between the cores and any top-level logic.
The following topics provide more details on the execution and diagnosis flows:
Execution Flow
The execution flow of a LogicBIST controller consists of scan initialization, trial application,
and comparing scanned-out signatures.
As shown in the following figure, the flow consists of three steps:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Performing LogicBIST Diagnosis
Diagnosis
• Multiple LogicBIST trials are applied to the logic. A trial consists of the following:
o Loading the scan chains with the random values generated by the PRPG.
o Applying these random values to the functional logic and capturing the responses
back into the scan chains.
o Unloading and compressing the scan chain values into the MISR.
• The signature accumulated within the MISR is scanned out and compared to a known
value to determine a pass or fail result.
Tessent SiliconInsight performs the execution flow automatically.
Diagnosis
A LogicBIST controller can obtain a pass/fail result, and provide diagnosis down to the flip-flop
level. You can enhance the basic flow to enable an iterative search process. This helps you
obtain this level of diagnostic resolution.
The following example illustrates the diagnostic flow. Consider the basic execution flow shown
in “LogicBIST Execution Flow” on page 129. Assume that the signature scanned out of the
MISR after performing 10,000 trials is incorrect, and thus a failure has been detected. This
means that one or more of the trials scanned incorrect bit (flip-flop) values into the MISR.
The most basic diagnosis is to find the first of these failing trials, typically using a binary search
algorithm. The algorithm instructs the LogicBIST controller to apply increasingly smaller (by
one-half) trial subsets until a single failing trail is found. Continuing with the example, the first
step is to apply only the first 5,000 trials, as illustrated in the following figure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Performing LogicBIST Diagnosis
Diagnosis
Assuming the signature accumulated after the first 5,000 trials is as expected, then the first
failing trial is in the second half of the 10,000 trial range. Therefore, the next step is to initialize
the PRPG and MISR to direct the controller to apply trials 5,001 to 7,500. If the accumulated
signature is still incorrect, then the first failing trial is in the 5,001 to 7,500 trial range, so the
search is narrowed to within that range. This binary division of the trial range continues down to
a single trial.
To determine which flip-flops within the failing trial are failing, the PRPG can be
scan-initialized to instruct the controller to reapply the failing trial. However, instead of
unloading and compressing the scan-chain values into the MISR, the scan chains are
reconfigured into one long scan chain whose contents are scanned out through the TAP and
compared with expected values, as illustrated in Figure 6-4.
Tessent SiliconInsight handles the entire diagnostic process automatically. Typically, you need
to set only a few basic diagnostic options and click the Diagnose button.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Performing LogicBIST Diagnosis
Diagnosis
Note
To perform LogicBIST diagnosis using Tessent SiliconInsight you must ensure the
hardware already exists; using either the process_dft_specification command, or the
“write_edt_files -tsdb” command in the dofile flow. You must have also run the
write_tsdb_data command during fault simulation.
Note
You can use the Tessent SiliconInsight SimDUT mode to verify the LogicBIST operation,
including fault injection with automatic diagnosis. See “Simulating Desktop, ATE, and
ATPG Behavior” in Tessent SiliconInsight User’s Manual for Tessent Shell for more details.
Tessent SiliconInsight automates this diagnosis flow in the desktop, ATE (through ATE-
Connect), and Tessent Shell environments. You can automatically diagnose any failure by
selecting a failing Patterns wrapper as shown in the following figure and clicking the Diagnose
button.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Performing LogicBIST Diagnosis
Diagnosis
The tool displays the diagnosis results in the Transcript area as shown in the following figure:
The LogicBIST diagnosis results display in the transcript area of the GUI. In addition, the tool
generates a results file. For detailed information, refer to the Tessent SiliconInsight User’s
Manual for Tessent Shell.
The following example shows LogicBIST diagnosis results. The transcript shows that the test
failed at patterns 1 and 2.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Performing LogicBIST Diagnosis
Diagnosis
In addition, as shown in the example transcript for lbist_patt0, the log contains:
This indicates that the tool automatically saved a Tessent Diagnosis dofile
lbist_patt0_lbist_patt0_para__piccpu_inst1_td_dofile.do.
Within the saved dofile, you can find the name of the .flog failure log and access the log to
further investigate into the root causes for the failures to the failing scan cells. The result of
further analysis may be similar to the following:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Performing LogicBIST Diagnosis
Diagnosis
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 7
Top-Level ICL Network Integration
In this step of the bottom-up flow, you use the top-level netlist that instantiates all of the
LogicBIST implemented cores.
Note
You perform this step only when using the “Hybrid TK/LBIST Implementation” on
page 18.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Top-Level ICL Network Integration
Performing Top-Level ICL Network Integration
Prerequisites
The following input is required for this step of the flow:
• The netlists for all your cores created in EDT and LogicBIST IP Generation.
• Top-level netlist with instantiation of cores and interconnect between them.
Procedure
1. From a shell, invoke Tessent Shell using the following syntax:
% tessent -shell
After invocation, the tool is in unspecified setup mode. You must set the context before
you can invoke the top-level SIB network Insertion commands.
2. Set the tool context to dft mode using the set_context command as follows:
SETUP> set_context dft -no_rtl
3. Load the LogicBIST-ready design netlists using the read_verilog command. For
example:
SETUP> read_verilog top.v <tsdb_dft_inserted_designs_directory>/<core_name_1>.v
<tsdb_dft_inserted_designs_directory>/<core_name_N>.v
5. Load one or more cell libraries into the tool using the read_cell_library command. For
example:
SETUP> read_cell_library atpg.lib
6. Set the top design using the set_current_design command. For example:
SETUP> set_current_design top
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Top-Level ICL Network Integration
Performing Top-Level ICL Network Integration
IJTAG network-inserted design. This proc can be used to connect the EDT signals from
the cores to top-level design pins. For example:
SETUP> proc process_dft_specification.post_insertion {root wrapper} {
create_port edt_clock
create_connection edt_clock [get_pins *_edt_i/edt_clock]
…
}
8. Load the top-level IJTAG network description in DftSpecification format. For example:
SETUP> read_config_data top.dft_spec
Results
Now you are ready to perform ICL Extraction and Pattern Retargeting.
Examples
The example in the following figure describes a design that has two cores, alu and cpu. The alu
core has two EDT blocks named B1 and B2. Two instances of the alu core are in the final top-
level design (/w2/A and /w2/B) and a single instance of the cpu core (/c1).
The example shows the Tessent Shell integration dofile for generating the IJTAG network and
connecting the core-level EDT signals to the top level. The
process_dft_specification.post_insertion TCL procedure connects the core-level EDT pins to
the top level of the design. The example demonstrates the creation of shared top-level pins for
all of the cores corresponding to the EDT control signals, such as edt_clock, edt_update, and
edt_bypass. The example also shows the creation of dedicated top-level pins for channel inputs
and outputs for each of the cores.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Top-Level ICL Network Integration
Performing Top-Level ICL Network Integration
alu2_edt_channels_in1 alu2_edt_channels_in2
cpu_edt_channels_in1
edt_clock edt_reset edt_update edt_bypass
edt_single_bypass_chain} {
create_port -direction input $i
}
foreach o {alu1_edt_channels_out1 alu1_edt_channels_out2
alu2_edt_channels_out1 alu2_edt_channels_out2
cpu_edt_channels_out1} {
create_port -direction output $o
}
create_connection alu1_edt_channels_in1 w2/A/B1_edt_channels_in1
create_connection alu1_edt_channels_in2 w2/A/B2_edt_channels_in1
create_connection alu2_edt_channels_in1 w2/B/B1_edt_channels_in1
create_connection alu2_edt_channels_in2 w2/B/B2_edt_channels_in1
create_connection cpu_edt_channels_in1 c1/edt_channels_in1
create_connection alu1_edt_channels_out1 w2/A/B1_edt_channels_out1
create_connection alu1_edt_channels_out2 w2/A/B2_edt_channels_out1
create_connection alu2_edt_channels_out1 w2/B/B1_edt_channels_out1
create_connection alu2_edt_channels_out2 w2/B/B2_edt_channels_out1
create_connection cpu_edt_channels_out1 c1/edt_channels_out1
foreach i {edt_clock edt_reset edt_update edt_bypass
edt_single_bypass_chain} {
create_connection $i w2/A/$i
create_connection $i w2/B/$i
create_connection $i c1/$i
}
}
# Insert IJTAG network using DFT specification
read_config_data top.dft_spec
process_dft_specification
The DftSpecification that is referenced in the dofile follows. In it, the HostScanInterface/
Interface wrapper specifies the top-level TAP controller design pins for the IJTAG interface
signals. Three SIBs are to be inserted, each of which controls a core whose instance path name
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Top-Level ICL Network Integration
Performing Top-Level ICL Network Integration
is specified in the DesignInstance wrapper. The SIBs are inserted one level above the core
instance as specified in the parent_instance property for SIBs w2_A and w2_B. The SIB for
core cpu (/c1) is inserted at the top level. The naming of the SIB instances is controlled using
the leaf_instance_name property. The enable, control signal, and scan IO pin names (the IJTAG
network interface at the core boundary) are taken from the ICL description of the cores in the
alu.icl and cpu.icl files.
DftSpecification(top, 3sibs_tap) {
IjtagNetwork {
HostScanInterface(3sibs_tap) {
Interface {
reset_polarity: active_high;
tck: tck;
reset: jtag/tlr;
select: jtag/lbist_inst;
capture_en: jtag/capture_dr;
shift_en: jtag/shift_dr;
update_en: jtag/update_dr;
scan_in: tdi;
scan_out: jtag/lbist_reg_out;
}
Sib(c1) {
leaf_instance_name: piccpu_access_sib;
DesignInstance(/c1) {}
}
Sib(w2_B) {
parent_instance: /w2;
leaf_instance_name: m8051_B_access_sib;
DesignInstance(/w2/B) {}
}
Sib(w2_A) {
parent_instance: /w2;
leaf_instance_name: m8051_A_access_sib;
DesignInstance(/w2/A) {}
}
}
}
}
The RTL and ICL description of the generated IJTAG instruments is written out in the
tsdb_outdir/instruments/top_3sibs_tap_ijtag.instrument directory. The top-level IJTAG
network inserted design is written out as tessent_outdir/dft_inserted_designs/
top_3sibs_tap.dft_inserted_design/top.vg. The final top-level netlist can be obtained by
combining the top.vg file along with the gate-level synthesized netlists of the IJTAG
instruments. The ICL files generated by this example can be used for downstream steps that use
IJTAG, such as top-level LBIST pattern retargeting.
Note
For more information about ICL insertion using the DftSpecification, refer to the “IJTAG
Network Insertion” chapter of the TessentIJTAG User’s Manual.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Top-Level ICL Network Integration
Top-Level ICL Network Integration Command Summary
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 8
ICL Extraction and Pattern Retargeting
In this step of the bottom-up flow, you perform ICL extraction and pattern retargeting.
Note
You perform this step only when using the Hybrid TK/LBIST Implementation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
ICL Extraction and Pattern Retargeting
Performing ICL Extraction and Pattern Retargeting
Prerequisites
The required inputs for this step of the flow are as follows:
• PDL and ICL files for each core in your design created during EDT and LogicBIST IP
Generation.
• PatternDB and TCD files for each core in your design generated during Pattern
Generation.
• Top-level PDL and ICL files that include information about the TAP and SIBs.
Procedure
1. Set the context:
set_context pattern -ijtag -design_id gate
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
ICL Extraction and Pattern Retargeting
Usage Examples for ICL Extraction and Pattern Retargeting
Patterns(LogicBist_piccpu) {
ClockPeriods {
clk : 100.00ns;
}
TestStep(serial_load) {
LogicBist {
CoreInstance(.) {
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 7;
}
}
}
}
}
8. Generate patterns:
process_pattern_specification
9. Set any requirements for simulations and simulate the retargeted patterns:
set_simulation_library_sources -v \
{ ./lib/verilog/adk.v ./lib/verilog/picdram.v }
run_testbench_simulation
Example 1
This example merges all the core patterns to be run in parallel.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
ICL Extraction and Pattern Retargeting
Usage Examples for ICL Extraction and Pattern Retargeting
Example 2
This example shows the pattern merging commands required for running 100 patterns of all
cores sequentially. The initial setup is the same as the previous full example.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
ICL Extraction and Pattern Retargeting
Usage Examples for ICL Extraction and Pattern Retargeting
PatternsSpecification(top,gate,signoff) {
Patterns(LogicBist_Top) {
TestStep(cpu_serial_load) {
LogicBist {
CoreInstance(cpu) {
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 99;
}
}
} TestStep(alu1_serial_load) {
LogicBist {
CoreInstance(alu1) {
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 99;
}
}
}
TestStep(alu2_serial_load) {
LogicBist {
CoreInstance(alu2) {
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 99;
}
}
}
}
}
Example 3
The following example shows a pattern specification that you can use to run 100 patterns of cpu
in parallel with 50 patterns of an alu core, followed by another alu core running 50 patterns by
itself.
PatternsSpecification(top,gate,signoff) {
Patterns(LogicBist_Top) {
TestStep(cpu_and_alu1_serial_load) {
LogicBist {
CoreInstance(cpu) {
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 99;
}
CoreInstance(alu1) {
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 49;
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
ICL Extraction and Pattern Retargeting
ICL Extraction and Pattern Retargeting Command Summary
TestStep(alu2_serial_load) {
LogicBist {
CoreInstance(alu2) {
run_mode : run_time_prog;
begin_pattern : 0;
end_pattern : 49;
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 9
Hybrid TK/LBIST Embedded Structures
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
Shared Logic
Shared Logic
The EDT/LogicBIST hybrid IP is shared in a number of ways.
The sharing is accomplished as follows:
• The EDT decompressor is re-configured as the PRPG by blocking the channel inputs
during LogicBIST mode.
• Lockup cells (those placed in between the decompressor and the phase shifter) are re-
used as hold cells when low-power LogicBIST is implemented.
• Biasing gates used when synthesizing EDT low-power hardware is shared with chain
masking.
• The phase shifter network is used as is for driving scan chains from the PRPG.
• The spatial compactor XOR network is re-used for compacting scan chain outputs into
MISR inputs.
• Lockup cells required between the EDT/LogicBIST IP and the design scan cells are
shared between both modes.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
Inserted Hybrid TK/LBIST IP
The hybrid TK/LBIST flow generates hybrid IP that consists of the following three blocks:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
Inserted Hybrid TK/LBIST IP
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
Inserted Hybrid TK/LBIST IP
The modules are connected as follows. Colored connections are for clarity only.
The tool asserts the lbist_clock_disable signal during setup so that the values being shifted are
not disturbed. This signal also suspends the clock to the MISR, PRPG, counters, and so on,
when switching the clock from TCK to the chosen shift clock (shift_clock_src, by default), and
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
Inserted Hybrid TK/LBIST IP
vice versa. This prevents clock glitches stemming from the 3:1 mux from disturbing flops that
were just loaded (and scan flops during a LogicBIST diagnostic scan out). The signal is de-
asserted during shift.
The outputs primarily fan out and drive the FSM and the LogicBIST controller. The LogicBIST
enable, burn-in controls, clock selection signal, and low-power shift enable are outputs of this
block that control LogicBIST operation.
This block connects to the IJTAG network and is part of the LogicBIST scan chain.
FSM Block
The seven-state FSM ensures that signals generated by the control signals block reach the
LogicBIST control in the required sequence. That is, the FSM shapes the control signals such as
lbist_reset, lbist_run_mode, and lbist_enable so that they toggle correctly. The FSM also
ensures that the prpg_en signal reaches the PRPG, and the misr_accumulate_enable signal
reaches the MISR.
The state register in the FSM determines the state of the FSM. During LogicBIST, the FSM
begins in the IDLE state and changes states from IDLE through CAPTURE_PAUSE. If there
are pending patterns in the CAPTURE phase, the state returns to SHIFT. These iterations
continue until the LogicBIST test is done.
Value of State State Name Description
Register
0 IDLE LogicBIST tests are not run in this state. The
controller is at rest.
1 INIT The FSM prepares the LogicBIST controller to start
shift procedure.
2 SHIFT Start shift procedure as part of LogicBIST. Test
vectors are applied.
3 SHIFT_PAUSE Shift procedure comes to a stop to prepare for
capturing the responses.
4 CAPTURE Once the test inputs are applied, the system captures
the response stimulus.
5 CAPTURE_PAUSE The captured response and the MISR are triggered to
enable signature generation for comparison. If there
are more patterns to be applied, the PRPG is enabled
and the state returns to SHIFT. When all patterns are
generated and responses captured, the state changes
to DONE.
6 DONE Marks the end of the LogicBIST run and what
follows is signature recognition and whether it is as
expected or not.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
Scan Chain Masking
The following timing diagram applies to the seven values of the state register:
LogicBIST Control
The LogicBIST control block contains the LogicBIST controller block, which is controlled by
the FSM. The LogicBIST controller block contains a counter and the registers responsible for
warm up and capture. It also controls which NCP is active.
The outputs of the LogicBIST controller block control the hybrid EDT/LBIST block.
Note
TCK is generated inside TPSP with a frequency three times lower than the TPSP clock. To
create one cycle of pure IJTAG data, you need three cycles of TPSP. When TCK is a BIST
clock, this is not an efficient solution because the test clock is slow.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
New LogicBIST Control Signals
By default, scan chain masking occurs on a per-chain basis with a 1:1 ratio of chain mask
register bits to number of scan chains. Specify per-chain scan masking by loading the chain
masking register with the add_chain_masks command. Per-chain masking is applicable to all
patterns in the test set.
For large designs, the area impact of the chain mask register can be more than the controllers
themselves. It can also significantly increase the number of setup cycles to start BIST test.
Optionally, you can use a single chain mask register bit to mask a group of chains rather than
only one chain by specifying the set_edt_options -chain_mask_register_ratio option or the
EDT/Controller/LogicBistOptions/chain_mask_register_ratio wrapper property.
You can specify the ratio on a per EDT block basis, and the ratios can be different, with some
blocks using single scan chain masking and others using shared masking.
When you specify a chain mask register ratio greater than 1, the EDT logic changes so that you
have a smaller chain mask register. The ICL, PDL, TCD and patdb files reflect the smaller
register size. Converting masking information from individual scan chains to masking bit
groups occurs automatically during LogicBIST fault simulation and EDT pattern generation.
Clocking
The input clock to the LogicBIST controller is a free-running clock, which could be a fast PLL
output clock.
Figure 9-2 presents a timing diagram for EDT/LogicBIST IP.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
Clocking
To enable the control signals to change between shift and capture, 8 empty (pause) cycles are
introduced in between transitions, which helps with timing closure of the test logic.
• SE is a scan enable signal that goes to all the scan flops in the design. It transitions half-
way through the pause states.
• shift_clock_en is a gating signal that could be gated with the free-running input clock to
generate the shift-clock for the scan cells. This gating logic can either be implemented
by the tool (when using set_clock_controller_pins shift_clock), or you can generate it as
part of your clocking logic (when using set_clock_controller_pins shift_clock_en).
• The capture enable signal indicates the start of the capture cycle. This is intended as a
trigger for the logic that generates programmable capture sequences. This signal is
connected to the scan enable pin of your clock controller.
• The capture clock signal is shown here for illustration purposes only; this signal is
generated inside your clock controller.
• The BIST clock signal is supplied to all hybrid EDT/LogicBIST blocks as well as used
internally by the BIST controller. This clock is pulsed during shift and OFF during
capture. It also has a pulse during capture pause state to operate the low-power BIST
logic in the hybrid IP as well as to reset certain registers for each pattern in the BIST
controller.
You specify the clock controller signals using the set_clock_controller_pins command.
As stated previously, the LogicBIST clock is typically a free-running clock, but the EDT clock
should be controllable during test as it is pulsed during load_unload but held at off-state during
capture. When the test clock is a top-level clock, it can be shared for both EDT and LogicBIST
modes. When an internal clock, such as a free-running output of a PLL, is to be used for
LogicBIST, then separate clock sources are required for EDT and LogicBIST modes, where the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
Programmable Registers Inside Hybrid IP
EDT mode clock is still controllable during test. An example of such a configuration is when
shifting during LogicBIST is to be done at a higher speed than during EDT mode. TCK is used
for seeding of specific values in the LogicBIST registers.
When internally generated functional clocks are used in the design, a top-level shift clock is
required for shifting in EDT mode. Typically, a clock controller is used to generate the exact
sequence of capture clocks and also to switch between shift-mode and capture-mode clocks.
The clock controller takes a free-running clock, shift clock, and scan enable as inputs.
When you are using Tessent OCCs and have specified the add_dft_signals edt_clock
-create_from_other_signals command, the clocking hardware after LogicBIST and EDT
insertion looks as follows.
• PRPG
• Low-power control registers (toggle, hold, switching, and mask shift)
• Chain mask register
• MISR
The following registers inside the top-level BIST controller are programmable.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
Low-Power Shift Controller
The performance of the Low-Power BIST controller depends on the following factors:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
Low-Power Shift Controller
The SC, HV, and TV values are automatically calculated by the tool based on the switching
threshold you set using the set_power_control command during fault simulation.
The 4-bit switching code might assume one of 15 different binary values ranging from 0001 up
to 1111. The last value can be alternatively used to disable the control register and enter the
poorly pseudo-random test pattern generation (unless you activate the Hold mode). All codes
are used to enable certain combinations of AND gates forming biasing logic, and, hence, to
produce 1s with probabilities 0.5 (0001), 0.25 (0010), 0.125 (0100), 0.0625 (1000), plus their
combinations obtained due to an additional OR gate. The resultant 0s and 1s are shifted into the
mask shift register, and, subsequently, they are reloaded to the mask hold register at the
beginning of a test pattern to enable/disable the hold latches placed between the ring generator
and its phase shifter.
The duration of how long the entire generator remains in the Hold mode with all latches
temporarily disabled regardless of the hold register content.
In the Toggle mode (its duration is determined by TV), the latches enabled through the control
register can pass test data moving from the ring generator to the scan chains. In order to switch
between these two modes, a weighted pseudo-random signal is produced by a module Encoder
H/T based on the content of different stages of the ring generator.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
Hybrid TK/LBIST Area Reduction Techniques
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Hybrid TK/LBIST Embedded Structures
Use Basic Compactor for EDT
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 10
Tessent OCC for Hybrid TK/LBIST
The Tessent On-Chip Clock Controller (OCC) can be used in the Hybrid TK/LBIST flow.
Tessent Shell can generate and insert the Tessent OCCs with programmable capture clock
sequences for use with Hybrid TK/LBIST applications.
During LBIST mode, the actual clock sequence is parallel loaded into the Tessent OCC. You
can configure the Tessent OCC so that the values can be loaded through OCC module input
ports or through a TDR inside the OCC. When an LBIST test uses only one NCP at a time, this
value can be loaded through the TDR or be available as a constant at the module inputs. If the
LBIST test uses multiple NCPs, then the tool generates the parallel load clock sequence for the
currently active NCP, the index for which is provided by the LBIST controller using the NCP
Index Decoder (NCPID). The NCPID hardware is generated during Hybrid TK/LBIST
insertion. For additional information, see “NCP Index Decoder” on page 163.
When Tessent OCC is generated with internal IJTAG control (that is, you have specified the
Occ/ijtag_host_interface property), the static signals for controlling the OCC for LBIST mode
are included within the OCC. Additionally, when static_clock_control is either internal or both,
a TDR is included for generating the LBIST capture clock sequence. However, you can use this
internal TDR only when LBIST test uses only one active NCP.
For additional Tessent OCC-specific information, see “Tessent On-Chip Clock Controller” in
the Tessent Scan and ATPG User’s Manual.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Tessent OCC TK/LBIST Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Tessent OCC for TK/LBIST Flow Configuration
You must specify the clocking combinations to be used during TK/LBIST test. The tool
synthesizes the NCP index decoder and generates named capture procedures based on this
description.
You can use the NCP index decoder with only a single clock domain. The NCP index decoder is
based on the number of unique clocking waveforms, not on the number of clocks. For example,
with a single clock you can generate two NCPs (a single pulse and double pulse).
To reduce the test time and achieve high coverage, it is possible to activate multiple clock
domains at the same time. This is a trade-off between test time and hardware cost: the cost
comes from adding bounding logic for paths crossing clock domains. You may need bounding
for both stuck-at and transition patterns. Coverage is lost in all blocked paths, but you can
control the blocking with the McpBoundingEn dft_signal. It is possible to disable blocking at
run time, but the NCPs can only pulse compatible clocks.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
NCP Index Decoder
One NCP index decoder is synthesized for each LogicBIST controller and can be used for
controlling all the OCCs involved in LogicBIST. In Figure 10-2, there are three OCCs
configured for four cycles each. There are two input binary values to the NCP index decoder
(indicating a maximum of four NCPs), which is decoded as a single control signal per OCC per
cycle that reflects the required clocking waveform.
The tool generates only one index decoder for all OCCs. The NCP index decoder is instantiated
by default at the top level, or as controlled with the parent_instance property of the
NcpIndexDecoder specification.
If you are using only one NCP, you cannot use the NcpIndexDecoder wrapper because it is
supported only for external static clock controls and two or more NCPs. Refer to
“Considerations When Only Using One NCP” on page 171 for fault simulation considerations.
When the NcpIndexDecoder is generated in the same run as the LogicBist IP, the NCP count is
automatically inferred from the number of Ncp() wrappers in the NcpIndexDecoder wrapper.
When NcpIndexDecoder is generated in a different run, you must specify the LogicBist/
Controller/NcpOptions/count property = 1.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
OCC Generation and Insertion
Note
The NCP index decoder generation requires an elaborated design. For the RTL flow, you
need the TCD of the OCC. For the gate-level flow, add the Tessent OCC instances with the
add_core_instances command.
Examples
In the following example, assume the design has two top-level Tessent OCC instances named
m8051_gate_tessent_occ_clk1_inst and m8051_gate_tessent_occ_clk2_inst of the same
Tessent OCC module m8051_gate_tessent_occ.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
OCC Generation and Insertion
You should add a separate OCC DftSpecification with controller wrappers for each different
clock that needs to be programmable during capture. Additionally, you may add OCCs for
asynchronous reset signals declared as a clock.
Tessent Shell creates TCD files, Verilog RTL, ICL, PDL, and tcd_scan describing the Tessent
OCC instrument, as well as a Verilog netlist that instantiates the OCC in the user design. Many
generation and insertion options are available in the DftSpecification to control this process.
The ICL and TCD outputs are used in later steps like scan insertion, fault simulation, and
pattern generation to describe the configuration of the generated OCCs as well to identify the
port functions. The Tessent OCC RTL should be synthesized to a gate-level design, along with
other logic to be inserted at the RTL level before be used for downstream steps that require a
gate-level netlist.
The Tessent OCC can be inserted in a design either at RTL or gate level. When inserted at RTL
level or before EDT IP, the Tessent OCC shift registers can either be merged with design scan
cells or stitched up into dedicated Tessent OCC scan chains. When you stitch them into
dedicated chains, these can be either compressed or uncompressed.
• Internal — The Tessent OCC is statically programmable using an internal TDR for
both LBIST and ATPG modes. When using this option, the LBIST test can use only one
NCP at a time. When multiple NCPs are to be used, it needs to be done in multiple
pattern sets.
• External — The Tessent OCC is statically programmable through OCC module ports
for the LBIST mode. This enables use of multiple NCPs for LBIST test in a single
pattern set. An NCP index decoder is synthesized to provide the clock sequence for the
different NCPs based on the ncp_index output from the LBIST controller. The Tessent
OCC external clock control module port is available only for the LBIST mode and
unavailable for ATPG.
• Both — This combines both the internal and external options described above. ATPG
can use the TDR for static clock control. LBIST can use either the TDR or the OCC
module ports.
Capture Trigger
To use the Tessent OCC for TK/LBIST operation, you should set the capture trigger to capture
enable. In this case, scan enable is replaced by the LBIST capture enable signal as the trigger.
To enable either fast capture or slow capture to be used during LBIST, the slow clock signal is
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Scan Insertion
connected to the LBIST controller’s output shift capture clock, which pulses on all capture
cycles.
The capture enable signal should to be tied to constant-0 or connected to inverted scan enable
during OCC insertion.
Scan Insertion
During Tessent OCC insertion, the clock control shift register IO of the Tessent OCCs are left
unconnected. Integrating these Tessent OCC shift register sub-chains into the design is
performed outside of the Dft Specification. Scan insertion can be performed using third-party
tools.
You can insert the Tessent OCC into either a non-scan design or a scan design.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
OCC EDT/LBIST IP Creation
Pre-Synthesis Flow
In pre-synthesis flow, the Tessent OCC is not present in the input skeleton design and the ICL/
TCD files for the OCC cannot be read during IP creation. You should instruct the tool to
generate LBIST controller compatible with Tessent OCCs. When using this flow, you are
responsible for making all connections between the LBIST controller, EDT blocks, NCP index
decoder and OCCs. You do this by using the “set_lbist_controller_options -tessent_occ on”
command and options.
Gate-Level Flow
During EDT IP creation, you should input into Tessent Shell the Tessent OCC inserted design
with OCC shift registers included in scan chains should be read. The OCC scan chains can be
either part of compressed or uncompressed chains. Do not add Tessent OCC uncompressed scan
chains during IP creation; only add them during pattern generation. You must configure the
Tessent OCC correctly to pass the IP creation DRC checks, specifically the shift clock, scan
enable, and capture enable signals of the Tessent OCC are properly connected and operated in
the incoming test procedures.
During IP creation, you read in the ICL, PDL and Tessent Core Description (TCD) for the OCC.
This is required to properly setup the Tessent OCC during IP creation. The TCD description is
bound to a netlist instance by treating it as a core instance, similar to how scan pattern
retargeting uses TCD. The tool identifies the Tessent OCCs when the tessent_instrument_type
ICL attribute is set to “mentor::occ”. This attribute value is considered when generating the ICL
signature, so it cannot be added to user OCCs. When Tessent OCCs are present in the design,
the LBIST controller is modified to correctly interface with the OCC.
The TK/LBIST compatible Tessent OCCs are required to have the following two features:
capture trigger using capture enable and static clock control either external or both when using
multiple NCPs. See “Static Clock Control” on page 166 and “Capture Trigger” on page 166.
Note
Do not mix Tessent OCCs and custom OCCs (defined using set_clock_controller_pins
command) in the same LBIST controller. The tool performs rule checks to validate this
requirement.
During EDT IP creation, the Tessent OCC capture enable pins that are not functionally driven
are driven by the inverted OCC scan enable. The Tessent OCC capture enable pins that are
functionally driven (that is, by inverted scan enable) are multiplexed between existing
functional connection and LBIST capture enable.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
OCC EDT/LBIST IP Creation
the existing connections of the OCCs. The tool attempts to reduce the amount of generated
LogicBIST logic used to complete the intercepts.
If, for a given signal, multiple OCCs have the same signal source, then one mux is sufficient for
intercepting all of them. The tool considers OCCs as having the same sources if their nets fan in
from the same net, as observed during LogicBIST validation. As shown in the following figure,
instead of inserting a mux for each intercept at the OCCs—eight intercepts—the tool inserts
only four muxes. Optimization occurs for the capture enable and shift clock signals.
The signal sources are considered the same if their nets fan in from the same net, as observed
during LogicBIST validation. The following example shows the case when the fanin nets differ
for each OCC because one of them resides within a sub-module. The tool treats these OCCs as
having different sources. It generates a mux for each intercept at the OCCs, leading to four
generated muxes instead of two.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
NCP Index Decoder Synthesis
Capture Procedures
During IP creation, you specify the total number of NCPs used for LBIST.
This is required to synthesize the NCP index output and NCP activity percentage registers. If
the exact number of NCPs is not known during IP creation, an upper bound can be used. During
fault simulation, unused NCP indices can be specified as 0%. If the names and activity
percentage of the NCPs is specified during IP creation, this is used for the hardware default
mode. When not specified, the tool defaults to equal activity for all the NCPs for the hardware
default mode.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Pattern Generation with a Tessent OCC
Tessent Shell automatically adds two internal clocks for each OCC instance:
In the LBIST mode dofile, an internal user-PI is added for the LBIST capture enable signal and
constrained to 1. For fault simulating chain test patterns, you manually change this constraint to
0.
You can use the create_capture_procedures command to create an NCP description in the tool
instead of reading a manually-created description from a file. This user-created NCP should
reflect the waveform that you also provide. For external static clock control, the waveform
could be constant values provided on the OCC clock_sequence input pins by the netlist. For
internal static control, this could be the value loaded into the OCC internal clock_sequence
TDR.
For the internal static clock control, load the clock sequence corresponding to the user-created
NCP through the ICL network. For Tessent OCCs, you can do this by using the clock_sequence
core instance parameter. For the external static clock control, connect the Tessent OCC’s clock
sequence pins to constant values that generate the required NCP clock waveforms.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Pattern Generation with a Tessent OCC
specification processing automatically calls the OCC setup iProc with the parameter values that
were used during fault simulation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Example Tessent OCC TK/LBIST Flow
2. Set the Tessent Shell context to “dft” and specify a design identifier (rtl2) for the current
design.
SETUP> set_context dft -rtl -design_identifier rtl2
3. Point to the TSDB that you used for any previous steps.
SETUP> set_tsdb_output_directory ../tsdb_outdir
4. Read the design and other files from the previous step.
SETUP> read_design m8051 -design_id rtl1
7. Set the design level. The physical_block level indicates that the design is a block that is
synthesized and laid out as an independent block. For example:
SETUP> set_design_level physical_block
8. Specify any constraints and other specific design settings. For more details on
commands related to IP insertion, see “EDT and LogicBIST IP Generation” on page 25.
9. Perform system mode transition.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Generating and Inserting the Tessent OCC
SETUP> check_design_rules
11. Read the DftSpecification for the EDT and LogicBIST controllers per the hybrid TK/
LBIST insertion flow described in “EDT and LogicBIST IP Generation” on page 25.
Additionally, include the NCP details using the NcpIndexDecoder and NCP sub-
wrappers under the LogicBIST wrapper. Read in the NCP index decoder specification.
For example:
SETUP> read_config_data -from_string {
LogicBist {
NcpIndexDecoder {
Ncp(pulse_once) {
cycle(0) : m8051_gate1_tessent_occ;
}
Ncp(pulse_twice) {
cycle(0) : m8051_gate1_tessent_occ;
cycle(1) : m8051_gate1_tessent_occ;
}
}
}
}
12. Validate and process the content defined in the DftSpecification wrapper.
ANALYSIS> process_dft_specification
Results
The tool creates the Tessent OCC and the NCP index decoder and writes out the relevant output
files in the instruments sub-directory of the TSDB directory. The output files include TCD files,
RTLs, ICL, and PDL for both the OCC and NCP index decoder. Both the OCC and the NCP
index decoder are instantiated in the DFT inserted design that is also written out.
Following this process, the sequence of steps is the same as described in “Test Point Analysis
and Insertion, Scan Insertion, and X-Bounding” on page 79, “LogicBIST Fault Simulation and
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Tessent OCC Examples
Pattern Creation” on page 91, and “Pattern Generation” on page 103. During fault simulation,
the tool reads in the TCD file of the NCP Index decoder.
• NX1
• NX2
• NX3
The following dofile reports the clock domains and the percentage of faults in each of the
domains. Since the netlist is non-scan, the dofile instructs Tessent Shell to treat the netlist as a
full-scan design, using the “add scan groups dummy dummy” command. If the design were
already scan-inserted, you would instead specify the actual test procedure file and scan chains.
The “Clock Domain Summary” section of report_statistics command’s output is shown below:
----------------------------------------------------
Clock Domain Summary % faults Test Coverage
(total) (total relevant)
------------------ ---------- ----------------
/NX1 22.38% 0.00%
/NX2 74.70% 0.00%
/NX3 0.33% 0.00%
----------------------------------------------------
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Tessent OCC Examples
From the above reports, there are small number of interacting flops (8) between NX1 and NX3.
The paths between NX1 and NX3 should be bounded, which can be accomplished by an SDC
file that describes all paths between these clock domains as false, as shown below (declared at
the mux output):
The tool can now treat NX1 and NX3 as compatible clock domains and pulse them together,
since all interactions between them are blocked during X-bounding. From the prior clock
activity table, we can divide the design into two clock domains: NX2 and NX1_NX3.
Consequently, the NX2 and NX1_NX3 domains can be tested for 75% and 25% of the test
duration, respectively.
During fault simulation, the output of the report_clock_domains command shows that NX1 and
NX3 are indeed compatible after X-bounding. The functional clocks referred earlier are
numbered 7-9 in the output below.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Tessent OCC Examples
DftSpecification(m8051,rtl3) {
LogicBist {
NcpIndexDecoder {
Ncp(NX1_NX3_single_pulse) {
cycle(0): occ_NX1, occ_NX3;
}
Ncp(NX2_single_pulse) {
cycle(0): occ_NX2;
}
Ncp(NX1_NX3_double_pulse) {
cycle(0): occ_NX1, occ_NX3;
cycle(1): occ_NX1, occ_NX3;
}
Ncp(NX2_double_pulse) {
cycle(0): occ_NX2;
cycle(1): occ_NX2;
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Tessent OCC Examples
The NCP following shows the index decoder TCD file created from the preceding
DftSpecification:
Core(m8051_rtl3_tessent_lbist_ncp_index_decoder) {
LbistNcpIndexDecoder {
Interface {
NcpIndex(ncp_index[3:0]) {
persistent_pin(0): tessent_persistent_cell_ncp_index_buf_0/y;
persistent_pin(1): tessent_persistent_cell_ncp_index_buf_1/y;
persistent_pin(2): tessent_persistent_cell_ncp_index_buf_2/y;
persistent_pin(3): tessent_persistent_cell_ncp_index_buf_3/y;
}
ClockSequence(occ_NX1) {
persistent_pin :
tessent_persistent_cell_occ1_clock_sequence_buf_0/y;
}
ClockSequence(occ_NX2) {
persistent_pin:
tessent_persistent_cell_occ2_clock_sequence_buf_0/y;
}
ClockSequence(occ_NX3) {
persistent_pin :
tessent_persistent_cell_occ3_clock_sequence_buf_0/y;
}
}
CaptureProcedures {
Ncp(NX1_NX3_single_pulse) {
Cycle(0) : occ_NX1, occ_NX3 ;
}
Ncp(NX2_single_pulse) {
Cycle(0) : occ_NX2 ;
}
Ncp(NX1_NX3_double_pulse) {
Cycle(0) : occ_NX1, occ_NX3;
Cycle(1) : occ_NX1, occ_NX3;
}
Ncp(NX2_double_pulse) {
Cycle(0) : occ_NX2;
Cycle(1) : occ_NX2;
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Tessent OCC Examples
read_verilog design/gate/elt1.v
set_current_design elt1
set_design_level physical_block
set_dft_specification_requirements -memory_test off -logic_test on
check_design_rules
set_system_mode analysis
set spec [create_dft_specification -sri_sib_list {occ}]
report_config_data $spec
set_config_value use_rtl_cells on -in_wrapper $spec
read_config_data -in_wrapper $spec -from_string {
OCC {
ijtag_host_interface : Sib(occ);
static_clock_control : external;
capture_trigger : capture_en;
Controller(clk_controller) {
clock_intercept_node : CLK_F300;
parent_instance : dft_inst;
}
}
}
report_config_data $spec
process_dft_specification
extract_icl
run_synthesis -startup_file \
../prerequisites/techlib_adk.tnt/current/synopsys/synopsys_dc.setup
After the first pass, the OCC slow_clock is driven by the shift_capture_clock gater and the
edt_clock gater has no fanout.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent OCC for Hybrid TK/LBIST
Tessent OCC Examples
Figure 10-5. Clock Gating With DFT Signals and OCC in the First Pass
After inserting EDT and LogicBIST in the second hybrid DFT insertion pass, the tool creates
the circuit shown below. The edt_clock gater and shift_capture_clock gaters have been removed
and their previous connections are now driven by their respective ports on the LogicBIST
controller.
Figure 10-6. Clock Gating With EDT and LogicBIST in the Second Pass
Note
This is also the resulting circuit when you first run the TSDB flow to insert the DFT signals
and then the dofile flow to insert the LogicBIST controller. In the dofile flow for LogicBIST
insertion, the source clock of the DFT signal gaters supply the test_clock to the LogicBIST
controller.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 11
Third-Party OCC for Hybrid TK/LBIST
The hybrid TK/LBIST flow supports using third-party OCCs that have already been inserted
into the design. To do so, you must first generate Tessent Core Description (TCD) files for each
third-party OCC instrument.
Overview of the Third-Party OCC Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
ThirdPartyOcc TCD File Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Usage Examples for Third-Party OCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Third-Party OCC for Hybrid TK/LBIST
Overview of the Third-Party OCC Flow
During the second DFT insertion pass, for third-party OCC pins to be properly identified during
process_dft_specification, you must load the TCD file and associate it with the OCC module/
instance with the following two commands:
When using third-party OCCs rather than Tessent OCCs, you must:
• Declare how many NCPs are required. In the DftSpecification, include a LogicBist/
Controller/NcpOptions wrapper with either the count or
percentage_of_patterns_per_ncp property; these properties are mutually exclusive. For
example:
DftSpecification(module_name,id) {
LogicBist {
Controller(id) {
NcpOptions {
count : int ; // default: 1
percentage_of_patterns_per_ncp : int, ... ;
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Third-Party OCC for Hybrid TK/LBIST
ThirdPartyOcc TCD File Syntax
Description
Describes the interface for one third-party OCC already inserted in the design.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Third-Party OCC for Hybrid TK/LBIST
ThirdPartyOcc TCD File Syntax
Arguments
• Interface/ScanEn(port_name)
A wrapper that specifies the clock controller scan enable input. The inverted LogicBIST
capture enable output from the controller in LogicBIST mode drives this port.
• Interface/CaptureEn(port_name)
A wrapper that specifies the capture enable trigger LogicBIST clock enable input and is
typically connected to the LogicBIST capture enable output.
• Interface/ShiftClock(port_name)
A wrapper that specifies the clock controller shift clock input. The LogicBIST shift clock
output from the controller in LogicBIST mode drives this pin. This property is mutually
exclusive with ShiftClockEn.
• Interface/ShiftClockEn(port_name)
A wrapper that specifies the clock controller shift clock enable input. The LogicBIST shift
clock enable output from the controller in LogicBIST mode drives this pin. This property is
mutually exclusive with ShiftClock.
• Interface/ShiftCaptureClock(port_name)
A wrapper property that specifies an input on the clock controller that needs to receive a
clock that pulses during shift and capture. This behavior differs from the shift clock, which
only pulses during the shift mode operation. The LogicBIST shift capture clock output from
the controller in LogicBIST mode drives the ShiftCaptureClock pin. If you do not specify
this pin, the tool does not create the output port. This property is mutually exclusive with
Interface/ShiftCaptureClockEn.
• Interface/ShiftCaptureClockEn(port_name)
A wrapper property that specifies an input on the clock controller that needs to receive a
shift and capture clock enable signal. This behavior differs from the shift enable and capture
enable, which are high only during the shift or capture mode operation. The LogicBIST shift
capture clock enable output from the controller in LogicBIST mode drives the
ShiftCaptureClockEn pin of the OCC. If you do not specify this pin, the tool does not create
the LBIST output port. This property is mutually exclusive with Interface/
ShiftCaptureClock.
• Interface/LbistEn(port_name)
A wrapper that specifies the LogicBIST enable pins.
• Interface/DiagClockEn(port_name)
A wrapper that specifies the clock controller diagnosis clock enable input. The LogicBIST
controller DiagClockEn output drives this pin. If you are using the ShiftClockEn clock
controller pin, you need a DiagClockEn connection to perform LogicBIST diagnosis. The
DiagClockEn signal is only legal when DftSpecification/LogicBist/Controller/
SingleChainForDiagnosis/present is on.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Third-Party OCC for Hybrid TK/LBIST
Usage Examples for Third-Party OCC
• Interface/InjectTck(port_name)
A wrapper that specifies the clock controller pin that injects TCK onto the clock. When
MemoryBIST is present, the tool connects this port to the tck_select DFT signal, if present.
Figure 11-2. Third-Party OCC With Shared Shift Clock Source, Pre-Insertion
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Third-Party OCC for Hybrid TK/LBIST
Usage Examples for Third-Party OCC
Core(OCC1) {
ThirdPartyOCC {
Interface {
ScanEn(scan_en) {}
ShiftClock(shift_clock) {}
ClockOut(clock_out) {}
}
}
}
...
SETUP> read_core_descriptions OCC1.tcd
SETUP> add_core_instances –module OCC1
...
SETUP> set_system_mode analysis
ANALSYIS> create_patterns_specification –sri_sib_list {edt lbist}
...
ANALYSIS> process_dft_specification
When Tessent Shell inserts the LogicBIST IP, it sees that block1_i1/OCC1_i and block1_i2/
OCC1_i share the same shift clock and scan enable sources, and it only inserts one shift clock
and scan enable mux, as shown below.
Figure 11-3. Third-Party OCC With Shared Shift Clock Source, Post-Insertion
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Third-Party OCC for Hybrid TK/LBIST
Usage Examples for Third-Party OCC
Figure 11-4. Third-Party OCC With Different Shift Clock Inputs (Error Condition)
Core(OCC1) {
ThirdPartyOCC {
Interface {
ScanEn(scan_en) {}
ShiftClock(shift_clock) {}
ClockOut(clock_out) {}
}
}
}
Core(OCC2) {
ThirdPartyOCC {
Interface {
ScanEn(scan_en) {}
ShiftClockEn(shift_clock_en) {}
ClockOut(clock_out) {}
}
}
}
In this case, the tool issues an error because the TCD files have mutually exclusive ports.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Third-Party OCC for Hybrid TK/LBIST
Usage Examples for Third-Party OCC
...
SETUP> read_core_descriptions OCC1.tcd
SETUP> add_core_instances –module {OCC1 OCC2}
...
ANALYSIS> process_dft_specification
...
// Error: /DftSpecification(xxx,gate)/LogicBist
// The 'ShiftClock' and 'ShiftClockEn' ports on third party OCC
modules are mutually exclusive.
// OCC modules with 'ShiftClock' port:
// OCC1
// OCC modules with 'ShiftClockEn' port:
// OCC2
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 12
Observation Scan Technology
This chapter documents Observation Scan Technology (OST) features within the hybrid TK/
LBIST flow. The flow supports LogicBIST for in-system testing, which requires high test
coverage in a short time span. Using the observation scan features minimizes test times when
running LogicBIST in-system by reducing the pattern count needed to achieve a target test
coverage.
Note
This chapter uses the terms “Observation Scan Technology” and “observation scan”
interchangeably.
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
DFT Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Test Point and Scan Insertion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
LogicBIST Fault Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Pattern Mismatch Debugging Based on Scan Cell Monitoring . . . . . . . . . . . . . . . . . . . . 198
Pattern Mismatch Debugging for Parallel Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Two-Phase OST Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Flow Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Hardware Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Two-Phase Fault Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
External Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Overview
Observation scan includes the following features:
• The observation scan observe point (OP), which the tool inserts during test point
insertion. The tool monitors observation scan OPs during every shift cycle and capture
cycle. This is different than traditional OPs, which the tool monitors only during
capture. The tool treats each shift cycle as a pseudo-random pattern, and adjusts the
detection probability and test coverage estimations accordingly.
For example, given a chain length of 100 with 10,000 patterns, the observation scan OPs
observe for one million cycles.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
Overview
Note
You must perform test point insertion and scan insertion in one session if Observation Scan
Technology (OST) testpoints are enabled. If OST test points are not enabled, you can
perform these steps in separate sessions.
Licensing
The tool requires an Observation Scan Technology (OST) license to insert observation points in
the “dft -test_points -scan” sub-context. The tool checks out the license during
analyze_test_points when “set_test_point_analysis_options
-capture_per_cycle_observe_points” is set to “on”. In “patterns -scan” context, the OST license
is required as soon as the tool detects an observation scan during transition to analysis mode.
This requirement is in addition to the LogicBist license.
The OST license additionally gives you access to eight child processes. Therefore, one
LogicBist license plus one OST license enables you to use one parent plus eight child processes
for fault simulation. Every additional OST license gives you access to an additional eight child
processes. For example:
• One LogicBist license plus two OST licenses gives you access to one parent and 16
child processes.
• One LogicBist license plus four OST licenses gives you access to one parent and 32
child processes.
Additional LogicBist or TestKompress licenses do not increase distribution. For observation
scan, the only way to increase distribution is by adding more OST licenses.
For additional information about distributed computing in the Tessent environment, see
“Multiprocessing for ATPG and Simulation” in the Tessent Scan and ATPG User’s Manual.
High-Level Flow
The flow outlined in this chapter follows the basic Tessent Shell RTL and scan DFT insertion
flow with hybrid TK/LBIST as described in the Tessent Shell User’s Manual. Figure 12-1 notes
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
Overview
the differing aspects of the flow when you are using observation scan; otherwise, the flow
remains the same.
For dofile flow considerations, see “Observation Scan Technology Dofile Flow” on page 319.
Limitations
• The tool does not support performing diagnosis with observation scan patterns. To
bypass this limitation, rerun fault simulation with the capture_per_cycle_static_en
signal disabled. The results then support diagnosis as well.
The simulation of shift cycle faults with observation scan only supports static fault
models. You should turn off observation scan for transition fault types.
• The tool inserts regular OPs instead of observation scan OPs in the fanout cone of
shadow cells. Regular OPs do not capture the initial unknown values of the shadow cells
because they do not capture on every cycle. This prevents potential simulation
mismatches with parallel patterns.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
Overview
Observation scan has two mode control signals, OP_en and capture_per_cycle_static_en:
• OP_en — Observe point enable signal that is similar to regular OPs for controlling the
basic observation functionality of an observe test point.
• capture_per_cycle_static_en — The enable signal for turning observation scan on and
off. When capture_per_cycle_static_en is turned off, observation scan test points
activate during capture; that is, they behave as regular observe points. When
capture_per_cycle_static_en is turned on, the test points activate during both capture
and shift. The capture_per_cycle_static_en signal is ANDed with an internal FSM-
generated signal to create a dynamic capture_per_cycle_dynamic_en signal that is
connected to the observation points. The tool connects these signals during scan
insertion.
The capture_per_cycle_dynamic_en signal ensures that the observation scan cells are
inactive during warm-up patterns and the first regular LogicBIST pattern shift-in. You
cannot explicitly specify the signal. However, it is visible through commands that have
an access to DFT signals, such as get_dft_signal and report_dft_signals.
Table 12-1 lists the modes of operation with observation scan enabled (OP_en=1 and
capture_per_cycle_static_en=1). Refer to Figure 12-2 to see the signal configurations displayed
in the table header. The “d”, “s”, and “q” values in the table body represent the current values of
the D, SI, and Q pins, respectively.
Table 12-1. Modes of Operation for Observation Scan Cells
Modes SE capture_per_cycle_dynamic_en D SI Q
Shift 1 0 d s s
Shift + Capture 1 1 d s d^s
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
DFT Insertion
During observation scan, when you run LogicBIST simulation with patterns greater than 0, the
tool applies an extra starting pattern with capture_per_cycle_static_en held low. This enables
the unknown (X) values to be flushed from the observation scan chains. The extra pattern means
that the tool must delay accumulating the scan chain data in the MISRs by one pattern. The
delay_misr_en TDR enables this delay.
DFT Insertion
The DFT insertion process for LogicBIST includes specifying a new static signal,
capture_per_cycle_static_en. This DFT signal and the existing observe_test_point_en DFT
signal control the observation scan test points.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
DFT Insertion
Specify the capture_per_cycle_static_en signal with the add_dft_signals command during the
DFT insertion pass in which you are generating the hybrid TK/LBIST IP. For example:
set_dft_specification_requirements -logic_test on
.
.
# Create DFT specification
set spec [create_dft_specification -sri_sib_list {occ edt lbist} ]
process_dft_specification
.
.
For details about this process, refer to “Second DFT Insertion Pass: Inserting Top-Level EDT
and OCC” in the Tessent Shell User’s Manual.
The capture_per_cycle_static_en signal is a static DFT signal with defaults similar to other
static DFT signals. You can specify it with either a source node or create it with a TDR:
add_dft_signals capture_per_cycle_static_en
{ -source_node pin_port_spec [-make_ijtag_port] | -create_with_tdr }
Within the DFT specification, the default for Controller/capture_per_cycle_en is “auto.” This
resolves to “on” when a DFT signal called capture_per_cycle_static_en is present, and it
resolves to “off” otherwise.
DftSpecification(module_name,id) {
LogicBist {
Controller(id) {
capture_per_cycle_en : on | off | auto ; // default: auto
Connections {
capture_per_cycle_en :
OptionalDftSignal(capture_per_cycle_static_en) ;
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
Test Point and Scan Insertion
You can also use the explicit “on” or “off” values to enable or disable capture per cycle. Tessent
Shell issues an error message when this property is “off” and the capture_per_cycle_static_en
DFT signal exists.
Timing Constraints
Tessent Shell generates timing constraints for the hybrid IP during IP generation in Synopsys
Design Constraints (SDC) format. The SDC file contains timing constraints and exceptions for
all modes of operation of the IP.
The Tessent Shell User’s Manual describes the timing constraints and exceptions for logic test
instruments in “LOGICTEST Instruments.” For observation scan, the following applies:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
Test Point and Scan Insertion
Note
Using a third-party tool for test point insertion is limited to inserting test points and stitching
observation scan observe points into dedicated scan chains. For more information, see “How
to Create a Test Points and OST Scan Insertion Script for DC or Genus” in the Tessent Scan and
ATPG User’s Manual and the “set_insert_test_logic_options -generate_third_party_script”
command description in the Tessent Shell Reference Manual.
Dofile Example
The following dofile example shows a simple test point insertion and scan insertion session:
• Line 1: Set the context to dft -test_points -scan for both test point insertion and scan
insertion.
• Lines 8: Use the “set_test_point_analysis_options -capture_per_cycle_observe_points”
command to activate observation scan mode.
Line 9: For accurate test coverage estimation, Tessent Shell requires the shift length of
the observation scan chains during test point analysis. Specify the
“set_test_point_analysis_options -minimum_shift_length” option, setting the shift
length to the anticipated scan chain length of the design. This option is required to
initiate the test point insertion algorithm.
Note
You cannot generate both regular observe points and observation scan observe
points in the same run.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
LogicBIST Fault Simulation
Note
The number of simulations increases by a factor of the shift length, which means increased
simulation times and memory requirements. Capture occurs for every shift, and hence there
is a direct dependency on the shift length. In order to reduce simulation time, you should use
distributed processing. Turning off multithreading (set_multiprocess_options –multithreading
off) typically yields the best simulation time reduction.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
Pattern Mismatch Debugging Based on Scan Cell Monitoring
To change the default maximum number of patterns for which the per-cycle data is stored (and
thus can be monitored for debugging purposes), specify the following command in your fault
simulation dofile:
The specified integer is the maximum number of patterns that can be written to the PatDB. You
can write out less per-cycle data into the PatDB by specifying the write_tsdb_data
-max_per_cycle_pattern switch.
For observation_scan, the tool can write out parallel testbenches that contain a certain number
of last shift cycles (using “write_patterns -parameter_list {SIM_POST_SHIFT integer}”) if the
corresponding shift cycle data have been stored during fault simulation. If the parallel patterns
are within the pattern range specified by “set_simulation_options
-obs_scan_per_cycle_data_limit,” then for every pattern, the tool stores all of the per-cycle data
during fault simulation, and you can write out any legal number of last shift cycles for the
parallel testbenches after fault simulation.
If the parallel patterns are beyond the specified pattern range for storing all per-cycle data, or
there are no patterns containing per-cycle data (“set_simulation_options
-obs_scan_per_cycle_data_limit 0”), by default the tool stores only the data for one shift cycle.
In this case, if you want to simulate parallel patterns with more shift cycles, use the following
command to specify the total number of shift cycles to be stored during the fault simulation:
For integer, specify up to 10% of the total shift length. The tool issues a warning and re-sets the
integer to 10% of the total shift length if you specify a value greater than this threshold.
• B5 — Validates that the observation scan cells are connected in their own scan chain
distinct from other scan cells.
• B6 — Validates the connectivity of the observation scan OPs to the observation scan
cells to ensure that the scan cells can capture data correctly for every shift cycle.
For information, see the B5 and B6 rule descriptions in the Tessent Shell Reference Manual.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
Pattern Mismatch Debugging Based on Scan Cell Monitoring
Once the data is stored in the PatDB, you can use it to detect the mismatches as soon as an
unexpected value reaches the observation scan cell. To enable debugging, set the
SimulationOptions/logic_bist_debug property in the PatternsSpecification wrapper to
monitor_scan_cells. For details, refer to “Debug Based On Scan Cell Monitoring” on page 117.
The first lines of the simulation transcript for this pattern set look as follows. Without enabling
simulation debug, the only failure you would see is the final MISR signature that is scanned out
and compared at the end of the pattern.
With monitor_scan_cells enabled, you can see that the first mismatch was observed in pattern 1
at shift cycle 12 at the scan cell KEY_SCHEDULE_0/sub_67/ts_1_osp_465smodp1_i/
ts_1_logic_0fsffp1_i/Q.
To find the cause of this mismatch, compare the simulation waveform against LogicBIST fault
simulation. First, use the add_schematic_objects command to view the failing flop in the
schematic viewer, and then specify the following command to display the relevant data:
A mismatch reported in shift cycle 0 corresponds to the values at the end of capture phase;
display these values with the “set_gate_report pattern_index n” command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
Pattern Mismatch Debugging for Parallel Patterns
You can now compare the fault simulation data with the testbench simulation. The value
captured in the observation scan cell is 0 in the fault simulation and 1 in the testbench
simulation waveform. Starting at the OBS input of the observation scan cell, you can trace the
difference in the simulations to the fault injection site.
In this example, the failure is easy to identify with minimal tracing. In some cases, you may be
required to trace backwards through many gates to find the point where fault simulation and
Verilog simulation diverged.
The tool also enables generating the parallel testbench with last shift cycles for observation scan
using the “set_simulation_options -obs_scan_last_shift_cycles integer” and “write_patterns
-parallel -parameter_list {SIM_POST_SHIFT integer}” commands. (See “Simulation Options
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
Pattern Mismatch Debugging for Parallel Patterns
for Observation Scan” on page 197). If there are simulation mismatches on these parallel
patterns with shift cycles, you can compare the Verilog simulation results with the
corresponding gate report simulation values (“set_gate_report pattern_index
-obs_scan_unload_shift_cycle”) for tracing the cause of the simulation mismatches.
For observation scan parallel patterns that simulate shift cycles, the load values of observation
scan chains for the given last shift cycle are obtained from the corresponding scan cells’ content
stored during fault simulation. The tool then performs Verilog simulation on the following shift
and capture cycles after loading the values.
Because each shift cycle simulation depends on the simulation results of the previous cycle, the
parallel testbench might not contain enough cycles for tracing the cause of the simulation
mismatches. The tool does not enable generating a parallel testbench with too many shift cycles:
only 10% of the total shift length for parallel patterns. For information, see the description of
“set_simulation_options -obs_scan_last_shift_cycles.”
In this case, either increase the last shift cycles for the parallel patterns (within the maximum
legal range) to see if you can trace to the cause to the mismatches. Or use serial patterns with
more complete simulation results. See “Parallel Versus Serial Patterns” in the Tessent Scan and
ATPG User’s Manual.
Although the tool does not enable generating the parallel testbench with complete shift cycles,
generating parallel patterns with some last shift cycles is still a good idea because parallel
patterns simulate more quickly than serial patterns. Simulating parallel patterns with a number
of shift cycles provides a way to quickly check if a certain number of the shift cycles are
simulated as expected.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
Two-Phase OST Flow
The two-phase LBIST OST recovers some of the fault coverage lost because of static chain
masking required in observation scan chains. The following topics explain how the flow works:
Flow Overview
In the presence of Xs, the LBIST OST flow is performed in two phases for better X-tolerance.
If the hardware is available and if the core instance parameter is set to a non-zero value, the tool
runs the LBIST fault simulation in two phases:
• During the first phase, obs_scan is turned off (observation scan cells act as regular
observe points). The causes the tool to perform fault simulation and apply static chain
masking on any scan chains that capture Xs.
• In the second phase, obs_scan is enabled, and the tool performs fault simulation without
any capture events. This means that you are only shifting data through the regular scan
chains and letting the observation scan cells capture responses during the shift cycles.
With the assumption that no Xs are generated during the shifting, you only need to retain
the chain masks for regular scan chains without introducing any new chain masks on
observation scan chains. Consequently, the second phase has full observability during
the simulation of observation scan shift cycles. This optimizes pattern count with respect
to test coverage while retaining some of the benefits of using the basic LBIST OST
flow.
Note
The required chain masks should be determined before initiating the two-phase run.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
Hardware Changes
Hardware Changes
For the two-phase LBIST OST flow, the tool adds an enable signal and generates a dedicated
pattern counter. The tool also adds some logic to control the capture_per_cycle_static_en signal
for observation scan, and for preventing the capture events during the second phase.
The following topics provide detailed information on the hardware changes required for an
LBIST OST two-phase run:
After the first phase is complete, the tool sets the capture_per_cycle_dynamic_en signal to “1”,
and switches to run the second phase controlled by the generated pattern counter. When the tool
switches to the second phase, the LBIST controller also prevents any capture events during the
second phase by shutting off the clock pulses from the capture procedure.
The following figure shows how the patterns are determined with decrements of vector_cnt
inside the LBIST controller.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
Two-Phase Fault Simulation
Note
You can perform a single-phase LBIST run with OST turned off to collect all the X
locations and decide which scan chains must be masked.
• The PRPG advances similar to how it does for single-phase LBIST/LBIST OST pattern
generation.
• The MISR keeps accumulating throughout both the phases.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
External Interface
External Interface
You must define the captures per cycle of the LBIST OST two-phase flow to enable the
hardware and to run fault simulations.
The following topics explain in detail what changes you must make to the external interface for
two-phase LBIST OST runs:
DftSpecification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Fault Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
DftSpecification
The DftSpecification enables the hardware for the two-phase LBIST OST run.
To enable the hardware for the LBIST OST two-phase run, use the DftSpecification/LogicBist/
Controller/CapturePerCycleShiftOnlyPatternCount wrapper, only if the
“capture_per_cycle_static_en” signal is present.
Note
The default value for pattern count in the external hardware is always 0.
Fault Simulation
This section describes the modifications made to the external interfaces for fault simulation in
two-phase LBIST OST runs.
• If this parameter is “0” or not specified, the tool performs a single-phase LBIST OST
run (single phase with capture events).
• If this parameter is set to a non-zero value, the tool determines the number of patterns to
simulate during the first phase by taking the total number of patterns specified with the
set_random_patterns command minus any specified pattern numbers for chain test,
asynchronous set/reset, and the number of patterns for the second phase.
Tip
We recommend using the same number of patterns for both the phases.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Observation Scan Technology
External Interface
Example
The following code shows how you can customize the DftSpecification for the LBIST OST
two-phase flow. In this example, the read_config_data command enables the generation of the
hardware for the LBIST OST two-phase run during IP creation:
During fault simulation, use the following commands to specify 500 LBIST patterns (without
OST) for the first phase, and necessary chain masking determined from any prior runs along
with 500 LBIST OST (no capture) patterns for the second phase:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 13
Independent Hybrid TK/LBIST Insertion Flow
The insertion of the LBIST controller and EDT controllers has been decoupled to allow you to
insert LBIST-ready EDT separately from the LogicBIST. This chapter describes the features
that support this enhanced flow. Hybrid EDT/LBIST controller and hybrid EDT controller
references are used interchangeably.
• The LBIST-ready EDT controllers can now be added to child design levels making them
easier to reuse as sub-blocks in other designs.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Independent Insertion Flow Overview
• EDT controllers are now directly on the IJTAG network instead of being on a sub-
network of the LBIST controller’s IJTAG network.
• Simplified single chain mode using the existing IJTAG network chains instead of having
a separate IJTAG interface for LBIST.
• Sub-blocks now reuse edt_clock/shift_capture_clock gaters so that OCC and EDT
receive the expected clock pulses.
• New DFT signals provide control signals from the LBIST controller to the sub-blocks.
These signals enable communication between the two passes when inserting LBIST-
ready blocks and the LBIST controller.
• LBIST load/unload waveforms are now fully programmable during pattern retargeting.
• The LBIST controller now allows OCCs with a shift_en capture trigger. The value
“auto” for the property DftSpecification/OCC/capture_trigger now resolves to
capture_en when you specify an LpctType3 wrapper in the same insertion pass;
otherwise, it resolves to shift_en.
Figure 13-1 illustrates the resulting block diagram after independent insertion. The EDT
controller has been inserted in Block, which is in a lower design level, and the LBIST controller
and another hybrid EDT controller have been inserted in the current physical block.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Independent Insertion Flow Overview
Block contains an LBIST-ready EDT controller at a different design level, and the LBIST
controller supplies the following new dynamic DFT control signals: lbist_reset, lbist_prpg_en,
and lbist_misr_accumulate_en. The LBIST controller port lbist_test_clock_out drives the
test_clock port on Block, and the LBIST controller port edt_update_out drives the edt_update
port on Block.
Figure 13-2 shows the contents of Block. Typically, when the LBIST controller is inserted in
the same insertion pass as the EDT controller, the shift_capture_clock and edt_clock gaters are
moved within the LBIST controller. However, within Block, these gaters remain because there
is no LBIST controller to move them into. The LBIST controller reuses these gaters to ensure
that OCC and EDT get the correct clock waveforms.
Figure 13-3 shows the contents of the LBIST controller. The lbist_test_clock_out port has its
own clock gater. During LBIST mode, the LBIST controller pulses the clock during shift,
capture, and when the edt_lbist_clock needs a single pulse after capture. The clock gaters in
Block use the test_clock (from lbist_test_clock_out), edt_update, and scan_en signals. This
ensures that all the desired pulses reach the OCC and EDT.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Tessent EDT and LogicBIST IP Generation
The single chain mode for the TK/LBIST flow is implemented using the IJTAG network that is
created when inserting the EDT and LogicBIST controllers. The IJTAG network of the EDT
uses a SIB that allows access to all scan cells associated with the particular EDT for the single
chain mode. The IJTAG network for EDT controllers is merged with the child-level IJTAG
network for other instruments such as MBIST.
In the independent insertion flow, the single chain mode for LBIST pattern diagnosis is
simplified so that the Single Chain Mode Logic module is not needed to concatenate all of the
EDT controllers short chains into a single chain. With this flow, each EDT controller contains a
SIB that provides access to its short chains through the IJTAG network. The DftSpecification
for the EDT single_bypass_chain property determines whether or not the EDT uses the single
chain mode. Setting the single_bypass_chain property to on indicates that a single bypass chain
is present and generates new single chain mode logic in the EDT. All independently generated
EDT controllers should have the single_bypass_chain property enabled in order to use the
single chain mode for LBIST pattern diagnosis.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Tessent EDT and LogicBIST IP Generation
There is no TAP controller at the core level. The tool integrates the access mechanism in the
IJTAG network at the core level. This step of the flow creates new core-level pins
corresponding to the Segment Insertion Bit (SIB) control signals, tck, and LBIST scan I/O. The
core-level Verilog patterns operate these pins directly. These pins connect to the TAP controller
at the top level of the design. See “Top-Level ICL Network Integration” on page 1 for more
information.
As part of IP generation, the tool writes the following files to the TSDB:
• ICL file — Consists of the ICL module description for the LBIST controller, the NCP
index decoder, and all EDT and LogicBIST blocks that the controller tests.
• PDL file — Contains iProcs at the core level that use the ICL modules.
During IP generation, the generated ICL file describes only the LogicBIST, NCP index decoder,
and EDT modules. The extracted ICL file includes the core-level pin names and connectivity
found from the core-level design netlist. The tool uses the extracted ICL file during top-level
pattern generation. See “ICL Extraction and Pattern Retargeting” on page 1 for more
information. You can write Verilog patterns in this step and simulate them to verify the test
operation at the core level.
For complete information, see “EDT and LogicBIST IP Generation” on page 1. During
integration with the top level, the tool adds new top-level test pins or uses existing top-level test
pins controlled internally by the EDT and LogicBIST IP.
Logic Synthesis
You must synthesize all of the EDT and LogicBIST blocks and the common LogicBIST
controller. Synthesis is fully automated. In the gate-level flow, you can use the run_synthesis
command to synthesize the controllers and the test logic in the TSDB and integrate them into
the gate-level design. When the run_synthesis command completes successfully, it creates a
concatenated netlist of the design that contains the synthesized test logic and modified design
modules and places them in the dft_inserted_designs directory of the TSDB.
In the RTL-level flow, you can use the run_synthesis command to synthesize the test logic
inserted by the tool, but the netlists are not concatenated.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
EDT and LogicBIST IP Generation Overview (Independent Insertion Flow)
Each EDT/LogicBIST controller contains three SIBs. They provide access to the PRPG, EDT
chain mask register, and MISR, respectively. The EDT SIBs are clocked by tck, and the data
registers they control are clocked by edt_clock. The tool adds a lockup cell to avoid clock skew
between these two clock domains.
For each specified NCP, an 8-bit register is created and inserted on the ICL network. These
registers are loaded at runtime so that the proportion of patterns applied for each NCP is
programmable. When an integer percentage is provided during IP creation, the NCP register
values are reset to the specified values if ijtag reset is asserted. Otherwise, these registers are
reset to equal percentages across all NCPs. For more information, see Generating the EDT and
LogicBIST IP.
The following figure shows the IJTAG network in a hybrid EDT/LBIST-inserted design. In this
case, the EDT controllers can exist in the lower level block. Each EDT controller adds their scan
chains to the IJTAG network using a SIB.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
LBIST-Related Clock Signals for the Independent Insertion Flow
Figure 13-4. SIBs Insertion and Integration of Cores for the Independent
Insertion Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
LBIST-Related Clock Signals for the Independent Insertion Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
LBIST-Related Clock Signals for the Independent Insertion Flow
Figure 13-7 shows the design after the LBIST controller is inserted with OCC, where the OCC
uses capture_en as the trigger to generate the programmable capture pulses. Use only when you
have a third-party OCC that uses capture_en, or if the design uses Low Pin Count Test
controllers.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
LBIST Load/Unload Timing
The required amount of setup and hold timing for at-speed signals is difficult to predict until
you have implemented the clock trees and high-fanout distribution buffering schemes during the
layout implementation step. After synthesis, those are still ideal nets, making it impossible to
get a precise timing relationship between the clock and the controls. To account for this, use the
set_load_unload_timing_options command to program the timing for the LogicBIST controller.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
LBIST Load/Unload Timing
During the LBIST controller operation, the tool can apply a total of 2, 4, or 8 cycles determined
by the max_cycles_per_signal in the SetLoadUnloadTimingOptions wrapper, before and after
the capture clocks are pulsed to help with the timing closure of the test logic. By default, the
lowest possible number of dead cycles are used. There is one dead cycle during shift pause, and
two in capture pause. This gives a setup margin of 0 extra cycles and a scan_en hold margin of
one cycle. These are hard-coded values.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Timing Constraints (SDC)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
LBIST-Ready Blocks
You can create LBIST-ready blocks with edt_clock and shift_capture_clock provided by
primary inputs, or generated internally from the test_clock signal. Depending on the clocking
scheme and whether the block contains OCC, there are several valid LBIST-ready block
configurations.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
Figure 13-11. LBIST-Ready Block With test_clock Clocking Scheme and OCC
Hierarchical STA
You can create LBIST-ready physical blocks in the independent insertion flow with the LBIST
controller inserted in a parent block. This requires a set of procedures that can retarget SDC
constraints for the hybrid EDT logic in the individual child physical blocks.
All physical blocks use the same set of timing parameters (for example, the number of scan_en,
edt_update, prpg_en, and misr_en extra LBIST setup and hold cycles) specified for the current
design by the set_load_unload_timing_options command.
If your flow requires child LBIST-ready physical block instance netlists, replace your call to the
LBIST modal procedures with their “*_with_sub_PBs” equivalents (See “SDC Procedures for
Hierarchical STA With Independent Insertion Flow” on page 232) to enable the blocks
associated with the LBIST controller. To use these procedures, you must load the full or partial
(graybox) netlists of the sub-physical LBIST-ready blocks.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
The SDC extraction infrastructure at the parent level with the LBIST controller provides an
SDC procedure to prepare all sub-physical blocks and any nested physical blocks for LBIST-
related static timing analysis.
See Figure 13-12 and Figure 13-13 for an example of LBIST-ready physical blocks controlled
by the LBIST controller in the parent block.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
Hierarchical STA support is also provided for designs where the child physical block has a
LBIST controller and a separate hybrid EDT for its wrapper chains, and the parent level LBIST
controller is associated with the ext_mode hybrid EDT from core as shown in Figure 13-14. In
this case, the call to the LBIST modal procedures are replaced with their “*_with_sub_PBs”
equivalents. See “SDC Procedures for Hierarchical STA With Independent Insertion Flow” on
page 232 for details.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
Figure 13-14. Hybrid EDT for External Mode Controlled by Parent-Level LBIST
This flow is also supported in the independent insertion flow. The hierarchical STA of LBIST-
related modes does not require any special procedures. You can perform STA independently for
the sub-physical block and for the parent level by calling the procedure
tessent_set_ltest_lower_pbs_external_mode.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
tessent_set_ltest_non_modal
This procedure provides SDC timing constraints to add to combined functional DFT non-modal
timing scripts for one-pass synthesis or layout.
Note
Before running this procedure for an LBIST-ready block, you must specify the
lbist_shift_clock parameters by setting the <tessent_lbist_shift_clock_name> and
<tessent_lbist_shift_clock_period> variables. These variables define the name and period of
the clock that the procedure adds on the appropriate ports of the LBIST-ready block.
When scan cells are clocked by the functional clock input as shown in Figure 13-9 on page 220,
the procedure defines lbist_shift_clock on the top-level ports you specify with the
<tessent_lbist_clock_source_list> global variable.
The independent insertion flow adds the following constraints related to LBIST mode:
• Propagate both fast lbist_shift_clock and slow test_clock to the design cells, and block
interactions between them.
• Add false paths from the EDT mask registers to all clock domains except TCK.
• When CCM is implemented with the EDT clock as the CCM clock, add false paths
from:
o the EDT SIBs.
o single chain mode logic SIBs.
• Disable clock gating checks for MUXes that inject TCK.
• Disable TCK propagation through the edt_lbist clock path of the inject_tck mux.
• Add multi-cycle paths (MCPs) from the scan enable port to the design scan cells using
the fast lbist_shift_clock. The tool determines the number of cycles with the
set_load_unload_timing_options procedure. The tool adds this MCP in addition to the
scan_en MCP for ATPG that uses the same port but the slow test_clock instead.
• Add MCPs from ports that provide the prpg_en, misr_en, LogicBIST async reset, and
edt_update signals to the hybrid EDT blocks.
tessent_set_ltest_modal_shift
This procedure sets the circuit in scan shift mode. The independent insertion flow adds the
following constraints related to LBIST mode:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
tessent_set_ltest_modal_edt_fast_capture
This procedure sets the circuit in EDT fast capture mode. The independent insertion flow adds
the following constraints related to LBIST mode:
tessent_set_ltest_modal_edt_slow_capture
This procedure sets the circuit in EDT slow capture mode. The independent insertion flow adds
the following constraints related to LBIST mode:
tessent_set_ltest_create_clocks
This procedure creates the slow-speed test clocks used during scan mode. The independent
insertion flow adds the following constraint related to LBIST mode:
• Create a slow test clock on the ports that are specified with the
tessent_lbist_clock_source_list global variable. This functionality is needed when the
scan cells are clocked by functional clocks as shown in Figure 13-9 on page 220.
tessent_set_ijtag_non_modal
This procedure creates the clock for TCK and configures input and output delays for ports
created at the sub_block and physical_block design levels. The independent insertion flow adds
the following constraints related to LBIST mode:
• Defines the ijtag_tck clock on the appropriate ports of the lbist-ready block (for
example, test_clock, shift_capture_clock, and edt_clock).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
• Defines the ports to be clocked by ijtag_tck when the scan cells are clocked by a
functional clock input. These ports are identified with the
<tessent_lbist_clock_source_list> global variable.
Note
Before running the tessent_set_ltest_modal_shift and tessent_set_ltest_modal_capture
procedures for LBIST-ready blocks in STA using the fast lbist_shift_clock, you must
specify the lbist_shift_clock parameters by setting the tessent_lbist_shift_clock_name and
tessent_lbist_shift_clock_period variables. These variables define the name and period of the
clock that the procedure adds on the appropriate ports of the LBIST-ready block.
tessent_set_ltest_modal_lbist_shift
This procedure sets the circuit in LBIST shift mode. You can configure the timing analysis for
this mode to run with either shift_clock_src (by default) or test_clock.
To run this procedure with timing analysis for shift_clock_src, set the
tessent_lbist_shift_clock_name and tessent_lbist_shift_clock_period variables before invoking
the procedure. These variables define the name and period of the clock that will be
automatically added on the appropriate ports of the LBIST-ready block.
When the scan cells are clocked by functional clock inputs (see Figure 13-9 on page 220), the
SDC procedure must define the clock signals (slow test_clock or fast lbist_shift_clock) on the
top level ports that you specify with the tessent_lbist_clock_source_list global variable.
• Adds multi-cycle path exceptions on dynamic signals from the ports related to LBIST
signals to design scan cells and hybrid EDT blocks. These include scan enable, prpg_en,
misr_en, LogicBIST async reset, and edt_update.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
tessent_set_ltest_modal_lbist_capture
This procedure sets the circuit in lbist capture mode. Configure the timing analysis for this
mode as described for tessent_set_ltest_modal_lbist_shift. The procedure does the following:
tessent_set_ltest_modal_lbist_setup
This mode propagates TCK through the IJTAG network in the hybrid EDT blocks to time the
LogicBIST test_setup paths that initialize registers such as PRPG and edt_chain_mask, as well
as test_end paths that read the MISR signature.
This mode does not propagate TCK to the design scan cells. It is only intended to check the
IJTAG network paths.
• Adds multi-cycle path exceptions on dynamic signals from the ports related to LBIST
signals to design scan cells and hybrid EDT blocks. These include prpg_en, misr_en,
LogicBIST async reset, and edt_update.
• Adds case analysis to set lbist_en to active.
• Sets case analysis to disable the EDT controller chain mode.
• Sets case analysis to disable LBIST single chain mode concatenation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
tessent_set_ltest_modal_lbist_single_chain
This mode is available when single chain mode logic that enables LogicBIST diagnosis is
enabled during IP generation. This mode propagates TCK through the IJTAG network paths
and design scan cells, including the concatenation of the internal scan chains for single-chain
shifting. The LogicBIST scan enable is constrained to 1 to time the shift paths in the design only
with the TCK signal.
• Sets case analysis to constrain the LogicBist mode scan enable signal to on.
• Adds multi-cycle path exceptions on dynamic signals from the ports related to LBIST
signals to design scan cells and hybrid EDT blocks. These include prpg_en, misr_en,
LogicBIST async reset, and edt_update.
• Adds case analysis to set lbist_en to active.
• Adds false paths from the EDT mask registers.
• Sets case analysis to disable the EDT controller chain mode.
• Sets case analysis to enable LBIST single chain mode concatenation.
• Sets case analysis to propagate edt_lbist clock through the inject_tck MUX.
• Adds false paths from all static DFT signals defined on ports, except lbist_en.
tessent_set_ltest_modal_lbist_controller_chain
This mode is available when the controller chain mode (CCM) logic is enabled during IP
generation. The clock for this mode is either TCK, test_clock, or edt_clock, depending on the
clocking scheme specified during IP creation. This mode tests only the LogicBIST and hybrid
EDT controller blocks. Clocks are not propagated to design scan cells.
• Sets input and output pin delays from the top-level ports to EDT blocks.
• Blocks propagation to scan cells by disabling timing for ports that provide the source of
shift_capture_clock. When the scan cells are clocked by functional clock inputs as
shown in Figure 13-9 on page 220, the procedure disables timing on the top level ports
specified by the tessent_lbist_clock_source_list variable.
• Sets case analysis to enable the EDT controller chain mode.
• Sets case analysis to disable LBIST single chain mode concatenation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
set_load_unload_timing_options
This procedure sets global Tcl timing variable values used in LBIST constraints. These include
extra setup and hold clock cycles for scan_en, edt_update, prpg_en, and misr_en.
The LBIST-related modal STA procedures generated for designs where not all hybrid EDTs are
associated with the LBIST controller from the current design level set different constraints for
EDTs. For the unassociated EDTs, there are applied constraints setting them into the inactive
state. This rule applies for all modal lbist procedures except for
<ltest_prefix>_modal_lbist_controller_chain, which includes the same constraints for all
available hybrid EDTs because this mode is not controlled by the LBIST controller but rather by
a tester.
• Sets all wrapped sub-physical blocks to internal mode if the corresponding DFT signals
are present.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
o For tessent_set_ltest_lower_pbs_logicbist_internal_mode:
• int_ltest_en = “1”
• int_mode = “1”
• ext_ltest_en = “0”
• ext_mode = “0”
o For tessent_set_ltest_lower_pbs_logicbist_external_mode:
• int_ltest_en = “0”
• int_mode = “0”
• ext_ltest_en = “1”
• ext_mode = “1”
• ext_lbist_en = “1”
• Disables the clock gating checks on the clock multiplexers for cascaded OCCs from sub-
physical blocks (OCCs for which the fast_clock input is connected to the parent-level
OCC output). Also, timing is disabled on the slow_clock paths of these OCCs because
they are inactive during LBIST.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SDC File Contents
update_timing
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating EDT and LogicBIST IP for Independent Insertion
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready EDT Child Blocks Without OCC
2. Load the cell library and the design from the first insertion pass:
read_cell_library tessent.lib
read_design Block1 -design_id rtl1
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready EDT Child Blocks Without OCC
8. Create the IP and insert the hardware described with the DftSpecification into the
design, and update the ICL description with extract ICL:
process_dft_specification
extract_icl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready EDT Child Blocks Without OCC
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready EDT Child Blocks Without OCC
5. Run DRC:
check_design_rules
6. Create the DftSpecification for parent level the OCC, LBIST, and EDT:
set spec [create_dft_specification -sri_sib_list {occ lbist edt}]
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready EDT Child Blocks Without OCC
7. Insert the LBIST controller together with EDT in the parent-level block:
read_config_data -in_wrapper $spec -from_string {
Occ {
ijtag_host_interface : Sib(occ);
static_clock_control: external;
Controller(clk1) {
clock_intercept_node : clk1;
}
}
EDT {
ijtag_host_interface : Sib(edt);
Controller(c3) {
scan_chain_count : 80;
input_channel_count : 2;
output_channel_count : 2;
longest_chain_range : 2, 80;
LogicBistOptions {
present : on;
misr_input_ratio :1;
}
}
}
LogicBist {
ijtag_host_interface : Sib(lbist);
Controller(ctrl_lbist) {
burn_in : on;
Connections {
shift_clock_src : lbist_clock;
}
ShiftCycles { max : 80;}
CaptureCycles {max : 3;}
PatternCount {max : 10000;}
WarmupPatternCount {max : 255;}
8. Create the IP and insert the hardware described with the DftSpecification into the
design, and update the ICL:
process_dft_specification
extract_icl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready EDT Child Blocks Without OCC
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready EDT Child Blocks With OCC
2. Load the cell library and the design from the first insertion pass:
read_cell_library tessent.lib
read_design Block1 -design_id rtl1
5. Add the DFT signals needed to create the clock gaters that work with the LBIST
controller, create shift_capture_clock and edt_clock from other signals:
add_dft_signals edt_clock -create_from_other_signals
add_dft_signals shift_capture_clock -create_from_other_signals
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready EDT Child Blocks With OCC
7. Create the DftSpecification for the EDT child block with the OCC:
set spec [create_dft_specification -sri_sib_list {edt occ}]
8. Specify the LBIST-ready EDT and OCC for the child block:
read_config_data -in_wrapper $spec -from_string {
Occ {
ijtag_host_interface : Sib(occ);
static_clock_control: external;
Controller(clk) {
clock_intercept_node : clk;
leaf_instance_name : occ_in_core;
Connections {
clock_sequence : clk_seq[%d];
}
}
}
EDT {
ijtag_host_interface : Sib(edt);
LogicBistOptions {
present: on;
ShiftCycles {
max : 80;
hardware_default : 60;
}
WarmupPatternCount {
max : 255;
}
// seed declaration
prpg_reference_seed : 'h1234;
}
Controller(c1) {
scan_chain_count : 80;
input_channel_count : 2;
output_channel_count : 2;
longest_chain_range : 2, 80;
}
}
}
9. Create the IP and insert the hardware described with the DftSpecification into the
design, and update the ICL:
process_dft_specification
extract_icl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready EDT Child Blocks With OCC
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready EDT Child Blocks With OCC
5. Run DRC:
check_design_rules
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready EDT Child Blocks With OCC
7. Insert the LBIST controller together with EDT and OCC in the parent-level block:
read_config_data -in_wrapper $spec -from_string {
Occ {
ijtag_host_interface : Sib(occ);
static_clock_control: external;
Controller(clk1) {
clock_intercept_node : clk1;
}
}
EDT {
ijtag_host_interface : Sib(edt);
Controller(c3) {
scan_chain_count : 80;
input_channel_count : 2;
output_channel_count : 2;
longest_chain_range : 2, 80;
LogicBistOptions {
present : on;
misr_input_ratio :1;
}
}
}
LogicBist {
ijtag_host_interface : Sib(lbist);
Controller(ctrl_lbist) {
burn_in : on;
Connections {
shift_clock_src : lbist_clock;
}
ShiftCycles { max : 80;}
CaptureCycles {max : 3;}
PatternCount {max : 10000;}
WarmupPatternCount {max : 255;}
8. Create the IP and insert the hardware described with the DftSpecification into the
design, and update the ICL:
process_dft_specification
extract_icl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready EDT Child Blocks With OCC
Results
You have generated the LogicBIST IP for the design at the parent level. Figure 13-19 shows the
design after the LBIST controller has been inserted and connected with the LBIST-ready blocks
and the EDT specified with the LogicBIST controller in the second pass.
Figure 13-19. LBIST Controller With OCC Inserted After Second Pass
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready Grandchild Blocks with OCC
2. Load the cell library and the design from the first insertion pass:
read_cell_library tessent.lib
read_design Block1 -design_id rtl1
5. Add the DFT signals needed to create the clock gaters that work with the LBIST
controller, creating shift_capture_clock and edt_clock from other signals:
add_dft_signals edt_clock -create_from_other_signals
add_dft_signals shift_capture_clock -create_from_other_signals
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready Grandchild Blocks with OCC
7. Create the DftSpecification for the EDT grandchild block with the OCC:
set spec [create_dft_specification -sri_sib_list {edt occ}]
8. Specify the LBIST-ready EDT and OCC for the grandchild block:
read_config_data -in_wrapper $spec -from_string {
Occ {
ijtag_host_interface : Sib(occ);
static_clock_control: external;
Controller(clk) {
clock_intercept_node : clk;
leaf_instance_name : occ_in_core;
Connections {
clock_sequence : clk_seq[%d];
}
}
}
EDT {
ijtag_host_interface : Sib(edt);
LogicBistOptions {
present: on;
ShiftCycles {
max : 80;
hardware_default : 60;
}
WarmupPatternCount {
max : 255;
}
// seed declaration
prpg_reference_seed : 'h1234;
}
Controller(c1) {
scan_chain_count : 80;
input_channel_count : 2;
output_channel_count : 2;
longest_chain_range : 2, 80;
}
}
}
9. Create the IP, insert the hardware described with the DftSpecification into the design,
and update the ICL:
process_dft_specification
extract_icl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready Grandchild Blocks with OCC
Results
You have generated a design netlist with the instantiation of the EDT logic and a separate RTL
file.
5. Run DRC:
check_design_rules
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready Grandchild Blocks with OCC
8. Create the IP and insert the hardware described with the DftSpecification into the
design, and update the ICL:
process_dft_specification
extract_icl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready Grandchild Blocks with OCC
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready Grandchild Blocks with OCC
Procedure
1. Load the design, the child block, and the grandchild block:
set_context dft -rtl -design_id rtl2
read_design parentblock -design_id rtl1
read_design GrandChildBlock1 -design_id rtl2 -view interface
read_design ChildBlock1 -design_id rtl2 -view interface
5. Run DRC:
check_design_rules
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready Grandchild Blocks with OCC
7. Insert the LBIST controller together with the EDT and OCC in the parent-level block:
Occ {
ijtag_host_interface : Sib(occ);
static_clock_control: external;
Controller(clk1) {
clock_intercept_node : clk1;
}
}
EDT {
ijtag_host_interface : Sib(edt);
Controller(c3) {
scan_chain_count : 80;
input_channel_count : 2;
output_channel_count : 2;
longest_chain_range : 2, 80;
LogicBistOptions {
present : on;
misr_input_ratio :1;
}
}
}
LogicBist {
ijtag_host_interface : Sib(lbist);
Controller(ctrl_lbist) {
burn_in : on;
Connections {
shift_clock_src : lbist_clock;
}
ShiftCycles { max : 80;}
CaptureCycles {max : 3;}
PatternCount {max : 10000;}
WarmupPatternCount {max : 255;}
#ChildBlock1 is module name and child_block1 is instance name in the parent
DesignInstance(child_block1) {}
}
NcpIndexDecoder {
ncp(first) {
cycle(0): Occ(clk1);
cycle(1): Occ(clk1);
}
ncp(second) {
cycle(0): Occ(clk1);
cycle(1): child_block1/grand_child_block1/occ_in_core;
}
}
}
}
8. Create the IP, insert the hardware described with the DftSpecification into the design,
and update the ICL:
process_dft_specification
extract_icl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating LogicBIST-Ready Grandchild Blocks with OCC
Results
You have generated a netlist for all three levels of the design with the instantiation of the EDT
logic and a separate RTL file.
Figure 13-21 shows an example of the LBIST-ready grandparent, child (intermediate), and
grandchild blocks with separate OCCs and LBIST-ready EDTs.
Figure 13-21. LBIST-Ready Grandparent, Intermediate, and Grandchild Block
With OCC
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
SSN and Hybrid TK/LBIST Insertion Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Independent Insertion With SSN Flow Overview
Figure 13-23 shows the contents of the child Block. Typically there is no OCC in an unwrapped
Block. Use the DftSpecification/SSN/clock_sources_with_no_local_occs property to insert a
clock multiplexer on the clock source. Specifying this property ensures the shift clock generated
in the local SSH reach its scan cells. This also guarantees that the capture clock pulses generated
in the external OCC reach the scan cells. See the SSN wrapper description in the Tessent Shell
Reference Manual for more information.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating SSN ScanHost IP for Independent Insertion
Independently Inserting the LogicBIST-Ready EDT and SSH in a Child Block . . . . . 258
Generating the LogicBIST, EDT, OCC, and SSH in the Parent Level . . . . . . . . . . . . . 261
Using ssn_bus_clock as test_clock Bypass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating SSN ScanHost IP for Independent Insertion
Prerequisites
• RTL gate-level netlist for the child block
• Output generated by the MemoryBIST insertion pass
Procedure
1. Load the design for the second insertion pass of the current design level using RTL:
set_context dft -rtl -design_id rtl2
2. Load the cell library and the design from the first insertion pass:
read_cell_library tessent.lib
read_design Block -design_id rtl1
5. Add the DFT signals needed to create the clock gaters that work with the external
LBIST controller by creating shift_capture_clock and edt_clock from other signals:
add_dft_signals edt_clock –create_from_other_signals
add_dft_signals shift_capture_clock –create_from_other_signals
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating SSN ScanHost IP for Independent Insertion
9. Create the IP and insert the hardware described with the DftSpecification into the
design, and update the IJTAG:
process_dft_specification
extract_icl
Results
You have generated a design netlist with the instantiation of the EDT and SSH logic and a
separate RTL file. Figure 13-25 shows the SSN-equipped LBIST-ready child block that is
created in this example. This child block contains TK/LBIST EDT, SSN ScanHost, and all of
the necessary ports with respective nets to enable control by the LBIST controller and SSN
ATPG pattern generation. You are now ready to create the parent-level LogicBIST controller.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating SSN ScanHost IP for Independent Insertion
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating SSN ScanHost IP for Independent Insertion
5. Run DRC:
check_design_rules
6. Create the DftSpecification for parent level the OCC, LBIST, SSN, and EDT:
set spec [create_dft_specification -sri_sib_list {occ lbist edt ssn}]
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating SSN ScanHost IP for Independent Insertion
7. Insert the LBIST controller together with EDT and SSH in the parent-level block:
read_config_data -in_wrapper $spec -from_string {
SSN {
Datapath(1) {
ijtag_host_interface : Sib(ssn);
output_bus_width : 48;
ScanHost(1) {
ChainGroup (edt) {
}
}
// Block is the module name and block1 is the instance name in the parent
DesignInstance(block1) {
}
}
}
Occ {
ijtag_host_interface : Sib(occ);
static_clock_control: external;
Controller(clk1) {
clock_intercept_node : clk1;
}
}
EDT {
ijtag_host_interface : Sib(edt);
Controller(c3) {
scan_chain_count : 80;
input_channel_count : 2;
output_channel_count : 2;
longest_chain_range : 2, 80;
LogicBistOptions {
present : on;
}
}
}
LogicBist {
ijtag_host_interface : Sib(lbist);
Controller(ctrl_lbist) {
burn_in : on;
Connections {
shift_clock_src : lbist_clock;
}
ShiftCycles { max : 80;}
CaptureCycles {max : 3;}
PatternCount {max : 10000;}
WarmupPatternCount {max : 255;}
//Block is module name and block1 is instance name in the parent
DesignInstance(block1) {}
}
NcpIndexDecoder {
ncp(first) {
cycle(0): Occ(clk1);
cycle(1): Occ(clk1);
}
ncp(second) {
cycle(0): Occ(clk1);
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating SSN ScanHost IP for Independent Insertion
}
}
8. Create the IP and insert the hardware described with the DftSpecification into the
design, and extract ICL:
process_dft_specification
extract_icl
Results
You have generated the LogicBIST IP for the design at the parent level. Figure 13-26shows the
DFT IP inserted and connected. For simplicity, the SSN bus is not shown. Note in this example,
OCC is only at the parent level.
Figure 13-26. Independent Insertion With SSN and OCC at Parent Level
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Generating SSN ScanHost IP for Independent Insertion
page 261 with ssn_bus_clock specified to be the source of the test_clock DFT signal and the
SSH property set to on:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Top-Level LBIST and External Test Mode in Child Cores
Figure 13-29 shows such a design after IP insertion. The core-level OCCs are disabled, and the
wrapper chains are driven by the top-level OCC. The core-level OCCs are transparent, meaning
that the top-level LBIST can check the external mode of the child cores using the top-level
OCC.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Child-Level OCC Active During External Test
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Child-Level OCC Active During External Test
The embedded PLL in the Core_1 module generates the clock for the design. To generate the
LBIST and NCPID instruments in the Core_1 module and reuse the internal OCC driving the
wrapper chains for internal-mode LBIST, add the ext_lbist_en DFT signals:
The tool uses this command to generate the appropriate hardware for the LBIST controller and
the NCP index decoder.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Child-Level OCC Active During External Test
OCC {
ijtag_host_interface : Sib(occ);
static_clock_control : external;
shift_only_mode : on;
Controller(clk_controller) {
clock_intercept_node : PLL/out;
}
}
LogicBist {
ijtag_host_interface : Sib(lbist) ;
Controller(lbist_1) {
// extest_lbist : auto; -> resolves to ‘on’ due to DftSignal
// ext_lbist_en
ShiftCycles { max : 100 ; }
CaptureCycles { max : 10 ; }
PatternCount { max : 16384; }
WarmupPatternCount { max: 31; }
Connections {
tck : ijtag_tck ; // default: tck
shift_clock_src : lbist_clock;
ext_lbist_en : DftSignalOrTiedLow(ext_lbist_en); // -> default
}
Interface {
ext_lbist_en : my_ext_lbist_en;
}
}
NcpIndexDecoder {
// extest_lbist : auto; -> resolves to ‘on’ due to DftSignal
// ext_lbist_en
Connections {
ext_ltest_en : DftSignalOrTiedLow(ext_ltest_en) ;
ExtestClockSequence {
Occ(clk_controller) : ext_occ%d_clock_sequence[%d] ;
// default option which ensures that the corresponding
// port will be created at the boundary of the Core_1
}
}
Interface {
ext_clock_sequence : my_ext_occ%d_clock_sequence ;
}
Ncp(pulse_x1a) {
cycle(0) : Occ(clk_controller);
}
Ncp(pulse_x2) {
cycle(0) : Occ(clk_controller);
cycle(1) : Occ(clk_controller);
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Child-Level OCC Active During External Test
The tool creates the instrumentation of Core_2 without the extest_lbist functionality. To keep
the selected OCC active during top-level LBIST, insert the necessary instruments using either
of the following methods:
• In the interface view method, the tool loads only the interface view of the Core_1
design. To add the required OCC, use the NcpIndexDecoder/DesignInstance() wrapper
to specify its parent instance. This is the preferred method.
• In the netlist method, you must load the Core_1 design with its netlist. Use the
read_design command with the -view option set to “full” or “scan_graybox” to load the
design with its full or partial netlist, respectively. Add the core instance of the OCC
using the add_core_instances command.
The following example uses the interface view method:
LogicBist {
ijtag_host_interface : Sib(lbist) ;
Controller(lbist_1) {
...
}
NcpIndexDecoder {
DesignInstance(Core_1) {}
Ncp(pulse_x1a) {
cycle(0) : Occ(clk_controller);
cycle(1) : Core_1/core_1_dft_tessent_occ_clk_controller_inst;
}
Ncp(pulse_x2) {
cycle(0) : Occ(clk_controller), \
Core_1/core_1_dft_tessent_occ_clk_controller_inst;
cycle(1) : Occ(clk_controller), \
Core_1/core_1_dft_tessent_occ_clk_controller_inst;
}
}
}
OCC {
ijtag_host_interface : Sib(occ);
static_clock_control : external;
Controller(clk_controller) {
clock_intercept_node : Core_1/clk_out;
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Child-Level OCC Active During External Test
If Core_1 has more than one embedded OCC, but it does not drive a wrapper, you can keep it
inactive during top-level LBIST and active in core-level LBIST by not propagating the
ext_clock_sequence port to the block’s boundary. Do this by skipping that entry in the
ExtestClockSequence wrapper. The tool optimizes the corresponding hardware of the NCPID
so that the ext_clock_sequence path is not created for this OCC.
In this example, the second OCC is a mini-OCC from Sib(sti) and is named
core_1_mbist_tessent_sib_sti_inst:
NcpIndexDecoder {
Connections {
ExtestClockSequence {
Occ(clk_controller) : ext_occ%d_clock_sequence[%d] ;
// Do not specify the entry for this OCC
// (optimal hardware is generated)
}
}
Ncp(pulse_x1a) {
cycle(0) : Occ(clk_controller);
}
Ncp(pulse_x1b) {
cycle(0) : core_1_mbist_tessent_sib_sti_inst;
}
Ncp(pulse_x2) {
cycle(0) : Occ(clk_controller);
cycle(1) : Occ(clk_controller);
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Child-Level Hybrid EDT For Wrapper Chains Active During External Test
Figure 13-32. Hybrid EDT for the External Mode Controlled by Parent-Level
LBIST
Figure 13-33 shows that the wrapper chains of the core are connected only with the EDT that
handles external mode, and therefore the EDT must be controlled by LBIST controllers from
both the parent and the child core. The required DFT signals in each case are passed through the
child-level LBIST to the child-level hybrid EDT.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Child-Level Hybrid EDT For Wrapper Chains Active During External Test
Figure 13-33. Hybrid EDT for Wrapper Chains Shared Between Core-Level and
Parent-Level LBIST
Example
You can create the DFT structure shown in Figure 13-34 in a single insertion pass by specifying
the associated_edt and ext_mode_edt_present properties for the LogicBist instrument indicating
which EDT should be controlled by the core-level LBIST and letting the tool auto-infer the
ext_lbist_en DFT signal:
Edt {
Controller(c1) {
}
Controller(c2) {
}
}
LogicBist {
extest_lbist : on; // This option set to on will infer
// ext_lbist_en DFT signal on port
ext_mode_edt_present : on;
Controller(l1) {
associated_edt : Edt(c1) ;
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Child-Level Hybrid EDT For Wrapper Chains Active During External Test
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Child-Level Hybrid EDT For Wrapper Chains Active During External Test
Alternately, if you use the EDT controllers’ mode_enable properties to indicate the scan modes
for which they operate, you can leave the LBISTs’ associated_edt and ext_mode_edt_present
properties unspecified:
Edt {
Controller(c1) {
Connections {
mode_enables : DftSignal(int_mode);
}
}
Controller(c2) {
Connections {
mode_enables : DftSignal(ext_mode);
}
}
}
LogicBist {
extest_lbist : on;
// ext_mode_edt_present : on; // can be unspecified because mode_enables
// indicates EDT mode
Controller(l1) {
// associated_edt : Edt(c1); // can be unspecified because
// mode_enables indicates EDT mode
}
}
Next, at the parent design level you can reuse the embedded hybrid EDT to drive the core’s
wrapper chains for parent-level LBIST. Ensure that all EDTs from the core are properly
associated with the parent-level LBIST controller. If no EDTs in the design (both in the child
core and at the current design level) have modes assigned by mode_enables property, use the
following DftSpecification:
Edt {
Controller(c3) {
}
}
LogicBist {
Controller(l2) {
DesignInstance(core1) {
associated_edt : c2;
}
}
}
The EDT controller c3 is automatically associated with LBIST l2 (shown in Figure 13-35)
because by default, all of the hybrid EDTs from the same insertion pass are automatically
assumed to be controlled by the LBIST controller.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Limitations of the Independent Insertion Flow
Note
It is important to ensure that the core instance of EDT c2 is loaded in the LBIST fault
simulation script.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Limitations of the Independent Insertion Flow
• When implementing the Controller Chain Mode (CCM) of LogicBIST and Hybrid EDT
controllers, you should consider the impact of SSH. A CCM chain at a given level
should be an uncompressed chain and not driven from local SSH. When generating
CCM patterns, you should disable SSH by setting set_ssn_options off.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Independent Hybrid TK/LBIST Insertion Flow
Limitations of the Independent Insertion Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix A
The Dofile Flow
The hybrid TK/LBIST flow supports a dofile flow that does not use the TSDB. In the dofile
flow, the tool does not write output files to the TSDB. The five steps used for the TSDB bottom
up method remain the same, as do the two additional steps used for the top-down method.
The following figure shows the steps you perform on each of your cores with the dofile flow.
Refer to “Hybrid TK/LBIST Implementation” for details. For the dofile flow, the differences
are:
• In Step 3, the tool does not store the output EDT, LogicBIST ICL and PDL files, or
EDT/LogicBIST IP netlist in the TSDB. These files are direct inputs to pattern
generation (Step 5).
• In Step 4, the output graybox, patternDB file, TCD file, testbenches, patterns, and so on
are direct inputs to pattern generation (Step 5). The tool does not store these in the
TSDB.
• During Step 3, logic synthesis is not fully automated. To synthesize the EDT/Tessent
LogicBIST blocks and the common LogicBIST controller, you must use the synthesis
script that the tool generates. You use the synthesized gate-level netlist output from your
synthesis tool (for example, the output of the logic synthesis step with Synopsys Design
Compiler®) as the input to the next step of the flow.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
EDT and LogicBIST IP Generation Command Summary
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Generating the EDT and LogicBIST IP (Dofile Flow)
Prerequisites
• You need the scan insertion dofile and BIST-ready netlist you created during Test Point
Analysis and Insertion, Scan Insertion, and X-Bounding.
Procedure
1. From a shell, invoke Tessent Shell:
% tessent -shell
After invocation, the tool is in unspecified setup mode. You must set the context before
you use the IP generation commands.
2. Set the tool context to EDT/LogicBIST generation using the set_context command as
follows:
SETUP> set_context dft -edt -logic_bist -no_rtl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Generating the EDT and LogicBIST IP (Dofile Flow)
4. Load the LogicBIST-ready design netlist using the read_verilog command. For
example:
SETUP> read_verilog my_modified_design.v
5. Load one or more cell libraries into the tool using the read_cell_library command:
SETUP> read_cell_library atpg.lib
6. Set the top design using the set_current_design command. For example:
SETUP> set_current_design top_module
8. Read in the design_name_tessent_occ.tcd file from the TSDB directory using the
read_core_descriptions command. For example:
SETUP> read_core_descriptions ./top_level.tsdb/instruments/
my_design_occ.instrument/my_design_tessent_occ.tcd
9. Bind the core description in memory with the specified core instance in the design using
the add_core_instances command. For example:
SETUP> add_core_instances -instance block_inst1/my_occ
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Generating the EDT and LogicBIST IP (Dofile Flow)
See also “Low-Power Shift” on page 37, “Controller Chain Mode” on page 51, and
“Low Pin Count Test Controller” on page 341.
12. Change the tool’s system mode to analysis using the set_system_mode command as
follows:
SETUP> set_system_mode analysis
During the transition from setup to analysis mode, the tool performs design rule
checking.
13. You can optionally report the clock controller pins, global LogicBIST controller
configuration parameters, or specified pins results using the following commands:
• report_clock_controller_pins
• report_lbist_configuration
• report_lbist_pins
14. Use the write_edt_files command with the -tsdb option to create EDT/LBIST files and
insert the generated hardware into the design. For example, the following command
generates timing constraints and writes out the EDT/LBIST files into the instruments
directory within the TSDB:
ANALYSIS> write_edt_files -tsdb
The tool transitions to insertion mode after inserting the EDT/LBIST logic into the
design and writes the modified netlist to the dft_inserted_designs directory within the
TSDB.
For the dofile flow, specify the write_edt_files command as follows:
ANALYSIS> write_edt_files my_edt_logic -timing_constraints
Results
The following files are generated in during this step:
Table A-2. Output Files, EDT and LogicBIST IP Generation, TSDB Flow
File Contents
<prefix>.synthesis_dictionary A Tcl dictionary-formatted file that is used by the
run_synthesis command. This command processes
the dictionary to create a synthesis script
compatible with the chosen synthesis tool.
<prefix>.tcd File containing the IP core description.
<prefix>.icl ICL file describing hybrid EDT/LBIST logic for
EDT and LBIST modes — to be used during EDT
pattern generation and BIST fault simulation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Generating the EDT and LogicBIST IP (Dofile Flow)
Table A-2. Output Files, EDT and LogicBIST IP Generation, TSDB Flow (cont.)
File Contents
<prefix>.pdl PDL file describing test_setup initialization of
hybrid EDT/LBIST logic for EDT pattern
generation and BIST fault simulation.
<prefix>.v RTL for the hybrid TK/LBIST IP.
Table A-3. Output Files, EDT and LogicBIST IP Generation, Dofile Flow
File Contents
<prefix>_bypass_shift_sdc.tcl EDT bypass shift mode timing constraints file.
<prefix>_dc_script.scr Synopsys script for synthesizing EDT and BIST
logic.
<prefix>_<design_name>_edt.tcd File containing the EDT IP core description.
<prefix>_<design_name>_lbist.tcd File containing the LBIST IP core description.
<prefix>_edt_fast_capture_sdc.tcl Capture mode timing constraints file for EDT or
EDT-bypass mode.
<prefix>_edt_shift_sdc.tcl EDT shift mode timing constraints file.
<prefix>_edt_top_rtl.v Gate-level netlist that instantiates the EDT and
BIST logic.
<prefix>_ltest.icl ICL file describing hybrid EDT/LBIST logic for
EDT and LBIST modes — to be used during EDT
pattern generation and BIST fault simulation.
<prefix>_ltest.pdl PDL file describing test_setup initialization of
hybrid EDT/LBIST logic for EDT pattern
generation and BIST fault simulation.
<prefix>_lbist.v Per-block MISRs and top-level BIST controller.
<prefix>_lbist_sdc.tcl File containing all LogicBIST modes including
LBIST setup, shift, capture, and single chain
mode.
Examples
The following example shows a single EDT/LogicBIST block. The design has X-bounding,
control, and observe points controlled by the same design pin named lbist_en. This design does
not use low-power hybrid IP.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Generating the EDT and LogicBIST IP (Dofile Flow)
read_verilog my_core_scan_xbound.v
read_cell_library atpg.lib
set_current_design
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Generating the EDT and LogicBIST IP (Dofile Flow)
// For the dofile flow, do not use the -tsdb option. For example:
// write_edt_files created -replace
This is a modular IP generation example. The scan chains are defined at internal pins at the
block boundary. The design has a TAP controller to which the LogicBIST controller is
connected during IP generation. Separate control registers are synthesized in the LogicBIST
controller for independently controlling X-bounding, control and observe points. There are
multiple clock controllers in the design. The design has multiple NCPs that are used in
LogicBIST test in the proportion specified.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Generating the EDT and LogicBIST IP (Dofile Flow)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Performing Scan Insertion and X-Bounding
}
set_edt_power_controller shift enabled -min_switching 15
set_lbist_power_controller shift enabled -min_switching 12
set_edt_instance -block_location /dftblk
// For the dofile flow, do not use the -tsdb option. For example:
// write_edt_files created -replace -timing_constraints
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Performing Scan Insertion and X-Bounding
Prerequisites
• Design netlist with test points and dofile that are output by Tessent Shell during Test
Point Analysis and Insertion, Scan Insertion, and X-Bounding.
Procedure
1. From a shell, invoke Tessent Shell using the following syntax:
% tessent -shell
After invocation, the tool is in unspecified setup mode. You must set the context before
you can use the X-bounding and scan insertion commands.
2. Set the tool context to scan insertion using the set_context command as follows:
SETUP> set_context dft -scan
3. Load the non-scan gate-level Verilog netlist containing the test points using the
read_verilog command.
SETUP> read_verilog my_modified_netlist.v
4. Load one or more cell libraries into the tool using the read_cell_library command.
SETUP> read_cell_library atpg.lib
5. Using the dofile command, load the Tessent Shell tool-produced dofile you generated
during test point analysis and insertion. For example:
SETUP> dofile lbist_scan_setup.dofile
This dofile loads the netlist and the Tessent cell library. It also includes the necessary
commands to set up the circuit for DRC.
6. If required in your design flow, load the SDC file using the read_sdc command.
SETUP> read_sdc my_sdc
The SDC file should describe false and multicycle paths that should be blocked during
LogicBIST.
7. Set the scan insertion options using the set_scan_signals command.
SETUP> set_scan_signals -ten t_enable
8. Set the X-bounding options with the set_xbounding_options command. For example:
SETUP > set_xbounding_options -xbounding_enable my_enable1
This command specifies the name of the top-level pin that enables the X-bounding
signals.
9. Change the tool’s system mode to analysis using the set_system_mode command.
SETUP> set_system_mode analysis
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Example Dofiles for Core-Level Simulation
During the transition from setup to analysis mode, the tool performs design rule
checking and inserts the scan chains.
10. Perform the X-bounding analysis using the analyze_xbounding command.
ANALYSIS> analyze_xbounding
The tool reports a summary of how many bounding muxes were added.
11. Optionally report the results of the X-bounding analysis using the report_xbounding
command.
ANALYSIS> report_xbounding
12. Perform scan insertion and X-bounding logic insertion using the insert_test_logic
command.
ANALYSIS> insert_test_logic
This command modifies the internal representation of the netlist to include the X-
bounding muxes, as well as performing scan cell replacement and stitching. This
command triggers a transition from analysis to insertion mode.
13. Write out the modified design using the write_design command. For example:
INSERTION> write_design -output design_with_scan.v
14. Write out the test procedure file and dofile using the write_atpg_setup command as
follows:
INSERTION> write_atpg_setup my_scan_setup
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Example Dofiles for Core-Level Simulation
read_cell_library atpg.lib
set_current_design
dofile alu_lbist.dofile
set_lbist_controller_options -programmable_ncp_list {clkseq1 clkseq2 clkseq3 clkseq4}
set_lbist_controller_opt -capture_procedures {clkseq1 40 clkseq2 40 clkseq3 10 clkseq4 10}
set_system_mode analysis
add_faults -all
set_random_patterns 100
simulate_patterns -source bist
write_core_description alu.tcd -replace
write_patterns alu.patdb -patdb -replace
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Pattern Generation for the Dofile Flow
########################################################################
#Set the following variables before sourcing this dofile:
# Required variables:
# set edt_lbist_icl_file_list <filenames>
# set edt_lbist_pdl_file_list <filenames>
# set edt_lbist_tcd_file <filenames>
# set edt_lbist_patdb_file_list <filenames>
# set edt_lbist_reference_clock <clockname>
#
# Optional variables:
# set edt_lbist_tester_clock_period <period>
# set edt_lbist_user_iproc <procname>
# set edt_lbist_write_hw_default_patterns <0|1: default=0>
# set edt_lbist_write_diag_patterns <0|1: default=0>
#########################################################################
#
#Set context to ijtag pattern retargeting
set_context pattern -ijtag
#
#Read library and design
read_cell_library ../data/atpg.lib
read_verilog created_edt_top_gate.v
#
#Read fault simulation data
read_config_data $edt_lbist_tcd_file
#
#Read ICL files
read_icl $edt_lbist_icl_file_list
#
#Set top level module for ijtag retargeting
set_current_design m8051
#
#Define top-level clocks
if {[info exists edt_lbist_tester_clock_period]} {
add_clocks $edt_lbist_reference_clock -period
$edt_lbist_tester_clock_period ns -free_running
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Pattern Generation for the Dofile Flow
} else {
add_clocks $edt_lbist_reference_clock -free_running
}
add_clocks 1 tck
#
#Define pin constraints
add_input_constraints RST -c0
add_input_constraints edt_reset -c0
#
#Change to analysis mode to generate patterns
set_system_mode analysis
if {[get_context -extraction]} {
write_icl -o m8051.icl -replace
}
foreach patdb_file $edt_lbist_patdb_file_list {
open_patdb $patdb_file
}
report_open_patdb
#
#Read PDL files
foreach pdlfile $edt_lbist_pdl_file_list {
source $pdlfile
}
#
#Write regular LBIST patterns
set begin_pattern 0
set end_pattern 31
set warmup_pattern_count 0
open_pattern_set lbist_normal
if {[info exists edt_lbist_user_iproc]} {
iCall $edt_lbist_user_iproc
}
iCall run_lbist_normal lbist_clock $begin_pattern $end_pattern lbist
$warmup_pattern_count
close_pattern_set
write_patterns m8051_lbist_normal_${begin_pattern}_${end_pattern}.v
-pattern_set lbist_normal -verilog -replace
#
#Write hardware default LBIST patterns
if {[info exists edt_lbist_write_hw_default_patterns]&&
$edt_lbist_write_hw_default_patterns} {
open_pattern_set lbist_hw_default
if {[info exists edt_lbist_user_iproc]} {
iCall $edt_lbist_user_iproc
}
iCall run_lbist_hw_default lbist
close_pattern_set
write_patterns m8051_lbist_hw_default.v -pattern_set
lbist_hw_default -verilog -replace
}
#
#Write diagnostic LBIST patterns
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Performing Pattern Generation for the Dofile Flow
set diag_begin_pattern 0
set diag_end_pattern 1
set diag_warmup_pattern_count 0
if {[info exists edt_lbist_write_diag_patterns] &&
$edt_lbist_write_diag_patterns} {
open_pattern_set lbist_diag
if {[info exists edt_lbist_user_iproc]} {
iCall $edt_lbist_user_iproc
}
iCall scan_unload_register lbist_clock $diag_begin_pattern
$diag_end_pattern lbist $diag_warmup_pattern_count
close_pattern_set
write_patterns
m8051_lbist_diag_${diag_begin_pattern}_${diag_end_pattern}.v -pattern_set
lbist_diag -verilog -replace
}
exit
2. Set the tool context to IJTAG mode using the set_context command as follows:
SETUP> set_context patterns -ijtag
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Performing Pattern Generation for the Dofile Flow
Results
Upon completion, Tessent Shell outputs the testbench/vectors for the entire pattern set, range
specific vectors, or Hardware default mode as specified in the dofile.
• If you are using the Considerations for Top-Down Implementation, you finished all
necessary steps in this flow.
• If you are using the Hybrid TK/LBIST Implementation, you are ready to perform the
Top-Level ICL Network Integration.
Examples
Example 1
In the following example, the core-level ICL IJTAG dofile uses the TCD and PatternDB files to
generate a Verilog testbench for core-level pattern verification.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Performing Pattern Generation for CCM in the Dofile Flow
open_pattern_set lbist_normal
iCall run_lbist_normal lbist_clock 6 31 lbist
iCall run_lbist_normal lbist_clock 6 31 chain_test
Error: iReadVar variable 'bist_done_start[0]' already exists in ICL
instance 'piccpu_lbist_i'.
Error: The iCall of iProc 'run_lbist_normal', which is associated with the
ICL module 'piccpu', failed.
To prevent this type of error, use the teststep_name argument in the iProc. This argument adds a
unique string for each iRead. For example:
open_pattern_set lbist_normal
iCall run_lbist_normal lbist_clock 6 31 lbist 0 1 lbist_mode
iCall run_lbist_normal lbist_clock 6 31 chain_test 0 1 chain_test_mode
close_pattern_set
write_patterns piccpu_lbist_normal_6_31.v -pattern_set lbist_normal
-verilog -replace
exit
Prerequisites
• Modified design netlist.
• ICL description of the current design.
• A PDL that describes the test setup at the chip level if there is any. For example, if there
is a TAP controller at the top level, then the tool requires an ICL and, optionally, PDL
for the TAP controller.
Procedure
1. From a shell, invoke Tessent Shell using the following syntax:
% tessent -shell
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Performing Pattern Generation for CCM in the Dofile Flow
The created_ccm.dofile calls the CCM .testproc file, created_ccm.testproc, that was also
generated during IP creation. For details, refer to the examples that follow.
5. Change the system mode to analysis:
SETUP> set_system_mode analysis
The add_ccm_faults() TCL proc is contained within the created_ccm.dofile. This proc
targets the faults to the hybrid IP.
7. Create and save the CCM patterns. For example:
ANALYSIS> create_patterns
ANALYSIS> write_patterns ccm_patt.v -verilog -replace -serial
Examples
The follow example generates CCM patterns.
read_verilog created_edt_top_gate.v
read_cell_lib ../data/atpg.lib
dofile created_ccm.dofile
set_system_mode analysis
add_ccm_faults
create_patterns
write_patterns ccm_patt.v -verilog -replace -serial
Example created_ccm.dofile
The following example shows a snippet of the CCM dofile, created_ccm.dofile, that was
generated during IP creation. When a TAP is present, the tool places the TAP controller in the
run-test-idle state to ensure that the IJTAG control signals are in a known state. IJTAG control
signals that are top-level pins are constrained to their inactive values, as shown below.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Performing Pattern Generation for CCM in the Dofile Flow
add_input_constraints ijtag_reset c0
add_input_constraints ijtag_sel c0
add_input_constraints ijtag_ce c0
add_input_constraints ijtag_se c0
add_input_constraints ijtag_ue c0
add_input_constraints ccm_en c1
timeplate gen_tp1 =
force_pi 0 ;
measure_po 100 ;
pulse clk_ 200 100; //No internal_shift_clock
pulse ramclk 200 100;
pulse refclk 200 100;
pulse reset 200 100;
pulse shift_clock 200 100;
pulse tck 200 100; //Controller chain clock set to default tck
period 400 ;
end;
always =
pulse refclk ;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Performing Pattern Generation for CCM in the Dofile Flow
procedure shift =
scan_group grp1 ;
timeplate gen_tp1 ;
// cycle 1 starts at time 0
cycle =
force_sci ;
force tck 0 ;//Force tck to 0 rather than internal_shift_clock to 1
measure_sco ;
pulse refclk
pulse shift_clock ;
pulse tck ; //Pulsing tck rather than internal_shift_clock
end;
end;
procedure load_unload =
scan_group grp1 ;
timeplate gen_tp1 ;
// cycle 1 starts at time 0
cycle =
force clk_ 0 ;
force edt_clock 0 ; //no internal_capture_en, internal_scan_en,
force ramclk 0 ; //and internal_shift_clock
force refclk 0 ;
force reset 0 ;
force scan_enable 1 ;/
force shift_clock 0 ;
force tck 0 ;
force test_logic_reset 0 ;
pulse refclk ;
end ;
apply shift 16;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Pattern Mismatch Debugging in the Dofile Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Debug Based on MISR Signature Divergence (Dofile Flow)
##################################################################
#Set the following variables before sourcing this dofile:
# Required variables:
# set edt_lbist_icl_file_list <filenames>
# set edt_lbist_pdl_file_list <filenames>
# set edt_lbist_tcd_file <filenames>
# set edt_lbist_patdb_file_list <filenames>
# set edt_lbist_reference_clock <clockname>
#
# Optional variables:
# set edt_lbist_tester_clock_period <period>
# set edt_lbist_user_iproc <procname>
# set edt_lbist_write_hw_default_patterns <0|1: default=0>
# set edt_lbist_write_diag_patterns <0|1: default=0>
# set edt_lbist_setup_and_clock_verification_patterns <0|1: \
default=0>
##################################################################
...
#
#Write setup and clock verification LBIST patterns
if {[info exists edt_lbist_setup_and_clock_verification_patterns]
&& $edt_lbist_setup_and_clock_verification_patterns} {
set one_pattern_per_ncp 1
open_pattern_set lbist_setup_and_clock_verification
if {[info exists edt_lbist_user_iproc]} {
iCall $edt_lbist_user_iproc
}
iCall cpu_gates_tessent_occ_NX1_inst.setup fast_capture_mode \
on capture_window_size 2 static_clock_control external
iCall cpu_gates_tessent_occ_NX2_inst.setup fast_capture_mode \
on capture_window_size 2 static_clock_control external
iCall cpu_gates_tessent_occ_NX3_inst.setup fast_capture_mode \
on capture_window_size 2 static_clock_control external
iCall lbist_setup_and_clock_verification lbist_clock lbist \
$one_pattern_per_ncp
close_pattern_set
write_patterns cpu_lbist_setup_and_clock_verification.v \
-pattern_set lbist_setup_and_clock_verification -verilog -replace
}
exit
As shown in the example iCall, the generated template sets the one_pattern_per_ncp
variable to 1 by default. This means that if you have four NCPs, the tool runs four tests,
one for each NCP.
The default pattern run is 256. To exercise the full pattern range, in the generated
template, change the line “set one_pattern_per_ncp 1” from 1 to 0.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Debug Based on MISR Signature Divergence (Dofile Flow)
2. If clock verification fails, investigate and fix possible causes, such as:
a. The On-Chip Clock Controller (OCC) is not set up correctly. Ensure that the
arguments are specified correctly if you are using an iCall to setup the OCC.
b. Ensure that you have correctly set any primary input pin asserts that are needed for
the clocks to operate.
c. You may find that while debugging the clock verification failures the capture
window is too small. That is, capture clock pulses occur outside the window where
“capture_en=1.” If this is the case, return to LogicBIST IP generation and specify
the following command to increase the capture window:
set_lbist_controller_options -max_capture_cycles #
3. Run Verilog simulation with the LogicBIST debugging feature enabled as shown below,
and identify any failing LogicBIST patterns.
The resulting transcript includes mismatch statements such as those shown in bold
following. The statements tell you at which pattern the MISR signature started to
diverge from the expected value.
Note
To display the passing data, specify “+show_passing_regs” when you start the
simulator.
...
Setting up controller TLB_coreB_I1.coreB_lbist_i
Number of patterns : 5 (5 + 0 warm-up patterns)
Pattern Length : 40
Shift Clk Select : 0b01
Capture Phase Width : 0x3 Shift Clock Cycles
PRPG Seed : 0x66241da0
MISR Seed : 0x000000
Starting controller TLB_coreB_I1.coreB_lbist_i in Normal mode,
patterns 0 to 3
Checking that the controller TLB_coreB_I1.coreB_lbist_i DONE
signal is NO at the beginning of the test
Mismatch at pattern 2 for TLB.coreB_I1.coreB_edt_lbist_i.misr:
Expected = 83ab37 Actual = 7854d0
Mismatch at pattern 3 for TLB.coreB_I1.coreB_edt_lbist_i.misr:
Expected = 9b96e3 Actual = 5e161a
Test Complete for controller TLB_coreB_I1.coreB_lbist_i
Checking that signal DONE is YES for controller
TLB_coreB_I1.coreB_lbist_i
Checking results of controller TLB_coreB_I1.coreB_lbist_i
Expected Signature for controller TLB_coreB_I1.coreB_lbist_i :
0x9b96e3
Turning off LogicBist controller TLB_coreB_I1.coreB_lbist_i
...
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Debug Based on MISR Signature Divergence (Dofile Flow)
For example:
set sim_monitor 1
open_pattern_set lbist
iCall run_lbist_normal lbist_clock 980 999 lbist 0 0 $sim_monitor
close_pattern_set
4. Re-run the simulation so that you can identify the failing flop associated with the
particular pattern where the MISR started to diverge.
Use the scan_unload_register iProc, as shown in the following sample dofile template.
Set the edt_lbist_write_diag_patterns variable to 1, and adjust the diag_begin_pattern
and diag_end_pattern settings accordingly. For example, if the MISR signature failed at
pattern 2, you would set the begin and end patterns to 2.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Debug Based on MISR Signature Divergence (Dofile Flow)
##################################################################
#Set the following variables before sourcing this dofile:
# Required variables:
# set edt_lbist_icl_file_list <filenames>
# set edt_lbist_pdl_file_list <filenames>
# set edt_lbist_tcd_file <filenames>
# set edt_lbist_patdb_file_list <filenames>
# set edt_lbist_reference_clock <clockname>
#
# Optional variables:
# set edt_lbist_tester_clock_period <period>
# set edt_lbist_user_iproc <procname>
# set edt_lbist_write_hw_default_patterns <0|1: default=0>
# set edt_lbist_write_diag_patterns <0|1: default=0>
# set edt_lbist_setup_and_clock_verification_patterns <0|1:
# default=0>
##################################################################
...
#
#Write diagnostic LBIST patterns
set diag_begin_pattern 2
set diag_end_pattern 2
set diag_warmup_pattern_cnt 0
if {[info exists edt_lbist_write_diag_patterns] &&
$edt_lbist_write_diag_patterns} {
open_pattern_set lbist_diag
if {[info exists edt_lbist_user_iproc]} {
iCall $edt_lbist_user_iproc
}
iCall cpu_gates_tessent_occ_NX1_inst.setup fast_capture_mode
on capture_window_size 2 static_clock_control external
iCall cpu_gates_tessent_occ_NX2_inst.setup fast_capture_mode
on capture_window_size 2 static_clock_control external
iCall cpu_gates_tessent_occ_NX3_inst.setup fast_capture_mode
on capture_window_size 2 static_clock_control external
iCall scan_unload_register lbist_clock $diag_begin_pattern
$diag_end_pattern lbist $diag_warmup_pattern_cnt
close_pattern_set
write_patterns cpu_lbist_diag_${diag_begin_pattern}_
${diag_end_pattern}.v -pattern_set lbist_diag -verilog -replace
}
Results
The following transcript example shows a mismatch at an lbist_scan_out pin.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Debug Based on Scan Cell Monitoring (Dofile Flow)
...
300ns: piccpu MISR Seed : 0x000000
49300ns: Starting controller TLB_coreB_I1.coreB_edt_lbist_i in Normal
mode, patterns 0 to 0
51000ns: Checking that the controller TLB_coreB_I1.coreB_edt_lbist_i
DONE signal is NO at the beginning of the test
62800ns: Test Complete for controller TLB_coreB_I1.coreB_edt_lbist_i
69000ns: Scanning out capture results of vector 0 for controller
TLB_coreB_I1.coreB_edt_lbist_i
180024ns: Mismatch at pin 0 name lbist_scan_out,
Simulated x, Expected 0
180100ns: Corresponding ICL register:
TLB_coreB_I1.coreB_edt_single_chain_mode_logic_i.TLB_coreB_I1.coreB_edt_i
nternal_scan_registers_i.coreB_A_chain1[18]
180100ns: Corresponding design object: coreB_A/u11/PRB_reg/DFF1
181700ns: Turning off LogicBist controller TLB_coreB_I1.coreB_edt_lbist_i
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Debug Based on Scan Cell Monitoring (Dofile Flow)
Results
When a mismatch occurs the tool first reports the scan chain output pin where the mismatch was
observed, and then maps the mismatch to a pattern, shift cycle, and scan cell. For both messages
it reports the simulated and expected values. If there is inversion between the scan cell and the
scan out, the simulated/expected values on these two lines is different. If the failing scan cell is
within a sub-chain of a hard module, then the message only reports the scan cell and not the pin
of the scan cell that failed.
The following transcript example shows mismatches when the wrong values are observed on
scan chain cells.
#ns: Pattern_set serial_load
#ns: Setting up controller xtea_tk_lbist_ip_tessent_lbist_i
#ns: Number of patterns : 3 (3 + 0 warm-up patterns)
#ns: Pattern Length : 2 #ns: Shift Clk Select : 0b00
#ns: Capture Phase Width : 0x20 Shift Clock Cycles
#ns: PRPG Seed : 0x3e0a
#ns: MISR Seed : 0x000000
#ns: Starting controller xtea_tk_lbist_ip_tessent_lbist_i in Normal mode,
patterns 0 to 2
#ns: Checking that the controller xtea_tk_lbist_ip_tessent_lbist_i DONE
signal is NO at the beginning of the test
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC for Hybrid TK/LBIST in the Dofile Flow
When Tessent OCC is generated with internal IJTAG control (that is, you have specified the
Occ/ijtag_host_interface property), the static signals for controlling the OCC for LBIST mode
are included within the OCC. Additionally, when static_clock_control is either internal or both,
a TDR is included for generating the LBIST capture clock sequence. However, you can use this
internal TDR only when LBIST test uses only one active NCP.
For additional Tessent OCC-specific information, see “Tessent On-Chip Clock Controller” in
the Tessent Scan and ATPG User’s Manual.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC TK/LBIST (Dofile Flow)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC TK/LBIST (Dofile Flow)
You must specify the clocking combinations to be used during TK/LBIST test. The tool
synthesizes the NCP index decoder and generates named capture procedures based on this
description.
You can use the NCP index decoder with only a single clock domain. The NCP index decoder is
based on the number of unique clocking waveforms, not on the number of clocks. For example,
with a single clock you can generate two NCPs (a single pulse and double pulse).
To reduce the test time and achieve high coverage, it is possible to activate multiple clock
domains at the same time. This is a trade-off between test time and hardware cost: the cost
comes from adding bounding logic for paths crossing clock domains. You may need bounding
for both stuck-at and transition patterns. You lose coverage in all blocked paths, but you can
control the blocking with the McpBoundingEn dft_signal. It is possible to disable blocking at
runtime, but the NCPs can only pulse compatible clocks.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC TK/LBIST (Dofile Flow)
One NCP index decoder is synthesized for each LogicBIST controller and can be used for
controlling all the OCCs involved in LogicBIST. In Figure A-3, there are three OCCs
configured for four cycles each. There are two input binary values to the NCP index decoder
(indicating a maximum of four NCPs), which is decoded as a single control signal per OCC per
cycle that reflects the required clocking waveform.
The tool generates only one index decoder for all OCCs. The NCP index decoder is instantiated
by default at the top-level, or as controlled with the parent_instance property of the
NcpIndexDecoder specification.
If you are using only one NCP, you cannot use the NcpIndexDecoder wrapper because it is
supported only for external static clock controls and two or more NCPs. Refer to
“Considerations When Only Using One NCP” on page 171 for fault simulation considerations.
When the NcpIndexDecoder is generated in the same run as the LogicBist IP, the NCP count is
automatically inferred from the number of Ncp() wrappers in the NcpIndexDecoder wrapper.
When NcpIndexDecoder is generated in a different run, you must specify the LogicBist/
Controller/NcpOptions/count property = 1.
Note
NCP index decoder generation requires an elaborated design and Tessent OCC instances
you have added with the add_core_instances command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC TK/LBIST (Dofile Flow)
Examples
In the following example, assume the design has two top-level Tessent OCC instances named
m8051_gate_tessent_occ_clk1_inst and m8051_gate_tessent_occ_clk2_inst of the same
Tessent OCC module m8051_gate_tessent_occ.
LogicBist
NcpIndexDecoder {
Connections {
NcpIndex: m8051_lbist_i/ncp;
}
Ncp(stuck) {
cycle(0): m8051_gate_tessent_occ;
//Specified using module name, refers to both the OCC instances.
}
Ncp(clk1_double_pulse) {
cycle(0): m8051_gate_tessent_occ_clk1_inst;
cycle(1): m8051_gate_tessent_occ_clk1_inst;
}
Ncp(clk2_double_pulse) {
cycle(0): m8051_gate_tessent_occ_clk2_inst;
//Note – cycle(1) is omitted, so no clock activity
cycle(2): m8051_gate_tessent_occ_clk2_inst;
}
}
Assuming the above specification is in a file named ncp.dft_spec, the following Tessent Shell
dofile synthesizes and inserts the NCP index decoder.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC TK/LBIST (Dofile Flow)
needs to be programmable during capture. Additionally, OCCs may be added for asynchronous
reset signals declared as a clock.
Tessent Shell creates Verilog RTL, ICL, PDL, TCD files, and TCD scan describing the Tessent
OCC instrument, as well as a Verilog netlist that instantiates the OCC in the user design. Many
generation and insertion options are available in the Dft Specification to control this process.
The ICL and TCD outputs are used in later steps like EDT/LBIST IP creation to describe the
configuration of the generated OCCs as well identifying the port functions. The Tessent OCC
RTL should be synthesized to a gate level design before it is used for downstream steps that
require a gate level netlist.
The Tessent OCC can be inserted in a design either at RTL or gate level. When inserted at RTL
level or before EDT IP, the Tessent OCC shift registers can either be merged with design scan
cells or stitched up into dedicated Tessent OCC scan chains. When using stitched into dedicated
chains, these can be either compressed or uncompressed. When OCC is inserted after EDT IP,
the OCC shift registers have to be stitched into dedicated OCC scan chains and handled as
uncompressed chains driven directly by the tester.
• Internal — The Tessent OCC is statically programmable using an internal TDR for
both LBIST and ATPG modes. When using this option, the LBIST test can use only one
NCP at a time. When multiple NCPs are to be used, it needs to be done in multiple
pattern sets.
• External — The Tessent OCC is statically programmable through OCC module ports
for the LBIST mode. This enables use of multiple NCPs for LBIST test in a single
pattern set. An NCP index decoder is synthesized to provide the clock sequence for the
different NCPs based on the ncp_index output from the LBIST controller. The Tessent
OCC external clock control module port is available only for the LBIST mode and
unavailable for ATPG.
• Both — This combines both the internal and external options described above. ATPG
can use the TDR for static clock control. LBIST can use either the TDR or the OCC
module ports.
Capture Trigger
To use the Tessent OCC for TK/LBIST operation, you should set the capture trigger to capture
enable. In this case, scan enable is replaced by the LBIST capture enable signal as the trigger.
To enable either fast capture or slow capture to be used during LBIST, the slow clock signal is
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC TK/LBIST (Dofile Flow)
connected to the free running LBIST controller input clock so that it pulses on all capture
cycles.
The capture enable signal should to be tied to constant-0 or connected to inverted scan enable
during OCC insertion.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC TK/LBIST (Dofile Flow)
Pre-Synthesis Flow
In pre-synthesis flow, the Tessent OCC is not present in the input skeleton design and the ICL/
TCD files for the OCC cannot be read during IP creation. You should instruct the tool to
generate LBIST controller compatible with Tessent OCCs. When using this flow, you are
responsible for making all connections between the LBIST controller, EDT blocks, NCP index
decoder and OCCs. You do this by using the “set_lbist_controller_options -tessent_occ on”
command and options.
Gate-Level Flow
During EDT IP creation, you should input into Tessent Shell the Tessent OCC inserted design
with OCC shift registers included in scan chains should be read. The OCC scan chains can be
either part of compressed or uncompressed chains. Do not add Tessent OCC uncompressed scan
chains during IP creation; only add them during pattern generation. You must configure the
Tessent OCC correctly to pass the IP creation DRC checks, specifically the shift clock, scan
enable, and capture enable signals of the Tessent OCC are properly connected and operated in
the incoming test procedures.
During IP creation, you read in the ICL, PDL and Tessent Core Description (TCD) for the OCC.
This is required to properly setup the Tessent OCC during IP creation. The TCD description is
bound to a netlist instance by treating it as a core instance, similar to how scan pattern
retargeting uses TCD. The tool identifies the Tessent OCCs when the tessent_instrument_type
ICL attribute is set to “mentor::occ”. This attribute value is considered when generating the ICL
signature, so it cannot be added to user OCCs. When Tessent OCCs are present in the design,
the LBIST controller is modified to correctly interface with the OCC.
The TK/LBIST compatible Tessent OCCs are required to have the following two features:
capture trigger using capture enable and static clock control either external or both when using
multiple NCPs. See “Static Clock Control” on page 166 and “Capture Trigger” on page 166.
Note
Do not mix Tessent OCCs and custom OCCs (defined using set_clock_controller_pins
command) in the same LBIST controller. The tool performs rule checks to validate this
requirement.
During EDT IP creation, the Tessent OCC capture enable pins that are not functionally driven
are driven by the inverted OCC scan enable. The Tessent OCC capture enable pins that are
functionally driven (that is, by inverted scan enable) are multiplexed between existing
functional connection and LBIST capture enable.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC TK/LBIST (Dofile Flow)
the existing connections of the OCCs. The tool attempts to reduce the amount of generated
LogicBIST logic used to complete the intercepts.
If, for a given signal, multiple OCCs have the same signal source, then one mux is sufficient for
intercepting all of them. The tool considers OCCs as having the same sources if their nets fan in
from the same net, as observed during LogicBIST validation. As shown in the following figure,
instead of inserting a mux for each intercept at the OCCs—eight intercepts—the tool inserts
only four muxes. Optimization occurs for the capture enable and shift clock signals.
The signal sources are considered the same if their nets fan in from the same net, as observed
during LogicBIST validation. The following example shows the case when the fanin nets differ
for each OCC because one of them resides within a sub-module. The tool treats these OCCs as
having different sources. It generates a mux for each intercept at the OCCs, leading to four
generated muxes instead of two.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC TK/LBIST (Dofile Flow)
Capture Procedures
During IP creation, you specify the total number of NCPs used for LBIST.
This is required to synthesize the NCP index output and NCP activity percentage registers. If
the exact number of NCPs is not known during IP creation, an upper bound can be used. During
fault simulation, unused NCP indices can be specified as 0%. If the names and activity
percentage of the NCPs is specified during IP creation, this is used for the hardware default
mode. When not specified, the tool defaults to equal activity for all the NCPs for the hardware
default mode.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC TK/LBIST (Dofile Flow)
Tessent Shell automatically adds two internal clocks for each OCC instance:
In the LBIST mode dofile, an internal user-PI is added for the LBIST capture enable signal and
constrained to 1. For fault simulating chain test patterns, you manually change this constraint to
0.
You can use the create_capture_procedures command to create an NCP description in the tool
instead of reading a manually-created description from a file. This user-created NCP should
reflect the waveform that you also provide. For external static clock control, the waveform
could be constant values provided on the OCC clock_sequence input pins by the netlist. For
internal static control, this could be the value loaded into the OCC internal clock_sequence
TDR.
For the internal static clock control, load the clock sequence corresponding to the user-created
NCP through the ICL network. For Tessent OCCs, you can do this by using the clock_sequence
core instance parameter. For the external static clock control, connect the Tessent OCC’s clock
sequence pins to constant values that generate the required NCP clock waveforms.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Observation Scan Technology Dofile Flow
specification processing automatically calls the OCC setup iProc with the parameter values that
were used during fault simulation.
set_test_point_analysis_options -capture_per_cycle_observe_points on
In the same session, perform scan insertion as usual. You must perform test point insertion and
scan insertion together.
Note
When using the skeleton hybrid TK/LBIST dofile flow, in which you insert IP prior to
performing test point and scan insertion, you must specify the
“set_test_point_insertion_options -capture_per_cycle_en” command to identify the observation
scan output pin on the LogicBIST controller. For example: lbist_i/
capture_per_cycle_dynamic_en.
IP Generation
The set_dft_enable_options command supports the pin type capture_per_cycle_static_en for
observation scan. This pin is required for observation scan.
For -pin_name, specify the name you defined with the set_test_point_insertion_options
-capture_per_cycle_static_en option.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Observation Scan Technology Dofile Flow
In addition, the command supports the -intercept switch, which is only available when the pin
type is capture_per_cycle_static_en.
Fault Simulation
In the generated fault simulation dofile, fault simulation for observation scan is indicated by an
“on” value for capture_per_cycle_static_en. For example:
Pattern Generation
Perform pattern generation as usual.
If you need to perform pattern simulation mismatch debugging on observation scan cells, you
can do so by enabling scan chain output monitoring. Set the iProc sim_monitor argument and
specify monitor_scan_cells with the iCall. For example:
set sim_monitor 1
open_pattern_set lbist
iCall run_lbist_normal lbist_clock 980 999 lbist 0 0 monitor_scan_cell \
$sim_monitor
close_pattern_set
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Example Tessent OCC TK/LBIST Flow (Dofile Flow)
2. Set the Tessent Shell context to “dft” and specify a design identifier (gate1) for the
current design.
SETUP> set_context dft -no_rtl -design_identifier gate1
6. Set the design level. The physical_block level indicates the design is a block that is
synthesized and laid out as an independent block. For example:
SETUP> set_design_level physical_block
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Example Tessent OCC TK/LBIST Flow (Dofile Flow)
ANALYSIS> read_config_data-from_string {
DftSpecification(m8051, gate1) {
reuse_modules_when_possible: on;
Occ {
capture_trigger: capture_en;
static_clock_control: external;
Controller(clk) {
clock_intercept_node: clk;
}
}
}
}
Results
After OCC insertion, the created hardware is synthesized and replaces the inserted RTL
modules with gate-level modules in the Tessent Shell Data Base (TSDB).
2. Set the Tessent Shell context to ‘dft’ and the design identifier, in this case to gate2.
SETUP> set_context dft -scan -design_identifier gate2
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Example Tessent OCC TK/LBIST Flow (Dofile Flow)
10. Specify the scan chain mode. In this case the scan chain mode is edt and the chain count
is 16. For example:
ANALYSIS> add_scan_mode edt -chain_count 16
11. Run scan chain analysis to distribute the scan elements into new chains. For example:
ANALYSIS> analyze_scan_chains
12. Insert the test structures in to the netlist and stitch up the scan chains. For example:
ANALYSIS> insert_test_logic
13. Write the test procedure file and dofile that describe the chains created during scan
insertion. For example
ANALYSIS> write_atpg_setup -replace
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Example Tessent OCC TK/LBIST Flow (Dofile Flow)
2. Set the Tessent Shell context to ‘dft -edt -logic_bist’. Specify the design identifier for, in
this case it is gate3. For example:
SETUP> set_context dft -edt -logic_bist -design_identifier gate3
7. Setup up scan and constrain the inputs as required. The dofile and procedure were
created by the write_atpg_setup command. For example:
SETUP> dofile scan_setup.dofile
SETUP> tessent_scan_setup edt
11. Write the IP into the Tessent Shell Data Base (TSDB). For example:
ANALYSIS> write_edt_files -tsdb -replace
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Example Tessent OCC TK/LBIST Flow (Dofile Flow)
SETUP> exit
Procedure
1. Invoke Tessent Shell from the shell prompt.
% tessent -shell
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Example Tessent OCC TK/LBIST Flow (Dofile Flow)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Example Tessent OCC TK/LBIST Flow (Dofile Flow)
8. Add the core instances including the EDT core. For example:
SETUP> add_core_instances -module m8051_gate1_tessent_occ \
-param {fast_capture_mode 1}
SETUP> add_core_instances -module m8051_gate3_tessent_edt_lbist
10. Set other parameters as required by your design style. For example:
SETUP> set_output_masks on
SETUP> add_input_constraints -all –hold
SETUP> set_pattern_type -sequential 2
12. Read in the procedure file and setup the capture options. For example:
ANALYSIS> read_procfile external_capture_options \
external_capture.testproc
ANALYSIS> set_external_capture_options -capture_procedure \
ext_fast_cap_proc
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Example Tessent OCC TK/LBIST Flow (Dofile Flow)
4. Read cell library to enable creation of some instances such as muxes. For example:
SETUP> read_cell_library ../data/atpg.lib
11. Read in the NCP index decoder test procedure file for the TSDB instruments directory
using the read_procfile command. For example:
read_procfile tsdb_outdir/instruments/ \
m8051_gate4_lbist_ncp_index_decoder.instrument/ \
m8051_gate4_tessent_lbist_ncp_index_decoder.testproc
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC Dofile Examples
14. Specify the pattern count and add the faults. For example:
ANALYSIS> set_random_patterns 100
• NX1
• NX2
• NX3
The following dofile reports the clock domains and the percentage of faults in each of the
domains. Since the netlist is non-scan, the dofile instructs Tessent Shell to treat the netlist as a
full-scan design, using the “add scan groups dummy dummy” command. If the design were
already scan-inserted, you would instead specify the actual test procedure file and scan chains.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC Dofile Examples
The “Clock Domain Summary” section of report_statistics command’s output is shown below:
----------------------------------------------------
Clock Domain Summary % faults Test Coverage
(total) (total relevant)
------------------ ---------- ----------------
/NX1 22.38% 0.00%
/NX2 74.70% 0.00%
/NX3 0.33% 0.00%
----------------------------------------------------
From the above reports, there are small number of interacting flops (8) between NX1 and NX3.
The paths between NX1 and NX3 should be bounded, which can be accomplished by an SDC
file that describes all paths between these clock domains as false, as shown below (declared at
the mux output):
The tool can now treat NX1 and NX3 as compatible clock domains and pulse them together,
since all interactions between them are blocked during X-bounding. From the prior clock
activity table, we can divide the design into two clock domains: NX2 and NX1_NX3.
Consequently, the NX2 and NX1_NX3 domains can be tested for 75% and 25% of the test
duration, respectively.
During fault simulation, the output of the report_clock_domains command shows that NX1 and
NX3 are indeed compatible after X-bounding. The functional clocks referred earlier are
numbered 7-9 in the output below.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC Dofile Examples
LbistNcpIndexDecoder {
LbistNcpIndex: m8051_lbist_i/ncp;
Ncp(NX1_NX3_single_pulse) {
cycle(0): occ_NX1, occ_NX3;
}
Ncp(NX2_single_pulse) {
cycle(0): occ_NX2;
}
Ncp(NX1_NX3_double_pulse) {
cycle(0): occ_NX1, occ_NX3;
cycle(1): occ_NX1, occ_NX3;
}
Ncp(NX2_double_pulse) {
cycle(0): occ_NX2;
cycle(1): occ_NX2;
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC Dofile Examples
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC Dofile Examples
read_verilog design/gate/elt1.v
set_current_design elt1
set_design_level physical_block
set_dft_specification_requirements -memory_test off -logic_test on
check_design_rules
set_system_mode analysis
set spec [create_dft_specification -sri_sib_list {occ}]
report_config_data $spec
set_config_value use_rtl_cells on -in_wrapper $spec
read_config_data -in_wrapper $spec -from_string {
OCC {
ijtag_host_interface : Sib(occ);
static_clock_control : external;
capture_trigger : capture_en;
Controller(clk_controller) {
clock_intercept_node : CLK_F300;
parent_instance : dft_inst;
}
}
}
report_config_data $spec
process_dft_specification
extract_icl
run_synthesis -startup_file ../prerequisites/techlib_adk.tnt/current/synopsys/
synopsys_dc.setup
After the first pass, the OCC slow_clock is driven by the shift_capture_clock gater and the
edt_clock gater has no fanout.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
Tessent OCC Dofile Examples
Figure A-6. Clock Gating With DFT Signals and OCC in the First Pass
After inserting EDT and LogicBIST in the second hybrid DFT insertion pass, the tool creates
the circuit shown below. The edt_clock gater and shift_capture_clock gaters have been removed
and their previous connections are now driven by their respective ports on the LogicBIST
controller.
Figure A-7. Clock Gating With EDT and LogicBIST in the Second Pass
Note
This is also the resulting circuit when you first run the TSDB flow to insert the DFT signals
and then the dofile flow to insert the LogicBIST controller. In the dofile flow for LogicBIST
insertion, the source clock of the DFT signal gaters supply the test_clock to the LogicBIST
controller.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
File Examples for the Dofile Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
File Examples for the Dofile Flow
#************************************************************************
# Synopsys Design Compiler synthesis script for created_edt.v
# Tessent TestKompress version: 2013.1-snapshot_2013.01.29_06.01
# Date: Tue Jan 29 11:21:40 2013
#************************************************************************
# Synthesize EDT IP
current_design my_core_edt
# Timing specification
create_clock -period 10 -waveform {0 5} edt_clock
# Compile design
uniquify
compile -map_effort medium
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
File Examples for the Dofile Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
File Examples for the Dofile Flow
ICL Example
The following example shows an ICL output written by the tool.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
File Examples for the Dofile Flow
//***********************************************************************
// ICL script for module my_core
//
// Tessent TestKompress version: 2013.1-snapshot_2013.01.29_06.01
// Tue Jan 29 06:11:31 GMT 2013
// Date: 01/29/13 11:21:40
//***********************************************************************
ScanInterface host {
Port lbist_scan_in;
Port lbist_scan_out;
}
ScanInterface client {
Port from_edt_scan_out;
Port lbist_scan_out;
Port edt_sib_en;
}
//
// Bist registers
//
ScanRegister capture_phase_size[1:0] {
ScanInSource my_core_lbist_edt_sib_i.scan_out;
}
ScanRegister shift_clock_select[1:0] {
ScanInSource capture_phase_size[0];
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Dofile Flow
File Examples for the Dofile Flow
ResetValue 2'b01;
}
ScanRegister warmup_pattern_count[8:0] {
ScanInSource shift_clock_select[0];
}
...
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix B
Low Pin Count Test Controller
The hybrid flow supports low pin count test (LPCT) type-1 and type-2 controllers but not type-3
LPCT controllers.
Low Pin Count Test Controller Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Type-2 LPCT Controller Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
set_lpct_pins scan_en
When using LPCT with hybrid IP, the scan_enable signal using the set_lbist_pins and
set_lpct_pins are handled as follows:
• When only LPCT scan enable is specified, the value is also used for the LBIST
controller.
• When only LBIST scan enable signals are specified, the first specified scan enable is
used for the LPCT controller.
• When neither LPCT nor LBIST scan enable signals are specified, the tool issues an error
message.
• For type-2 LPCT, the tool ignores the scan enable signals for the LBIST controller and
instead uses the scan enable generated by the LPCT controller.
Similarly, the TAP pins for the LBIST and LPCT controllers are handled as follows:
• When either LBIST or LPCT pins only are specified for tck, active-high
test_logic_reset, shift_dr, capture_dr and update_dr signals, they are also used for the
other controller.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Low Pin Count Test Controller
Type-2 LPCT Controller Example
• When both LPCT and LBIST pins are specified, they are both used for connecting to the
respective test logic IP.
• When neither LPCT nor LBIST pins are specified, default pin names are used for
sharing between both controllers.
• The LBIST tap_instruction_decode signal is not shared with LPCT test_mode signal
because these are controlled by separate TAP instructions or internal test logic.
The hybrid flow supports Controller Chain Mode (CCM) with both type-1 and type-2 LPCT
controllers. You can use CCM with either edt_clock or tck with type-1 LPCT. The type-2 LPCT
only supports the edt_clock option. This is because tck is used to operate the TAP controller to
generate the scan enable, which disturbs the controller logic scan cells due to these extra tck
pulses in pre-shift and post-shift cycles.
When using IJTAG with TAP controller, you must preserve the state of the IJTAG network
using the following command:
This requirement applies to both the hybrid IP and EDT-only type-2 LPCT controller. Since the
network state is kept instead of reset, the BIST controller setup registers should be explicitly
changed to the Idle state to enable EDT pattern generation. Refer to the following example for a
pattern generation dofile.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Low Pin Count Test Controller
Type-2 LPCT Controller Example
DftSpecification(m8051, tap) {
use_rtl_cells: on;
IjtagNetwork {
HostScanInterface(dft) {
Interface {
tck: tck;
tdo_en_polarity: active_high;
}
Tap(dft) {
HostIjtag(lpct) {
}
HostIjtag(lbist) {
}
HostIjtag(static) {
Tdr(static) {
Interface {
reset_polarity: active_high;
}
DataOutPorts {
port_naming: test_mode, fast_capture_mode,
capture_cycle_width[1:0], edt_bypass;
}
}
}
}
}
}
}
DftSpecification(m8051, occ) {
use_rtl_cells: on;
reuse_modules_when_possible: on;
OCC {
DefaultConnections {
slow_clock: tck;
StaticExternalControls {
test_mode: m8051_tap_tessent_tdr_static_inst/test_mode;
fast_capture_mode: m8051_tap_tessent_tdr_static_inst/
fast_capture_mode;
capture_cycle_width:
m8051_tap_tessent_tdr_static_inst/capture_cycle_width;
}
}
capture_trigger: capture_en;
static_clock_control: external;
Controller(NX1) {
clock_intercept_node: NX1g/Z;
}
Controller(NX2) {
clock_intercept_node: NX2g/Z;
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Low Pin Count Test Controller
Type-2 LPCT Controller Example
To configure the hybrid IP with a type-2 LPCT controller given the DftSpecification shown
above, you would specify:
#
#EDT settings
set_edt_options -location internal -channel 1
set_edt_pins input 1 tdi
set_edt_pins output 1 tdo \
m8051_tap_tessent_tap_dft_inst/host_lpct_from_so
set_edt_pins bypass - m8051_tap_tessent_tdr_static_inst/edt_bypass
#
#Type-2 LPCT settings
set_lpct_controller -generate_scan_enable on -tap_controller_interface on
set_lpct_pins clock tck
set_lpct_pins output_scan_en scan_en
set_lpct_pins reset - reset_inverter_dft/y
set_lpct_pins capture_dr - m8051_tap_tessent_tap_dft_inst/capture_dr_en
set_lpct_pins shift_dr - m8051_tap_tessent_tap_dft_inst/shift_dr_en
set_lpct_pins update_dr - m8051_tap_tessent_tap_dft_inst/update_dr_en
set_lpct_pins atpg_enable - \
m8051_tap_tessent_tap_dft_inst/host_lpct_to_sel
#
#Tk/Lbist hybrid settings
set_lbist_controller_options -max_shift 100 -max_capture 7 \
-max_pattern 100000 -capture_procedure 3
set_lbist_pins clock {- pll/pll_clock_0}
set_lbist_pins scan_en scan_en
set_lbist_pins tck tck
set_lbist_pins test_logic_reset {- reset_inverter_dft/y}
set_lbist_pins tap_instruction_decode {-
m8051_tap_tessent_tap_dft_inst/host_lbist_to_sel}
set_lbist_pins shift_dr {- m8051_tap_tessent_tap_dft_inst/shift_dr_en}
set_lbist_pins update_dr {- m8051_tap_tessent_tap_dft_inst/
update_dr_en}set_lbist_pins capture_dr {-
m8051_tap_tessent_tap_dft_inst/capture_dr_en}
set_lbist_pins setup_shift_scan_in tdi
set_lbist_pins setup_shift_scan_out {tdo
m8051_tap_tessent_tap_dft_inst/host_lbist_from_so}
set_dft_enable_options -type xbounding -pin_name xbnd_en
set_clock_controller_pins capture_procedure_index -no_connection
The mapping flow for EDT pattern generation setup using TCD is shown below.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Low Pin Count Test Controller
Type-2 LPCT Controller Example
#
#Load LPCT instruction to enable EDT channels access to tdi/tdo
iProcsForModule m8051
iProc load_lpct_instruction {} {
iWrite m8051_lbist_i.bist_setup Idle
iWrite m8051_tap_tessent_tap_dft_inst.instruction HOSTIJTAG_LPCT
iApply
}
set_test_setup_icall "load_lpct_instruction" -append
set_ijtag_retargeting_options -compare_constant_capture_values off \
-test_setup_network_end_state keep
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Low Pin Count Test Controller
Type-2 LPCT Controller Example
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix C
EDT Pattern Generation for the Hybrid IP
The EDT technology within the hybrid IP functions as described in the Tessent TestKompress
Users Manual. In addition, EDT mode contains functionality specific to the hybrid IP.
EDT Mode Initialization with IJTAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
The EDT Setup iProc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Usage Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Using iProcs is optional for EDT mode with one exception. When EDT reset is not synthesized,
the tool must use the EDT setup iProc to generate the initialization sequence for the chain
masking register. In this case, the tool automatically provides the values for the EDT static
control signals based on the iProc parameters. When iProcs are not used, the test procedures
should provide the values required for EDT static control signals.
You can initialize the chain masking register either by adding an EDT reset signal to the
hardware or by using IJTAG for seeding values into this register. By default, the tool initializes
the chain masking register by using IJTAG. This reduces the need for extra hardware.
You can change the default behavior by synthesizing the EDT reset signal. Specify the
following command during IP creation:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT Pattern Generation for the Hybrid IP
Usage Examples
Among these files, the tool creates a PDL file that is linked to a generated ICL module. The
PDL file includes one EDT iProc named “setup” in addition to several LogicBIST iProcs for
LBIST mode.
The tool-generated EDT setup iProc contains parameters for EDT static signals (EDT bypass,
EDT single-chain bypass, EDT low power and EDT dual configuration), the EDT reset signal,
and serial-load initializing of chain mask registers. The parameters for the EDT static signals
and EDT reset are present in the iProc only when the corresponding hardware is synthesized.
You use the static EDT control signals as you would for non-hybrid EDT.
• edt_reset = on
• edt_bypass = off
• edt_single_bypass_chain = off
• edt_configuration = low compression configuration
• edt_low_power_shift_en = on when the EDT low-power hardware is synthesized and
enabled during IP creation and off when it is disabled
Refer to “EDT IP Setup for IJTAG Integration” for more information.
Usage Examples
To add parameters to the setup iProc, specify iCalls with the set_test_setup_icall command in
the EDT pattern generation dofile.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT Pattern Generation for the Hybrid IP
Usage Examples
For the following usage examples, suppose you have a tool-generated setup iProc as shown in
Example C-1:
iProcsForModule piccpu_edt
iProc setup {args} {
if {[expr [llength $args]%2 != 0]} {
display_message -error "Odd number of arguments. Expecting parameter
and value pairs."
return -code error
}
set edt_reset 1
set edt_configuration low_compression_cfg
set edt_low_power_shift_en 1
set edt_bypass 0
set edt_single_bypass_chain 0
set edt_chain_mask 1111111111111111
set iwrite_chain_mask 0
foreach {param value} $args {
set param [string tolower $param]
if {$param == "edt_reset"} {
set edt_reset $value
} elseif {$param == "edt_configuration"} {
set edt_configuration $value
} elseif {$param == "edt_low_power_shift_en"} {
set edt_low_power_shift_en $value
} elseif {$param == "edt_bypass"} {
set edt_bypass $value
} elseif {$param == "edt_single_bypass_chain"} {
set edt_single_bypass_chain $value
} elseif {$param == "tessent_chain_masking"} {
foreach chain $value {
if {$chain < 1 || $chain > 16} {
display_message -error "Invalid chain index '$chain'. Must
be 1 to 16."
return -code error
}
set pos [expr {[string length $edt_chain_mask]-$chain}]
set edt_chain_mask [string replace $edt_chain_mask $pos $pos 0]
}
set iwrite_chain_mask 1
continue
} else {
display_message -error "Invalid parameter '$param'. Valid
parameters are 'edt_reset', 'edt_configuration',
'edt_low_power_shift_en', 'edt_bypass', 'edt_single_bypass_chain' and
'tessent_chain_masking'."
return -code error
}
if {$param == "edt_configuration"} {
if {$value == "low_compression_cfg" || $value ==
"high_compression_cfg" || [string is boolean -strict $value]} {
set edt_configuration $value
} else {
display_message -error "Invalid EDT configuration value
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT Pattern Generation for the Hybrid IP
Usage Examples
if {$edt_reset} {
iWrite edt_reset on
iApply
iWrite edt_reset off
iApply
}
if {![string is boolean -strict $edt_configuration]} {
iWrite edt_configuration $edt_configuration
} elseif {$edt_configuration} {
iWrite edt_configuration high_compression_cfg
} else {
iWrite edt_configuration low_compression_cfg
}
if {$edt_low_power_shift_en} {
iWrite edt_low_power_shift_en on
} else {
iWrite edt_low_power_shift_en off
}
if {$edt_bypass} {
iWrite edt_bypass on
} else {
iWrite edt_bypass off
}
if {$edt_single_bypass_chain} {
iWrite edt_single_bypass_chain on
} else {
iWrite edt_single_bypass_chain off
}
if {$iwrite_chain_mask} {
iWrite bist_chain_mask 0b$edt_chain_mask
iWrite bist_chain_mask_load_en 0b0
}
iApply
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT Pattern Generation for the Hybrid IP
Usage Examples
The value of this parameter is a Tcl list of chain indexes, counted from 1 for the first chain
connected to the specified EDT block.
The tool handles internally masked chains as follows depending on whether the edt_reset
parameter is present in the setup iProc:
In the following example, assume that chains “chain1” and “chain2” are broken and need to be
output masked for EDT. Also assume they are the first 2 scan chains in the design. Chain
indices 1 and 2 corresponds to chains “chain1” and “chain2.”
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
EDT Pattern Generation for the Hybrid IP
Usage Examples
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix D
Interface Pins
The interface pins on the various hybrid IP hardware components enable you to control various
aspects of the hybrid IP.
LogicBIST Controller Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Clock Controller Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
EDT/LogicBIST Wrapper Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Segment Insertion Bit Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Interface Pins
Clock Controller Pins
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Interface Pins
EDT/LogicBIST Wrapper Pins
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Interface Pins
Segment Insertion Bit Signals
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix E
Getting Help
There are several ways to get help when setting up and using Tessent software tools. Depending
on your need, help is available from documentation, online command help, and Siemens EDA
Support.
The Tessent Documentation System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Global Customer Support and Success . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
For information on defining default HTML browsers, setting up browser options, and setting the
default PDF viewer, refer to the Siemens® Software and Mentor® Documentation System
manual.
• Shell Command — On Linux platforms, enter mgcdocs at the shell prompt or invoke a
Tessent tool with the -manual invocation switch.
• File System — Access the Tessent InfoHub or PDF bookcase directly from your file
system, without invoking a Tessent tool. For example:
HTML:
firefox <software_release_tree>/doc/infohubs/index.html
PDF:
acroread <software_release_tree>/doc/pdfdocs/_tessent_pdf_qref.pdf
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Getting Help
Global Customer Support and Success
• Application Online Help — ou can get contextual online help within most Tessent
tools by using the “help -manual” tool command. For example:
> help dofile -manual
This command opens the appropriate reference manual at the “dofile” command
description.
For easy access, we offer the option of viewing Support Center documentation using a proxy
server on your network. This server also removes the need for your users to have a Support
Center account or to log into Support Center to view documentation.
Siemens EDA understands that some customers use our products on restricted networks without
internet access. For those customers, we are pleased to offer the option to download and set up
the Siemens Documentation Server to view the documentation package locally on that network.
Note
The Siemens EDA documentation InfoHub will be deprecated as part of this transition. We
will provide more information on this new documentation system as part of the Tessent
2024.1 release.
We are committed to providing you with the best experience possible while using Siemens EDA
products, and we are confident that this change will enhance your access to product
documentation.
https://support.sw.siemens.com
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Getting Help
Global Customer Support and Success
If your site is under a current support contract, but you do not have a Support Center login,
register here:
https://support.sw.siemens.com/register
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Getting Help
Global Customer Support and Success
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Third-Party Information
Details on open source and third-party software that may be included with this product are available in the
<your_software_installation_location>/legal directory.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.