Tshell User
Tshell User
Tshell 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 Tessent™ Shell 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
Tessent Shell Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
What Is Tessent Shell?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
What Can You Do With Tessent Shell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Tessent Shell Tcl Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Command Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Command Completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Command History. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Escaped Hierarchical Names in Command Tcl Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Dofile Transcription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Tcl Command Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Chapter 2
Tool Invocation, Contexts, Modes, and Data Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Tool Invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Contexts and System Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
System Modes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Context and System Mode Combinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Design Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Design Data Models. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Flat Design Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Hierarchical Design Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
ICL Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Object Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Chapter 3
Design Introspection and Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Design Introspection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Object Specification Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Design Introspection Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Design Introspection Command Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Bundle Object Introspection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Bundle Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Bundle Object Data Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Introspection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Bundle Object Introspection Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Fan-in and Fanout Tracing of Complex Signals and Bundle Object Tracing . . . . . . . . . 74
Connectivity Through Complex Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Design Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Design Editing Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Editing Complex Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Editing Complex Signals With the DftSpecification Wrapper. . . . . . . . . . . . . . . . . . . . . 86
Editing Complex Signals: Limitations and Compatibility . . . . . . . . . . . . . . . . . . . . . . . . 87
Design Editing Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Simulation Contexts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Simulation Context Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Introspection and Analysis Using Simulation Contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Automatic Design Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
ICL and TCD Post-Synthesis Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Updating ICL Attributes From the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Matching Rules for Port Names in Post-Synthesis Update . . . . . . . . . . . . . . . . . . . . . . . . 100
Controlling the Name Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
ICL Objects vs. Design Objects Introspection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Chapter 4
DFT Architecture Guidelines for Hierarchical Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Hierarchical DFT Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Physical Layout Regions in Hierarchical Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Pattern Retargeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Wrapped Cores and Wrapper Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Internal Mode and External Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
On-Chip Clock Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Graybox Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Top-Down Planning Before Bottom-Up Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Clocking Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Resource Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Test Scheduling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Specific Tasks That May Require Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Sample DFT Planning Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
DFT Implementation Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Chapter 5
RTL DFT Analysis and Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
RTL DFT Analysis in the Overall Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
RTL Design Rule Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
RTL IP Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
RTL Design Assessment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
RTL Code Complexity Score . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
RTL Test Point Insertion Suitability Score. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Detailed Metrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Gate Node Location Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Preparations for RTL DFT Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Test Point Analysis at RTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Test Point Insertion at RTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Specifying RTL Test Points with Tessent Shell Commands . . . . . . . . . . . . . . . . . . . . . . . . . 136
Observation Scan Type of Test Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Chapter 6
Tessent Shell Workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Tessent Shell Flow for Flat Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Overview of the RTL and Scan DFT Insertion Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
First DFT Insertion Pass: Performing MemoryBIST and Boundary Scan . . . . . . . . . . . . . 178
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC . . . . . . . . . . . . . . . . . . . 182
Loading the Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Specifying and Verifying the DFT Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Creating the DFT Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Generating the EDT, Hybrid TK/LBIST, and OCC Hardware . . . . . . . . . . . . . . . . . . . . 192
Extracting the ICL Module Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Generating ICL Patterns and Running Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Performing Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Performing Scan Chain Insertion (Flat Design) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Performing ATPG Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Simulating LBIST Faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Considerations for Using Gate-Level Verilog Netlists. . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Tessent Shell Flow for Hierarchical Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Hierarchical DFT Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
How the DFT Insertion Flow Applies to Hierarchical Designs . . . . . . . . . . . . . . . . . . . . . 206
RTL and Scan DFT Insertion Flow for Physical Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . 208
First DFT Insertion Pass: Performing Block-Level MemoryBIST . . . . . . . . . . . . . . . . . 209
Second DFT Insertion Pass: Inserting Block-Level EDT and OCC . . . . . . . . . . . . . . . . 211
Specifying and Verifying the DFT Requirements: DFT Signals for Wrapped Cores . . . 214
Performing Scan Chain Insertion: Wrapped Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Verifying the ICL Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Performing ATPG Pattern Generation: Wrapped Core . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Running Recommended Validation Step for Pre-Layout Design Sign Off . . . . . . . . . . . 225
RTL and Scan DFT Insertion Flow for the Top Chip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Top-Level DFT Insertion Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
First DFT Insertion Pass: Performing Top-Level MemoryBIST and Boundary Scan. . . 230
Second DFT Insertion Pass: Inserting Top-Level EDT and OCC . . . . . . . . . . . . . . . . . . 233
Top-Level Scan Chain Insertion Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Top-Level ATPG Pattern Generation Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Performing Top-Level ATPG Pattern Retargeting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
RTL and Scan DFT Insertion Flow for Sub-Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
DFT Insertion Flow for the Sub-Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
DFT Insertion Flow for the Next Parent Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
RTL and Scan DFT Insertion Flow for Instrument Blocks . . . . . . . . . . . . . . . . . . . . . . . . 246
DFT Insertion Flow for the Instrument Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Instrument Block DFT Insertion Flow for the Next Parent Level . . . . . . . . . . . . . . . . . . 249
RTL and DFT Insertion Flow With Third-Party Scan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
DFT Insertion Flow With Third-Party Scan Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Wrapped Core DFT Insertion With Third-Party Scan . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Top Chip DFT Insertion with Third-Party Scan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Tessent Shell Flow for Tiled Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Tiling DFT Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
How The DFT Insertion Flow Applies to Tiled Designs . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Clocking During Logic Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Pre-DFT Design Modification and Integration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Chip Level Port Requirements and Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Tile Level Port Connections and Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Creation of IJTAG Graybox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Example Flow for a Tiled Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Tiling Flow Used in Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
DFT Flow for Tiles Without TAP and BISR Controllers. . . . . . . . . . . . . . . . . . . . . . . . . . 295
Embedded Boundary Scan Insertion in Tiles Without a TAP Controller . . . . . . . . . . . . 295
IJTAG Network Insertion in Tiles Without a TAP Controller. . . . . . . . . . . . . . . . . . . . . 299
Memory Test Insertion in Tiles Without TAP and BISR Controllers . . . . . . . . . . . . . . . 302
SSN and EDT Insertion in Tiles Without TAP and BISR Controllers. . . . . . . . . . . . . . . 304
Scan Insertion and Scan Modes in Tiles Without TAP and BISR Controllers . . . . . . . . 308
Patterns Generation in Tiles Without a TAP Controller . . . . . . . . . . . . . . . . . . . . . . . . . 309
Verification and Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Embedded Boundary Scan Insertion in Tiles With a TAP Controller . . . . . . . . . . . . . . . . 313
IJTAG Network Insertion in Tiles With a TAP Controller . . . . . . . . . . . . . . . . . . . . . . . . 319
Memory BISR Insertion for Tiles With a BISR Controller . . . . . . . . . . . . . . . . . . . . . . . . 321
SSN Insertion for Tiles With Primary SSN Ports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Scan Insertion and Scan Modes for Tiles with Promoted OCCs . . . . . . . . . . . . . . . . . . . . 325
Chip-Level Integration for the Tiling Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
BSDL File Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
IJTAG Based Verification Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Tile Level Patterns Retargeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Tile-to-Tile Test at the Package Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Tessent Shell Post-Layout Validation Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Overview of the Post-Layout Validation Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Soft Link TSDB and Post-Layout Netlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Verify MemoryBIST, Boundary Scan and IJTAG Patterns . . . . . . . . . . . . . . . . . . . . . . . . 340
Verifying the Scan-Inserted ATPG Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Post-Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic . . . . . . . . 343
Testbench Generation and Simulation in RTL Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Simulation Wrapper Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Testbench Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Hybrid TK/LBIST Flow for Flat Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
RTL and Scan DFT Insertion Flow With Hybrid TK/LBIST . . . . . . . . . . . . . . . . . . . . . . 356
Perform the First DFT Insertion Pass: Hybrid TK/LBIST . . . . . . . . . . . . . . . . . . . . . . . . . 357
Perform the Second DFT Insertion Pass: Hybrid TK/LBIST. . . . . . . . . . . . . . . . . . . . . . . 360
Perform Test Point Insertion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Chapter 7
Tessent Shell Automotive Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Introduction to Tessent Automotive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Test Case Overview and Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Core-Level DFT Insertion for Automotive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
DFT Insertion Flow for the Processor Core Physical Block . . . . . . . . . . . . . . . . . . . . . . . 401
First DFT Insertion Pass: processor_core. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Second DFT Insertion Pass: processor_core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Test Point, X-Bounding, and Scan Insertion: processor_core . . . . . . . . . . . . . . . . . . . . . 409
ATPG Pattern Generation: processor_core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
LogicBIST Fault Simulation: processor_core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
LogicBIST Pattern Generation: processor_core. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
Interconnect Bridge/Open UDFM Generation: processor_core. . . . . . . . . . . . . . . . . . . . 418
Cell-Neighborhood UDFM Generation: processor_core . . . . . . . . . . . . . . . . . . . . . . . . . 420
Automotive-Grade ATPG Pattern Generation: processor_core . . . . . . . . . . . . . . . . . . . . 424
DFT Insertion Flow for the GPS Baseband Physical Block . . . . . . . . . . . . . . . . . . . . . . . . 431
DFT Insertion Pass With In-System Test: gps_baseband . . . . . . . . . . . . . . . . . . . . . . . . 432
LogicBIST Fault Simulation With One NCP: gps_baseband . . . . . . . . . . . . . . . . . . . . . 436
Interconnect Bridge/Open UDFM Generation: gps_baseband. . . . . . . . . . . . . . . . . . . . . 436
Cell-Neighborhood UDFM Generation: gps_baseband . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Automotive-Grade ATPG Pattern Generation: gps_baseband. . . . . . . . . . . . . . . . . . . . . 437
Top-Level DFT Insertion for the Automotive Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
First DFT Insertion Pass: Top with MemoryBIST, BISR, and Boundary Scan . . . . . . . . . 438
Second DFT Insertion Pass: Top with EDT, OCC, and In-System Test . . . . . . . . . . . . . . 444
Scan Insertion for the Top Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
ATPG Pattern Generation for the Top Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
ATPG Pattern Retargeting for the Top Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Interconnect Bridge/Open UDFM Generation for the Top Design . . . . . . . . . . . . . . . . . . 452
Cell-Neighborhood UDFM Generation for the Top Design. . . . . . . . . . . . . . . . . . . . . . . . 452
Automotive-Grade ATPG Pattern Generation for the Top Design . . . . . . . . . . . . . . . . . . 453
Chapter 8
TSDB Data Flow for the Tessent Shell Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Core-Level or Flat TSDB Data Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Top-Level TSDB Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Chapter 9
Streaming Scan Network (SSN). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
Tessent SSN Workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Block-Level SSN Insertion and Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
First DFT Insertion Pass: Performing Block-Level MemoryBIST . . . . . . . . . . . . . . . . . 483
Second DFT Insertion Pass: Inserting Block-Level EDT, OCC, and SSN . . . . . . . . . . . 483
Synthesis for Block-Level Insertion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Creating the Post-Synthesis TSDB View (Block-Level) . . . . . . . . . . . . . . . . . . . . . . . . . 491
Performing Scan Chain Insertion With Tessent Scan (Block-Level). . . . . . . . . . . . . . . . 493
Verifying the ICL-Based Patterns After Synthesis (Block-Level). . . . . . . . . . . . . . . . . . 496
Generating Block-Level ATPG Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
Top-Level SSN Insertion and Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
First DFT Insertion Pass: Performing Top-Level MemoryBIST . . . . . . . . . . . . . . . . . . . 508
Second DFT Insertion Pass: Inserting Top-Level EDT, OCC, and SSN . . . . . . . . . . . . . 511
Synthesis for Top-Level Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
Creating the Post-Synthesis TSDB View (Top-Level) . . . . . . . . . . . . . . . . . . . . . . . . . . 520
Performing Scan Chain Insertion With Tessent Scan (Top-Level) . . . . . . . . . . . . . . . . . 520
Verifying the ICL-Based Patterns After Synthesis (Top-Level) . . . . . . . . . . . . . . . . . . . 521
Generating Top-Level ATPG Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
Retargeting ATPG Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Performing Reverse Failure Mapping for SSN Pattern Diagnosis. . . . . . . . . . . . . . . . . . 526
Advanced Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Streaming-Through-IJTAG Scan Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
On-Chip Compare With SSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
Types of Clock Networks To Use With SSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
Broadcast to Identical SSN Datapaths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
Determine Failing Cores on ATE With SSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Yield Statistics on ATE With SSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
Manufacturing Patterns With SSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Manufacturing Pattern Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
SSN Pattern Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
How To Write Complete SSN Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
How To Write JTAG and Payload Procedures Separately. . . . . . . . . . . . . . . . . . . . . . . . 562
How To Write SSN On-Chip Compare Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
How To Write Streaming-Through-IJTAG Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
SSN Debug on the Tester . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Signoff Patterns With SSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
Block-Level Signoff Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
Top-Level Signoff Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
Chapter 10
Tessent Examples and Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
How to Handle Parameterized Blocks During DFT Insertion . . . . . . . . . . . . . . . . . . . . . . . . 666
Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
Creation of Parameterization Wrappers and Initial TSDBs for Typical Designs . . . . . . 672
Block Uniquification and Creation of Parameterization Wrappers and Initial TSDBs for
Complex Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
Modifications to the First DFT Insertion Pass for Blocks . . . . . . . . . . . . . . . . . . . . . . . . 676
Modifications to the Second DFT Insertion Pass for Blocks . . . . . . . . . . . . . . . . . . . . . . 677
Synthesis for Physical Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
Creation of the Gate_Level TSDB for a Physical Block . . . . . . . . . . . . . . . . . . . . . . . . . 678
Scan Insertion for Physical Blocks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
Modifications to the First DFT Insertion Pass for Chips . . . . . . . . . . . . . . . . . . . . . . . . . 679
Modifications to the Second DFT Insertion Pass for Chips . . . . . . . . . . . . . . . . . . . . . . . 680
Synthesis for the Chip Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Typical Scenario Without Uniquification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Complex Scenario With Uniquification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
How to Avoid Simulation Issues When Using the Two-Pin Serial Port Controller . . . . . . . 691
How to Handle Clocks Sourced by Embedded PLLs During Logic Test . . . . . . . . . . . . . . . 694
How to Design Capture Windows for Hybrid TK/LBIST. . . . . . . . . . . . . . . . . . . . . . . . . . . 700
How to Use Boundary Scan in a Wrapped Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
How to Use an Older Core TSDB With Newly-Inserted DFT Cores . . . . . . . . . . . . . . . . . . 704
TAP Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
Insert a Stand-Alone TAP in a Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
Insert a TAP with an IJTAG Host Scan Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
Insert a Compliance Enable TAP with an IJTAG Interface . . . . . . . . . . . . . . . . . . . . . . . . 709
Insert a Daisy-Chained TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
Insert a Primary TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712
Insert a Secondary TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
Connecting to a Third-Party TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717
How to Create a WSP Controller in Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717
How to Set Up Third-Party Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
How to Set Up Support for Third-Party OCCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
How to Configure Files for Third-Party OCCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
Test Logic Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
Configuration for Scan Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
Pattern Generation and Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
Post-Synthesis Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
ICL and TCD Post-Synthesis Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
Limitations Related to SystemVerilog Interface Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . 736
Updating ICL Attributes From the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
Matching Requirements for Port Names in Post-Synthesis Update . . . . . . . . . . . . . . . . . . 738
Design Name Mapping Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
Design Name Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
Default Matching Rules for the get_pins, get_ports, and get_instances -match_rtl_reg
Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
Chapter 11
Test Procedure File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
Test Procedure File Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
Test Procedure File Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
Test Procedure File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
#include Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
Set Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748
Alias Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751
Timing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
Timeplate Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
Multiple-Pulse Clocks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
The pulse_clock Statement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
Inferred Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
Differences Between Default add_clock and 1x Multiplier Clock . . . . . . . . . . . . . . . . . 764
Always Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
Procedure Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
Clock Control Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
The Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786
Test_Setup (Optional). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
Chapter 12
Tessent Visualizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
Invoking Tessent Visualizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
Invoke Explicitly on the Same Machine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
Invoke Explicitly on a Different Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
Invoke Implicitly. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839
License-Protected Tabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
Framework Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
Tessent Visualizer Components and Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845
Table Toolbar Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846
Columns and Filters Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848
Table Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849
Data Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
Chapter 13
Timing Constraints (SDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945
Generating and Using SDC for Tessent Shell Embedded Test IP . . . . . . . . . . . . . . . . . . . . . 946
SDC File Generation With Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946
SDC Design Synthesis with Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
Preparation Step 1: Sourcing SDC File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
Preparation Step 2: Setting and Redefining Tessent Tcl Variables . . . . . . . . . . . . . . . . . . 948
Preparation Step 3: Verifying the Declaration of Functional Clocks . . . . . . . . . . . . . . . . . 950
Preparation Step 4: Redefining Other Tessent Tcl Variables . . . . . . . . . . . . . . . . . . . . . . . 951
Synthesis Step 1: Applying the SDC Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952
Synthesis Step 2: Preparing the DFT Logic for Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . 952
Appendix A
The Tessent Tcl Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009
General Tcl Guidelines in Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009
Encoding Tcl Scripts in Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011
Guidelines for Modifying Existing Dofiles for Use With Tcl . . . . . . . . . . . . . . . . . . . . . . . . 1012
Special Tcl Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013
Custom Tcl Packages in Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015
Tcl Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1016
Appendix B
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT . . . . . . . . . . . . . . . . . . 1017
DFT Insertion With Tessent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1018
Synthesis Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1019
SystemVerilog and Port Name Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021
Synthesis Guidelines for Parameterization Wrapper Flows . . . . . . . . . . . . . . . . . . . . . . . . . 1022
Tcl Procs for Synthesis in the Parameterization Wrapper Flow . . . . . . . . . . . . . . . . . . . . . 1023
Appendix C
Clocking Architecture Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033
Clocks Driven by Primary Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033
Clock Generators Outside the Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034
Clock Generators Inside the Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034
Clock Sourced From A Core With Embedded PLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1035
Clock Mesh Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036
Appendix D
Formal Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039
Golden RTL Versus DFT-Inserted RTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039
Pre-Layout Versus Post-Layout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1040
Embedded Boundary Scan at the Physical Block Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041
Appendix E
Solutions for Genus Synthesis Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1043
Appendix F
Transitioning from the Classic Point Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045
Transitioning from the Classic FastScan Point Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045
Transitioning from the Classic TestKompress Point Tool. . . . . . . . . . . . . . . . . . . . . . . . . . . 1046
Transitioning from the Classic DFTAdvisor Tool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047
Transitioning from the Classic Diagnosis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1048
Appendix G
Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1049
The Tessent Documentation System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1049
Global Customer Support and Success . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050
Index
Third-Party Information
Figure 7-3. DFT Integration at the Core Level for Automotive . . . . . . . . . . . . . . . . . . . . . . 397
Figure 7-4. DFT Integration at the Top Level for Automotive . . . . . . . . . . . . . . . . . . . . . . . 398
Figure 7-5. DFT Insertion Flow for Automotive Test Case . . . . . . . . . . . . . . . . . . . . . . . . . 399
Figure 7-6. DFT Insertion Flow for processor_core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Figure 7-7. Enhanced Clocking and DFT Controls After Second DFT Insertion Pass . . . . . 406
Figure 7-8. ATPG Pattern Generation Flow for processor_core . . . . . . . . . . . . . . . . . . . . . . 413
Figure 7-9. Interconnect Bridge/Open UDFM Generation Flow for processor_core . . . . . . 419
Figure 7-10. Cell-Neighborhood UDFM Generation Flow for processor_core . . . . . . . . . . 422
Figure 7-11. ATPG Topoff Run Flow With a UDFM for processor_core . . . . . . . . . . . . . . 426
Figure 7-12. ATPG Run Flow With All UDFM for processor_core. . . . . . . . . . . . . . . . . . . 429
Figure 7-13. DFT Insertion Flow for gps_baseband . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Figure 7-14. Dofile Example for Top-Level Scan Chain Insertion, Automotive Flow. . . . . 450
Figure 7-15. Cell-Aware UDFM Generation Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
Figure 7-16. TCA Based Pattern Sorting Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Figure 7-17. Hardware Fault Tolerant Module Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Figure 7-18. HFT Module in the Single-Pass Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Figure 7-19. HFT Modules in the Two-Pass Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Figure 8-1. Tessent Shell Task Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Figure 8-2. TSDB File Structure, Core Level, First Insertion Pass . . . . . . . . . . . . . . . . . . . . 466
Figure 8-3. TSDB File Structure, Core Level, Second Insertion Pass. . . . . . . . . . . . . . . . . . 467
Figure 8-4. TSDB File Structure, Core Level, Synthesis and Scan Insertion . . . . . . . . . . . . 468
Figure 8-5. TSDB File Structure, Core Level, Pattern Generation . . . . . . . . . . . . . . . . . . . . 468
Figure 8-6. TSDB Data Flow, Top Level, First Insertion Pass . . . . . . . . . . . . . . . . . . . . . . . 471
Figure 8-7. TSDB Data Flow, Top Level, Second Insertion Pass . . . . . . . . . . . . . . . . . . . . . 472
Figure 8-8. TSDB Data Flow, Top Level, Scan Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Figure 8-9. TSDB Data Flow, Top Level, ATPG Pattern Generation. . . . . . . . . . . . . . . . . . 474
Figure 8-10. TSDB Data Flow, Top Level, ATPG Pattern Generation With Pattern Retargeting
475
Figure 9-1. Directory Structure of Reference Testcase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Figure 9-2. SSN Block-Level Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Figure 9-3. SSN Top-Level Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
Figure 9-4. Multiplexer Node for Bypassing the gps_baseband Blocks . . . . . . . . . . . . . . . . 515
Figure 9-5. Simplified Tessent Diagnosis Two-Step Flow . . . . . . . . . . . . . . . . . . . . . . . . . . 527
Figure 9-6. Streaming-Through-IJTAG Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Figure 9-7. Faults in Comparator Logic That Could Mask Real Faults . . . . . . . . . . . . . . . . 539
Figure 9-8. SSN Datapath in Tiling Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
Figure 9-9. Stepping Down the Clock Tree on the Last Pipeline Stage . . . . . . . . . . . . . . . . 548
Figure 9-10. Example sticky_status Bit Annotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Figure 9-11. Example Core Instance Annotations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Figure 9-12. SSN Packet Rotation Cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Figure 9-13. Pin Tables With Modulus and Core Instance Relationships. . . . . . . . . . . . . . . 551
Figure 9-14. Determine Failing Core Instance With Modulus and Pin Tables . . . . . . . . . . . 552
Figure 9-15. Example Modulus and Pin Table Annotations . . . . . . . . . . . . . . . . . . . . . . . . 552
Figure 9-16. Annotation Where the Cycle Rotation Begins . . . . . . . . . . . . . . . . . . . . . . . . . 553
Figure 9-17. Packet Rotation on the SSN Bus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Figure 10-9. Active OCCs During Internal Test Modes of corea and coreb . . . . . . . . . . . . . 697
Figure 10-10. Active OCCs During Test Modes of Top Level . . . . . . . . . . . . . . . . . . . . . . . 699
Figure 10-11. Wrapped Core Boundary Scan Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
Figure 10-12. IEEE 1687 IJTAG Network Model of the IEEE 1500 WSP Interface . . . . . . 722
Figure 11-1. 200ns Timing Waveform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
Figure 11-2. Shift Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
Figure 11-3. Timing Diagram for Shift Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791
Figure 11-4. Load_Unload Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794
Figure 11-5. Timing Diagram for Load_Unload Procedure . . . . . . . . . . . . . . . . . . . . . . . . . 795
Figure 11-6. Shadow_Control Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
Figure 11-7. Master_Observe Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
Figure 11-8. Shadow_Observe Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799
Figure 11-9. Skew_Load Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800
Figure 11-10. Skew_load applied within Pattern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801
Figure 11-11. Full Clock Sequential Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
Figure 11-12. Init_force Procedure Usage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
Figure 12-1. Tessent Visualizer Split View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842
Figure 12-2. Moving a Tab to the Left or Right Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
Figure 12-3. Common Table Toolbar Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846
Figure 12-4. Columns and Filters Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848
Figure 12-5. Sticky Column. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851
Figure 12-6. Sticky Indicator in Column Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851
Figure 12-7. Selection Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853
Figure 12-8. Schematic With Overview Pane and Attributes Table . . . . . . . . . . . . . . . . . . . 855
Figure 12-9. Schematic Elements: Toolbar, Address Bar, and Selection Buttons . . . . . . . . 856
Figure 12-10. Hierarchical Schematic Showing Pins, Ports, Instances, and Nets . . . . . . . . . 858
Figure 12-11. Hierarchical Instance With Callout and Pin Data . . . . . . . . . . . . . . . . . . . . . . 859
Figure 12-12. Showing the Internal Connectivity of a Hierarchical Instance . . . . . . . . . . . . 860
Figure 12-13. Hierarchical Instance With DRC Callout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860
Figure 12-14. Hierarchical Cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861
Figure 12-15. Hierarchical Instance Representing an Assign Statement. . . . . . . . . . . . . . . . 861
Figure 12-16. Black-Boxed Instance Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862
Figure 12-17. Objects in the Flat Schematic Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862
Figure 12-18. Persistent Buffer Symbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
Figure 12-19. Bus Index Displayed at Rip Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864
Figure 12-20. Collapsed Buffers and Inverters With No Hidden Fanout . . . . . . . . . . . . . . . 867
Figure 12-21. Expanded Buffers and Inverters With No Hidden Fanout . . . . . . . . . . . . . . . 867
Figure 12-22. Collapsed Buffers/Inverters With Hidden Fanout . . . . . . . . . . . . . . . . . . . . . 868
Figure 12-23. Expanded Buffers/Inverters With Hidden Fanout. . . . . . . . . . . . . . . . . . . . . . 868
Figure 12-24. Expanded Buffers/Inverters With Fanout Revealed . . . . . . . . . . . . . . . . . . . . 869
Figure 12-25. Unfolding an Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870
Figure 12-26. Folded Cell Group. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870
Figure 12-27. Unfolded Cell Group. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870
Figure 12-28. Schematic Elements: Context Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871
Figure 12-29. Tracer Context Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
Figure 12-30. Context Table for Instance Pins (Hierarchical Schematic) . . . . . . . . . . . . . . . 873
Figure 12-31. Context Table for Instances (Hierarchical Schematic) . . . . . . . . . . . . . . . . . . 874
Figure 12-32. Context Table for Nets (Hierarchical Schematic). . . . . . . . . . . . . . . . . . . . . . 875
Figure 12-33. Fanout Replaced by User-Added Primary Input. . . . . . . . . . . . . . . . . . . . . . . 876
Figure 12-34. Flat Sink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
Figure 12-35. Fanout Replaced by Multiple User-Added Primary Inputs . . . . . . . . . . . . . . 877
Figure 12-36. Multiple Flat Sinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877
Figure 12-37. Context Table for Multiple Flat Sinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
Figure 12-38. User-Added Primary Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879
Figure 12-39. Netlist Driver and Context Table for User-Added Primary Inputs . . . . . . . . . 880
Figure 12-40. User-Added Primary Inputs (Flat Schematic). . . . . . . . . . . . . . . . . . . . . . . . . 880
Figure 12-41. Decision Point Strategy on Hierarchy Boundary at q[6] Port. . . . . . . . . . . . . 881
Figure 12-42. Choosing a Path From the Tracing Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881
Figure 12-43. Decision Point Strategy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882
Figure 12-44. Tessent Shell Attributes Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
Figure 12-45. Mouse Gestures in Tessent Visualizer Schematics. . . . . . . . . . . . . . . . . . . . . 886
Figure 12-46. Light, Dark, and High-Contrast Color Themes. . . . . . . . . . . . . . . . . . . . . . . . 887
Figure 12-47. Preferences Dialog Box (Text viewers Tab). . . . . . . . . . . . . . . . . . . . . . . . . . 888
Figure 12-48. Macro Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889
Figure 12-49. Running a Macro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889
Figure 12-50. Tooltip for a Collapsed Buffer Indicator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890
Figure 12-51. Tooltip for a Filter Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890
Figure 12-52. Tooltip for an Action Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890
Figure 12-53. Setting a Window Title Prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 891
Figure 12-54. Visualizer Window Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892
Figure 12-55. Hierarchical Instances With Pins Shown and Hidden. . . . . . . . . . . . . . . . . . . 894
Figure 12-56. Hierarchical Schematic Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895
Figure 12-57. Bus Tracing in the Hierarchical Schematic. . . . . . . . . . . . . . . . . . . . . . . . . . . 896
Figure 12-58. Bus Sub-Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
Figure 12-59. Showing All Bus Pins in the Hierarchical Schematic. . . . . . . . . . . . . . . . . . . 898
Figure 12-60. Loopback Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
Figure 12-61. Example of a Tied-Value Marker With Associated Pin Table . . . . . . . . . . . . 900
Figure 12-62. Flat Schematic (Cell Grouping On) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901
Figure 12-63. Alias in the ICL Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
Figure 12-64. Automatically Determined Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
Figure 12-65. Mux With Select Values Displayed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
Figure 12-66. Pins Driven or Active As Needed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
Figure 12-67. Implicitly Connected Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
Figure 12-68. Displaying the Definition of an ICL Instance . . . . . . . . . . . . . . . . . . . . . . . . . 906
Figure 12-69. Traced and Highlighted Scan Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
Figure 12-70. Instance Browser Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909
Figure 12-71. Cell Grouping in Hierarchical Instance Browser . . . . . . . . . . . . . . . . . . . . . . 910
Figure 12-72. Debugging in the Instance Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911
Figure 12-73. Wave Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913
Figure 12-74. External wave viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913
Figure 12-75. A GTKWave Viewer Application Invoked From Wave Generator . . . . . . . . 914
Figure 12-76. Cell Library Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
Figure 12-77. DRC Browser With Data Grouped By Rule . . . . . . . . . . . . . . . . . . . . . . . . . . 917
Figure 12-78. Flat Schematic Showing a DRC Violation . . . . . . . . . . . . . . . . . . . . . . . . . . . 918
Figure 12-79. Config Data Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920
Figure 12-80. Wrapper Editing in the Context Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
Figure 12-81. List of Configuration Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923
Figure 12-82. Pin Data Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924
Figure 12-83. Transcript Tab With an Interactive Command Line . . . . . . . . . . . . . . . . . . . . 925
Figure 12-84. Text/HDL Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
Figure 12-85. IJTAG Network Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927
Figure 12-86. Mux Select Values and Active Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928
Figure 12-87. Simulation Values in IJTAG Network Viewer . . . . . . . . . . . . . . . . . . . . . . . . 929
Figure 12-88. Highlighting SIBs in the IJTAG Network Viewer . . . . . . . . . . . . . . . . . . . . . 930
Figure 12-89. iProc Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931
Figure 12-90. iProc Viewer Tooltip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931
Figure 12-91. Diagnosis Report Viewer (Text View) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
Figure 12-92. Diagnosis Report Viewer (Table View) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
Figure 12-93. Search Tab: Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
Figure 12-94. Search Tab: Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
Figure 12-95. Search Tab: Gate Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
Figure 12-96. ICL Instances Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
Figure 12-97. iProc Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936
Figure 12-98. Config Data Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937
Figure 12-99. Searching by Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 940
Figure 13-1. Locations for Exclude Points for OCC CTS . . . . . . . . . . . . . . . . . . . . . . . . . . . 955
Figure 13-2. tessent_test_clock and tessent_shift_capture_clock Creation. . . . . . . . . . . . . . 972
Figure 13-3. Generated Clock Muxed Multi-Clock Memories . . . . . . . . . . . . . . . . . . . . . . . 985
Figure B-1. Problem Occurrence Creating the Gate Level Netlist . . . . . . . . . . . . . . . . . . . . 1017
Figure C-1. OCCs for Clocks Driven by Primary Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033
Figure C-2. OCCs With Clock Generators at Chip Level, Asynchronous Clocks . . . . . . . . 1034
Figure C-3. OCCs With Clock Generators Inside the Cores, Asynchronous Clocks . . . . . . 1035
Figure C-4. Clock Sourced From A Core With Embedded PLL, With MUX . . . . . . . . . . . 1035
Figure C-5. Clock Sourced From A Core With Embedded PLL, Without MUX . . . . . . . . . 1036
Figure C-6. Clock Mesh Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037
Tessent™ Shell is a platform from which you can run all the Tessent tools. The platform
includes shared design data, a common database, and powerful scripting utilities that provide a
fully automated design-for-test (DFT) flow as well as the ability to customize the flow to fit
specific requirements.
What Is Tessent Shell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
What Can You Do With Tessent Shell?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Tessent Shell Tcl Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Command Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Command Completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Command History. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Escaped Hierarchical Names in Command Tcl Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Dofile Transcription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Tcl Command Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
• Shared Data Models — Tessent Shell uses data models to store your design data. The
Tessent environment shares these models across all tools and functions, and you can
access the data stored within them to customize your design flow.
For standard automated flows, you do not need to be aware of this infrastructure. For
those flows that need to extend the native tool commands, they have the same access to
the design data model as the Tessent Shell tools do.
For more information about the data models, refer to “Design Data Models” on page 44.
• Attributes — Attributes are characteristics associated with design objects, such as
library cells, pins, and modules, that are stored within data models. Some are predefined,
and you can also create your own attributes. Using attributes increases visibility into
your design, enabling you to manipulate and query the features of the design objects.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Introduction
What Can You Do With Tessent Shell?
• Design Introspection — Introspection is the act of examining the design objects and
attributes stored within the data models. Introspection enables you to retrieve the design
data you need so that you can use Tcl scripting techniques to automate your own custom
designs flows.
For more information about design introspection, refer to “Design Introspection” on
page 50.
• Tcl — Use this scripting language across all Tessent tools and functions. Through
scripting, you can customize and extend the Tessent Shell standard flows as needed for
your design requirements.
For more information about Tcl usage, refer to “Tessent Shell Tcl Interface” on page 30.
• Tessent Shell Database (TSDB) — The TSDB is a database that stores all the
directories and files that Tessent Shell generates as you move through a design flow.
The TSDB enhances flow automation by acting as the central location where Tessent
tools can access the data it requires for the current task, whether that task be reading in a
design, performing DRC, inserting logic test hardware, or performing ATPG pattern
generation.
For more information about the TSDB, refer to “TSDB Data Flow for the Tessent Shell
Flow” on page 463.
• IJTAG Automation — By default, the DFT instruments that you create with Tessent
Shell are controlled through an IJTAG network and the IEEE 1687 protocol. Tessent
Shell automatically inserts the IJTAG infrastructure. This simplifies test setup and
control of all the instruments at all levels of hierarchy, and enables reuse in hierarchical
designs and testbenches at any stage of chip development.
For more information about IJTAG, refer to the “Tessent IJTAG User’s Manual.”
• Instrument Insertion — Generate and insert logic test hardware such as EDT
(embedded deterministic testing) and OCC (on-chip clock controller), in addition to
LogicBIST, MemoryBIST, in-system test, and boundary scan.
• Scan Analysis and Insertion — Perform scan analysis and scan chain insertion.
• ATPG — Generate ATPG patterns and perform fault simulation, including compression
technology.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Introduction
What Can You Do With Tessent Shell?
• Defect Diagnosis and Yield Analysis — Perform test failure diagnosis to determine a
defect’s most probable failure mechanism, as well as statistical analysis of diagnostic
failures to find systemic defects.
Additionally, Tessent Shell provides general-purpose design editing support so that you can
modify your design netlists as needed. You can work on the command line as described in
“Design Editing,” or use the Tessent Visualizer graphical interface.
If you are getting started with Tessent Shell, refer to “Tessent Shell Workflows” for information
about the Tessent Shell workflow for RTL and scan DFT insertion.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Introduction
Tessent Shell Tcl Interface
For guidelines about using Tcl in Tessent Shell, and information about converting existing
dofiles and using special characters, refer to “The Tessent Tcl Interface” appendix.
Command Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Command Completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Command History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Escaped Hierarchical Names in Command Tcl Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Dofile Transcription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Tcl Command Registration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Command Conventions
Tessent Shell provides a unified Tcl-style command set and naming convention. Commands
that begin with a certain first word (for example, “get” in get_attribute_value_list) perform
operations on the current data model.
Table 1-1 provides a summary listing by command first word of the Tessent Shell commands.
Refer to the Tessent Shell Reference Manual for a complete list of commands and options. You
can also use the “help” command with a wildcard to see a complete list of commands that start
with the same word:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Introduction
Command Completion
Command Completion
In the Tessent Shell interface, you can use the Tab key to complete command names, command
option names, and command option values. If the command you type is ambiguous, pressing the
Tab key lists all matching commands. Additionally, within a command, pressing the Tab key
can match variable names with $.
Many Tessent Shell commands are constructed as follows:
For example:
Using Tab key completion, you can complete each of the command parts (name, options, and
option values).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Introduction
Command Completion
For information about Tcl shell handling in Tessent Shell, refer to the set_tcl_shell_options
command.
Pressing the Tab key after the string completes and expands the command so that it looks like
this:
SETUP> get_attribute_list
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Introduction
Command History
Dofile Entries
You can use abbreviated commands (for example, g_a_l for get_attribute_list) in Tessent
Shell dofiles, but it is best to always use the full command name. There is no fixed minimum
typing for any command or option, and current minimum typing could change in future releases
because of the addition of new commands or options. Using the full command names also adds
readability to your dofiles.
Command History
Tessent Shell provides many interactive command line conveniences found in other Linux
shells.
On the command line, Tessent Shell binds the up arrow key to scroll back in history to show
previous commands, which you can easily rerun by pressing the enter key. Tessent Shell also
binds the down arrow key to scroll forward in the command history.
Tessent Shell also supports history expansion with an exclamation mark “!” as follows:
For example:
The get_pins command interprets the string of the pin path as a list and breaks it into two name
patterns: “\escaped@mem_inst” and “/CLKW,” which do not match anything in the design.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Introduction
Dofile Transcription
Passing that string in a list passes the correct full pattern “\escaped@mem_inst /CLKW,” and
Tessent Shell can find the requested object. Here are four different methods of accomplishing
this.
Dofile Transcription
By default, the transcript style is Full, which means the tool writes out all commands read from
a dofile before any Tcl evaluation occurs. The command appears in the transcript as entered but
is commented out.
During Tcl evaluation, the Tcl commands are written to the transcript as follows:
• The tool writes all commands from the dofile with a “// command:” prefix. This includes
Tessent Shell commands, Tcl commands, and complete loop and if/else constructs.
• The tool writes all commands embedded in Tcl constructs to the transcript as run with a
“// sub_command:” prefix. Tessent Shell completes the variable and command
substitutions and writes the resolved values in the loop to the transcript.
Note
This does not apply to introspection commands. Introspection commands are not
written to the transcript as subcommands.
• The tool indents nested dofiles when they are written to the logfile.
• The tool can read a Tcl routine in much the same manner as a dofile. If you issue the
source command (>source my_report_env), then the Tcl commands in the routine are
not transcripted.
Control the Tessent Shell transcription behavior using the set_transcript_style command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Introduction
Tcl Command Registration
For information about modifying existing dofiles for use with the Tessent Shell Tcl interface,
refer to “Guidelines for Modifying Existing Dofiles for Use With Tcl.”
When you first run the new command, the tool performs syntactic and semantic checks, and
provides the parsed results to your Tcl implementation of the command. The tool also provides
a mechanism to automatically define and register user-defined commands at tool invocation.
For more information about creating your own application commands, refer to the examples
included with the register_tcl_command description 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.
Tessent Shell Introduction
Tcl Command Registration
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 2
Tool Invocation, Contexts, Modes, and Data
Models
In the Tessent Shell environment, setting the context and system mode orients the tool as to
which task you want to perform. The tool uses design data models to store the relevant data
about your design.
Tool Invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Contexts and System Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Design Data Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Tool Invocation
When you invoke Tessent Shell, the tool starts up in setup mode.
You can invoke Tessent Shell from a Linux shell using the following syntax:
% tessent -shell
To use most Tessent Shell functionality, you must load a cell library after invocation using the
read_cell_library command.
Refer to the tessent shell command description in the Tessent Shell Reference Manual for
additional invocation options.
This startup file is common to the contexts listed in Table 2-2 on page 39.
The following table lists the environment variables that you can set for Tessent Shell
environment operation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation, Contexts, Modes, and Data Models
Tool Invocation
Related Topics
read_cell_library [Tessent Shell Reference Manual]
tessent [Tessent Shell Reference Manual]
Managing Mentor Tessent Software
set_context [Tessent Shell Reference Manual]
get_scratch_directory [Tessent Shell Reference Manual]
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation, Contexts, Modes, and Data Models
Contexts and System Modes
In addition, you must specify the design level where you want Tessent Shell to run tasks.
Contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
System Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Context and System Mode Combinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Design Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Contexts
The context specifies the functional category of tasks you want to perform with Tessent Shell.
Table 2-2 lists the contexts that are currently available.
Table 2-2. Tessent Shell Contexts
Context Description
dft Editing and introspection of the following types of designs: gate-
level Verilog, RTL Verilog, RTL SystemVerilog, and RTL
VHDL.
dft -edt EDT IP generation and optional insertion. This corresponds to
the IP creation phase of Tessent TestKompress®.
dft -logic_bist -edt Configuration, generation, and insertion of the EDT/LBIST
hybrid controller IP. This corresponds to Tessent LogicBIST.
dft -no_sub_context Specifies that a command is only available in the dft context
when no sub-context, such as -scan and -edt, was specified. See
the register_tcl_command in the Tessent Shell Reference Manual
for more information.
dft -scan Scan analysis and scan chain insertion. This corresponds to
Tessent Scan. Additionally in this context you can prepare a
BIST-ready design and include tasks such as X-bounding, MCP/
FP handling, and test point insertion. These features correspond
to Tessent ScanPro.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation, Contexts, Modes, and Data Models
Contexts
Context Specification
Set the Tessent Shell context using the set_context command. For example:
You must set the context after you invoke Tessent Shell and before you can enter most
commands. The set_context command is available only in setup mode. You can use the
get_context command to see the current context.
Prior to setting the context, you can only run a small set of setup commands. These commands
are those that you would typically place inside the startup file.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation, Contexts, Modes, and Data Models
System Modes
You can control the order in which Tessent Shell checks out licenses by setting the
TESSENT_LICENSE_ORDER environment variable. You provide, as the value of the
environment variable, a space-separated list of licenses using the terminology described for
“set_context -license.” For example:
Any available licenses not explicitly listed in the value of the TESSENT_LICENSE_ORDER
environment variable are appended to the list in their original order. The tool issues a warning if
the environment variable contains a license that does not exist.
You can exclude licenses such that Tessent Shell cannot check them out by setting the
TESSENT_LICENSE_EXCLUDE environment variable. You provide, as the value of the
environment variable, a space-separated list of licenses using the terminology described for
“set_context -license.” The following example excludes two licenses:
You can limit the licenses that Tessent Shell can check out by setting the
TESSENT_LICENSE_INCLUDE environment variable. You provide, as the value of the
environment variable, a space-separated list of licenses using the terminology described for
“set_context -license.” The tool excludes all other licenses if you set this environment variable.
The following example includes only two licenses for Tessent Shell to check out:
For more information about specifying a license feature, refer to the set_context command
description in the Tessent Shell Reference Manual. For a complete list of license feature names,
refer to Managing Tessent Software.
System Modes
A system mode in Tessent Shell defines the operational state of the tool. The default system
mode is setup. The available system mode depends on the current context of the tool.
Table 2-3 lists the available system modes.
Table 2-3. Tessent Shell System Modes
System Mode Description
setup Used as the entry point into the tool. Used to define the current
context and specify the design information.
analysis Used to perform design analysis, test pattern generation, PDL
retargeting, and simulation.
insertion Used to perform design editing and introspection.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation, Contexts, Modes, and Data Models
Context and System Mode Combinations
Change the Tessent Shell system mode using the set_system_mode command. For example:
The tool provides a set of commands that enable you to interact with contexts and system
modes.
Table 2-4. Tessent Shell Context and System Mode Commands
Command Description
get_context Returns the current context as specified by the set_context
command. Also returns inferred sub-contexts, such as whether
patterns -scan is configured to perform LogicBIST or ATPG.
set_context Sets the current context and its options.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation, Contexts, Modes, and Data Models
Design Levels
Table 2-4. Tessent Shell Context and System Mode Commands (cont.)
Command Description
set_system_mode Sets the system mode.
Design Levels
When working with DFT designs—that is, you are working in context dft—you must set the
design level at which you are performing tasks. There is no default setting for the design level.
The available design levels are chip, physical block, and sub-block. For flat designs, you always
work at the chip level. For hierarchical designs, it is crucial to differentiate whether you are
work at the top-level (chip) or at lower levels within physical blocks or sub-blocks. Refer to
“Hierarchical DFT Terminology” for definitions of these terms.
For complete information, refer to the set_design_level command description 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.
Tool Invocation, Contexts, Modes, and Data Models
Design Data Models
Note
You can preserve hierarchical pins in the flat model by using the set_attribute_options
-preserve_boundary_in_flat_model option.
For more information about the flat design data model and the gate_pin object type, refer to
“Flat Design Data Model” 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.
Tool Invocation, Contexts, Modes, and Data Models
Hierarchical Design Data Model
The hierarchical design data model contains the following object types:
• Module — A basic building block of your design. A module can be a Verilog module, a
Tessent library model, or a built-in primitive.
• Instance — A single instantiation of a module.
• Port — An input, output, or inout interface of a module.
• Pin — An input or output interface of an instance.
• Net — A wire that connects the pins of instances.
• Pseudo_port — Represents a user-added primary input or primary output.
These object types are described in detail in the “Data Models” chapter of the Tessent Shell
Reference Manual.
Use the set_current_design command to designate one module within your design as the current
design. Instances, pins, and nets are hierarchical objects defined relative to the current design.
Figure 2-1 shows a hierarchical design upon which many of the examples in this chapter are
based. The label above the elements is the instance name while the label below the elements is
the module name. For example, the module name of the AND gate in the upper-left corner is
and3, and its instance name is u1.
The dashed boxes are modules instantiated in the parent module. For example, module modc is
instantiated inside of module modb. Its complete instance path is u4/u5.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation, Contexts, Modes, and Data Models
ICL Data Model
The ICL data model defines objects as one of various object types, such as icl_module,
icl_instance, icl_port, and icl_pin.
Each icl_module object has its list of objects including the following:
• icl_port
• icl_instance_in_module
• icl_pin_in_module
• icl_scan_register_in_module
• icl_scan_mux_in_module
• icl_one_hot_scan_group_in_module
• icl_alias_in_module
• icl_scan_interface_of_module
Once the current design is set using the set_current_design command, the ICL data model is
elaborated downward from the current design and icl_instance objects are created for each
instance of icl_module, and icl_pin objects are created for each port of the modules associated
to the icl_instances. The icl_instance and icl_pin objects are hierarchical objects and therefore
only exist after the current design is set. The same holds for objects of type icl_scan_register,
icl_scan_mux, icl_one_hot_scan_group, icl_alias, and icl_scan_interface.
For more information about the ICL data model and the icl_module, icl_instance, icl_port, and
icl_pin object types, refer to “ICL Data Model” in the Tessent Shell Reference Manual.
Object Attributes
Each design object in a design data model has a list of characteristics, called attributes, attached
to that object. For example, each pin has an attribute that specifies its hierarchical name and its
parent instance. There are both predefined and user-defined attributes.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation, Contexts, Modes, and Data Models
Object Attributes
Predefined attributes provide access to information known to the tool such as the name of a
module or the direction of a pin. All design objects have some predefined attributes, and every
design object can have user-defined attributes as well. For a complete list of attributes for each
type of data model, refer to “Data Models” chapter in the Tessent Shell Reference Manual.
The process for creating a new user-defined attribute is called registration. The predefined
attributes, unlike the user-defined attributes, do not need to be registered.
You must register each new user-defined attribute and specify a default value before you can
use the attribute. If you want to later change the default value, you must unregister and then re-
register the attribute. For more information about the registration process, refer to the
description of the register_attribute command in the Tessent Shell Reference Manual.
You can query any attribute and change any user-defined attribute. Most predefined attributes
are read-only, although some are read-write, such as the is_hard_module attribute.
You can filter and sort objects based on the attributes and their values. The filter_collection and
sort_collection commands perform these operations. For more information about filtering
attributes, refer to “Attribute Filtering Equation Syntax” in the Tessent Shell Reference Manual.
Intuitively named “get_” commands return collections of objects from the data model and the
model’s attributes that you can use for design introspection of various design objects.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation, Contexts, Modes, and Data Models
Object Attributes
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 3
Design Introspection and Editing
Tessent Shell provides a full range of commands for examining (introspecting) and editing
designs.
Along with the command-line interface, Tessent Shell provides a graphical user interface,
Tessent Visualizer, that enables you to edit and introspect designs, and adjust object attributes.
For details, refer to “Tessent Visualizer” on page 835.
Design Introspection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Design Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Simulation Contexts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Automatic Design Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
ICL Objects vs. Design Objects Introspection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Introspection
Design Introspection
Tessent Shell introspection commands enable you to examine the design objects within a design
data model. They provide access to the tool’s internal data structures, giving you the flexibility
of Tcl scripting while keeping all compute-intensive processing in the tool’s backend. The
commands operate on object specifications that you include as arguments to the commands, and
they return collections.
Object Specification Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Design Introspection Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Design Introspection Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Bundle Object Introspection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
All Tessent Shell commands operating on user-specified objects accept object specifications as
arguments.
Collections
Collections are an extension of Tcl that are specific to Tessent Shell applications. Native Tcl
commands such as “foreach” and “puts” do not recognize collections. A collection represents a
group of zero (an empty set) or more design objects.
Design introspection commands return collections of objects. The objects are stored in the
internal data structures, and the tool returns a string handle to this collection. The string handle
is a “@” character followed by a numeric ID (in this case, “@1”). The entire data volume
remains in the tool’s internal data structures, so the Tcl interface is not overloaded with large
amounts of data.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Collections
Introspection commands run directly from the shell display the “name” attribute of the first 50
elements of the collection because the name is more useful than displaying the collection’s ID.
However, the tool does not display names in non-interactive mode, such as when running a
dofile.
The following example demonstrates the use of the get_instances and get_name_list commands
to return collections of objects:
SETUP>puts $var1@1
SETUP>puts [get_name_list $var1]
u1 u2 u3 u4 u5 u6 u7
In this example, the first command returns a collection of names. The objects are stored in
internal data structures, and the tool returns a string handle to this collection that is “@”
followed by a number ID (“@1”).
In the following example, the collection created by the get_instances command is stored in the
variable instCollection, which means that the collection is referenced.
Tessent Shell deletes the collection when you unset the variable instCollection or set the
variable to a new value, or when the Tcl variable(s) referring to the collection go out of scope.
In the following example, the collection created by the command get_pins is passed to the
get_attribute_value_list command. This means that the collection is referenced.
Tessent Shell deletes the collection when the command get_attribute_value_list returns a value.
Collections can refer to objects that no longer exist because they have been deleted using editing
commands, such as delete_pins. The built-in attribute “is_valid” is set to false when an object
has been deleted. All commands that accept collection pointers as input automatically ignore
objects with the “is_valid” attribute set to false.
Persistence of Collections
The tool references a collection when the collection is stored in a Tcl variable or when it is
passed to a command or procedure. The tool automatically deletes a collection when it is no
longer referenced.
You should not use Tcl built-in commands that expect a Tcl list, such as the foreach command,
with collections. When you pass a collection to this type of command, the command
dereferences the collection and, as a result, deletes the collection.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Collections
1. The table does not list all the applicable commands. Refer to the Tessent Shell Reference Manual.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Introspection Examples
The following two examples show how to use the show_fanouts procedure you just created.
> show_fanouts u2
u2/Q is connected to : u4/u4/A0 u4/u1/A1
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Introspection Examples
The design in Figure 3-1 is identical to Figure 2-1, with the addition of colors to help you
understand the examples that follow.
register_attribute -name color -value_type string -default "blue" -enum "red green blue" \
-object_types instance
set_attribute_value {u1 u2 u6 /u4/u5/u1 /u4/u3 /u5/u4 /u5/u3} -name color -value "red"
{u1 u2 u6 u4/u5/u1 u4/u3 u5/u4 u5/u3}
set_attribute_value {u3 u7 /u4/u1 /u4/u2 /u4/u5/u2 /u5/u1} -name color -value "blue"
{u3 u7 u4/u1 u4/u2 u4/u5/u2 u5/u1}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Introspection Examples
As an alternate way to register the attribute in the previous example, you can use the
register_attribute command as shown here:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Introspection Examples
So, instead of using the color attribute with enumerated values of red, green, and blue as shown
previously, you could instead register three Boolean type attributes of is_red, is_green, and
is_blue. This enables you to use Boolean values for filtering and tracing. For example:
# change all instances in the collection DFFs to have a “color” attribute value of green
sizeof_collection $t
3
sizeof_collection $tt
1
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Introspection Command Summary
set cnt 0
set line ""
foreach_in_collection element [get_instances u* -hierarchical] {
if {$cnt < 10} {
append line "[get_single_name $element] "
incr cnt
} else {
puts $line
set line ""
append line "[get_single_name $element] "
set cnt 1
}
}
if {$cnt > 0} {puts $line}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Introspection Command Summary
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
The bundle object is set of bits that represents a sub signal of a given net or port. This concept is
applied to complex and simple signals for RTL and no RTL flow. The difference between
simple and complex signals is in the number of levels that can be explored through the
introspection commands.
Each complex signal has a select part. For example, for the following complex signal:
B[5].c[2].d
The portion in red ([5].c[2].d) is the select part, and the “B” is the root bundle. Refer to the
“Bundle Object” topic for complete details. The select part of the signals helps to explore the
Bundle Object Hierarchy level-by-level.
Tessent Shell supports introspection of RTL complex signals through a bundle object, which is
a set of bits that represent a sub signal of a given RTL net or port. Using Tessent Shell
introspection commands enable exploration inside the bundle object and selection of different
bundle parts of the signals using the hierarchical bitselect.
Bundle Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Bundle Object Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Introspection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Bundle Object Introspection Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Fan-in and Fanout Tracing of Complex Signals and Bundle Object Tracing . . . . . . . . 74
Connectivity Through Complex Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Bundle Object
A bundle object is a set of bits that represents a whole signal or its sub signals of a given RTL
port or net.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
The bundle is made up of Tessent Shell Hierarchical Design Data Model object types that you
introspect using Tessent Shell introspection commands relative to the current design. The
following illustrates this concept:
The following object types contain several common attributes that are also associated with the
bit-blasted object types (net, pin, and port):
• net_bundle
• pin_bundle
• port_bundle
All attributes added to port, pin, and net are also added to port_bundle, pin_bundle, and
net_bundle.
For example, the naming is common between a bit-blasted object type and a bundle object type.
Naming Attributes
The following table shows the list of the principal name attributes associated with net, port, and
pin object types.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
typedef struct{
logic a;
logic [1:0] b;
} data_t;
input data_t [2:0][4:0] data_in;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
The following table shows the different naming of the signal “data_in[2][1].b[1]”
Attribute RTL View Synthesis View
name data_in[2][1].b[1] data_in[34]
pre_synthesis_name data_in[2][1].b[1] data_in[2][1].b[1]
post_synthesis_name data_in[34] data_in[34]
root_bundle_name data_in data_in
Example 2
In this example, the “net1”from Example 1 is declared inside nested generate blocks:
typedef struct{
logic a;
logic [1:0] b;
} data_t;
genvar i, j;
generate
for (i=0; i < 2; i=i+1) begin
for (j=0; j < 2; j=j+1) begin : MEM_j
data_t [2:0][4:0] net1;
…………
end
end
endgenerate
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
Example 3
This example illustrates an interface declared as a net to connect two sub instances.
interface intf;
logic a;
logic b;
modport in (input a, output b);
modport out (input b, output a);
endinterface
module top;
intf i ();
u_a m1 (.i1(i));
u_b m2 (.i2(i));
endmodule
The following tables shows the different naming of the signals “i.a” and “m1/i1.a”.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
Example 4
The values of the name attributes are language independent and have the same values for both
VHDL and Verilog RTL objects. The following example in VHDL uses the record datatype:
library ieee;
package record_pkg is
begin
………
end behave;
The following table shows the different naming of the port “i_fifo.rd_data(5)” in VHDL. VHDL
uses “()” to represent the index, but Tessent Shell uses “[]” instead.
Attribute RTL View Synthesis View
name i_fifo.rd_data[5] i_fifo[5]
pre_synthesis_name i_fifo.rd_data[5] i_fifo.rd_data[5]
post_synthesis_nam i_fifo[5] i_fifo[5]
e
root_bundle_name i_fifo i_fifo
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
For each object type, there are attributes associated with the design objects found on, in, and
below the current design (set with the set_current_design Tessent Shell command). A bundle
object has a select part and type information. Otherwise a bit-blasted object has a bit select and
also type information. An object type can be a complex type in case of bundle object, like struct,
enum, typedef, multi-dimensional array. In the case of a bit-blasted object it is always a 1 bit
datatype. It can be register, wire, logic, bit, tri, for example. Several attributes are associated
with the following Hierarchical Design Data Model object types:
• Net
• Net Bundle
• Pin
• Pin Bundle
• Port
• Port Bundle
Each of these object types is covered in detail in the Tessent Shell Reference Manual.
• base_class — String character that represents the class category of the base type. It
helps to complete the base_type definition. Possible values are: = 4_state_signed |
4_state_unsigned | 2_state_signed | 2_state_unsigned | enum | struct_packed |
struct_unpacked | union_backed | union_unpacked | interface | interface_modport | other.
• base_type — String character that represents the base type of the selected object. The
base type is the type of the object without any dimensions. It represents the base type of
the sub bundle type if the selected object is a sub bundle object. It can be a base type of
the root type if the selected object is a root bundle. The base_type is a key or user name
that help to understand the base type of this bundle. Possible values are: logic | register |
wire | bit | supply0 | supply1 | tri | triand | trior | tri0 | tri1 |wand | wor | byte | shortint |
integer | longint | user_name | other
The following examples show the values for base_class and base_type bundle object type
attributes in SystemVerilog:
Table 3-4. base_class and base_type SystemVerilog Examples
Examples base_type and base_class Values
Packed struct having typedef base_type= data_t, base_class= struct_packed
name “data_t”
Unpacked struct having typedef base_type= data_t, base_class= struct_unpacked
name “data_t”
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
Net Bundle
The Net Bundle object type has net_bundle datatype and attributes. For complete details, refer
to net_bundle in the Tessent Shell Reference Manual.
Pin Bundle
The Pin Bundle object type has pin_bundle datatype and attributes. For complete details, refer
to pin_bundle in the Tessent Shell Reference Manual.
Port Bundle
The Port Bundle object type has port_bundle datatype and attributes. For complete details, refer
to port_bundle 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.
Design Introspection and Editing
Bundle Object Introspection
When using bundle objects, the naming style may be different between the ICL data model and
the design logic data model. For this reason, bundle object-specific attributes are required to
bind the ICL objects (icl_module and icl_port) to design logic (module and port).
icl_module
The following icl_module built-in attribute applies to design objects:
• tessent_design_module — The attribute reflects the name of the design module that
corresponds to the ICL module at the time of ICL extraction.
icl_port
The following icl_port built-in attribute applies to design objects:
Introspection
Using bundle object types, Tessent Shell enables you to introspect and explore any kind of
signal within the design data model.
Both simple datatypes and complex datatypes can be explored using the introspection
commands listed in “Complex Signal Introspection Commands” on page 71.
Any signal objects (ports, pins, and nets) are considered as a tree of sub signals. The given tree
is referred to as a Bundle Object Hierarchy. The root bundle is the signal; the leaf objects are the
bit-blasted elements of the given signal; the root, leaf, and middle bundle are all nodes of the
tree. The middle bundles and the leaf objects are the sub bundle objects. To support this concept
there are object types in the Hierarchical Design Data Model. The leaf objects are represented
by net, pin, and port object types, the root and middle bundles are represented by net_bundle,
pin_bundle, and port_bundle objects types. See “Bundle Object Data Model” on page 64.
The concept of bundle object type is applied to complex and simple signals for RTL and no
RTL flow. The difference between simple and complex signals is in the number of levels that
can be explored through the introspection commands. The select part of the signals helps to
explore the Bundle Object Hierarchy level by level.
Tip
When performing introspection of complex signals, see also “Object Specification Format”
on page 50 and “Collections” on page 50.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
typedef struct{
logic a;
logic [1:0] b;
} data_t;
input data_t [1:0][2:0] data_in;
The following shows the hierarchy of the “data_in” port in the Tessent Shell design data model.
Referring to the figure, using the name_patterns argument of the introspection commands, the
tool splits each pattern into the different levels so that a local sub-pattern is applied to each local
level.
For the bundle part, the characters “.” and “[<index>]” enable access to sub bundle hierarchy,
“:” to access field sub bundle objects of struct or SVinterface and “[<index>]” to access array
element sub bundle objects. For example, the pattern “data_in[0][1].b[*]” is really five sub-
patterns; “data_in”, “[0]”, “[1]”,“.b”, and “[*]”, representing five levels of bundle hierarchy.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
For simple wildcard patterns, the '*' is used the exact same way as it is used in instance path
matching. It does not cross hierarchy. When specified within a field name it does not cross the
“.” that precedes or follows the field. When applied within [ ], it only matches elements within
the [ ]. In other words delimiters must be explicit.
For regular expression patterns, an individual regular expression only matches elements within
the sub-pattern in which they are found. Again, it does not cross the adjacent delimiters.
Without the -regexp switch in the introspection command, the tool treats the bundle hierarchy
delimiters (“[]” and “.”) as normal delimiters and serves to break the pattern into multiple sub-
patterns. When you include the -regexp switch in the introspection command, the tool treats the
bundle hierarchy delimiters as regular expression meta-characters (unless you have escaped
those delimiters). That is, in regexp mode the delimiters must be explicit and, unlike simple
wildcard patterns, you must escape them.
For example, to match “data_in[1]”, you need to use “data_in\[.*\]”. The sequence '.*' matches
any character zero or more times. For more details, see the Example With regexp.
See “Glob and Regular Expression Pattern Matching Syntax” in the Tessent Shell Reference
Manual for complete information on pattern matching.
Note
The examples use the “get_ports ... -bundle” command. For “get_nets ... -bundle” and
“get_pins ... -bundle”, the behavior is the same.
Examples
These examples use the “data_in” hierarchy described in the preceding.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
Note
Integer, enum, and others are bit-blasted in unbundled objects in introspection commands
when the -bundle switch is omitted.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
interface MSBus;
event_bus_split_packet_t Addr;
logic [1:0] Data;
logic RWn;
logic Clk;
modport Secondary (input Addr, RWn, Clk, output Data);
endinterface
Example 1
The following command returns all bit-blasted ports of “top” module (default behavior):
Example 2
The following commands return all root bundle ports of “top” module or sub bundle objects
according to name patterns used:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
The get_fanins/get_fanouts commands accept any kind of objects as input, bundle or not, and
with simple types or complex types. The ending and intermediate nodes can also be an object or
complex type. For example, they can trace from and to, and through any kind of complex
signals in SystemVerilog (SV) and VHDL.
• get_fanins
• get_fanouts
The following shows a top-level RTL module (top1.sv) with SV Interface objects. The tool
models SV Interfaces as a named bundle of wires. Within the tool, those are considered as
normal bundle ports, pins, and nets. You access the bundle object using the get_nets, get_pins,
and get_ports commands.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
module top (clk, reset, ce, we, addr, datai, datao, cnto, datao2, en);
localparam WID = 8;
localparam AWID = 5;
localparam LEN = 2**AWID;
localparam GEN = 3;
input en;
input clk, reset, ce, we;
input [AWID-1:0] addr;
input [WID-1:0] datai;
output [GEN*12-1:0] datao, datao2;
output [GEN*WID-1:0] cnto;
param_mem_if miff(
.clk(clk),
.reset(resetEn),
.we(weEn),
.ce(ceEn),
.dati(datai),
.addr(addr),
.dato(datao)
);
genvar i;
generate
for (i=0; i<GEN; i++) begin: gen_mem
SYNC_1RW_16x8 mem1 (.CLK(clk), .D(datai), .Q(datao2[(WID*(i+1)
-1):i*WID]), .WE(we), .OE(ce), .RE(ce), .A(addr[3:0]));
end
endgenerate
generate
for (i=0; i<GEN; i++) begin: gen_mem_wrapper
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
The following shows an example command sequence to introspect the fan-ins and fanouts in
this design:
Here, from SV Interface sub bundle pins, the tool reaches the output pin of primitive.
(Continuing from the previous example.)
Here, from SV Interface sub bundle pins, the tool reaches the SV interface sub bundle net
“miff.ce”. (Continuing with the previous example.)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
Additional Examples
The following command sequence shows introspection of bundle objects through both fan-ins
and fanouts, as well as ports and pins:
With the Tessent 2019.3 release and later, the connectivity through complex signals is visible to
the get_fanins/get_fanouts commands on the hierarchical design view and to the
trace_flat_model command on the flat model. Only if the path pre-tracing found RTL logic that
represents logic gates does the tool synthesize the module. Also, the tool is now able to maintain
the RTL view, and the connectivity to and from the surrounding modules even if a module
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
having an SV interface needs to be synthesized. This greatly limits the amount of RTL modules
needed to be synthesized to pre-DFT DRC memoryBIST and performing ICL extraction.
When Tessent Shell flattens the design, only the leaf objects of complex signals are translated to
gate pins using the post synthesis names (see the post_synthesis_name attribute on the Port,
port_bundle, Pin, pin_bundle, Net, and net_bundle object types for more information).
For objects found inside unsynthesized modules, the hierarchical design objects uses the pre-
synthesis names (see the pre_synthesis_name attribute on the Port, port_bundle, Pin,
pin_bundle, Net, and net_bundle object types for more information).
The gate pins objects, however, are always named using the post synthesis name of the leaf
complex signal objects weather or not the module is synthesized or not.
To simplify the introspection between the hierarchical design objects and the flat model
gate_pin objects, the tool provides several switches on the introspection commands. With
complex signal, it is no longer possible to assume the two objects have the same name.
SETUP> create_flat_model
// Flattening process completed, gates=79, PIs=12, POs=13, CPU time=0.00 sec.
// ---------------------------------------------------------------------------
// Begin circuit learning analyses.
// --------------------------------
// Learning completed, CPU time=0.00 sec.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
{InBus[1]}
This example shows the use of the “get_gate_pins -of_pin” and “get_pins -of_gate_pins” to
illustrate that the matching objects do not have the same name:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
Tessent Visualizer facilitates cross-probing pins in the schematic to their associated RTL netlist.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Bundle Object Introspection
For complete information on using Tessent Visualizer, see “Tessent Visualizer” on page 835.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Editing
Design Editing
Tessent Shell design editing commands enable you to modify your design after reading in the
RTL or gate-level netlist. Tessent Shell supports gate-level netlist editing or RTL design editing
with full language support, including multiple logical libraries, VHDL, Verilog, and System
Verilog. Parameterized modules are also fully supported.
The Design editing commands enable you to manipulate a design’s modules, instances, nets,
ports, and pins, either interactively or through Tcl scripting.
Note
There are language restrictions. See “HDL Limitations in the Tessent Shell Flow” in the
Tessent Shell Reference Manual for details.
Design editing commands work with collections and introspection commands, as well as native
Tcl commands, to automate many tasks. Table 3-6 presents the common design editing
commands based on the function they perform— that is, whether they create, modify, or remove
elements and so on. For more information on collections and introspection commands, see
“Design Introspection.”
Caution
Take special care when dealing with non-unique design scopes, such as multiple instances
of the same module or the inner part of a generate loop. Refer to “Example of Handling
Non-Unique Design Scopes” within the “Design Editing Examples” topic listed below for
details.
Note
The design editing commands are not available when using some product licenses, such as
Tessent FastScan and Tessent Scan.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Editing Command Summary
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Editing Command Summary
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Editing Complex Signals
Overview
Create the DftSpecification wrapper object with the create_dft_specification command and
customize it with configuration data editing commands. After you have finished modifying the
DftSpecification, perform DFT insertion with the process_dft_specification command. You can
make connections between pins and ports with complex types to other pins and ports with
complex types, move these connections, and delete these connections.
Load the DftSpecification either before or after quick synthesis. You can use the full names of
complex ports and pins regardless of whether the current views are quick-synthesized.
Examples
When processing a DftSpecification on the RTL view of a design, you can use bundle ports and
pins to define the DFT signals:
EdtChannelsIn(8:5) {
port_int_name : edt_channel.in;
}
When processing a DftSpecification on the quick-synthesized view of a design, you can specify
port and pin RTL names as bit-blasted:
EdtChannelsIn(8:5) {
port_pin_name : edt_channel.in[3], edt_channel.in[2], \
edt_channel.in[1], edt_channel.in[0];
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Editing Complex Signals
You can also specify port and pin RTL names as slices:
EdtChannelsIn(8:5) {
port_pin_name : edt_channel.in[3:0];
}
Related Topics
Configuration-Based Specification
DftSpecification Configuration Syntax
create_dft_specification
process_dft_specification
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Editing Examples
• The tool does not support the creation of temporary root bundles during complex signal
editing. For example:
module parent();
typedef logic logic_t;
intf #(logic_t) obj();
leaf (..., obj);
endmodule
Related Topics
get_bundle_objects
get_nets
get_pins
get_ports
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Editing Examples
create_connection I1 u1/A0
create_connection I2 u1/A1
create_connection I2 u3/R
create_connection I3 u3/D
create_connection I4 u3/CLK
create_connection I4 u2/CLK
create_connection u1/Y u2/D
create_connection u2/Q O1
create_connection u3/Q O2
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Editing Examples
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Editing Examples
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Editing Examples
# First, insert the pad cells for all inputs of the netlist
set inputPortList [ get_ports -of_module $top_module -direction input ]
foreach_in_collection inputPort $inputPortList {
# Second, insert the pad cells for all outputs of the netlist
set outputPortList [ get_ports -of_module $top_module -direction output ]
foreach_in_collection outputPort $outputPortList {
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Design Editing Examples
# Next, add the JTAG IO pins and their respective PAD cell. Connecting #
them up.
For an example, see how the parent_instance and the leaf_name_hash attributes are used in
Example 5 of the get_dft_cell command description. (For more information on the
leaf_name_hash attribute, see “Instance” 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.
Design Introspection and Editing
Simulation Contexts
Simulation Contexts
Tessent Shell provides simulation contexts to aid your design analysis and introspection efforts.
You can use these contexts to create “simulation scratch pads” for rapid investigation of good-
machine behavior of specific portions of your design.
Simulation Context Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Introspection and Analysis Using Simulation Contexts . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Introspection and Analysis Using Simulation Contexts
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Introspection and Analysis Using Simulation Contexts
• Operating on a flattened design, and have read in the test procedure file (if available). At
this point, the values specified in the setup, shift, capture, and load_unload procedures
are in place in the design when you set the corresponding simulation context as current.
Example
For example, if you want to trace the design based on the values specified in the shift procedure,
use the “set_current_simulation_context stable_shift” command. When you use this command
with a small design containing two 2-cell scan chains, the values on the gate_pins display in the
Tessent Visualizer Flat Schematic as shown in Figure 3-5.
In this case, no values are forced except for sen (scan enable), which is set to 1. The four
possible simulation values are 0, 1, X, and Z.
In addition to viewing values in the Flat Schematic, you can get the current simulation values of
gate_pins using any of the following techniques:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Introspection and Analysis Using Simulation Contexts
• Issue the command “set_gate_report simulation_context,” after which you can use the
report_gates command and the Flat Schematic to display the simulated values from the
current simulation context:
ANALYSIS> set_gate_report simulation_context
ANALYSIS> report_gates sc2_f1
// /sc2_f1 sff
// D I (X) /d3
// SI I (X) /si2
// SE I (1) /sen
// CLK I (X) /clk
// Q O (X) /an_2/A2 /sc2_f2/SI
// QB O (X)
You can use simulation context functionality for different types of analysis. For example, by
default the trace_flat_model command uses the stable_after_setup values as a simulation
background. You can now change it to stable_capture, for example, if you want to trace based
on sensitized paths during capture. Another example is to copy an existing simulation context to
a new one, force some simulation value changes, then evaluate the results in the circuit after
simulating the forces or clock pulses.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Automatic Design Mapping
• set_current_design
• write_design
• update_icl_attributes_from_design
The tessent_design_gate_ports attribute of the ICL port object is automatically updated when
you use any of the following commands:
• set_current_design
• get_ports -of_icl_ports
• get_pins -of_icl_pins
• get_pins -of_icl_ports
• update_icl_attributes_from_design
• write_design
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Updating ICL Attributes From the Design
For ICL ports and instances, if the current ICL model does not include the complete ICL of
child instances under the physical blocks, the ICL matching performed by set_current_design is
insufficient. The ICL matching is completed later in the flow using the following commands in
these cases:
• get_ports -of_icl_ports
• get_pins -of_icl_pins
• get_pins -of_icl_ports
• update_icl_attributes_from_design
• write_design
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Matching Rules for Port Names in Post-Synthesis Update
The ‘abc’ string in the name to be looked up must exactly match the string before the
first delimiter in a netlist name. The ‘def’ string in the name to be looked up must
exactly match the string after the last delimiter in the same netlist name.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
ICL Objects vs. Design Objects Introspection
• Escaping — Escape characters are not matched. They are only used to direct the
matching procedure.
• Delimiters — Delimiters in the lookup name are used only to extract the component
names.
All component names after the first are assumed to have a leading delimiter and
optionally a trailing delimiter in a netlist name. There are two cases to consider when
matching the delimiters for a component name in the netlist:
a. Port name in netlist is escaped.
Possible matches for component name delimiters are as follows:
• Leading and trailing delimiters of [].
• Leading delimiter of ‘_’ and trailing delimiter of ‘_’ or null.
• Leading delimiter of ‘.’ or ‘/’ and trailing delimiter of null.
b. Port name in netlist is not escaped.
Possible matches for component name delimiters are as follows:
• Leading delimiter of ‘_’ and trailing delimiter of ‘_’ or null.
• Special Characters in the Lookup Name — When matching to a non-escaped name in
the netlist, any special characters (not allowed by the language without escaping) in the
lookup name are replaced with the ‘_’ character. Matching allows truncation in the
netlist name down to two trailing ‘_’ characters.
Note
This truncation rule applies only to ‘_’ characters derived from special characters,
not delimiters.
• Bit Select Lookup Name — A bit select lookup name (last component name is an
index) can match a one-dimensional vector with the final bit select applied to the match
or match directly to a bit select.
Related Topics
add_rtl_to_gates_mapping
delete_rtl_to_gates_mapping
report_rtl_to_gates_mapping
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
ICL Objects vs. Design Objects Introspection
For example, you can retrieve design modules and instances from ICL modules and instances:
And you can also retrieve design pins and ports from ICL pins and ports:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 4
DFT Architecture Guidelines for Hierarchical
Designs
Most chips follow hierarchical place-and-route because of the increase in design sizes. For
DFT, you can also use hierarchical design methodologies to perform test insertion, test
generation, and diagnosis. This use of the hierarchical design methodologies is called
hierarchical DFT or hierarchical test.
If the design is implemented as one chip with flat place-and-route, then perform DFT
implementation once for the entire chip. Hierarchical DFT implementation is only applicable
for block-based designs in which the tool run time consumption is not practical for
implementing DFT only from the chip level.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
Hierarchical DFT Overview
You must insert DFT into the lower-level designs before inserting it at the next higher level (at
the chip level).
• Physical block, block, core, child core — These terms are interchangeable and refer to
layout regions below the chip level that you can instantiate within a chip, or across
multiple chips. Blocks are logical entities that remain intact through tapeout. You
perform synthesis on these blocks independent of the rest of the chip design.
The term “wrapped core” is a specialized type of block. Refer to “Wrapped Cores and
Wrapper Cells” on page 105 for details.
• Chip — The chip is the top-level physical block — that is, the entire design — in which
you typically find the pad I/O macros and clock controllers.
The chip and upper-level blocks in designs with more than two hierarchical levels are often
referred to as the parent blocks and the tasks related to them as occurring at the parent level.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
Pattern Retargeting
Pattern Retargeting
Pattern retargeting is the process by which Tessent Shell preserves the ATPG patterns
associated with cores for purposes of reuse when testing the logic at the chip (or parent) level.
You do not have to regenerate the patterns when you process the chip. Instead, you retarget the
core patterns to the chip level. Every instantiation of a core includes its associated ATPG
patterns.
The pattern retargeting process consists of generating patterns for all cores, retargeting the
core-level test patterns to the chip level, and generating patterns for the top-level chip logic
only. This is also referred to as ATPG pattern retargeting or scan pattern retargeting. For details,
refer to “Scan Pattern Retargeting” in the Tessent Scan and ATPG User’s Manual.
The wrapping mechanism that you use for these blocks makes use of the functional flops that
are already present at the boundary of these blocks. These flops are called shared wrapper cells
(or sometimes wrapper cells) because they share the responsibility of their original functional
use as I/O flops with isolating the core.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
Internal Mode and External Mode
Optionally, you can add dedicated wrapper cells. These wrapper cells are added on primary
inputs or primary outputs of a physical block that fan out from or fan into large logic cones. By
adding the dedicated wrapper cell, you can test the logic cone during internal testing of the core.
Shared and dedicated wrapper cells form the wrapper chains. Logic located within the wrapper
chains is tested during internal testing of the core, called intest. Logic located outside the
wrapper chains is tested during the external testing of the core, called extest.
External mode indicates the view out of the wrapped core from the wrapper cells. That is, the
logic that connects the wrapped core to external logic. Tessent Shell uses the external mode to
build graybox models, which are used by the internal modes of their parent physical blocks.
As shown in the following figure, based on chip pin availability, you can test the Red, Pink,
Brown, and Green cores in internal mode at the same time when the on-chip clock controllers
(OCCs) and EDT logic blocks inside the wrapped cores are active.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
On-Chip Clock Controller
You can test one or more wrapped cores in internal mode based on several factors, such as
availability of chip-level pins, tester channels, tester memory, and power dissipation. The OCCs
and EDT compression logic at the chip level are inactive during internal mode.
In external mode, the wrapped cores at the given physical hierarchy participate. The OCCs and
EDT logic blocks inside the cores are inactive, and the OCCs and EDT logic blocks outside the
wrapped cores are active. In a typical external mode configuration, one EDT logic block is used
to test the logic outside the wrapper chains, as shown in the following figure.
External mode also includes the wrapper chains within the wrapped cores. Tessent tests the
logic outside of the wrapper chains during external mode.
Each wrapped core can contain one or more EDT logic blocks that contain the compression
logic. Similarly there may be several options for testing the external mode of the cores. In the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
Graybox Model
following figure, OCC insertion occurs for each clock domain entering the cores. At the chip
level, OCCs are also required for the clock domains at this level. Insert one EDT logic block for
each internal mode of the core and one EDT logic block for the core’s external mode.
To help facilitate test setup and automation, use a 1149.1 TAP controller along with an IJTAG
network. You may also need to insert a Test Access Mechanism (TAM) to guide how these
wrapped cores may be tested.
Standard OCCs include built-in clock selection, clock-chopping, and clock-gating functionality.
For more information about standard OCCs, as well as parent and child OCCs, refer “Tessent
On-Chip Clock Controller” in the Tessent Scan and ATPG User’s Manual.
Graybox Model
Graybox models are wrapped core models that preserve the core’s external mode logic, which
includes the wrapper chains, along with the portion of the IJTAG network that needs to be
tested along with the logic at the next physical level. The purpose of graybox models during
hierarchical test is to retain the minimum logic required to generate ATPG patterns for the
internal modes of the parent physical blocks. When testing the next physical level, using
graybox models enables Tessent Shell to load the design faster than loading the full-chip design.
For details, refer to “Graybox Overview” in the Tessent Scan and ATPG User’s Manual.
The following figure shows a graybox model in which the internal logic of the wrapped core is
removed. This graybox model implementation has separate input and output wrapper chains
with separate scan enable signals for each wrapper chain type.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
Graybox Model
The input and output wrapper chains do not have to be separate, and the scan enable signals also
do not need to be separate. You can use one scan enable signal with other mechanisms to enable
how the wrapper chains operate.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
Top-Down Planning Before Bottom-Up Implementation
Clocking Architecture
In functional mode, the clock architecture can include clocks that are divided or multiplied. The
original, divided, and multiplied clocks can be synchronous with each other within a core, and
sometimes they can be synchronous across hierarchical cores. Divided clocks can also be
asynchronous across hierarchical cores.
When generating ATPG patterns at the core level that you want to retarget, the core must
include an OCC to control clocking as described in “On-Chip Clock Controller” on page 107.
How you implement OCCs in the cores depends on various factors:
• How the clocks are balanced — The most common methods for clock balancing are
clock tree synthesis and clock mesh synthesis. The method you use can influence what
type of OCCs you insert (standard, parent, child).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
Resource Availability
• OCC behavior during intest and extest — How the OCCs need to behave during
intest and extest of the cores also dictates how you should implement the OCCs.
Some OCCs are only required to perform clock chopping or clock-gating functionality.
Sometimes OCCs may be necessary to mux clocks in for test purposes. You can use chip-level
clocking to determine the architecture and OCC types (standard, parent, child) that you should
use within the wrapped cores.
Resource Availability
Resource availability plays a significant role in how you implement DFT. For example, at the
chip level, the number of pins available for test limits the number of EDT channel pins that you
can use. The EDT channel pins may not be associated with only one EDT controller; they could
be connected to multiple EDT controllers.
Likewise, the tester may have limited channel pins available for connecting to EDT channel
pins on the chip, which means that you may need to consider the tester’s memory allocation for
storing the test patterns. Available memory on the tester dictates whether you need to split the
pattern set or test multiple cores in parallel.
You want to test the wrapped cores dictates how you create the test-access mechanism (TAM).
TAMs carry scan data in and out of the chip for each group of wrapped cores you intend to run
in parallel. You need a TAM if you have limited chip pins, and you are reusing those chip pins
to connect to multiple EDT controllers inside the wrapped cores.
The TAM logic is dependent on how and when the cores get tested. The TAM schedules the
tests for the wrapped cores at the top level, and it enables access to the chip level so that you can
run these tests. The TAM also needs input from floor planning and placement of these cores to
avoid routing congestion; you need to account for the proximity of the cores that you want to
test in parallel and for the location of the chip pins that connect to them.
Test Scheduling
Deciding which wrapped cores need to be tested at the same time on the tester—that is, in
parallel—depends on a number of factors.
Streaming Scan Network (SSN) enables you to test the maximum number of cores within your
power budget in a single pass. Because all cores accessible are through the SSN bus, you can
delay the decision of which cores to run concurrently on the tester until ATPG or pattern
retargeting. The SSN ScanHost drives the TestKompress EDT channels, decoupling them from
top-level input and output pins.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
Test Scheduling
SSN handles cores with different pattern counts by manipulating the network’s bandwidth
during retargeting and ATPG. The tool transfers network bandwidth from the cores with fewer
patterns to the cores with more patterns. Through this bandwidth management, cores with
different pattern counts will finish on the tester closer together and have less padding than non-
SSN patterns. Dynamic power is inherently reduced with SSN as each core independently
transitions between shift and capture, significantly reducing the chance of a coincident clock
edge during shift or capture.
SSN efficiently tests identical cores when you add the On-Chip Compare feature to the
ScanHost. On-chip compare mode enables you to test any number of identical cores in constant
time because it shares the same input, mask, and expected data across all the active cores.
For non-SSN designs, you may have to test the chip in pieces. The test scheduling for non-SSN
designs depends on the following factors:
• Number of patterns
• Availability of chip pins
• Tester pin storage limitations
• Number of identical cores
• Cores with similar pattern counts
• Power dissipation budget and allocation
• Optimal compression at the core level
• Channel sharing of cores within modular EDT or sub-chip architectures; cores need to
be tested where channels are shared
To achieve the optimal test schedule for a chip with a given number of hierarchical cores,
generate an optimized compression for the internal mode of the cores. Within each core,
compression could be based on asymmetric channel configurations. Designs with no X-sources
require fewer output channels.
You can use the analyze_compression command to optimize compression. It requires gate-level
scan stitched netlists. BIST logic used for memories needs to be scan stitched and included for
the best compression estimation.
The following example shows a schedule based on compression analysis. Suppose 64 pins are
available at the chip level as channel pins. There are twelve instances of blk_a, eight instances
of blk_b, four instances of blk_c, and one instance each of blk_d, blk_e, and blk_f. The
highlighted instances provide the best utilization of resources.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
Test Scheduling
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
Specific Tasks That May Require Planning
Suppose you plan to group identical core instances for testing in parallel. The 40 input channel
pins can broadcast to the blk_a instances, providing the same input data to all the cores. Two
output channels from each instance require a total of 24 additional pins. When testing the 12
blk_a instances together, use the 64 available chip pins.
Table 4-1. Test Schedule Example
Scan % Total Input Output Pins Shift No. of No. of
Config Faults/ Channels Channels Used/ Length Patterns Tester
Group Config Cycles
12(blk_a) 68.59 40 24 64 156 2409 375804
8(blk_b) 8.54 32 32 64 154 1411 217294
4(blk_c) 9.53 8 56 64 270 3895 1051650
blk_f, 7.33 52 12 64 259 2033 526547
blk_e
blk_d 6.01 38 18 56 259 1579 408961
. . . . . Total tester cycles 2646118
Next, test the eight instances of blk_b together by applying the retargeted patterns at the chip
level. The 32 input channel pins broadcast to the eight blk_b instances. In addition, each
instance uses four output channels for a total of 64 pins. After that, test the four blk_c instances
with eight input channels broadcast and 14 output channel pins per instance of blk_c. Test the
blk_f and blk_e instances together because they have similar complexity and channel
requirements. Test the blk_d instances that require the most channels by themselves.
1. Group identical core instances and run them at the same time.
2. Test cores of similar complexity and channel requirements together.
3. Test the cores that require the most channels by themselves.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
Sample DFT Planning Steps
1. Tally how many chip pins are available for scan channels and for ATE channels that are
required for test. Use the smaller value when planning for the number of chip pins
available for test.
2. Use a dedicated test clock apart from existing functional clocks. This clock can use the
TCK signal as the clock source.
3. Assess the functional clock architecture for the chip and plan your OCC configuration.
Consider how many OCCs you need, their OCC types (child, parent, standard), and
where they need to be inserted for wrapped cores and the chip.
4. Based on the design size and pattern count, determine the number of channels required
for each core.
5. Determine test scheduling for cores that you can run in parallel as described in “Test
Scheduling” on page 111.
6. Determine the external mode configuration as described in “DFT Implementation
Strategy” on page 115.
7. Confirm the top-level TAM that is required.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
DFT Implementation Strategy
Internal Mode
When you have multiple wrapped cores, fix the scan chain length at a constant value so that at
the next hierarchical level when you combine cores to be tested in parallel, the shift length is
identical.
If the OCC bits are roughly 25% of the longest chain, stitch OCC bits into a few dedicated
compressed chains rather than distributing them across all of the chains. If the OCC bits add up
to greater than 75% of the longest chain, then stitch the OCC bits as an uncompressed chain. If
there are any remaining OCC bits, connect them into a compressed chain.
If there are embedded boundary scan cells present, ensure they are stitched with the rest of the
boundary scan cells at the chip level.
External Mode
The number of external mode chains from across multiple wrapped cores dictates how the
chains should be handled, for example:
If there are multiple levels of hierarchy and the OCC needs to be active, you may need to
include the OCC bits in the external mode. That is, if you want the OCC to be used in both
internal and external modes, then you need to plan for the OCC bits to be included in the
external chain also. Typically, OCCs are only included in internal mode.
During ATPG, you can include the boundary scan chain at chip level when running the external
mode of the wrapped cores.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
DFT Implementation Strategy
From the test clock, you can use DFT signals to generate the shift capture clock required for
OCCs and the EDT clock required for EDT hardware.
Optionally, you can use TCK as your test clock. In this case, the TAP needs to run at the TCK
rate, and the shift for ATPG is limited to the TCK frequency. Thus, you need to ensure that you
are using an optimal TCK rate.
Using a dedicated test clock aids with timing closure and is beneficial for both internal test and
external test because during shift when the scan enable signal is 1, the same clock path is chosen
irrespective of whether the core is placed in internal or external mode of operation. For more
information, refer to “Shift-Only Mode” under Operating Modes in the Tessent Scan and ATPG
User’s Manual.
• TSDB — The Tessent Shell Data Base is a common database used by all the Tessent
products, which means that test information generated by one tool is recognized and
usable by downstream tools. For details, refer to “TSDB Data Flow for the Tessent Shell
Flow.”
• IJTAG automation — As described in “What Is Tessent Shell?” on page 27, IJTAG
provides many benefits, including DFT setup reuse from blocks and sub-blocks to
higher levels in the hierarchy. This is essential for using the bottom-up DFT insertion
flow as described in “Tessent Shell Flow for Hierarchical Designs” on page 203.
• Retargetable ATPG patterns — Using OCCs inside hierarchical cores makes the
ATPG patterns self-contained, which enables them to be retargeted as described in “On-
Chip Clock Controller” on page 107.
Note
Using the following Tessent automated features depends on your design implementation
and how you are performing the two-pass RTL and scan DFT insertion flow for hierarchical
designs as described in “Tessent Shell Flow for Hierarchical Designs” on page 203.
• Reset control — Tessent automatically fixes asynchronous resets with pre-DFT DRCs
that are enabled when you set the -logic_test option of
set_dft_specification_requirements to “on”. Tessent deactivates the reset during shift
and tests the reset during capture. Optionally, provision is provided to override the reset
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFT Architecture Guidelines for Hierarchical Designs
DFT Implementation Strategy
during capture by deactivating it. This auto-fix is beneficial when the functional reset is
generated internally.
• Boundary scan chain included for ATPG — At the chip level, you can segment the
boundary scan chain into smaller chains to be connected as compressed scan chains and
controlled during ATPG. Optionally, you can configure these boundary scan chains to
participate during capture or use them during shift.
• Use memory to target shadow logic faults during logic test — During logic test
insertion, inserted memories get bypassed. The bypass can be built within the memories
themselves or built within the MemoryBIST infrastructure. You can use IJTAG-
controlled internal Test Data Registers (TDRs) to enable bypass or to use the memories
during logic test. By using the memories during logic test, the shadow logic around the
memories can be tested. This requires an ATPG model for the memories. For details,
refer to the Comprehensive RAM Primitive information in the Tessent Cell Library
Manual.
• Unused scan chains — During scan insertion and stitching if there are any over-
specified scan chains, Tessent Scan automatically adds the unused scan chains with
pipeline registers. This is beneficial when not all the scan chains of the inserted EDT
compression logic are utilized.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 5
RTL DFT Analysis and Insertion
Performing DFT logic insertion at the register transfer level (RTL) provides better circuit
optimization to help meet design constraints by considering both functional and test logic
simultaneously. For example, adding observe points at RTL instead of gate level enables the
tool to optimally size cells for better timing.
You can analyze the complexity of your RTL design to understand which areas could benefit
from reorganization and which are suitable for test point insertion. Pre-DFT DRC rules help you
catch mistakes early.
Provide detailed specifications of the DFT logic to meet your unique needs using commands
such as set_rtl_dft_analysis_options and set_test_point_analysis_options. 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, LBIST, OCC, and SSN. The incremental analysis and insertion capabilities at the
gate level enable you to fine-tune the testability logic before generating test patterns.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
RTL DFT Analysis in the Overall Flow
Note
We recommend running RTL DFT analysis between the first insertion pass of MemoryBIST
and boundary scan and the second insertion pass of TK/LBIST and OCC, as shown in
Figure 5-1. You can also choose to perform RTL DFT analysis and insertion either before or
after you insert the other test instruments in the RTL. If you insert TK/LBIST or EDT before
test points, you must account for additional scan cells when sizing the EDT IP.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
RTL Design Rule Checks
You can perform RTL DFT analysis as part of a flow for flat, hierarchical, or tiled designs.
Refer to “Tessent Shell Flow for Flat Designs”, “Tessent Shell Flow for Hierarchical Designs”,
and “How the DFT Insertion Flow Applies to Hierarchical Designs” for more information about
the full flow. X-bounding and test point insertion can be performed at the chip, physical block,
or sub-block level.
Note
We recommend that you run wrapper analysis at the physical block level.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
RTL IP Insertion
• DFT_C6 — Runs with the check_design_rules command and verifies that each
scannable flip-flop clock port has a defined clock in its controlling fan-in.
• DFT_C9 — Runs with the check_design_rules command and verifies that it is possible
to disable the asynchronous set or reset pin of each scannable flip-flop.
• SW7 — Runs automatically with the analyze_wrapper_cells command and checks for
valid locations to insert dedicated wrapper cells that comply with all specifications and
tool requirements.
• SW8 — Runs automatically with the analyze_wrapper_cells command and checks that
locations to insert dedicated wrapper cells are editable RTL constructs.
• XB3 — Runs automatically with the analyze_xbounding command and checks that
locations to insert X-bounding logic are editable RTL constructs.
As an additional check, you can use the -validate_only option on the process_dft_specification
command to check the DftSpecification for the Tessent IP without inserting it.
RTL IP Insertion
Use one general process for RTL insertion of all Tessent intellectual property (IP), such as
MBIST, EDT, LBIST, test points, and SSN. Repeat the steps outlined in this section in multiple
passes corresponding to different combinations of IP and levels of hierarchy.
Use the following steps insert the IP at RTL:
1. Set up your work area by setting the context to “dft -rtl”, setting the design level, and
loading any required libraries. Refer to “Tessent Shell Workflows” on page 173.
2. Load your RTL design, by either reading the source code for the first time or reading the
design in progress from the TSDB files. Refer to “Loading the Design” on page 183.
3. Check design rules with each subsequent step. Refer to “RTL Design Rule Checks” on
page 121.
4. Specify the DFT logic and options you want to insert in this pass.
a. Define important signals using the add_dft_signals command.
b. Specify options to configure the IP, the optimization algorithms, and the generation
process. The exact commands depend on the IP you are inserting. Refer to “Tessent
IP Configuration and Insertion Instructions” on page 123 for a list of references.
c. Specify the large IP modules such as MBIST, EDT, LBIST controllers, IJTAG, and
SSN networks. Refer to “Configuration-Based Specification” 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.
RTL DFT Analysis and Insertion
RTL IP Insertion
d. (Optional) Create post-insertion procs that perform design editing. Refer to “First
DFT Insertion Pass: Top with MemoryBIST, BISR, and Boundary Scan” on
page 438.
5. Run analysis algorithms for optimal insertion, if required.
Note
This step is required for Tessent DFT logic such as test points (analyze_test_points),
X-bounding (analyze_xbounding), and wrapper cells (analyze_wrapper_cells).
It does not apply for IP that you specify completely, such as in-system test and LBIST.
Your unique design needs may require a combination of command options and DftSpecification
properties. See the individual IP documentation for details on how to configure the IP for
insertion in your RTL design.
Table 5-1. Tessent IP Configuration and Insertion Instructions
Tessent DFT IP RTL Configuration and Insertion Instructions
Boundary Scan “Getting Started With Tessent BoundaryScan” in the Tessent
BoundaryScan User’s Manual
Compression (EDT) “Integrating Compression at the RTL Stage” in the Tessent
TestKompress User’s Manual
Dedicated Wrapper Cells “Wrapper Analysis and Dedicated Wrapper Cell Insertion at
RTL” on page 159
IJTAG “IJTAG Network Insertion” in the Tessent IJTAG User’s
Manual
In-System Test “In-System Test IP Insertion and Pattern Generation” in the
Tessent MissionMode User’s Manual
LBIST “EDT and LogicBIST IP Generation” in the Hybrid TK/LBIST
Flow User’s Manual
MBIST “Planning and Inserting MemoryBIST” in the Tessent
MemoryBIST User’s Manual
On-Chip Clock Control “Tessent On-Chip Clock Controller” in the Tessent Scan and
(OCC) ATPG User’s Manual
Streaming Scan Network “Tessent SSN Workflows” on page 478
(SSN)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
RTL IP Insertion
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
RTL Design Assessment
A significant factor affecting the RTL code complexity score is the number of complex and
nested control statements within each concurrent statement (such as “always” blocks or similar
RTL constructs). Structuring the code with relatively few complex constructs within each
concurrent statement results in a lower complexity score and a design that may be more testable.
Designs that concentrate more complex statements (meaning a larger amount of logic) inside
relatively fewer concurrent statements receive a higher complexity score. An extreme example
is a design with concurrent statements that contain so much complexity that the gate-level
representation does not map back to the RTL. A very high complexity makes it difficult for the
tool to identify locations for test point insertion
1. McCabe (December 1976). "A Complexity Measure". IEEE Transactions on Software Engineering. SE-2
(4): 308–320. doi:10.1109/tse.1976.233837. S2CID 9116234
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
RTL Test Point Insertion Suitability Score
To simplify the RTL quality evaluation, the tool divides the RTL code complexity score into
four levels as shown in Table 5-2:
Table 5-2. RTL Code Complexity Score
Score Likely Maintenance Effort Editable Nodes (visible RTL nets and
expression boundaries)
Low Low High percentage
Medium Medium Medium percentage
High High Low percentage
Very High Very high Very low percentage
The tool computes the suitability score for RTL test point insertion globally. This is done top-
down for the whole design. The score is primarily based on RTL code complexity scores for
every instance across the logic hierarchy. For every instance level, the tool adjusts the
complexity score metric by considering pre-test point analysis metrics. Example metrics include
the total number of testable gate nodes and the total editable testable gate nodes. Refer to “Gate
Node Location Types” for more information.
2. Wallace, D. , Watson, A. and Mccabe, T. (1996), Structured Testing: A Testing Methodology Using the
Cyclomatic Complexity Metric, Special Publication (NIST SP), National Institute of Standards and
Technology, Gaithersburg, MD (Accessed August 31, 2022)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
RTL Test Point Insertion Suitability Score
To simplify the RTL suitability evaluation, the tool divides the RTL test point suitability score
into three levels:
Table 5-3. RTL Test Point Insertion Suitability Score
Score Editable Nodes Recommended Insertion Flow to Improve ATPG and
(visible RTL nets BIST Metrics
and expression
boundaries)
High High percentage RTL level
Medium Medium percentage RTL insertion likely enhances the testability of the block.
Gate-level insertion may provide higher testability.
Low Low percentage Gate level
If the sub-blocks have many logic elements tied constant or left floating, the tool can increase
the suitability score by optimizing the sub-blocks’ content. A design with many sub-blocks with
“High” RTL code complexity does not necessarily have a “Low” suitability score.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Detailed Metrics
Detailed Metrics
RTL code complexity analysis provides detailed metrics on your RTL design.
The code complexity analysis provides a summary code complexity score, a summary test point
suitability score, and design metrics. The available design metrics change depending on when
you perform complexity analysis:
• Prior to quick synthesis, the tool reports only high-level information about your design:
o Overall RTL complexity score
o Design profile
• Identification of RTL and structural modules within the RTL
• Number of black boxes
• Total design instances
o Library profile
• Number of Synopsys DesignWare® modules and instances
• Number of Tessent library modules and instances
• After quick synthesis, the tool reports additional information:
o Overall test point suitability score
o Library profile
• Number of directly instantiated and synthesized sequential cells
• Number of constant and floating cells
o Detailed design pin information:
• Number of gate nodes
• Number of gate nodes at expression boundaries
• Number of gate nodes inside functional blocks
• Number of gate nodes at control logic
• Number of floating gate nodes
• Number of tied constant gate nodes
• Number of gate nodes within DesignWare
• After test point analysis, the tool also reports the number of test points targeted for
visible nodes and expression boundaries.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Gate Node Location Types
• Then, after test point insertion, the tool also reports the number of test points collapsed
to inside control logic and functional blocks.
• You can run complexity analysis in a high-effort mode to provide greater detail as part
of the complexity report after quick synthesis. See report_rtl_complexity for more
information.
When you run complexity analysis with the “-effort high” option, the tool performs test
point analysis but not insertion. It considers the entire design for test points, and
compares the analysis to the editable RTL nodes. Metrics included in the high-effort
report:
o Information about test points that target editable nodes of the RTL
• Number of test points targeted to directly visible nodes
• Number of test points targeted to expression boundaries
o Information about test points that target non-editable nodes of the RTL
• Number of test points targeted to functional blocks
• Number of test points targeted to control logic
• Gate nodes directly mapped to RTL nets — Examples include nets, and port pins
declared and visible at RTL. These gate nodes are fully editable, and the tool can insert
test points at the gate node locations of the closet visible RTL nets.
The tool inserts the CP/OP at stems instead of branches. When dealing with directly
visible nodes, the tool targets individual stems instead of branches. With RTL, the same
statement or equation may be used multiple times. In that case, if multiple test points
target the same stem in different locations in the RTL, Tessent merges the multiple stem
test points into a single branch test point.
• Gate nodes directly mapped to RTL expression boundaries — Examples include
RTL sub-expressions. These gate nodes are fully editable, and Tessent can insert CPs
and OPs at the boundaries of RTL expressions and sub-expressions. Because these
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Gate Node Location Types
expressions typically use the same variables, Tessent considers branch locations during
analysis.
• Gate nodes mapped inside functional blocks — Examples include adders. These gate
nodes are not editable, and the tool cannot insert test points.
• Gate nodes mapped inside control logic — Examples of sequential control statements
include if-then-else and case. These gate nodes are not editable, and the tool cannot
insert test points.
Example
This example illustrates the terminology:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Gate Node Location Types
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Preparations for RTL DFT Analysis
From the example, the tool may identify the following editable testable gate nodes (pins) as
potential CPs and OPs:
• rtlc0_2/A
• rtlc0_2/B
• rtlc0_2/Z
• rtlc_16/A
• rtlc_16/B
• rtlc_16/Z
• rtlcreg_data_out/Q
• data_in1
• data_in2
• data_out
The tool identifies the gate nodes (pins) on the clock and reset paths as editable but not testable
and not suitable as potential test points. Example untestable gate nodes:
• clk
• rtlcreg_data_out/CP
• reset_h
• rtlc_14/A
• rtlc_14/Z
Pre-DFT DRCs
Your design must pass the pre-DFT design rule checks (DRCs). Refer to “RTL Design Rule
Checks” on page 121 for more information.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Point Analysis at RTL
Tip
Use a consistent naming convention such as a prefix for non-scan elements and use the
introspection commands to find them.
To refer to non-scan elements in the RTL code, use the “add_nonscan_instances” command
with the -rtl_reg switch. For example:
Quick Synthesis
Control quick synthesis options with the “set_quick_synthesis_options” command. Options
include adding parallel synthesis and skipping synthesis of large two-dimensional arrays.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Point Insertion at RTL
You can choose the goals of test point analysis by running the set_test_point_types command in
setup mode. The tool can optimize for LBIST test coverage or deterministic test pattern count,
or both. Refer to “Test Point Usage Scenarios” in the Scan and ATPG User’s Manual.
When you transition from setup to analysis mode, the tool automatically runs quick synthesis to
generate a gate-level view of the RTL design. The tool builds the netlist view and marks all gate
pins to be excluded from test point insertion based on the options you specify with the
set_rtl_dft_analysis_options command. When you run the analyze_test_points command in
analysis mode in the “dft -rtl -test_points” context, the tool chooses the test point locations,
which it inserts later in the process. It maps those test point locations based on the gate-level
view back to RTL.
You can evaluate the results of test point analysis before insertion by running the
report_test_points command. You can iterate the analysis process by returning to setup mode
and setting different options. The tool automatically cleans up test point locations if you switch
back to setup mode ands keeps them while you stay in analysis mode.
After identifying the optimal settings for your RTL design, Tessent RTL Pro can insert those
test points at RTL. Refer to “Test Point Insertion at RTL” on page 134 for more information.
For more in-depth information about test points, refer to the following topics in the Tessent
Scan and ATPG User’s Manual:
Control the test point insertion using the following commands in the “dft -rtl -test_points”
context:
• set_test_point_analysis_options
• set_test_point_insertion_options
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Point Insertion at RTL
• set_test_point_sharing_restrictions
The following example uses the set_current_design command to select the portion of the design
for test point insertion, the analyze_test_points command to automatically identify where to
insert control points and observe points, and the process_dft_specification command to insert
the test points:
read_cell_library <library_path>/NangateOpenCellLibrary.atpglib \
../data/picdram.atpglib
read_verilog ../data/piccpu1.v
read_verilog ../data/picdram.v -blackbox -exclude
read_cell_library ../data/cell_selection
set_cell_library_options -default_dft_cell_selection tc_selection
set_current_design piccpu1
set_design_level physical_block
add_clocks 0 clk
add_clocks 0 ramclk
add_black_box -instance bbox
check_design_rules
analyze_test_points
report_test_points
create_dft_specification
process_dft_specification
A limitation at RTL involves an observe point (OP) within the clocked always statement at the
boundary of an expression. Within the always statement, the tool makes an assignment to the
test data output that observes the expression. Synthesis automatically infers a flip-flop that
cannot be shared with other observe points.
For example, consider an OP at the expression “in1 & in2” in the following RTL code:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Specifying RTL Test Points with Tessent Shell Commands
The tool creates the following RTL after test point insertion:
top_rtl_tp_op_holder tessent_persistent_cell_op_holder_instance_1
(.funcin(tessent_persistent_cell_op_test_out_1), .ff_out());
Synthesis infers the flip-flop of this observe point by the test data output signal
“tessent_persistent_cell_op_test_out_1”. The output of the flip-flop
“tessent_persistent_cell_op_test_out_1” connects to an empty instance
“tessent_persistent_cell_op_holder_instance_1” that does not include a flip-flop. When Tessent
detects this kind of observe point, it automatically transforms it to a regular OP, and does not
share the same flip-flop with other OPs in the same group.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Observation Scan Type of Test Point
Example
set_context dft -rtl -test_points
read_verilog ../prerequisites/insert_test_point_logic.tshell/rtl/tp.v
read_verilog -format sv2009 ../data/pkg1.sv
read_verilog -format sv2009 ../data/top1.sv
set_current_design top
add_clocks 0 clk
add_clocks 1 rstn
check_design_rules
analyze_test_points
create_dft_specification
process_dft_specification
The OST uses a positive-edge scan flip-flop RTL cell, the PosedgeSff.
Process
Use the following process to add OST observe points in RTL.
Note
The tool requests an LBIST-OST license.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Observation Scan Type of Test Point
Note
After inserting test logic, you can synthesize the design. The behavioral scan cell
flip-flops must have the set_dont_scan mark to prevent the synthesis tool from
replacing them with scan flip-flops.
The OST observe points must have the set_preserve_boundary mark to prevent their
removal by synthesis tool optimizations. The other observe and control test point types
also use this mark during synthesis.
This flow is analogous to the post-synthesis insertion flow in the “dft -scan -test_points”
context.
Figure 5-4 shows an example of the logic that process_dft_specification inserts when
use_rtl_cells is off. The logic module code is below the figure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Observation Scan Type of Test Point
The process_dft_specification command inserts behavioral code for the ts_0_osp_sff scan flip-
flop in Figure 5-4 if use_rtl_cells is on. The code is a pos-edge RTL scan cell, PosedgeSff.
module cb_oc_rtl1_tp_tessent_posedge_scan_cell (
input wire d,
input wire si,
input wire se,
input wire clk,
output reg so
);
wire mux_net;
assign mux_net = (se) ? si : d;
always @ (posedge clk) begin
so <= mux_net;
end
endmodule
You can substitute the PosedgeSff behavioral cells with actual scan cells later in the flow.
For example, if you want to insert an OST on !data_conflict in the following expression:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Observation Scan Type of Test Point
The insertion process creates the InsertObservePointV95 function call and modifies the
expression to use it:
function InsertObservePointV95;
input sig_in;
input TM;
begin
InsertObservePointV95 = sig_in & TM;
end
endfunction
cb_oc_rtl1_tp_sff_osp ts_0_osp_dff_instance_1_0_0 (
.clk(clk_ts1),
.ff_in(ts_0_osp_test_out_1_0),
.cpc_en(capture_per_cycle_en_out),
.se(1'b0),
.si(1'b0),
.q()
);
Figure 5-5 shows the schematic of the cb_oc_rtl1_tp_sff_osp cell and how it includes the rest of
the OST scan cell.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Point Implementations
The flow must stitch all OSTs into separate scan chains from the normal scan cells. The tool can
stitch the observation scan cells correctly when the module_type property value is
observation_scan_cell.
Core(cb_oc_rtl1_tp_tessent_osp) {
Scan {
module_type : observation_scan_cell;
is_hard_module : 1;
internal_scan_only : 0;
traceable : 0;
Clock(op_clk) {
off_state : 1'b0;
}
ScanEn(se) {
active_polarity : all_ones;
}
ScanChain {
length : 1;
scan_in_port: si;
scan_out_port: q;
scan_in_clock: op_clk;
scan_out_clock: op_clk;
}
}
}
The tool can generate a CTL file for third-party scan insertion.
Limitations
Insertion of scan cells inside always-clocked logic blocks is not yet possible. If you try to insert
an OST observe point inside an always-clocked logic block, the tool replaces it with a regular
test point.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Point Implementations
DftSpecification/use_rtl_cells property to force the tool to generate behavioral flops using RTL
always statements in the RTLCells instrument directory.
DftSpecification(module_name,id) {
…
use_rtl_cells : on | off | auto ;
…
}
Examples
Example 1
This example specifies “use_rtl_cell on”:
read_cell_library ../45nm/Tessent/NangateOpenCellLibrary.atpglib \
../data/picdram.atpglib
read_verilog ../data/piccpu1.v
read_verilog ../data/picdram.v -blackbox -exclude
read_cell_library ../data/cell_selection
set_cell_library_options -default_dft_cell_selection tc_selection
set_current_design piccpu1
set_design_level physical_block
add_clocks 0 clk
add_clocks 0 ramclk
add_black_box -instance bbox
check_design_rules
analyze_test_points
report_test_points
set_defaults_value DftSpecification/use_rtl_cells on
set spec [create_dft_specification -replace]
process_dft_specification
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Point Implementations
The control point and observe point instruments instantiate the RTL behavior version of the
DFF defined in the RTLCells directory as follows:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Point Implementations
Example 2
This example specifies “use_rtl_cell off”:
read_cell_library ../45nm/Tessent/NangateOpenCellLibrary.atpglib \
../data/picdram.atpglib
read_verilog ../data/piccpu1.v
read_verilog ../data/picdram.v -blackbox -exclude
read_cell_library ../data/cell_selection
set_cell_library_options -default_dft_cell_selection tc_selection
set_current_design piccpu1
set_design_level physical_block
add_clocks 0 clk
add_clocks 0 ramclk
add_black_box -instance bbox
check_design_rules
analyze_test_points
report_test_points
set_defaults_value DftSpecification/use_rtl_cells off
set spec [create_dft_specification -replace]
process_dft_specification
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Point Implementations
The control point and observe point instruments instantiate the available cells as follows:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Points as Function Calls
Example 3
This example specifies “use_rtl_cell auto”:
read_cell_library ../45nm/Tessent/NangateOpenCellLibrary.atpglib \
../data/picdram.atpglib
read_verilog ../data/piccpu1.v
read_verilog ../data/picdram.v -blackbox -exclude
read_cell_library ../data/cell_selection
set_cell_library_options -default_dft_cell_selection tc_selection
set_current_design piccpu1
set_design_level physical_block
add_clocks 0 clk
add_clocks 0 ramclk
add_black_box -instance bbox
check_design_rules
analyze_test_points
report_test_points
set_defaults_value DftSpecification/use_rtl_cells auto
set spec [create_dft_specification -replace]
process_dft_specification
The control point and observe point instruments instantiate the available cells as shown in
Example 2.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Points as Function Calls
Examples
Example 1
This is an example of a 1-bit control point:
Always
@(posedge clk or negedge rst_n)
begin : TXID_SLOT_CNT_FF
if ((~rst_n))
txid_slot_cnt[7] <= 3'd0;
else if (block_en_n)
txid_slot_cnt[7] <= 3'd0;
else
begin
if ((((conf_ofdma_mode & active_txids[7]) &
o_fifo_wr[txid_active_slot[7]])
& fifo_llr_last[txid_active_slot[7]]))
begin
if (InsertControlPointORTypeV95(
(txid_slot_cnt[7]
==(conf_txid_slots_array[7] - 4'd1)),
control_test_point_en,
ts_0_cp_test_in_360_0)
)
txid_slot_cnt[7] <= 3'd0;
else
txid_slot_cnt[7] <= (txid_slot_cnt[7] + 3'd1);
end
end
end
end
function InsertControlPointORTypeV95;
input sig_in;
input TM;
input test_in;
reg sig_in_tp;
begin
sig_in_tp = (TM & test_in) | sig_in;
InsertControlPointORTypeV95 = sig_in_tp;
end
endfunction
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Points as Function Calls
Example 2
This example has two control points on the same expression:
Example 3
This example inserts a control point and connects the associated flip-flop to a negative edge-
triggered clock:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Points as Function Calls
Assume that the tool inserts a control point on “in1&in2” on “path i1”. The following code is
the modified RTL with a negative edge-triggered test point inserted.
The following Verilog code defines the negative edge-triggered flip-flop associated with the
inserted control point:
module top_tessent_negedge_dff (
input wire d,
input wire clk,
output reg q
);
always @ (negedge clk) begin
q <= d;
end
endmodule
Example 4
This example shows control point insertion on input pins driven by multiple branches of a sub-
expression. In the original RTL, the “in1 & in2” expression has three branches. For the purpose
of this example, control points are inserted on only two of the branches, which are highlighted
in red in the following code. The other branch does not get a control point and is highlighted in
green.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Test Points as Function Calls
The following figure shows the corresponding gate logic with the two control point locations
marked in red.
The tool modifies the RTL to insert the two control points as function calls, which are
highlighted in red. The unmodified branch of the original expression is highlighted in green.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
How to Preserve DFT Logic Inserted at RTL
module top(
input clk, input in1,in2,in3,
output reg out1, out2, out3, input wire cp_en);
wire [0:0] tessent_persistent_cell_cp_test_in_1_0,
tessent_persistent_cell_cp_test_in_1_00;
always @(posedge clk) begin
out1 <= (InsertControlPointORTypeSV09((in1 & in2), cp_en,
tessent_persistent_cell_cp_test_in_1_0) | in3);
out2 <= ((in1 & in2) & in3);
out3 <= (InsertControlPointORTypeSV09((in1 & in2), cp_en,
tessent_persistent_cell_cp_test_in_1_00) ^ in3);
end
top_tessent_dff_cp tessent_persistent_cell_cp_dff_instance_1_0_0(
.clk(clk), .ff_out(tessent_persistent_cell_cp_test_in_1_0)
);
top_tessent_dff_cp tessent_persistent_cell_cp_dff_instance_1_0_0_1(
.clk(clk), .ff_out(tessent_persistent_cell_cp_test_in_1_00)
);
function logic InsertControlPointORTypeSV09(input logic sig_in,
input logic TM,
input logic test_in);
return (TM & test_in) | sig_in;
endfunction
endmodule
Prerequisites
• Predefined DFT logic generated into the following sub-directory of <TSDB output
directory>/instruments:
o <current_design_name>_<design_id_name>_rtl_scan_dft_logic.instrument
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
How to Preserve DFT Logic Inserted at RTL
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
How to Report Logic Excluded From Test Point Analysis
Example
This example adds the following commands to the synthesis script:
source ../tsdb_outdir/dft_inserted_designs \
cb_oc_rtl1.dft_inserted_design/cb_oc.sdc
source <TSDB output directory>/dft_inserted_designs/ \
<current_design_name>_<design_id_name>.dft_inserted_design/ \
<current_design_name>_<design_id_name>.sdc
tessent_set_default_variables
set preserve_instances [tessent_get_preserve_instances scan_insertion]
set_boundary_optimization$preserve_instances true
set_ungroup $preserve_instances false
set_boundary_optimization [tessent_get_optimize_instances] true
set_size_only -all_instances [tessent_get_size_only_instances]
set_app_var compile_enable_constant_propagation_with_no_boundary_opt \
false
set_app_var compile_seqmap_propagate_high_effort false
set_app_var compile_delete_unloaded_sequential_cells false
The report shows the reason and type for each pin excluded at the gate level after quick
synthesis. The following are the reasons and their meanings:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
How to Report Logic Excluded From Test Point Analysis
The list of reasons in this section applies only to the RTL flow. Other no_control_reason and
no_observe_reeason values apply to the gate-level flow. For more information, refer to “Object
Attributes” on page 46.
Examples
Example 1
This example reports the logic excluded from test point analysis:
set_tsdb_output_directory tsdb_outdir
set_context dft -test_points -rtl
read_verilog -f ../data/filelist.f
read_verilog ../prerequisites/insert_test_point_logic.tshell/rtl/tp.v
set_current_design lifo_top
set_design_level physical
add_black_box -auto
add_clocks 1 rbu_reset_n
add_clocks 1 reset_n
add_clocks 0 clk
check_design_rules
analyze_test_points
report_notest_points -tool_identified
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
How to Report Logic Excluded From Test Point Analysis
Example 2
The following example uses attribute introspection such as the “report_attributes” command to
show the value on any gate-pin/port/net/pin objects:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
X-Bounding Analysis and Insertion at RTL
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
X-Bounding Analysis and Insertion at RTL
Note
These commands are permitted only if “set_dft_specification_requirements -logic_test” is
set to on. This ensures definition and controllability requirements are met for clocks, sets,
and resets during pre-DFT DRC.
To insert other instruments but not the X-bounding logic after the X-bounding analysis is done,
you must clear the analysis results using the “analyze_xbounding -reset” command before
running the process_dft_specification command.
The tool considers all flip-flops as scannable, unless they are explicitly declared as non-scan.
Flip-flops in X-bounding analysis have the following capabilities:
X-bounding Logic
The tool inserts the following X-bounding logic:
X-Sources
The tool considers the following as potential sources of unknown values:
1. Unconstrained primary inputs, except for test-related ports (such as DFT signals, ICL
ports, and so on).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
X-Bounding Analysis and Insertion at RTL
If boundary scan is present, you must put it in the shift mode using input constraints to prevent
redundant bounding of the wrapped primary inputs. Alternatively, you can exclude the inputs
with the “set_xbounding_options -exclude” command. The boundary scan cells are not
considered X-sources because all flops are considered scannable (unless defined non-scan).
Ports and pins with DFT control points of async_set_reset type that are added with
add_dft_control_point or by DFT_C9 block the X propagation.
The tool can bound the unknown states introduced by false and multicycle paths when you read
an SDC file before starting the analysis. See “Limitations of RTL DFT Analysis and Insertion”
on page 171 for details about SDC file parsing.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Wrapper Analysis and Dedicated Wrapper Cell Insertion at RTL
Non-editable Nodes
Some regions of the RTL design cannot be modified. The tool marks them with
no_control_point/no_observe_point attributes, and the corresponding no_control_point_reason
and no_observe_point_reason attributes.
Note
These commands are permitted only if “set_dft_specification_requirements -logic_test” is
set to on. This ensures definition and controllability requirements are met for clocks, sets,
and resets during pre-DFT DRC.
You can inspect the analysis results using the “report_wrapper_cells” command or by
introspection. The tool does not insert dedicated wrapper cells if you run the
“analyze_wrapper_cells -reset” command before the process_dft_specification command.
When you run the process_dft_specification command, the tool writes the locations of the
dedicated wrapper cells to the dft_info_dictionary in the corresponding TSDB directory. If you
use a third-party scan insertion tool, you need to identify dedicated wrapper cells for scan
stitching. The following example shows how to get information for dedicated wrapper cells
after the “extract_icl” command is complete:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Wrapper Analysis and Dedicated Wrapper Cell Insertion at RTL
dft_signals {
async_set_reset_dynamic_disable {
connection_node_name tp_cell_async_set_reset_dynamic_disable/y
connection_node_type pin
}
…
}
dedicated_wrapper_cells {
cpu_en {
ts_0_dihw_2568smodp1_i {
intercept cpu_en
capture_window_behavior invert_hold
}
}
dco_enable {
ts_0_dohw_2350smodp1_i {
intercept dco_enable
capture_window_behavior invert_hold
}
}
…
}
Limitations
The quick synthesis does not use multi-bit cells or flip-flop trays, unlike regular synthesis. For
this reason, wrapper analysis does not account for multi-bit cells the same way it does in the “dft
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Smart Uniquification for RTL Pro
-scan” context. In the “dft -scan” context, it accounts for their cost towards flip-flop threshold
by dividing their size by the number of ports that reach it. In dft (with no sub_context), you can
alleviate the impact of this limitation by reducing input/output fanout/fan-in flip-flop thresholds
using the set_wrapper_analysis_options command.
When the -auto_uniquify_edited_modules switch is set to “on”, the tool creates a new unique
module for every instance that has test point, X-bounding, or dedicated wrapper cell DFT logic
inserted.
The tool distributes all DFT locations (such as test points, X-bounding logic, and dedicated
wrapper cells) per elaborated views. Elaborated views are new modules created by design
elaboration to represent the hierarchy of logic instances after propagating parameters and the
System Verilog interface from the top module down.
Before starting insertion of the test logic into the RTL design, RTL Pro identifies all sets of
instances of the same elaborated view that require the same test logic. If a set of instances has
the same required test logic but some descendants do not, the tool creates different unique
views.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Smart Uniquification for RTL Pro
Example 1
This example shows the behavior of the “set_insertion_options
-auto_uniquify_edited_modules” command. The example design has 10 instances of the same
module “DECODE” under the top module “TOP” as follows:
After design elaboration, the tool creates two elaborated views for the “DECODE” module
according to the WIDTH parameter.
Scenario 1
The tool inserts ten control points implemented with OR gates. All control points are on the
same output of the same expression (same logic).
• -auto_uniquify_edited_modules on —
o 10 new unique views (DECODE_1, DECODE_2, …, DECODE_10)
• -auto_uniquify_edited_modules when_needed —
o DECODE_1 for instances {u1, u3, u4, u5, u7, u8, u9}
o DECODE_2 for instances {u2, u6, u10}
Scenario 2
The tool inserts ten control points implemented with OR gates. All control points are on the
same output of the same expression (same logic). The tool also inserts six observe points, with
three observe points on the same location for u1, u2, and u3, and three other observe points on
the same location for u4, u5, and u6.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Smart Uniquification for RTL Pro
• -auto_uniquify_edited_modules on —
o 10 new unique views (DECODE_1, DECODE_2, …, DECODE_10)
• -auto_uniquify_edited_modules when_needed —
o DECODE_1 for instances {u1, u3}
o DECODE_2 for instances {u2, u6, u10}
o DECODE_3 for instances {u4, u5, u7, u8, u9}
If you enable test point sharing, the uniquification changes because the tool always inserts the
common flip-flop at the common ancestor instance, as shown in Scenario 3.
Scenario 3
As in Scenario 2, the tool inserts ten control points implemented with OR gates. All control
points are on the same output of the same expression (same logic). The tool also inserts six
observe points, with three observe points on the same location for u1, u2, and u3, and three
other observe points on the same location for u4, u5, and u6.
This scenario enables test point sharing with the following command:
set_test_point_analysis_options -shared_control_points_per_flop 5
In this case, the tool creates two clusters of control points (CP) that share a single flip-flop for
each cluster.
• -auto_uniquify_edited_modules on —
o 10 new unique views (DECODE_1, DECODE_2, …, DECODE_10)
• -auto_uniquify_edited_modules when_needed —
o DECODE_1 for instances {u1, u3}
o DECODE_2 for instances {u2}
o DECODE_3 for instances {u6, u10}
o DECODE_4 for instances {u4}
o DECODE_5 for instances {u5, u7, u8, u9}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Smart Uniquification for RTL Pro
The tool identified the same test points for Scenario 2 and 3 but a different number of unique
views because of test point sharing.
To have better control on uniquification when the test point sharing is enabled, use the
set_test_point_sharing_restrictions command. For example, use the -module switch to restrict
sharing to specific elaborated views only:
Example 2
This example shows the behavior of the “set_insertion_options
-auto_uniquify_edited_modules” command on the following design, top.sv:
The dofile for this example includes the following commands, where the gate pin “rtlc0_0/Z”
represents the output pin of expression “in[1] & in[3]”:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Smart Uniquification for RTL Pro
The tool inserts four control points on the same RTL location. With
“-auto_uniquify_edited_modules when_needed”, the tool creates two new unique views, M1_1
and M2_1. The following shows the RTL for top.sv after test point insertion:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Incremental Insertion
Incremental Insertion
After synthesizing the DFT logic inserted at RTL, you can perform incremental insertion at the
gate level for fine-tuning before test pattern generation.
You can perform incremental test point analysis at the gate level. The Example in this section
shows how to use it to increase LBIST test coverage.
You can perform incremental X-bounding at the gate level for these reasons:
Example
This example first inserts test points in an RTL design and then incrementally inserts test points
at the gate level. It focuses on the commands related to test points only. For more information
on the overall flow, refer to “Tessent Shell Workflows” on page 173.
Define DFT-specific signals in the first insertion pass, including the following signals for test
points:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Incremental Insertion
The following code shows the test point insertion at RTL with the goal of increasing LBIST test
coverage:
The following tool transcript shows the results of the analyze_test_points command for RTL
insertion:
// command: analyze_test_points
// Identifying locations of x-bounding muxes prior to test point
// analysis.
// Note: Test points cannot be inserted at 72035 (63.0%) gate-pins.
// 10978 ( 9.6%) gate-pins are located on clock lines or on the
// scan path.
// 23031 (20.1%) gate-pins are constant due to inputs that are
// constrained to 0 or 1 or as a result of the test setup procedure.
// 36803 (32.2%) gate-pins are restricted by add_notest_points
// command(s) and/or no_control_point/no_observe_point attribute
// settings.
// Warning: This design may not be suitable for test point analysis
// unless you can take the following action(s) -
// a) Reduce the number of user-specified no_control_point
// and no_observe_point locations.
//
// Test Coverage Report before Test Point Analysis
// -----------------------------------------------
// Target number of random patterns 10000
//
// Total Number of Faults 225728
// Testable Faults 195126 ( 86.44%)
// Logic Bist Testable 169654 ( 75.16%)
// Blocked by xbounding 9206 ( 4.08%)
// Uncontrollable/Unobservable 5598 ( 2.48%)
//
// Estimated Maximum Test Coverage 86.95%
// Estimated Test Coverage (pre test points) 54.86%
// Estimated Relevant Test Coverage (pre test points) 58.04%
//
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Incremental Insertion
//
// Incremental Test Point Analysis
// -----------------------------------------
// TPs 100 = 61 (CP) + 39 (OP), Est_RTC 68.68
// TPs 200 = 112 (CP) + 88 (OP), Est_RTC 70.13
…
// TPs 1700 = 178 (CP) + 1522 (OP), Est_RTC 81.36
// TPs 1800 = 178 (CP) + 1622 (OP), Est_RTC 81.44
//
// Incremental optimization to find more effective test points is in
// progress. The final distribution of control and observe points
// may change.
//
// Test Coverage Report after Test Point Analysis
// ----------------------------------------------
// Target number of random patterns 10000
//
// Total Number of Faults 225728
// Testable Faults 195126 ( 86.44%)
// Logic Bist Testable 169654 ( 75.16%)
// Blocked by xbounding 9206 ( 4.08%)
// Uncontrollable/Unobservable 5598 ( 2.48%)
//
// Estimated Test Coverage (post test points) 79.51%
// Estimated Relevant Test Coverage (post test points) 84.11%
//
//
// Test point analysis completed: no more useful test points could be
// identified.
// Total inserted test points 1473
// Control Points 274
// Observation scan Test Points 1199
// Maximum control point per path 4
// CPU_time (secs) 15.6
After insertion, the RTL design is ready for synthesis. At the gate level, perform fault
simulation of the LBIST patterns to evaluate the test coverage. The following tool transcript
shows the results of fault simulation:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Incremental Insertion
The result is that test point insertion at RTL added 1800 test points, which increased the
estimated test coverage from 54.86% to 79.51%. The fault simulation confirmed the LBIST test
coverage at 79.20% for 1000 patterns simulated.
To further increase LBIST test coverage, this example script performs incremental test point
insertion in the design at the gate level:
The following tool transcript shows the test points added during gate-level incremental
insertion:
// command: analyze_test_points
// Identifying locations of x-bounding muxes prior to test point
// analysis.
// Note: Test points cannot be inserted at 37846 (29.4%) gate-pins.
// 12853 (10.0%) gate-pins are located on clock lines or on the
// scan path.
// 17349 (13.5%) gate-pins are constant due to inputs that are
// constrained to 0 or 1 or as a result of the test setup procedure.
// 5632 ( 4.4%) gate-pins are restricted by add_notest_points
// command(s) and/or no_control_point/no_observe_point attribute
// settings.
// Warning: Consider taking the following action(s) -
// a) Reduce the number of user-specified no_control_point
// and no_observe_point locations.
//
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Incremental Insertion
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Limitations of RTL DFT Analysis and Insertion
After incrementally inserting test points, you can fault simulate the LBIST patterns. Here is an
excerpt from the fault simulation tool transcript:
The result is that incremental insertion at the gate level put in an additional 192 test points,
which further increased the estimated test coverage from 79.51% to 86.05%. The fault
simulation confirmed the LBIST test coverage as 86.30% for 1000 patterns simulated.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
RTL DFT Analysis and Insertion
Limitations of RTL DFT Analysis and Insertion
violation of the XB3 DRC rule. You can remedy this by marking the logic with the
no_control_point attribute.
• The “-use_scan_cells {off | on}” option to the set_test_point_insertion_options and
set_xbounding_options commands is not supported in the dft (with no sub-context)
context.
• The -input_module_name and -output_module_name switches of the
set_dedicated_wrapper_cell_options command are not supported in RTL.
• The -dedicated_wrapper_cells_location and -identify_existing_dedicated_wrappers
switches of the set_wrapper_analysis_options command are not supported in RTL.
• The -prefer_scan_cells switch of the set_test_point_insertion_options command is not
supported in RTL.
• The tool only supports a subset of the SDC file syntax. See the read_sdc command in the
Tessent Shell Reference Manual for more information. The tool may not support the
attributes and commands specific to third-party tools. A possible workaround is to read
the SDC file in the synthesis tool and write out a preprocessed version after elaboration
and before synthesis. However, this can result in tool-specific, post-synthesis design
object names that may not match the design objects in Tessent, requiring some
additional manual post-processing. Another alternative is to prepare a tool-independent
SDC file by extracting the tool-specific queries and implementing them separately for
Tessent and third-party tools.
• You must first create an ICL representation of your RTL design in the TSDB by running
the extract_icl command before running the extract_sdc command to generate the
tessent_get_preserve_instances procs in the SDC file. These procs can be used to
preserve the inserted DFT logic during synthesis.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 6
Tessent Shell Workflows
Tessent Shell workflows are grouped into two main subflows: prelayout and postlayout. The
prelayout DFT insertion workflow describes the process for using Tessent Shell for flat and
hierarchical designs. The post-insertion validation workflow describes the flow for netlists that
have completed placement and routing.
Tessent Shell Flow for Flat Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Tessent Shell Flow for Hierarchical Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Tessent Shell Flow for Tiled Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Tessent Shell Post-Layout Validation Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Testbench Generation and Simulation in RTL Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Hybrid TK/LBIST Flow for Flat Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Running Multiple Load ATPG on Wrapped Core Memories with Built-In Self Repair 378
Built-in Self Repair in Hierarchical Tessent MemoryBIST Flow . . . . . . . . . . . . . . . . . . 385
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Tessent Shell Flow for Flat Designs
Refer to the following test case for a detailed usage example of the flow described in this
section:
tessent_example_flat_flow_<software_version>.tgz
You can access this test case by navigating to the following directory:
<software_release_tree>/share/UsageExamples/
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Overview of the RTL and Scan DFT Insertion Flow
Note
EDT is a subset of LBIST. You can choose EDT and no LBIST, but you cannot choose
LBIST without it also including EDT.
The DFT logic you insert during the first DFT insertion pass gets tested by EDT or LBIST.
When inserting DFT into an RTL design, you only need to run synthesis once after you have
performed the two DFT insertion passes.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Overview of the RTL and Scan DFT Insertion Flow
During the first pass, Tessent inserts the IJTAG network and any IJTAG instruments that have
ICL descriptions. Refer to the command for details about this process.
During the second pass, the tool checks MemoryBIST’s logic for rule compliance with the rest
of the functional logic to prevent implications for the DFT signals and IJTAG network
connections that could result in coverage loss and pattern count increase.
Optionally, you can perform scan insertion at the same time as synthesis. This does not affect
how you perform DFT insertion, but you do lose some of the automation that Tessent Shell
provides during ATPG pattern generation.
The following figures show an example of the progression of DFT hardware inserted into a
DFT-ready design.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Overview of the RTL and Scan DFT Insertion Flow
In the first DFT insertion pass, Tessent inserts the MemoryBIST and boundary scan hardware.
In the second DFT insertion pass, Tessent inserts the EDT or LBIST, and OCC hardware. You
clock the MemoryBIST logic (shown in yellow in Figure 6-4) using the same functional clock
that feeds the memories. The IJTAG network (blue) is scan tested using the IJTAG clock, which
is the TCK clock. The TAP network (red) is not scan tested or is made non-scan during ATPG.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
First DFT Insertion Pass: Performing MemoryBIST and Boundary Scan
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
First DFT Insertion Pass: Performing MemoryBIST and Boundary Scan
Prerequisites
• To insert boundary scan, you must have an RTL design with instantiated I/O pads if you
are using a chip-level design.
• For RTL netlists, you must have a Tessent cell library or the pad library for the I/O pads.
For more information, refer to the Tessent Cell Library Manual.
Procedure
1. Load the RTL design data (see lines 1-7).
2. For the first insertion pass, set the set_context -design_id switch. By convention, the
identifier used for this is typically “rtl1”.
The -design_id switch stores all the data associated with a particular DFT insertion pass
in the TSDB. For the first pass, rtl1 contains the data for the MemoryBIST and boundary
scan hardware, and for the IJTAG network.
Note
rtl1 is the recommended naming convention for the design ID for the first insertion
pass, but you can specify any name. Refer to “Loading the Design” for more
information about setting the design ID.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
First DFT Insertion Pass: Performing MemoryBIST and Boundary Scan
Note
You can also share test_clock, scan_en, and edt_update pins with functional
pins. The functional coverage is maintained when you use boundary scan during
scan test.
8. Create the DFT hardware, IJTAG network connectivity, and input test patterns. (See
lines 46-53.)
9. Run simulations to verify the design. (See lines 55-62.)
Results
For MemoryBIST, Tessent inserts the MemoryBIST controllers, interfaces, BIST Access Port
(BAP), and segment insertion bits (SIBs). This hardware is later scan-tested using EDT, which
you insert during the second insertion pass. In addition, Tessent automatically connects pre-
existing scan testable instruments and scan resource instruments to the Scan Tested Instrument
(STI) and Scan Resource Instrument (SRI) sides of the IJTAG network, respectively.
For boundary scan, you can segment the boundary scan chain into smaller chains that are used
during logic testing with Tessent TestKompress. To segment the boundary scan chain into
smaller chains to be connected to the EDT, specify max_segment_length_for_logictest within
the BoundaryScan wrapper or alternatively specify the following command prior to running
create_dft_specification:
set_defaults_value DftSpecification/BoundaryScan/max_segment_length_for_logictest
Examples
The following dofile example shows a typical command flow.
The highlighted command lines illustrate additional considerations for inserting the Tessent
Shell MemoryBIST and Tessent Shell Boundary Scan instruments in the first insertion pass of a
two-pass DFT insertion process. The functional pins are equipped with logic so that they can be
shared as EDT channel input and output pins.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
First DFT Insertion Pass: Performing MemoryBIST and Boundary Scan
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC
Before running this flow for chip-level designs, source nodes must be present in the RTL design
so that you can define dynamic DFT signals, as described in “Specifying and Verifying the DFT
Requirements”. Dynamic DFT signals (for example, scan enable, edt_clock, and edt_update)
need to change during specific tests.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC
Note
For the second DFT insertion pass, use the process described in “First DFT Insertion Pass:
Performing MemoryBIST and Boundary Scan” on page 178 to generate ATPG patterns and
perform simulation.
Prerequisites
• For chip-level designs, source nodes must be present in the RTL design so that you can
define dynamic DFT signals as described in “Specifying and Verifying the DFT
Requirements.” Dynamic DFT signals are signals such as scan enable, edt_clock,
edt_update, and so on, that need to change during specific tests.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC
Procedure
1. Apply the set_context command with the ID “rtl2” for the second pass. For example:
set_context dft -rtl design_id rtl2
In the first DFT insertion pass, you set the design ID to “rtl1” with the command.
Note
This manual uses recommended naming conventions for the design IDs for flat
designs, which are “rtl1” for the first DFT insertion pass, “rtl2” for the second DFT
insertion pass, and “gate” for the scan chain insertion pass. Refer to “Considerations for
Using Gate-Level Verilog Netlists” for the naming conventions when using gate-level
Verilog netlists.
For a specified design, the design ID stores all the data associated with a DFT insertion
pass into the TSDB. For the first pass, “rtl1” contains the data for the MemoryBIST and
boundary scan hardware. Setting the design_id to rtl2 at the beginning of the second
DFT insertion pass identifies that “rtl2” stores the EDT or LBIST, and OCC hardware
data generated during the second pass.
The rtl2 design data is cumulative. That is, it contains the necessary rtl1 data in addition
to the new data generated for EDT or LBIST, and OCC. The “rtl2” designation indicates
that the second insertion pass is performed on the resulting edits of the first pass RTL
data. In subsequent insertion passes, you can use either design ID to load the design and
its supporting files.
Tessent generates IJTAG nodes during both insertion passes and their module names are
differentiated using the design ID you specified in each pass.
2. Specify the set_tsdb_output_directory command with the same directory location for
both the first and second DFT insertion passes.
set_tsdb_output_directory ../tsdb_rtl
If you forget to specify the command for the second DFT insertion pass, Tessent creates
a default tsdb_outdir directory in the current working directory. If you use a different
output TSDB directory for the two insertion passes, ensure that you open the TSDB used
by the first insertion pass by specifying the open_tsdb command.
For more information about the TSDB, refer to “Tessent Shell Data Base (TSDB)” in
the Tessent Shell Reference Manual. For information about the TSDB data flow, refer to
“TSDB Data Flow for the Tessent Shell Flow.”
3. Specify the read_cell_library command to read in the library file for the standard cells
and the pad I/O macros.
The following command reads the Tessent cell library file for the standard cells and pad
I/O macros:
read_cell_library ../library/adk_complete.tcelllib
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC
If the pad I/O library and standard cell library are separate, use the following commands
to read in the atpg.lib files and the library for the pad I/O description:
read_cell_library ../library/atpg.lib
read_cell_library ../library/pad.library
The design was created in the first DFT insertion pass when you used the read_verilog
or read_vhdl commands. The read_design command also loads supporting files such as
the TCD, ICL, and PDL, if present in the TSDB.
The design is read in using the design ID from the first DFT insertion. In this case, the
design ID is “rtl1”
To load the design correctly for the second insertion pass, the read_design command
refers to the design source dictionary that was created during the first DFT insertion pass
and stored in the dft_inserted_designs directory.
5. Specify the set_current_design command to elaborate the design.
set_current_design cpu_top
If any module descriptions are missing, design elaboration identifies them. You can fix
elaboration errors by adding the missing modules or by specifying the
“add_black_boxes -module” command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC
Procedure
1. Specify the set_dft_specification_requirements command to run pre-DFT design rule
checking as follows:
set_dft_specification_requirements -logic_test on
Because you already specified that you were working at the chip level in the first DFT
insertion pass, you do not need to specify this information for the second insertion pass.
2. Specify the add_dft_signals command to define the DFT signals. For example:
add_dft_signals ltest_en
…
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC
Most dynamic DFT signals originate from primary input ports. For chip-level designs, these
primary input ports must already be present in the RTL and be pre-connected to a pad buffer
cell. The three dynamic DFT signals that originate from primary inputs are test_clock, scan_en,
and edt_update. To share their input ports with the functional mode, ensure that you added
auxiliary input logic for them during boundary scan insertion. Tessent cannot create the nodes
as ports.
The following example shows the required DFT signals for the second insertion pass when you
are inserting EDT or LBIST, and OCC.
Note
Tessent Shell automatically recognizes scan-tested instruments and stitches them into scan
chains.
Refer to the Tessent Shell Reference Manual for information about the following commands:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC
Prerequisites
• For EDT or LBIST, and OCC, you must first generate a skeleton DFT specification that
contains three empty SRI SIBs that specify the EDT, LBIST, and OCC sections of the
IJTAG network. Creating the DFT specification for EDT or LBIST, and OCC differs
from the process you use for MemoryBIST and boundary scan in the first DFT insertion
pass.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC
Procedure
1. Specify the create_dft_specification command as follows:
create_dft_specification -sri_sib_list {occ edt lbist}
2. Apply commands to customize the DFT specification using one of the following
interfaces:
To customize the DFT specification on the command line, type the EDT or LBIST, and
OCC data as an argument to the read_config_data -from_string command. Modify the
DFT specification with introspected data using the add_config_element and
set_config_value commands. Tessent automatically saves modifications to the dofile/
scripts directory for use in future sessions. See “DFT Customization Example” on
page 189 for an example.
Note
To input the EDT or LBIST, and OCC wrapper details for the DFT specification,
you can either use the Tessent GUI, known as Tessent Visualizer (see “Customizing
the DFT Specification for EDT”), or the Tessent Shell command line.
Note
Tessent automatically connects the divided boundary scan segment (if present from
the first DFT insertion pass) to the EDT hardware that Tessent inserts in the second
insertion pass. Refer to connect_bscan_segments_to_lsb_chains for details.
3. Specify the following command to ensure that no errors exist in the DFT specification:
process_dft_specification -validate_only
Complete this step before generating the EDT, LBIST, and OCC hardware.
Examples
DFT Customization Example
The following example modifies a DFT specification to add LBIST (including EDT) and OCC
and saves the changes.
Note
If you are using Tessent OCC, Tessent Scan automatically identifies and stitches the sub-
chains in the OCC into scan chains.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC
LogicBist {
ijtag_host_interface : Sib(lbist) ;
Controller(C0) {
ShiftCycles {
max : 100 ;
}
CaptureCycles {
max : 10 ;
}
PatternCount {
max : 16384;
}
Connections {
shift_clock_src : clk1;
}
}
NcpIndexDecoder {
Ncp(no_pulse) {
}
Ncp(pulse_clk1) {
cycle(0) : $occ;
}
Ncp(pulse_clk2) {
cycle(0) : $occ;
cycle(1) : $occ;
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC
Procedure
1. Specify the process_dft_specification command to insert EDT or LBIST, and OCC in
the second pass.
process_dft_specification
2. (Optional) If you want to generate the hardware, but not insert it into the design, specify
the following command:
process_dft_specification -no_insertion
You can then insert the hardware into the design manually.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Second DFT Insertion Pass: EDT, Hybrid TK/LBIST, and OCC
Procedure
1. Specify the extract_icl command to find all modules (both Tessent instruments and non-
Tessent instruments) and their associated ICL descriptions, and to run DRC to verify
their connectivity.
The top-level ICL description corresponds to the design name you specified with the
set_current_design command during the first insertion pass (which is also the same
design name you specified when you elaborated the design at the beginning of the
second insertion pass).
2. Specify the analyze_drc_violation command to debug the DRC violations.
Tessent generates I-rule errors when it detects ICL extraction errors and opens Tessent
Visualizer to a schematic view of the error. For more information about the DRC I-rule
errors, refer to “ICL Extraction Rules (I Rules)” in the Tessent Shell Reference Manual.
For details about using Tessent Visualizer, refer to “Tessent Visualizer” on page 835.
The extract_icl command also creates a Synopsys Design Compiler file that you can use
for synthesis. Refer to “Timing Constraints (SDC)” for more information.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Synthesis
Procedure
1. Generate the test patterns for the design:
create_patterns_specification
run_testbench_simulations
check_testbench_simulations -report_status
Performing Synthesis
Synthesize the original RTL and the DFT-inserted RTL for MemoryBIST, boundary scan, EDT
or LBIST, and OCC. For RTL designs, perform synthesis once after performing the first and
second DFT insertion passes.
Prerequisites
• For information regarding synthesis with third-party tools and Tessent DFT
methodologies, refer to “Synthesis Guidelines for RTL Designs with Tessent Inserted
DFT” on page 1017.
• Tessent Shell supports several third-party synthesis tools by generating Synopsys
Design Constraints (SDC) to convey timing constraint information. See “Timing
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Scan Chain Insertion (Flat Design)
Constraints (SDC)” for details. Find example scripts for the supported synthesis tools in
“Example Scripts using Tessent Tool-Generated SDC” on page 995.
Procedure
1. Specify the write_design_import_script command to create a design load script that
loads the RTL design as it exists after the two DFT insertion passes. The following is an
example command:
write_design_import_script for_synthesis.tcl -replace
Note
If you are not using a supported third-party synthesis tool, you can still use the
write_design_import_script command to create a script and adjust it to match the
command set of your synthesis tool.
2. Synthesize the hardware using the synthesis manager of the run_synthesis command to
run the third-party synthesis tool. The following is an example command:
run_synthesis -startup_file for_synthesis.tcl
Alternatively, you can generate the synthesis script without running synthesis by
specifying your local startup file. The following example targets dc_shell:
run_synthesis -startup_file ./.synopsys_dc.setup
Use the following command to generate a script for other third-party synthesis tools:
run_synthesis -startup_file for_synthesis.tcl -generate_script_only
For information about scan chain insertion using Tessent Shell, refer to the “Internal Scan and
Test Circuitry Insertion” in the Tessent Scan and ATPG User’s Manual.
Procedure
1. Specify the following command to set the DFT context:
set_context dft –scan -design_id gate
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Scan Chain Insertion (Flat Design)
When setting the context, ensure that you specify the design ID with a unique name. The
recommended name is gate for a flat design. For a gate-level netlist the recommended
name is gate3.
2. Load the synthesized netlist. For example:
../Synthesis/cpu_top_synthesized.vg
This netlist contains the gates for the original RTL design and the DFT-inserted
hardware.
3. Specify the same output directory you used in the first and second DFT passes:
../tsdb_rtl
4. Load the rtl2 design data for the DFT hardware that you inserted. For example:
cpu_top -design_id rtl2 -no_hdl
The -no_hdl switch specifies to read in all of the DFT data files—such as ICL, PDL, and
TCD—except for the design files. (You are using the synthesized design from this point
forward.)
After design elaboration and design rule checking, Tessent Shell transitions from Setup
mode to Analysis mode.
5. Specify the add_scan_mode edt_mode command to connect the scan chains to the EDT
signals and EDT hardware that you inserted during the second insertion pass.
The use of preregistered DFT signal edt_mode as the scan mode using the
add_scan_mode command infers the -enable_dft_signal also as the edt_mode DFT
signal.
Results
The scan stitched and inserted netlist is located in the TSDB under the design ID “gate” for RTL
designs or “gate3” for gate-level netlists. Refer to “Considerations for Using Gate-Level
Verilog Netlists” for details.
Examples
The following dofile shows a command flow for scan insertion and stitching:
check_design_rules
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing ATPG Pattern Generation
Related Topics
read_verilog
set_tsdb_output_directory
read_design
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing ATPG Pattern Generation
2. Specify the set_current_mode command to indicate the type of pattern you are
generating (see “Stuck-at ATPG patterns” on page 198 and “Transition at-speed ATPG
patterns” on page 198).
In addition, the name you give to the generated ATPG pattern sets must differ from the
mode name you specify for import_scan_mode (that is, “edt_mode”).
3. Specify the write_patterns command to write out the Verilog testbenches and STIL
patterns.
4. Specify the write_tsdb_data command to save the flat model, fault list, PatDB, and TCD
files into the TSDB.
For details about ATPG pattern generation, refer to “Running ATPG Patterns” in the
Tessent Scan and ATPG User’s Manual.
Examples
Stuck-at ATPG patterns
The following example generates stuck-at ATPG patterns as indicated by the set_current_mode
edt_stuck command. It shows that you have a choice between using the boundary scan chains
for capture during ATPG or using the primary pins of the chips (using the pads).
# To apply the patterns through the boundary scan chains and not through
# the pads use:
# set_static_dft_signal_values int_ltest_en 1
# set_static_dft_signal_value output_pad_disable 1
# To allow the shift_capture_clock during capture phase on Scan Tested
# Instruments:
set_system_mode analysis
create_patterns
write_tsdb_data –replace
write_patterns patterns/cpu_top_stuck_parallel.v -verilog -parallel \
-replace -scan
write_patterns patterns/cpu_top_stuck_serial.v -verilog -serial -replace
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Simulating LBIST Faults
set_static_dft_signal_values int_ltest_en 1
set_static_dft_signal_value output_pad_disable 1
set_system_mode analysis
set_fault_type transition
set_external_capture_options -pll_cycles 5 [lindex [get_timeplate_list] 0]
create_patterns
write_tsdb_data –replace
write_patterns patterns/cpu_top_transition_parallel.v -verilog \
-parallel -replace -scan
write_patterns patterns/cpu_top_transition_serial.v -verilog -serial \
-replace
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Simulating LBIST Faults
set_static_dft_signal_values tck_occ_en 1
set_static_dft_signal_values int_ltest_en 1
set_static_dft_signal_values ltest_en 1
set_static_dft_signal_values control_test_point_en 1
set_static_dft_signal_values observe_test_point_en 1
set_static_dft_signal_values x_bounding_en 1
report_static_dft_signal_settings
set_system_mode analysis
report_scan_cells> scan_cells_fsim.rpt
report_clocks
report_pin_constraints
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Considerations for Using Gate-Level Verilog Netlists
read_procfile tsdb_outdir/instruments/
top_dft2_lbist_ncp_index_decoder.instrument/
top_dft2_tessent_lbist_ncp_index_decoder.testproc
report_lbist_configuration -hardware_default_compatibility
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Considerations for Using Gate-Level Verilog Netlists
The following differences apply when using a gate-level Verilog netlist rather than RTL. Other
than these differences, plus performing synthesis after each DFT insertion pass, you can follow
the flow as described starting with “First DFT Insertion Pass: Performing MemoryBIST and
Boundary Scan.”
• Prerequisites — You must have the Tessent cell library or the ATPG library for the
standard cells, in addition to the Tessent cell library for the I/O pad cells.
• Design Loading — During the first and second DFT insertion passes, ensure the
following:
o Specify the set_context command with the -no_rtl option rather than the -rtl option.
o When setting the context, use the recommended naming conventions for the design
IDs, which are “gate1” for the boundary scan/MemoryBIST insertion pass and
“gate2” for the EDT/OCC insertion pass. If you are following this convention, you
would then use design ID “gate3” for scan insertion.
o Use the read_cell_library command to read in the library files for both the standard
cells and pad I/O macros that are instantiated in the design.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Tessent Shell Flow for Hierarchical Designs
Tip
Before performing DFT on a hierarchical design, familiarize yourself with “DFT
Architecture Guidelines for Hierarchical Designs” on page 103.
This section builds on what you learned in “Tessent Shell Flow for Flat Designs” to describe the
pre-layout RTL and scan DFT insertion process for hierarchical designs.
Refer to the following test case for a detailed usage example of the flow described in this
section:
tessent_example_hierarchical_flow_<software_version>.tgz
You can access this test case by navigating to the following directory:
<software_release_tree>/share/UsageExamples/
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Hierarchical DFT Terminology
• Physical Block — Physical blocks are logical entities that remain intact through
tapeout. They are synthesis and layout regions. Below the top level of a chip, these are
blocks that you can reuse, or instantiate, within a chip or across multiple chips. You
perform synthesis on these blocks independent of the rest of the chip design.
When performing DFT insertion on physical blocks, Tessent preserves the ports at the
root of the physical block. Instances of the physical block that exist below the current
physical block may not be preserved in the final layout when ungrouping is used.
In Tessent Shell, the hierarchical DFT insertion flow distinguishes between three types
of physical blocks: wrapped cores, unwrapped cores, and chip.
o Wrapped core. Wrapped cores contain wrapper cells that are used to isolate the
internal logic of the core. Wrapper cells are inserted when you perform scan chain
insertion. Wrapped cores are required to make the cores reusable through ATPG
pattern retargeting. Wrapped cores can contain sub-blocks. (See the following
description.)
o Unwrapped core. Unwrapped cores do not contain wrapper cells but can contain
sub-blocks.
For additional information, refer to “Unwrapped Cores Versus Wrapped Cores” in
the Tessent Scan and ATPG User’s Manual.
o Chip. The chip is the top-level physical block—that is, the entire design—in which
you typically find the pad I/O macros and clock controllers. A chip may include
another physical block or sub-block. Physical blocks can be wrapped cores or
unwrapped cores. Unlike the other types of physical blocks, chips are layout regions.
• Sub-Block — Sub-blocks are designs that exist within parent blocks and are
synthesized with their parent blocks, which could be wrapped cores, unwrapped cores,
or the top level of the chip. Sub-blocks merge into their parent physical blocks during
synthesis of the parent block. Refer to set_design_level for details.
Sub-blocks are not layout physical regions. After layout is performed on the post-layout
netlist, the sub-block module boundary may or may not be preserved. Sometimes the
same sub-block is instantiated at both the physical block level and the chip level, 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.
Tessent Shell Workflows
Hierarchical DFT Terminology
You can insert DFT hardware such as MemoryBIST, EDT, and OCC into sub-blocks,
but you perform synthesis and scan insertion at the sub-block’s parent physical block
level (where the sub-block is instantiated). To learn about how to use sub-blocks within
the Tessent Shell flow, refer to “RTL and Scan DFT Insertion Flow for Sub-Blocks.”
• Instrument Block — The design is a special empty module into which the DFT
elements are inserted. The special module is then manually instantiated into its parent
block and its pins are manually connected inside the parent block.
The synthesis, scan chain insertion, and pattern generation steps are done the usual way,
as described in “Instrument Block DFT Insertion Flow for the Next Parent Level” on
page 249.
• ATPG (or scan) pattern retargeting — The process by which Tessent Shell preserves
the ATPG patterns associated with wrapped cores for purposes of reuse when testing the
logic at the parent instantiation level. This means you do not have to regenerate the
patterns when you process the top level of the chip. Instead, you retarget the wrapped
core ATPG patterns to the top level. Every instantiation of a wrapped core includes its
associated ATPG patterns.
For details, refer to “Scan Pattern Retargeting” in the Tessent Scan and ATPG User’s
Manual.
For purposes of ATPG pattern retargeting and graybox modeling (see the following
description), Tessent Shell differentiates between a wrapped core’s internal circuitry and
its external circuitry.
o Internal mode. Internal mode is the view into the wrapped core from the wrapper
cells. That is, the logic completely internal to the core. Tessent Shell retargets
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
How the DFT Insertion Flow Applies to Hierarchical Designs
internal mode ATPG patterns during ATPG pattern generation for the chip-level
design.
o External mode. External mode indicates the view out of the wrapped core from the
wrapper cells. That is, the logic that connects the wrapped core to external logic.
Tessent Shell uses the external mode to build graybox models, which are used by the
internal modes of their parent physical blocks.
• Graybox — Graybox models are wrapped core models that preserve only the core’s
external mode logic along with the portion of the IJTAG network needed for test setup
of the logic test modes. The purpose of graybox models in the bottom-up hierarchical
DFT process is to retain the minimum logic required to generate ATPG patterns for the
internal modes of the parent physical blocks. For details, refer to “Graybox Overview”
in the Tessent Scan and ATPG User’s Manual and “Graybox Model” on page 108.
The following considerations apply when performing DFT insertion on a hierarchical design as
opposed to a flat design:
• When performing hierarchical DFT, you must specify the hierarchical design level at
which you are performing the DFT insertion process. For flat designs, the
set_design_level command is always set to chip. For hierarchical designs, you can also
specify physical_block or sub_block.
• Inserting boundary scan during the first DFT insertion pass typically applies to the chip
design level. For hierarchical designs, this means that for cores and sub-blocks you
insert only MemoryBIST during the first DFT insertion pass unless you have cores with
embedded pad I/O macros. If you have cores with embedded pad I/O macros, then you
need to insert boundary scan into the pad IOs using the embedded boundary scan flow as
described in the Tessent Boundary Scan User’s Manual.
• Within the hierarchical flow, each physical block and sub-block has a unique design
name and should have its own TSDB.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
How the DFT Insertion Flow Applies to Hierarchical Designs
Tip
To facilitate data management, save each design (whether core, sub-block, or chip)
in its own TSDB directory. This is the recommended practice when using Tessent
Shell for DFT insertion. Using different directories ensures that you can run all sibling
physical and sub-blocks in parallel without causing read-write errors into the TSDB
directories between the parallel runs. Only when all the child physical and sub-blocks of
a given block are completed can you then implement the DFT into the given block.
Refer to “TSDB Data Flow for the Tessent Shell Flow” for more information.
• You can perform ATPG pattern retargeting of core-level patterns when you process the
parent physical block of the wrapper cores, as shown in section “Top-Level ATPG
Pattern Generation Example.”
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
Note
This discussion assumes that your design consists of wrapped cores as your lower level
physical blocks, and that the wrapped cores do not contain embedded pad IOs, so boundary
scan is not required.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
Note
The line numbers used in this procedure refer to the command flow dofile in Example 6-2
on page 210.
Procedure
1. Load the RTL design data. (See lines 1-22.) The following steps are important for the
first DFT insertion pass for wrapped cores:
a. Set the set_context -design_id switch to “rtl1.”
All the data associated with MemoryBIST insertion for the wrapped core is stored
under the ID “rtl1” in the wrapped core’s TSDB.
Note
“rtl1” is the recommended naming convention for the design ID for the first
insertion pass, but you can specify any name. Refer to “Loading the Design” for
more information about setting the design ID.
b. Specify the read_verilog command with a list of the RTL filenames and locations for
Tessent to read and compile for the design. For example:
../rtl/omsp_timerA_defines.v
../rtl/omsp_timerA_undefines.v
../rtl/omsp_timerA.v
../rtl/omsp_wakeup_cell.v
../rtl/omsp_watchdog.v
../rtl/openMSP430_defines.v
../rtl/openMSP430_undefines.v
../rtl/openMSP430.v
../rtl/processor_core.v
c. Set the design level to “physical_block” so that the layout of this core is maintained
as an independent logical entity through tapeout.
2. Create the DFT specification. (See lines 24-30.)
3. Generate the MemoryBIST hardware and extract the ICL. (See lines 32-36.)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
4. Create the input test patterns and simulation testbenches. (See lines 38-41.)
5. Run simulations to verify the design. (See lines 43-47.)
Examples
The following dofile example shows a typical command flow as detailed in the procedure listed
in the preceding.
1 # Set context to dft and indicate DFT insertion into an rtl-level design
2
3 set_context dft -rtl -design_id rtl1
4
5 # Set the TSDB directory location to be used
6
7 set_tsdb_output_directory ../tsdb_core
8
9 # Read in the memory library model
10 set_design_sources -format tcd_memory -y ../../../library/memory \
11 -extension tcd_memory
12
13 # Read in memory Verilog model
14 set_design_sources -format verilog -v {../../../library/memory/*.v }
15
16 # Read in the design
17 read_verilog -f rtl_file_list
18
19 set_current_design processor_core
20
21 # Set the design level as a physical_block
22 set_design_level physical_block
23
24 # Specify to insert memory test
25 set_dft_specification_requirements -memory_test on
26 add_clocks 0 dco_clk -period 3
27 check_design_rules
28 report_memory_instances
29 set spec [create_dft_specification]
30 report_config_data $spec
31
32 # Generate the memoryBIST hardware
33 process_dft_specification
34
35 # Create ICL for this design
36 extract_icl
37
38 # Generate testbenches
39 create_patterns_specification
40 process_patterns_specification
41 set_simulation_library_sources -v \
42 ../../../library/standard_cells/verilog/NangateOpenCellLibrary.v
43
44 # Run simulations
45 run_testbench_simulations
46
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
If your physical design implementation does not support using a clock MUX in the clock path,
then you can use an OCC of type child. With the child type OCC, only clock chopping and
clock gating functions occur inside the wrapped core, and these functions are sufficient for
ATPG pattern retargeting (later in the flow) as long as at the chip-level you have included a
parent OCC or other hardware that can perform clock selection.
Clock selection is used to select between shift and capture clocks when generating ATPG
patterns for the internal mode of the core. Typically, scan chain shifting occurs at a significantly
slower speed than the capture clock, hence the need for the clock.
Most of the steps for the second DFT insertion pass for wrapped cores are the same as those you
would perform for a flat design. Refer to the applicable sections.
Note
The line numbers used in this procedure refer to the command flow dofile in Example 6-3.
Procedure
1. Load the design (lines 1-10). See “Loading the Design” on page 183.
2. Specify and verify the DFT requirements (lines 12-31). See “Specifying and Verifying
the DFT Requirements” on page 185
Note
Wrapped cores have their own DFT requirements for the clock signals.
3. Create the DFT specification (lines 33-37). See “Creating the DFT Specification” on
page 188.
4. Generate the EDT and OCC hardware (lines 39-77). See “Generating the EDT, Hybrid
TK/LBIST, and OCC Hardware” on page 192.
5. Extract the ICL module description (lines 79-83). See “Extracting the ICL Module
Description” on page 192.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
6. Generate ICL patterns and run the simulation (lines 85-94). See “Generating ICL
Patterns and Running Simulation” on page 193.
Examples
The following dofile example shows that you set the design ID to “rtl2” for the second DFT
insertion pass, set the internal mode and external mode for the wrapped core, and have chosen to
specify an OCC of type child.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
44 ijtag_host_interface : Sib(occ);
45 }
46 }
47 # The following is a generic way to populate the OCC
48 # The clock list is design specific and needs to be updated for the design
49 # To the OCC - scan_enable and shift_capture_clock gets connected
50 # automatically
51 # Modify the following to your design requirements
52 set id_clk_list [list \
53 dco_clk dco_clk \
54 ]
55
56 foreach {id clk} $id_clk_list {
57 set occ [add_config_element OCC/Controller($id) -in $spec]
58 set_config_value clock_intercept_node -in $occ $clk
59 }
60 report_config_data $spec
61
62 ## To EDT controller, the edt_clock and edt_update get auto connected
63 ## The EDT controller is built-in with bypass
64 ## Modify the following to your design requirements
65 read_config_data -in $spec -from_string {
66 EDT {
67 ijtag_host_interface : Sib(edt);
68 Controller (c1) {
69 longest_chain_range : 200, 300;
70 scan_chain_count : 60;
71 input_channel_count : 3;
72 output_channel_count : 2;
73 }
74 }
75 }
76 report_config_data $spec
77 //display_spec
78 # Generate the hardware
79 process_dft_specification
80
81 # Extract the IJTAG network and create ICL file for core level
82 extract_icl
83
84 # Write updated RTL into this new file to elaborate and synthesize later
85 write_design_import_script for_dc_synthesis.tcl -replace
86
87 # Generate testbench
88 create_patterns_specification
89 process_patterns_specification
90
91 set_simulation_library_sources -v \
92 ../../../library/standard_cells/verilog/NangateOpenCellLibrary.v
93
94 # Run Verilog simulation
95 run_testbench_simulations
96 # If simulation fails, use the command below to see which pattern failed
97 //check_testbench_simulations
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
98
99 exit
Procedure
1. Specify the following command to set DFT requirements:
set_dft_specification_requirements -logic_test on
Note
The design level as specified by set_design_level remains “physical_block” from the
first DFT insertion pass, so you do not need to specify this command again.
2. Use the following procedure to define the DFT signals for wrapped cores in the second
DFT insertion pass:
a. Specify a global DFT signal to enter logic test mode. For example:
add_dft_signals ltest_en -create_with_tdr
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
c. Specify the following command to test with multiple load ATPG patterns in
MemoryBIST:
add_dft_signals memory_bypass_en -create_with_tdr
d. Specify the following command to test an STI network during logic test.
add_dft_signals tck_occ_en -create_with_tdr
e. Specify both the internal mode and the external mode for hierarchical DFT. This is
required for scan insertion.
add_dft_signals int_ltest_en ext_ltest_en int_mode ext_mode
This command specifies that wrapped cores have both internal modes and external
modes, and that you must specify both. Differentiating between internal mode and
external mode enables Tessent to stitch the scan chains into internal chains and
external chains as described in “Performing Scan Chain Insertion: Wrapped Core.”
The internal and external modes are also required for proper ATPG pattern
retargeting and graybox modeling later in the insertion flow. Refer to “Hierarchical
DFT Terminology” for more information.
3. After defining the DFT signals, run DRC as in the flat design flow.
If the design includes clock gating that is implemented in RTL and not with an
integrated clock gating cell, you must specify their func_en and test_en ports using the
add_dft_clock_enables command. Tessent checks for proper clock and asynchronous set
and reset controllability.
Results
Tessent Shell generates DFT_C errors for DRCs that are run. For details, refer to “Pre-DFT
Clock Rules (DFT_C Rules)” 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.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
Examples
To define the DFT signals, the following example shows the required DFT signals for wrapped
cores in the second DFT insertion pass:
Both shared wrapper cells and dedicated wrapper cells can coexist in the same wrapper chains,
which helps Tessent maintain wrapper chains of similar length. Scan insertion uses the DFT
signals int_ltest_en and ext_ltest_en along with the scan enable signal to control the wrapper
cell.
For information about scan chain insertion using Tessent Shell, refer to the “Internal Scan and
Test Circuitry Insertion” 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 Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
Note
The line numbers used in this procedure refer to the command flow dofile in Example 6-4
on page 218.
Prerequisites
• Prior to scan chain insertion, perform synthesis as described in section “Performing
Synthesis.”
Procedure
1. Specify the following command to set the DFT context:
set_context dft -scan -design_id gate
3. Specify the same output directory you used in the first and second DFT passes:
set_tsdb_output_directory ../tsdb_core
4. Load the rtl2 design data for the DFT hardware you previously inserted. For example:
read_design processor_core -design_id rtl2 -no_hdl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
The entire population of scan cells are stitched into the first scan mode using the
int_mode command to generate a scan mode consisting of all the scan cells stitched
together.
b. Create a second scan mode only for the shared and dedicated wrapper cells.
In the second DFT insertion pass, you had generated a DFT signal named
“int_mode” with the add_dft_signal command. This signal enables this scan mode.
You do not need to specify the add_scan_mode -enable_dft_signal switch when the
mode name matches the name of a DFT signal of type scan mode.
The add_scan_mode ext_mode command stitches the shared and dedicated wrapper
cells together, similar to the DFT signal you generated named ext_mode. ext_mode
enables the scan mode for shared and dedicated wrapper cells.
Examples
The following dofile shows a command flow for scan insertion. The highlighted statements
illustrate additional considerations for performing scan insertion for wrapper cores. For a
general overview, refer to “Performing Scan Chain Insertion (Flat Design)” for a flat design.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
During scan chain stitching with Tessent Scan, the tool automatically updates the ICL model
when complex ports generate loops, which causes ports and instances names to change through
synthesis. When using a third-party scan insertion tool, additional ICL module matching rules
may be required to complete the ICL-based verification step.
The following procedure and example dofile show how to verify the ICL model for SSN.
Procedure
1. Set the context to patterns to create ICL-based patterns.
2. Set the location of the tsdb_outdir directory and load the cell libraries.
3. Read the third-party scan-inserted netlist.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
4. Load the collateral from the last DFT insertion step before scan insertion without
reading the netlist.
5. Create and write the ICL-based pattern sets. This includes ICLNetwork verify patterns
and MemoryBIST patterns, if memories are present.
6. Define the path to the Verilog simulation libraries, simulate the patterns, and check the
simulation results.
Examples
This example dofile shows how to verify the ICL model for SSN.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
As described in “Hierarchical DFT Terminology,” the graybox model excludes the internal
mode logic of the wrapped core, preserving only the external mode logic that needs to be tested
at the parent level. The IJTAG infrastructure is preserved in the graybox model also.
Specifically, Tessent preserves the external logic that is present between the primary input and
the input wrapper cells, plus any logic between the output wrapper cells and primary output.
The parent could be another wrapper core or the top level of the chip.
You can use external mode patterns, if generated, for calculating fault coverage for the entire
core (both internal and external mode). Use the internal mode ATPG patterns for ATPG pattern
retargeting when performing the RTL and scan DFT insertion process on the top level of the
chip.
Procedure
1. Generate graybox models (see Example 6-5 on page 223 for a command flow example):
a. Load in the design using the same design ID as you used for scan insertion to write
the graybox to the TSDB.
(Recommended) Use “gate” as the design ID if you inserted the MemoryBIST and
EDT logic at the RTL level and “gate3” if the logic was also inserted into the gate
level.
b. Specify the analyze_graybox command to generate graybox models.
When working at the parent level, using the same design ID for the graybox model
as you used for scan insertion enables Tessent to access the full design view or the
graybox model with the same design ID.
2. Run ATPG on the external mode of the wrapped core. This ATPG pattern is only used
to calculate the entire core's fault coverage and cannot be reused from the chip-level. To
generate ATPG patterns for external mode, do the following:
a. Read in the graybox model of the design with the read_design command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
Use the set_current_mode command to specify a unique ATPG mode name that
represents the purpose of the pattern. The mode type is external.
b. Use the import_scan_mode command to retrieve the core’s external mode data.
Tessent uses the graybox model of the core. Using the import_scan_mode command
assumes that you used Tessent Scan to perform scan chain stitching.
c. Run design rule checking (DRC) using the following command:
check_design_rules
e. Use the write_tsdb_data command to store the TCD, flat model, fault list and PatDB
files in the TSDB.
f. Use the write_patterns command to write out the testbench required to simulate the
generated ATPG patterns.
See Example 6-6 on page 223.
3. Run ATPG on the internal mode of the wrapped core. This results in the ATPG pattern
that you retarget at the top level of the chip. To generate ATPG patterns for internal
mode, do the following:
a. Load in the graybox views for the wrapper cores that contain child wrapper cores.
b. If you used Tessent Scan for scan insertion, specify import_scan_mode to import the
internal mode.
c. Specify a unique ATPG mode name with the set_current_mode command.
The current mode type is internal. Typical mode names are scan_mode_name_sa or
scan_mode_name_tdf.
d. Run design rule checking (DRC) using the following command:
check_design_rules
f. Store the TCD, flat model, fault list and PatDB files in the TSDB using the
write_tsdb_data command.
g. Use the read_faults command to merge the fault list from running external mode to
find the total overall fault coverage of the wrapped core.
See Example 6-7 on page 224.
4. Run Verilog simulation of the core-level ATPG patterns.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
Performing this task ensures that the patterns function as needed when they are
retargeted at the parent level. For parallel load patterns as specified by the -parallel
command, simulate all the patterns. For serial load patterns, a handful of patterns are
sufficient; the run time for simulating gate-level serial load patterns is significant.
Examples
Generate the Graybox Model
The following example creates a graybox model for a scan-inserted processor_core design and
saves the data under the “gate” design ID.
report_dft_signals
import_scan_mode ext_mode
check_design_rules
analyze_graybox
write_design -tsdb -graybox -verbose
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
# Specify a different name that what was used during scan insertion with
# the add_scan_mode command
set_current_mode edt_multi_SAF -type external
report_dft_signals
# Store TCD, flat_model, fault list, and PatDB files in the TSDB
write_tsdb_data -replace
write_patterns patterns/processor_core_ext_stuck_parallel.v -verilog \
-parallel -replace
set_pattern_filtering -sample_per_type 2
write_patterns patterns/processor_core_ext_stuck_serial.v \
-verilog -serial -replace
exit
# Use add_scan_mode to specify a different name than what was used during
# scan insertion
# Specify import_scan_mode before set_current_mode because
# import_scan_mode overrides the test mode type specified by
# set_current_mode
set_current_mode int_mode_sa -type internal
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
report_dft_signals
report_core_instances
report_static_dft_signal_settings
# Run DRC
check_design_rules
report_clocks
report_core_instances
add_fault -all
report_statistics -detail
# Store TCD, flat_model, fault list, and PatDB files in the TSDB
write_tsdb_data -replace
write_patterns patterns/processor_core_stuck_parallel.v -verilog \
-parallel -replace
set_pattern_filtering -sample_per_type 2
write_patterns patterns/processor_core_stuck_serial.v \
-verilog -serial -replace
exit
# To view the coverage of the faults testable by internal mode, you must
# eliminate the undetected faults, which would be detected in
# external mode. Do this by merging in the fault list generated from
# performing ATPG on the graybox in external mode
read_faults -mode ext_multi_SAF –fault_type stuck -merge
# Final coverage of the core that includes internal and external modes
report_statistics -detail
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Physical Blocks
create_patterns_specification
process_patterns_specification
set_simulation_library_sources \
-v ../../../library/standard_cells/verilog/NangateOpenCellLibrary.v \
-v ../../../library/memories/SYNC_1RW_8Kx16.v.v
run_testbench_simulation
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
RTL and Scan DFT Insertion Flow for the Top Chip
After performing the RTL and scan DFT insertion flow for each wrapped core in your design,
you can perform the DFT insertion process for the top-level chip design.
Before implementing DFT at the top level of the chip, plan how you should test the wrapped
cores at the chip level. The planning for logic testing the wrapped cores is not automated, so you
must decide how you want to allocate the resources and organize the test schedule (especially
for ATPG pattern retargeting) and specify your intent by using the add_dft_modal_connections
command.
The RTL and scan DFT insertion flow for the top level of a chip follows the same basic process
you used for the cores, with the addition of a step for retargeting the ATPG patterns you
generated for the wrapped cores.
In addition, processing at the chip level differs from wrapped cores in that you must insert a
Test Access Mechanism (TAM). A TAM is a mechanism that you use to carry the scan data in
and out of the chip for each group of wrapped cores you intend to run in parallel. The TAM
schedules the tests for the wrapped cores at the top level, and enables access to the chip level so
that you can run these tests.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
During insertion and pattern generation, you open the TSDBs that store the wrapped core design
data and read in the designs for their graybox models. The DFT insertion flow for the top level
of the chip requires differentiating between three design views of the wrapped cores.
• Full netlist view — All the logic for the core. This is the default view when you do not
explicitly specify a design view with the read_design command.
• Graybox model — External mode logic for the core as described in “Hierarchical DFT
Terminology,” including its IJTAG interface. You use this view so that Tessent Shell
can connect the wrapped cores at the top level for logic testing of the chip.
• Interface view — The core’s ports only. Tessent auto-loads the interface view of any
sub-physical block for which you have not used read_design to load its view.
Top-Level DFT Insertion Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
First DFT Insertion Pass: Performing Top-Level MemoryBIST and Boundary Scan . 230
Second DFT Insertion Pass: Inserting Top-Level EDT and OCC . . . . . . . . . . . . . . . . . 233
Top-Level Scan Chain Insertion Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Top-Level ATPG Pattern Generation Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Performing Top-Level ATPG Pattern Retargeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
After performing the RTL and scan DFT insertion process for the wrapped cores, each of the
cores has an EDT controller and a child OCC. The processor core has the memories with
MemoryBIST already inserted.
Figure 6-19. Top-Level Example, After DFT Insertion for Wrapped Cores
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
After inserting DFT at the top level, the design includes a TAP controller along with boundary
scan, a top-level EDT controller, a parent OCC, and a TAM for purposes of retargeting the
wrapped cores (not shown in Figure 6-20 on page 230).
In this top-level example test case, the hierarchical core starts with RTL insertion, and in
addition, at the top level you want to perform DFT at RTL as well. However, there is no RTL
logic at the top level that needs to be synthesized. The PLL and pad IOs are Verilog macros. The
only RTL that needs to be synthesized is the Tessent-generated RTL. Hence, this test case uses
design IDs “gate1” and “gate2” for the first two DFT insertion passes, respectively.
Figure 6-20. Top-Level Example, After DFT Insertion at the Top Level
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
For information about TAP controller reuse, refer to “create_dft_specification” in the Tessent
Shell Reference Manual.
Prerequisites
• Refer to “First DFT Insertion Pass: Performing MemoryBIST and Boundary Scan” (for
flat designs) for general information and prerequisites. For example, as with flat designs,
you can segment the boundary scan chain into smaller chains that are used during logic
testing with Tessent TestKompress by using the max_segment_length_for_logictest
command.
Procedure
1. Load the design.
Note
Use the open_tsdb command to open the TSDBs for all the lower-level cores.
Opening their TSDBs makes their design data available.
There is no need to specify the read_design command because, by default, Tessent reads
in the interface views of the wrapped cores, which is all that is required for DRC for the
first DFT insertion pass.
2. Set the design level to “chip” for the top level of the chip.
When working with the wrapped cores, you had set the design level to “physical_block.”
3. Create the DFT specification.
4. Specify enough auxiliary input and output ports for the largest retargeting wrapper core
group.
5. Generate the hardware and extract the ICL.
6. Create the input test patterns and simulation testbenches.
7. Run simulations to verify the design.
Examples
The following dofile example shows a typical command flow for inserting MemoryBIST and
boundary scan. The flow is the same as you would use for a flat design with the exception of the
commands highlighted in bold. The chip-level design data exists in its own TSDB. This is
recommended for the data flow as described in “TSDB Data Flow for the Tessent Shell Flow.”
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
report_config_data $spec
process_dft_specification
extract_icl
create_patterns_specification
process_patterns_specification
set_simulation_library_sources \
-v ../../library/standard_cells/verilog/*.v \
-v ../../library/pad_cells/verilog/*.v \
-y ../../library/plls \
-y ../../library/memories \
-extension v
run_testbench_simulations
exit
Procedure
1. Specify the open_tsdb command to open the TSDBs for the wrapped cores, as in the first
DFT insertion pass for the chip.
2. Specify the read_design command to read in the graybox models of the wrapped cores.
This enables Tessent to perform DRC on the wrapper chains in addition to the rest of the
top-level logic to be tested.
3. Define a retargeting mode for each group of wrapped cores whose ATPG patterns you
want to retarget to run in parallel.
For ATPG pattern retargeting purposes, Tessent requires you to include retargeting
mode DFT signals in addition to the DFT signals defined in section “DFT Signals”. The
retargeting<X>_mode signals along with the TAM specified with the
add_dft_modal_connections command ensure that ATPG pattern retargeting occurs
correctly. Optionally, you can register your own DFT signals to be used for retargeting
purposes.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
# Needed for Scan Tested Instruments such as MemoryBIST and boundary scan
add_dft_signals tck_occ_en -create_with_tdr
# Connect wrapped core EDT channel I/Os to top level for retargeting1_mode
signal
add_dft_modal_connections -ports GPIO1_2 -input_data_destination_nodes
PROCESSOR_1/processor_core_rtl2_controller_c1_edt_channels_in[0] \
-enable_dft_signal retargeting1_mode
add_dft_modal_connections -ports GPIO2_2 -output_data_source_nodes
PROCESSOR_1/processor_core_rtl2_controller_c1_edt_channels_out[0] \
-enable_dft_signal retargeting1_mode
# Connect wrapped core EDT channel I/Os to top level for retargeting2_mode
signal
add_dft_modal_connections -ports GPIO1_2 -input_data_destination_nodes
GPS_1/gps_baseband_rtl1_controller_c1_edt_channels_in[0] \
-enable_dft_signal retargeting2_mode
add_dft_modal_connections -ports GPIO1_2 -input_data_destination_nodes
GPS_2/gps_baseband_rtl1_controller_c1_edt_channels_in[0] \
-enable_dft_signal retargeting2_mode
...
add_dft_modal_connections -ports GPIO1_0 -output_data_source_nodes GPS_1/
gps_baseband_rtl1_controller_c1_edt_channels_out[0] \
-enable_dft_signal retargeting2_mode -pipeline_stages 1
add_dft_modal_connections -ports GPIO1_1 -output_data_source_nodes GPS_1/
gps_baseband_rtl1_controller_c1_edt_channels_out[1] \
-enable_dft_signal retargeting2_mode -pipeline_stages 1
...
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
report_dft_modal_connections
set_dft_specification_requirements -logic_test On
add_clocks INCLK -period 10ns
check_design_rules
report_dft_control_points
set_config_value port_pin_name \
-in $spec/EDT/Controller(c1)/Connections/EdtChannelsIn(1) \
[get_single_name [get_auxiliary_pins GPIO1_0 -direction input]]
set_config_value port_pin_name \
-in $spec/EDT/Controller(c1)/Connections/EdtChannelsOut(1)
[get_single_name [get_auxiliary_pins GPIO2_0 -direction output] ]
report_config_data $spec
process_dft_specification
extract_icl
# By setting this value, all the lower level instruments in the wrapped
# cores are simulated
set_defaults_value /PatternsSpecification/SignoffOptions/
simulate_instruments_in_lower_physical_instances on
create_patterns_specification
process_patterns_specification
set_simulation_library_sources \
-v ../../library/standard_cells/verilog/*.v \
-v ../../library/pad_cells/verilog/*.v \
-y ../../library/plls \
-y ../../library/memories \
-extension v
...
run_testbench_simulations
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
Logic that is present at the top-level needs to be scan stitched along with the wrapper chains
(external mode) of the cores.
Refer to “Performing Scan Chain Insertion (Flat Design)” (for flat designs) for more
information about scan chain insertion. The following dofile example shows that Tessent Shell
needs to access the graybox models for each wrapped core.
check_design_rules
report_clocks
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
The following dofile example generates ATPG patterns at the top level using the stuck-at fault
model. The dofile shows that you can read in the stuck-at fault models for the wrapped cores to
calculate the total fault coverage for the chip.
import_scan_mode edt_mode
report_core_instances
set_static_dft_signal_values tck_occ_en 1
report_static_dft_signal_settings
set_system_mode analysis
add_fault –all
report_statistics -detail
create_patterns
report_statistics -detail
write_tsdb_data -replace
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
# Total fault coverage for stuck-at patterns at the chip level including
# the cores
read_faults -module processor_core –mode edt_int_stuck \
–fault_type stuck –merge -graybox
read_faults –module gps_baseband –module edt_int_stuck \
–fault_type stuck –merge -graybox
report_statistics –detail
exit
Procedure
1. Specify the set_context patterns -retargeting command to retarget the ATPG patterns
generated for the wrapped cores.
2. Use the same TSDB for ATPG retargeting as you used for ATPG pattern generation.
3. Set the current mode to a unique mode name that, ideally, indicates the core name, the
fault type, and the retargeting mode DFT signal you had previously defined.
4. Specify which wrapped core ATPG patterns you are retargeting by enabling the correct
retargeting mode DFT signal. Set the set_static_dft_signal_values command to the
retargeting mode for this wrapped core.
5. Apply the add_core_instances command to specify the wrapped core whose internal
ATPG patterns you want to retarget.
6. Apply the read_patterns command to read in the stuck-at ATPG patterns that you want
to retarget.
Examples
The following dofile example shows how you would retarget the stuck-at ATPG patterns for the
wrapped core, processor_core.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
set_current_design chip_top
report_core_descriptions
report_clocks
set_system_mode analysis
write_tsdb_data -replace
The following dofile snippet shows how you would retarget at-speed transition ATPG patterns
for the wrapped core, gps_baseband. Commands that are not shown are the same as the
commands for processor core in Example 6-11 on page 240.
Example 6-12. Retarget At-Speed Transition ATPG Patterns for the Top-Level
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for the Top Chip
set_system_mode analysis
write_tsdb_data -replace
# Read the patterns to be retargeted
read_patterns -module gps_baseband -mode edt_int_transition \
-fault_type transition
set_external_capture_options -pll_cycles 5 [lindex [get_timeplate_list] 0]
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Sub-Blocks
You may want to use the sub-block flow for any of the following reasons.
• Multiple instantiations — You only need to perform the DFT insertion flow once for a
sub-block. Thereafter, every instantiation of the sub-block includes the inserted DFT
hardware.
• Small size — Most sub-blocks are not big enough to be considered their own physical
regions.
• Readiness — Sometimes the sub-block RTL is complete before the RTL for the
physical layout region, thus you can begin DFT insertion on the sub-block as soon as
RTL is ready.
DFT Insertion Flow for the Sub-Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
DFT Insertion Flow for the Next Parent Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Note
The sub-block flow for inserting MemoryBIST and pre-DFT DRCs follows the same steps
as described in “RTL and Scan DFT Insertion Flow for Physical Blocks,” with the exception
of generating the EDT and OCC hardware. There are slight variations, which are described in
the following procedure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Sub-Blocks
Procedure
1. First DFT Insertion Pass: Performing MemoryBIST and Boundary Scan. Ensure that
you set the design level to “sub_block” rather than “physical_block”.
set_design_level sub_block
2. Second DFT insertion pass: insert pre-DFT DRCs. Follow the steps for the “Second
DFT Insertion Pass: Inserting Block-Level EDT and OCC” procedure, excluding
generating the EDT and OCC hardware.
Because you specified that you were working at the sub_block level in the first DFT
insertion pass, you do not need to re-specify this information for the second insertion
pass.
After specifying and verifying the DFT requirements, Tessent Shell performs the
following tasks automatically:
• At the sub-block level, any static DFT signals you have added are implemented as
IJTAG ports rather than inserted via TDRs. Tessent Shell automatically connects the
IJTAG ports to the TDR at the next parent level.
• At the next parent level, adds DFT signals such as ltest_en and
async_set_reset_static_disable. Tessent Shell infers the add_dft_control_point
command on the sub-block pins if you have DFT DRCs that need to be fixed.
• At the next parent level, adds the tck_occ_en DFT signal if there is a STI-SIB
network inside the sub-block.
The following command performs pre-DFT DRC:
set_dft_specification_requirements -logic_test on
During ICL extraction, Tessent Shell generates the Synopsys Design Constraints (SDC)
for the sub-block.
Results
Proceed to performing the DFT insertion flow on the next parent level where this sub-block is
instantiated.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Sub-Blocks
Prerequisites
• You have performed the DFT insertion flow as described in “DFT Insertion Flow for the
Sub-Block” for the sub-blocks instantiated at this parent level so that you have the
design after a clean pre-DFT DRC run.
Note
This flow occurs after the DFT insertion process described in “RTL and Scan DFT Insertion
Flow for the Top Chip”. When you have a sub-block inserted inside a wrapped core, you
complete the procedures described in “RTL and Scan DFT Insertion Flow for Physical Blocks”
on page 208 after you load the sub-block design.
Procedure
1. First DFT Insertion Pass: Performing Top-Level MemoryBIST and Boundary Scan.
When you load the design, open the sub-block’s TSDB and load the design of the sub-
block that passed pre-DFT DRCs.
2. Second DFT Insertion Pass: Inserting Top-Level EDT and OCC. When you load the
design, open the sub-block’s TSDB, load the full design for the sub-block, and load the
design for the top-level after the first DFT insertion pass.
3. Synthesis. Synthesis of the chip-level RTL and the sub-block’s post-DFT inserted RTL
occur at the same time. Tessent Shell merges the sub-block into the parent-level logic.
Refer to “Timing Constraints (SDC)” to learn how the synthesis constraints from the
sub-block are merged at the next parent level.
4. Scan Chain Insertion. Tessent Shell performs scan chain insertion on the sub-block and
parent-level logic at the same time.
5. ATPG Pattern Generation.
Examples
Design Loading for the First DFT Insertion Pass
The following example shows opening the TSDB for the sub-block and using read_design to
read in the sub-block (processor_core) design.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Sub-Blocks
# Follow the rest of the flow for the first DFT insertion pass for a chip.
# Set the location of the TSDB. Default is the current working directory.
set_tsdb_output_directory ../tsdb_top
set_current_design chip_top
# Follow the rest of the flow for the second DFT insertion pass for a chip
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Instrument Blocks
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Instrument Blocks
The following RTL shows an example module definition required for the instrument
block flow:
module elt1_dft_box (
input clk,
output clk_occ,
input ijtag_tck,
input ijtag_reset,
input ijtag_ce,
input ijtag_se,
input ijtag_ue,
input ijtag_sel,
input ijtag_si,
output ijtag_so,
input [1:0] edt_channels_in,
output edt_channels_out,
input scan_en,
input test_clock,
input edt_update,
output async_set_reset_dynamic_disable
);
2. Perform the DFT insertion flow within the DFT module as normal, but you must add
DFT control points to output ports corresponding to DFT signals.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Instrument Blocks
read_verilog design/rtl/elt1_dft_box.v
set_current_design elt1_dft_box
set_design_level instrument_block
set_dft_specification_requirements -logic_test on
add_dft_signals ltest_en int_mode int_ltest_en ext_mode ext_ltest_en
add_dft_signals scan_en test_clock edt_update \
-source_node {scan_en test_clock edt_update}
add_dft_signals edt_clock shift_capture_clock \
-create_from_other_signals
add_dft_signals x_bounding_en mcp_bounding_en \
observe_test_point_en control_test_point_en -create_with_tdr
add_dft_signals async_set_reset_static_disable
add_dft_signals async_set_reset_dynamic_disable \
-create_from_other_signals
add_dft_signals capture_per_cycle_static_en –create_with_tdr
check_design_rules
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Instrument Blocks
static_clock_control : external;
Controller(clk_controller) {
clock_intercept_node : clk;
}
} // }}}
}
process_dft_specification
set_system_mode setup
extract_icl
write_design_import_script -replace -use_relative_path_to [pwd]
Results
Proceed to performing the DFT insertion flow on the next parent level where this instrument
block is instantiated.
Tip
Remember to manually connect in the parent module all the connections for the
IJTAG network and all dynamic DFT signals.
2. At the next level, read your design normally, and then load the DFT module using the
read_design command. Specify your clocks and run the check_design_rules command
to validate and store them. Then, call the extract_icl command.
At that point, it is as if you had inserted the DFT elements from this level using the
normal flow. After ICL is extracted, you can go to the DFT context and verify that the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and Scan DFT Insertion Flow for Instrument Blocks
RTL has a controllable clock and reset signals. DRC violation errors indicate if the RTL
is not clean, which you must fix manually.
read_design elt1_dft_box -design_id dft
read_verilog design/rtl/elt1.v
set_current_design elt1
set_design_level physical_block
add_clocks CLK1 -period [expr {1000.0/300.0}]
check_design_rules
extract_icl
report_dft_signals
write_design_import_script -replace -use_relative_path_to [pwd]
# Generate patterns
set spec [create_pattern_specification]
process_pattern_specification
# Run Simulation
set_simulation_library_sources -v \
../../../library/standard_cells/verilog/NangateOpenCellLibrary.v
run_testbench_simulations
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Note
If your design consists of wrapped cores as your lower level physical blocks, and the
wrapped cores do not contain embedded pad IOs, refer to “How to Use Boundary Scan in a
Wrapped Core” on page 702.
Caution
Third-party tools may have different insertion capabilities compared to Tessent Scan. This
may affect the quality of the results you achieve.
Prerequisites
Before starting this flow, you should identify the DFT functions you need to insert in each core
and identify how many scan chains and wrapper cells are needed for each core.
Note
Tessent Scan automatically concatenates scan chain and wrapper chains into mixed chains
to achieve the number of scan channels on the EDT logic.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
The tool generates a CTL file that includes information about embedded scan segments for the
following applications:
• A CTL file to describe the embedded chain to help in connecting the programmable
registers inside the following IP:
o OCC
o STI SIB or Sib(STI)
• A CTL file to describe the controller chain mode (CCM) scan segment, when the tool
generates test IP with enabled segment_per_instrument property. This applies to the
following IP:
o LogicBIST controller
o EDT controller (available only when used as part of hybrid TK/LBIST IP)
o Single Chain Mode Logic controller (part of hybrid TK/LBIST IP)
o InSystemTest (MissionMode) controller
For information about CCM, see “Controller Chain Mode” in the Hybrid TK/LBIST User’s
Manual. For information about CTL files, see “Default Generation of CTL Files” 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.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Note
This discussion assumes your design consists of wrapped cores as your lower level physical
blocks, and the wrapped cores do not contain embedded pad IOs.
Figure 6-21. Two-Pass Insertion Flow for RTL, Wrapped Cores, and Third-Party
Scan
Perform Two-Pass DFT Insertion and Synthesis for Wrapped Cores . . . . . . . . . . . . . . 254
Third-Party Scan Insertion for Wrapped Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Writing the Design Back to the TSDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Make Pre-ATPG Connections with Third-Party Scan for Wrapped Cores . . . . . . . . . 262
Performing Wrapped Core Graybox Generation and ATPG Pattern Generation. . . . 264
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
2. Second DFT Insertion Pass: Inserting Block-Level EDT and OCC. Ensure you set the
design level to “physical_block”.
a. During the second insertion pass and when specifying the DFT signals, follow the
procedure defined in “Specifying and Verifying the DFT Requirements: DFT
Signals for Wrapped Cores” on page 214.
The following are the internal and external modes that are required for mode
switching:
add_dft_signals int_ltest_en ext_ltest_en int_mode ext_mode \
-create_with_tdr
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
The test case implements compressed ATPG test using Tessent TestKompress. You
define the EDT logic for Tessent TestKompress and the Tessent OCC in an EDT
DftSpecification wrapper as follows:
read_config_data -in $spec -from_string "
OCC {
ijtag_host_interface : Sib(occ);
type : standard;
}
EDT {
ijtag_host_interface : Sib(edt);
Controller (c1) {
longest_chain_range : 50, 65;
scan_chain_count : 80;
input_channel_count : 2;
output_channel_count : 1;
Connections {
EdtChannelsIn(2:1) {
port_pin_name : edt_channel_in[1:0];
}
EdtChannelsOut(1:1) {
port_pin_name : edt_channel_out[0:0];
}
}
}
}"
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
For hierarchical ATPG, you must insert multiplexers before each wrapper chain to multiplex the
primary input from the top level and the current level of the EDT scan input. Figure 6-22 shows
an abstract level depiction of the multiplexing logic. The inclusion of these multiplexers is
mandatory for hierarchical ATPG support using Tessent tools.
Figure 6-22. DFT Signals and Multiplexer Logic Support Hierarchical ATPG
To the child cores, the preregistered static DFT signals ext_mode and int_mode control these
multiplexers as follows:
• External Mode — The ext_mode DFT signal is active, and the int_mode DFT signal is
inactive. The top level drives input into the wrapper chains through the wrapper’s scan
in on the core boundary.
• Internal Mode — The ext_mode DFT signal is inactive and the int_mode DFT signal is
active. The EDT logic drives all the scan chains inside the hierarchical physical block
(both internal only and wrapper chains).
When using this configuration, you must control the corresponding TDR bits for mode
switching. See “Performing Wrapped Core Graybox Generation and ATPG Pattern Generation”
on page 264 for a detailed explanation.
Usage Guidelines
Use the following guidelines and criterion for configuring your third-party scan insertion tool
for wrapper and scan stitching:
• For the hierarchical physical block on which you intend to perform scan insertion, you
have completed the “Perform Two-Pass DFT Insertion and Synthesis for Wrapped
Cores” on page 254 flow.
• You have identified the scan chains of the current core and how many of the scan chains
should be wrapper chains. The total number of scan chains is the same as the EDT
scan_chain_count, as defined in the previous DFT insertion step. The rest of the scan
chains can be specified and used as core chains.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
• During wrapper analysis, you must exclude the following pins from any wrapper
insertion:
o IJTAG-related pins
o edt_channel_input pins
o edt_channel_output pins
o scan_enable pins
o Any clock pins
• The DFT signals for input and output wrapper scan enable that you have defined during
the second DFT insertion pass should be used as scan enable signals for input and output
wrapper chains, respectively, during wrapper analysis and insertion.
• To run ATPG after scan insertion, you must create and supply a test procedure file for
the Graybox generation step to trace and control the wrapper chains. A test procedure
file tells the tool how to clock the scan chains, and the tool automatically passes this to
ATPG in the Tessent Shell flow. A graybox does not normally include an OCC and EDT
logic for tracing and controlling wrapper chains; consequently, you must create the test
procedure file manually when using the third-party scan insertion flow.
See “Test Procedure File” on page 741 for complete details on how you create and use a
test procedure file. See also “Example Test Procedure File” on page 260.
• The Tessent Shell environment get_dft_info_dictionary command offers you a method
to access the Tessent Database (TSDB) to use this information with your third-party
scan insertion tool.
The command reads the scan information from the TSDB’s dft_inserted_designs
directory, specifically in a Tcl dictionary file named:
<design_name>.dft_info_dictionary
The Tcl dictionary contains the information about the DFT inserted in the design that
must be considered during scan insertion when using a third-party scan insertion tool.
See “Example dft_info_dictionary File” on page 261.
All instances under "non_scannable_instance_list" should be regarded as non-scan. All
modules under "modules_with_chains" should be considered as sub-chains and should
not be modified during scan insertion.
• The Tessent Shell environment provides a mechanism for generating an example Tcl
script you can customize for your third-party scan insertion tool. Perform the following
steps:
a. In Tessent Shell, run the following commands in the dft or pattern context:
set_tsdb_output_directory ../tsdb_outdir
read_design <design_name>
puts [ get_dft_info_dictionary -example_usage_script ] > ./usage_template.tcl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
The tool creates an example usage script as shown in the following excerpt:
…
puts "Declare the Non-Scannable instances"
b. Use the script as a starting point to convert the dictionary into specific commands for
your third-party scan insertion tool. In the script, the tool inserts pound signs (#) with
comments that specify the actions your third-party tool must perform. You must
replace those comments with the corresponding third-party tool-specific commands
to the file.
c. In the third-party scan insertion tool, source the Tessent dictionary from
../tsdb_outdir/dft_inserted_designs/
design_name_last_DFT_insertion_design_id.dft_inserted_design/
design_name.dft_info_dictionary.
An example path and filename is ../tsdb_outdir/dft_inserted_designs/
gps_baseband_rtl_edt.dft_inserted_design/gps_baseband.dft_info_dictionary.
d. In the third-party scan insertion tool, source the example usage script you modified
in previous steps.
• For the hierarchical transition fault model, you may need to insert one additional at-
speed cell at the beginning of each wrapper chain to make the transition on the first cell
of each wrapper chain. This way, you achieve the best coverage. The method you use
depends on the third-party insertion tool. Figure 6-23 shows the logic.
Figure 6-23. At-Speed Flows in the Wrapper Chain
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
• If required and after you have inserted the scan using your third-party tool, you can
follow the procedure described in “Make Pre-ATPG Connections with Third-Party Scan
for Wrapped Cores” on page 262 if required.
• If no pre-ATPG connections are required, then you can load the scan-inserted netlist into
Tessent Shell and write the modified netlist and scan information back to the Tessent
Shell Database (TSDB).
Procedure
1. Set the context (see lines 1-3).
2. Set the TSDB location if not already set (see line 6).
3. Load the cell library (see line 9).
4. Load the scan-inserted netlist (see line 12). This netlist is modified by your third-party
scan insertion tool and contains the scan cells.
5. Load the supporting DFT files (except the netlist) from the last DFT insertion pass and
set the current design (see lines 15-17).
6. Set the design level. Make sure you specify “physical_block” (see line 21).
7. Write the design information to the TSDB and create the softlink (see line 22).
Examples
Example dofile
1 # Use the design_id as "scan." Use this in all the ATPG
2 # runs that this design is read in.
3 set_context patterns -ijtag -design_id <scan>
4
5 # Set the location of the TSDB. Default is the current working directory
6 set_tsdb_output_directory ../tsdb_outdir
7
8 # Read the Tessent Cell Library
9 read_cell_library \
10 ../../library/standard_cells/tessent/NangateOpenCellLibrary.tcelllib
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
11
12 # Read the scan inserted netlist and elaborate the design
13 read_verilog ../3.synthesize_rtl/<current_core>_scan.vg
14
15 # Read the -no_hdl from the last DFT insertion pass
16 read_design <current_core> -design_id <rtl2> -no_hdl -verbose
17 read_verilog ../../../library/memories/SYNC_1RW_8Kx16.v
18 set_current_design <current_core>
19
20 # Specify the design level before writing out a softlink of the design in
21 # TSDB
22 set_design_level physical_block
23 write_design -tsdb -softlink_netlist -verbose
24 exit
procedure load_unload =
scan_group grp1 ;
timeplate gen_tp1 ;
// cycle 0 starts at time 0
cycle =
force clock1 0;
force clock2 0;
force scan_enable 1 ;
end ;
apply shift 76;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
1. It creates connections from the current level EDT logic to the wrapped child cores'
wrapper chains for the paths depicted in red in Figure 6-24.
Figure 6-24. Current Level Path to Child Core Wrapper Chains
The external mode logic and chains of child cores become part of the current test
coverage.
2. It also creates logic from the current level wrapper chain to the upper-level logic,
marked in green in Figure 6-24. Logic added at this stage includes the muxes controlled
by dft_signals, ports at the module boundary, and connections between those ports and
the EDT logic. This enables the external mode testing of the wrapped child core from
the upper level.
Note
The line numbers used in this procedure refer to the command flow dofile in “Example
Dofile for Pre-ATPG Connections for Wrapped Cores” on page 263.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Prerequisites
• You must have performed the two-pass DFT insertion as described in “Perform Two-
Pass DFT Insertion and Synthesis for Wrapped Cores” on page 254.
• You must have inserted scan using your third-party scan insertion tool per the guidelines
provided in “Third-Party Scan Insertion for Wrapped Cores” on page 255.
Procedure
1. Load the design. (See lines 1-8.)
2. Change to insertion mode. (See line 10.)
3. Make the red connections shown in Figure 6-24 on page 262. (See lines 13-27.)
4. Make the ports, logic, and connections shown in green in Figure 6-24. (See lines 29-44.)
5. Save the design. (See line 46.)
6. Write the design back to the TSDB. (See lines 47-72.)
Examples
Example Dofile for Pre-ATPG Connections for Wrapped Cores
1 set_context dft -no_rtl
2
3 read_verilog ../3.synthesis/<current_design_name>_scan.vg
4
5 # Read the tessent cell library
6 read_cell_library \
7 ../../library/standard_cells/tessent/NangateOpenCellLibrary.tcelllib
8
9 set_current_design <current_design_name>
10
11 set_system_mode insertion
12
13
14 # Make the connections marked in red in the preceding figure (see Step 1)
15
16 # empty pins of edt logic were grounded, need to delete before connection
17 delete_connection <current_edt_instance>/edt_scan_out[]
18
19
20 delete_connection <current_edt_instance>/edt_scan_in[]
21
22
23 # connect edt scan-in/scan-out to ext_wsi/ext_wso of every chain
24 create_connection /<child_core_instance>/ext_wsi[] \
25 <current_edt_instance>/edt_scan_in[]
26
27 create_connection /<child_core_instance>/ext_wso[] \
28 <current_edt_instance>/edt_scan_out[]
29
30 # Make the ports, logic, and connection marked in green in the preceding
figure (see Step 2)
31 delete_connection <current_edt_instance>/edt_scan_in[]
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Prerequisites
• You must have completed the “Performing Wrapped Core Graybox Generation and
ATPG Pattern Generation” on page 264 step for each wrapped core.
• You must have inserted scan with your third-party scan insertion tool per the guidelines
cited in “Third-Party Scan Insertion for Wrapped Cores” on page 255 for each wrapped
core, and written the scan-inserted netlist back into the Tessent Shell Database as
described in “Writing the Design Back to the TSDB” on page 259.
• If required, make ATPG connections using the process outlined in “Make Pre-ATPG
Connections with Third-Party Scan for Wrapped Cores” on page 262 for each wrapped
core.
Procedure
1. Generate the graybox model for the wrapped core and add a scan group of wrapper
chains by importing the test procedure file you created during Third-Party Scan
Insertion for Wrapped Cores—see “Example Graybox Generation” on page 266 and
“Performing ATPG Pattern Generation: Wrapped Core” on page 220.
To generate external patterns to check fault coverage for the wrapped core, refer to
“Example External ATPG Pattern Generation” on page 267. You do not retarget these
patterns.
As long as the scan mode (scan chains and test logic) is stitched conforming to DRC,
Tessent Shell generates internal ATPG patterns formed in the correct way.
2. Save the design and write the patterns to the TSDB using the write_tsdb_data command.
write_tsdb_data -replace
3. Repeat Steps 1 and 2 for each wrapped core to generate transition patterns.
All of the information is passed by the Tessent Shell through the TSDB.
Results
When you complete graybox and ATPG for each wrapped core, perform scan insertion for the
top chip. See “Top Chip DFT Insertion with Third-Party Scan” on page 268 for complete flow
details.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Examples
Example Graybox Generation
set_context pattern -scan -design_id <scan>
set_tsdb_output_directory ../tsdb_outdir
# Read the tessent cell library
read_cell_library \
../../../library/standard_cells/tessent/NangateOpenCellLibrary.tcelllib
read_design <current_design_name> -design_id <scan>
set_current_design <current_design_name>
# set memory modules black box
add_black_box -module SYNC_1RW_32x16_RC_BISR
add_black_box -module SYNC_1RW_32x4
add_clock 0 clock1
# Graybox generation requires core configured to external mode by
# setting DFT signal values:
set_static_dft_signal_values int_mode 0
set_static_dft_signal_values ext_mode 1
set_static_dft_signal_values int_ltest_en 0
set_static_dft_signal_values ext_ltest_en 1
# exclude edt_channels for graybox
set_attribute_value [get_ports *edt_channel*] \
-name ignore_for_graybox -value true
# import wrapper chain information by importing testproc file of
# wrapper chains
add_scan_group grp1 ../4.scan_insertion/wrapper.testproc
# add every wrapper chain from input pin to output pin
add_scan_chains chain1 grp1 ext_wsi[0] ext_wso[0]
add_scan_chains chain2 grp1 ext_wsi[1] ext_wso[1]
add_scan_chains chain3 grp1 ext_wsi[2] ext_wso[2]
set_system_mode analysis
# external mode information saved in tsdb
write_design -graybox -tsdb -verbose
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Figure 6-25. Two-Pass Insertion Flow for RTL, Top Level, and Third-Party Scan
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Prerequisites
• Before you perform the top level steps, all the child cores must be ready with their
retargetable patterns. A spec form for the top level logic is also recommended to define
the number of scan chains and what DFT instruments need to be inserted.
• You must have completed the Perform Two-Pass DFT Insertion and Synthesis for
Wrapped Cores step for each wrapped core.
• You must have completed the Third-Party Scan Insertion for Wrapped Cores step for
reach wrapped core.
• If required, you must have completed the Make Pre-ATPG Connections with Third-
Party Scan for Wrapped Cores step for each wrapped core.
• You must have completed the Performing Wrapped Core Graybox Generation and
ATPG Pattern Generation for each wrapped core.
Procedure
1. Set the design level to “chip” for the top level of the chip and insert DFT for
MemoryBIST and Boundary Scan. Refer to “First DFT Insertion Pass: Performing
MemoryBIST and Boundary Scan” on page 178.
2. Insert top-level EDT and OCC. Refer to “Second DFT Insertion Pass: EDT, Hybrid TK/
LBIST, and OCC” on page 182.
Note
You must correctly define the scan_chain_count of the EDT, to include all scan
chain counts of child cores in addition to the top-level scan chain count.
Usage Guidelines
• Top level logic does not require wrapper chains as all primary inputs and primary
outputs are controllable.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
After issuing these commands, the tool creates an example usage script. Use this script
as a starting example to convert the dictionary into the specific commands used by your
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
third-party scan insertion tool. In the file, the tool inserts pound signs (#) with comments
that specify which actions your third-party tool must perform. For example:
puts "Processing DFT signals"
set dft_signals_dict [dict get $tessent_dft_info_dict dft_signals]
puts "Setting up Static Dft Signals"
foreach dft_signal [dict keys $dft_signals_dict] {
if {[dict exists $dft_signals_dict \
$dft_signal forced_value_in_pre_scan_drc]} {
set connection_node_name \
[dict get $dft_signals_dict $dft_signal connection_node_name]
set connection_node_type \
[dict get $dft_signals_dict $dft_signal connection_node_type]
set forced_value_in_pre_scan_drc \
[dict get $dft_signals_dict $dft_signal \
forced_value_in_pre_scan_drc]
puts "--- Static Dft Signal $dft_signal ---"
if {$connection_node_type eq "pin"} {
### Command to cut and force created pseudo port
add_primary_input [get_pins [list $connection_node_name]] \
-internal
add_input_constraints \
[get_pins [list $connection_node_name]] \
-c${forced_value_in_pre_scan_drc}
} else {
### Command tp force port
add_input_constraints \
[get_ports [list $connection_node_name]] \
-c${forced_value_in_pre_scan_drc}
}
}
}
...
• If required and after you have inserted the scan using your third-party tool, you can
proceed to “Make Pre-ATPG Connections with Third-Party Scan for Top Chip” on
page 271.
• When you have completed scan insertion, the next step is to “Perform Top-Chip ATPG
Pattern Generation and Wrapped-Core Pattern Retargeting” on page 273.
The most important logic to support hierarchical ATPG is the connection from the top level
EDT scan in ports to the primary inputs that you created for each wrapper chain to cover
external faults to all child cores.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Note
The line numbers used in this procedure refer to the command flow dofile in “Example
Dofile for Pre-ATPG Connections for Top Chip” on page 273.
Prerequisites
• You must have performed the two-pass DFT insertion as described in “Perform Two-
Pass Insertion and Synthesis for Top Chip” on page 268.
• You must have inserted scan using your third-party scan insertion tool per the guidelines
provided in “Third-Party Scan Insertion for Top Chip” on page 269.
Procedure
1. Load the design. (See lines 1-10).
2. Change to insertion mode. (See line 13).
3. Make the connections. (See lines 15-34).
4. Save the design. (See line 37).
5. Write the design back to the TSDB. (See lines 39-41).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Examples
Example Dofile for Pre-ATPG Connections for Top Chip
1 # load the design
2 set_context dft -no_rtl
3 set_tsdb_output_directory ../tsdb_outdir
4 open_tsdb \ ../../cores_will_be_wrapped/<child_core_name>/tsdb_outdir
5 # Read the tessent cell library
6 read_cell_library \
7 ../../library/standard_cells/tessent/NangateOpenCellLibrary.tcelllib
8 read_design <top_level_name> -design_id <rtl2> -no_hdl
9 read_verilog ../<synthesis_path>/<top_level_name>.vg
10 read_design <child_core_name> -design_id <scan> -view graybox
11 set_current_design <top_level_name>
12
13 # make the ATPG connections:
14 set_system_mode insertion
15
16 # disconnect empty scan out from ground
17 delete_connection /chip_top_rtl2_tessent_edt_c1_inst/edt_scan_out[20]
18 delete_connection /chip_top_rtl2_tessent_edt_c1_inst/edt_scan_out[21]
19 delete_connection /chip_top_rtl2_tessent_edt_c1_inst/edt_scan_out[22]
20 delete_connection /chip_top_rtl2_tessent_edt_c1_inst/edt_scan_out[23]
21 …
22 # connect top level EDT scan in to child core primary input of wrapper
23 # chain
24 create_connection /chip_top_rtl2_tessent_edt_c1_inst/edt_scan_in[20]
25 /<child_core_instance_1>/ext_wsi[0]
26 create_connection /chip_top_rtl2_tessent_edt_c1_inst/edt_scan_in[21]
27 /<child_core_instance_1>/ext_wsi[1]
28 …
29 # connect top level EDT scan out to child core primary output of wrapper
30 # chain
31 create_connection /chip_top_rtl2_tessent_edt_c1_inst/edt_scan_out[20]
32 /<child_core_instance_1>/ext_wso[0]
33 create_connection /chip_top_rtl2_tessent_edt_c1_inst/edt_scan_out[21]
34 /<child_core_instance_1>/ext_wso[1]
35 # repeat for all ext_wsi/wso of all child core instances
36
37 # save design after insertion
38 write_design -output_file <top_level_name>_scan.vg -replace
39
40 # Specify the design level before writing out a softlink of the design
41 set_design_level physical_block
42 write_design -tsdb -softlink_netlist -verbose
43 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Prerequisites
• You must have completed the “Perform Two-Pass Insertion and Synthesis for Top
Chip” on page 268 step for the top chip.
• You must have inserted scan with your third-party scan insertion tool per the guidelines
cited in “Third-Party Scan Insertion for Top Chip” on page 269 for the top chip and
written the scan-inserted netlist back into the Tessent Shell Database.
• If required, make ATPG connections using the process outlined in “Make Pre-ATPG
Connections with Third-Party Scan for Top Chip” on page 271 for the top chip.
Procedure
1. Retarget the internal ATPG patterns for each wrapped core. Refer to “Performing Top-
Level ATPG Pattern Retargeting” on page 239.
See “Top Level ATPG Pattern Generation Example” on page 275 for details on top-
level ATPG. Verification of these patterns is a must to ensure that the circuit functions.
See “Pattern Retargeting of Each Child Core Example” on page 276 for details on the
retargeting of patterns for each child core.
Depending on tester channel availability on how many cores can be run in parallel, the
internal mode ATPG patterns from each of the lower-level cores can be retargeted to the
chip-level top.
2. Save the design and write the patterns to the TSDB using the write_tsdb_data command.
write_tsdb_data -replace
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
Examples
Top Level ATPG Pattern Generation Example
# Import design:
set_context pattern -scan -design_id <scan>
set_tsdb_output_directory ../tsdb_outdir
# Configure top level DFT signal values to edt_mode and all wrapped child
# core instances to external mode:
set_static_dft_signal_values edt_mode 1
set_static_dft_signal_values ltest_en 1
set_static_dft_signal_values tck_occ_en 1
set_static_dft_signal_values int_ltest_en 1
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
RTL and DFT Insertion Flow With Third-Party Scan
# Read in the internal mode core description file of current child core
# by add_core_instance:
# -mode should match the mode while generating internal mode patterns
add_core_instances -instance <current_core_instance_name> \
-core <current_core_name> -mode edt_int_stuck
# Configure top level DFT signal values to retargeting_mode for this exact
# child core:
set_current_mode retarget1_<current_child_core_name>_stuck
# configure top level to retargeting mode for current child core
set_static_dft_signal_values retargeting1_mode 1
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Tessent Shell Flow for Tiled Designs
Note
Because test planning uses a top-down approach, knowledge of the layout placement of
tiles, including the DFT ports, is required. Use “set_dft_specification_requirements
-design_type tile” for all DFT insertions. This prevents any modification to tile boundaries, as
the tool does not edit the layout.
The functional clock tree is localized within each tile and controlled by dedicated On-Chip
Clock Controllers (OCCs).
A tile-based design affects different aspects of DFT insertion, and the Tessent Shell flow
provides the following capabilities:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Tiling DFT Terminology
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
How The DFT Insertion Flow Applies to Tiled Designs
The example schematic, shown in Figure 6-27, used to demonstrate this flow contains three
unique tiles — C1, C2, and C3. C1 and C2 are mirrored on both sides of C3. Most of the I/O
pads are located in the central C3 tile. For each tile, you perform the insertion process in a
bottom-up manner, but there is no insertion of a standard boundary scan at the chip level.
Because the tiling topology affects the insertion process of instruments, it differs from the
hierarchical approach. The tiles must include DFT ports before the DFT insertion process. Refer
to “Chip Level Port Requirements and Connections” on page 287 for more information.
When pads exist in a tile, like the C1 tiles in Figure 6-28 on page 280, the tiles need segments of
embedded boundary scan to be inserted. However, tiles without pads may also require internal
boundary scan cells. These cells act as pipeline stages and provide access to the neighboring
tiles equipped with scan segments, like the C2 modules in Figure 6-28 on page 280.
Pads are wrapped with dedicated modules, in the C3 tile where TAP is located. Along with the
shared and dedicated functional scan wrapper cells in each tile, the boundary scan cells are also
used during logic test to provide scan isolation for the tile. The wrapper cell analysis does not
include BIDI (inout) ports. Therefore, the boundary scan logic acts as dedicated wrapper cells
for these ports and provides scan isolation. For more information on how tiles with TAP and
without TAP are handled, refer to “Embedded Boundary Scan Insertion in Tiles With a TAP
Controller” on page 313 and “Embedded Boundary Scan Insertion in Tiles Without a TAP
Controller” on page 295 respectively.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
How The DFT Insertion Flow Applies to Tiled Designs
Access to the inner tile IJTAG network in tiles without a TAP controller is through their Tile
Client (TC) Segment Insertion Bit (SIB), the Scan Tested Instrument (STI), and Scan Resource
Instrument (SRI) SIBs located below the TC SIB. The TC SIB is not needed in the C3 tile
because the TAP is present. If Secondary Host Scan Interfaces to connect neighboring tiles are
present, a Tile Host Collector (THC) SIB is also added. The THC SIB provides access to the
dedicated Tile Host (TH) SIBs for Secondary Host Scan Interfaces — th_left and th_right SIBs
in the C3 module, or r1 and r2 SIBs in C2 tiles.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
How The DFT Insertion Flow Applies to Tiled Designs
Similar to the case of embedded boundary scan insertion, the BISR chain may be required in
tiles without repairable memories because it acts as a pipeline stage to provide access to
neighboring tiles. The C2 tiles in Figure 6-30 on page 282 have BISR chain logic from the blue
domain to provide access to neighboring C1 tiles with repairable memories in the same power
domain.
The Tessent tool cannot deduce this requirement when performing bottom-up insertion.
Therefore, you must specify it using the “set_dft_specification_requirements -memory_test on
-memory_bisr_host_list {<hosts_list>}” command. You must be aware of the physical layout
of the BISR network before the DFT process begins.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
How The DFT Insertion Flow Applies to Tiled Designs
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Clocking During Logic Test
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Clocking During Logic Test
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Clocking During Logic Test
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Clocking During Logic Test
The clock in the C1_i1 tile is always a delayed version of the clock in C2_i1 because it is
sourced from a leaf of the C2 clock tree. With this assumption, you extend the propagation
window in the forward path by the value of the TCK clock delay. Figure 6-35 on page 286
shows a simplified waveform of the forward propagation. The TCK clock delay reduces the
time window for the returning path. The retiming element of the IJTAG node connected to the
scan-out port is removed, making it a posedge-to-posedge propagation and extending the time
window in this case.
Figure 6-36 on page 286 shows a simplified waveform for this propagation. The gray arrow
depicts the propagation if the retiming stage is present and the path is not relaxed.
The relaxation of return path data propagation is applied to all the Tessent instruments that need
communication between the tiles (IJTAG network, memory BISR chains, and boundary scan
chains).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Pre-DFT Design Modification and Integration
To prevent any modification of the current module boundary during insertion, use the
“set_dft_specification_requirements -design_type tile” command. The
“allow_port_creation_on_current_design” property is set to off by default in every processed
DftSpecification if the design type is set to “tile”.
This means that the tool assumes all DFT ports required by Tessent instruments to already exist
in each tile before inserting their DFT in a bottom-up fashion. If this is not the case, set the
“allow_port_creation_on_current_design” property to on in the DftSpecification before
specification processing.
You must add the dedicated SSN ports, that is, SSN input and output bus ports, and the SSN bus
clock port.
If the required ports and connections are not present, use the TopModuleConnections
specification to insert DFT ports in tiles and to connect them at the chip level.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Pre-DFT Design Modification and Integration
Tip
We recommend that you use the Tessent insertion mode and the TopModuleConnections
specification to integrate DFT logic in tiles if the automation you used to create and connect
the functional ports did not include the DFT ports.
The following example shows a Tessent script using the TopModuleConnections specification
to integrate a tiling design and the syntax of the TopModuleConnections wrapper.
read_config_data \
top.top_level_ports_and_connections
process_top_module_connections
Start the TopModuleConnections specification from a definition of modules that are used in the
integration. Use the ChildBlock wrapper to describe the module and the ports to be used, or to
create them if not available. The Instance wrapper below ChildBlock is used to define the input
sources for newly created input ports on each instance of the ChildBlock module.
TopModuleConnections(<design_name>) {
ChildBlock(<design_name>) {
file_name : <full_path_name> ;
input_ports : <port_name>, ... ;
output_ports : <port_name>, ... ;
Instance(<instance_name>) {
input_port_sources :
<port_pin_name>, ... ;
}
}
}
Note
The order of sources in the Instance wrapper must correspond to the order of input ports in
the ChildBlock wrapper.
Note
You also require preexisting ports for embedded boundary scan and memory BISR. Contact
your Siemens representative to refer to the example test case.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Pre-DFT Design Modification and Integration
• ijtag_tck
• ijtag_reset
• ijtag_ce
• ijtag_se
• ijtag_ue
• ijtag_sel
• ijtag_si
IJTAG client output ports:
• ijtag_so
IJTAG secondary interface input ports:
• <interface_name>_ijtag_from_so
IJTAG secondary interface output ports:
• <interface_name>_ijtag_to_tck
• <interface_name>_ijtag_to_reset
• <interface_name>_ijtag_to_ce
• <interface_name>_ijtag_to_se
• <interface_name>_ijtag_to_ue
• <interface_name>_ijtag_to_sel
• <interface_name>_ijtag_to_si
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Pre-DFT Design Modification and Integration
The following code example shows the part of the ChildBlock wrapper that describes IJTAG
ports and their connections on instance C2_i1:
ChildBlock(c2) {
file_name : ../../design/c2/c2.v;
input_ports : …
#Blue in figure
ijtag_tck,
ijtag_reset,
ijtag_ce,
ijtag_se,
ijtag_ue,
ijtag_sel,
ijtag_si,
#Red in figure
r1_ijtag_from_so,
#Orange in figure
r2_ijtag_from_so,
…
output_ports : …
#Blue in figure
ijtag_so,
#Red in figure
r1_ijtag_to_tck,
r1_ijtag_to_reset,
r1_ijtag_to_ce,
r1_ijtag_to_se,
r1_ijtag_to_ue,
r1_ijtag_to_sel,
r1_ijtag_to_si,
#Orange in figure
r2_ijtag_to_tck,
r2_ijtag_to_reset,
r2_ijtag_to_ce,
r2_ijtag_to_se,
r2_ijtag_to_ue,
r2_ijtag_to_sel,
r2_ijtag_to_si,
…
Instance(c2_i1) {
input_port_sources : …
#Blue in figure
c3_i1/left_ijtag_to_tck,
c3_i1/left_ijtag_to_reset,
c3_i1/left_ijtag_to_ce,
c3_i1/left_ijtag_to_se,
c3_i1/left_ijtag_to_ue,
c3_i1/left_ijtag_to_sel,
c3_i1/left_ijtag_to_si,
#Red in figure
c1_i1/ijtag_so,
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Creation of IJTAG Graybox
#Orange in figure
c1_i2/ijtag_so,
…
}
Instance(c2_i2) {
…
}
}
The following figure shows the schematic of the IJTAG network in the C2 tile and input
connections of C2_i1:
Figure 6-37. Schematic of IJTAG Network in C2 Tile and IJTAG Ports Created
on C2_i1 Instance With Their Input Connections
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Example Flow for a Tiled Design
In integrated package simulations, sometimes you cannot directly access a tile under test and
may need to access it through other tiles. In such cases, you must read in the full view of the
targeted tile and the IJTAG graybox views of all the other tiles.
Note
We recommend you use IJTAG graybox views whenever possible.
Running the extract_icl command generates the IJTAG graybox by default. The IJTAG graybox
generation can also be turned off, as demonstrated in this code example:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Tiling Flow Used in Example
This design has the TAP, the Memory BISR controller, and the SSN bus access pads in the
C3_i1 tile. The presence of these instruments affects the DFT flow for the C3 tile. This causes
the DFT flow for the C3 tile to differ from the other tiles. All DFT ports are pre-created on each
tile and pre-connected in the chip module (“Pre-DFT Design Modification and Integration” on
page 287). Example 1 in process_top_module_connections shows how you can automate this
within the tool.
You do not need to insert TAP in the same tile as the Memory BISR controller or SSN bus
access pads as shown in the example (Figure 6-38 on page 292). If the controllers and pads are
in different tiles, modify the DFT flow for those tiles accordingly.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Tiling Flow Used in Example
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
Note
For embedded boundary scan, IJTAG, MemoryBIST and MemoryBISR insertion, set the
design_type property to “tile” using the “set_dft_specification_requirements -design_type
tile” command.
In the following figure, the C2 modules require boundary scan logic to connect segments in
instances of the C1 module. You can insert the auxiliary pad logic for SSN during Embedded
Boundary Scan insertion.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
To enable test logic support for embedded boundary scan segments, you must set the
EmbeddedBoundaryScan/max_segment_length_for_logictest property to “unlimited”, or to an
integer value that corresponds to the required length of the embedded boundary scan segments
used during scan chain stitching. You need the pipeline stage on the output of the embedded
boundary scan segment to relax the timing loop on the return path. This is described in “Timing
of Tile-To-Tile Connections” on page 285.
The following code presents the DftSpecification for Embedded Boundary Scan for the C1 tile
with pads:
DftSpecification(c1,rtl1) {
allow_port_creation_on_current_design : off;
EmbeddedBoundaryScan {
pad_io_ports : clk_ref, rx_data_in, …;
max_segment_length_for_logictest : 200;
Interface {
scan_out_pipeline : on;
}
BoundaryScanCellOptions {
clk_ref : clock;
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
The following schematic displays the logic inside the C1 tile with pads:
For more details on how the HostBscanInterface wrapper assembles the boundary scan chain in
C1, refer to Example 1 in HostBScanInterface in the Tessent Shell Reference Manual.
The following example shows the DftSpecification for a tile with one client interface and two
host interfaces to connect neighboring tiles. For more details on how the HostBscanInterface
wrapper assembles the boundary scan chain in C2, refer to Example 1 in HostBScanInterface 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.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
DftSpecification (c2,rtl1) {
EmbeddedBoundaryScan {
# 1 in figure
HostBscanInterface(client){
# 2 in figure
EBScanPipeline(client_out) {
so_retiming : off;
}
# 3 in figure is input pipeline
EBScanPipeling(from_r1) {
}
# 4 in figure is a host interface
SecondaryEBScanInterface(r1) {
}
# 5 in figure is input pipeline
EBScanPipeline(to_r1) {
}
# 6 in figure is output pipeline
EBScanPipeline(from_r2) {
}
# 7 in figure is a host interface
SecondaryEBScanInterface(r2) {
}
# 8 in figure is output pipeline
EBScanPipeline(to_r2) {
}
}
}
}
The client interface in the resulting schematic (Figure 6-42 on page 299), requires a pipeline on
the scan output port (client interface marked “1”, output pipeline marked “2”). The host
interfaces require input and output pipelining.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
In this example (“Example Flow for a Tiled Design” on page 292), after Embedded Boundary
Scan you insert the memory BIST that requires an IJTAG connection. Figure 6-43 on page 300
presents the IJTAG network after insertion of Memory BIST. To build the IJTAG network,
refer to Example 3 in IJTAG Network 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.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
The logic test support (EDT, OCC, and SSN) is inserted in the next insertion pass. In the tiling
flow, new elements of the IJTAG network are connected below TC SIB, by default. The
following figure depicts this:
Figure 6-44. Schematic of IJTAG Network After Memory BIST and Logic Test
insertion in Tile
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
Sometimes, the IJTAG network requires additional scan interfaces to host neighboring tiles,
such as the C2 tile. In such cases, a dedicated SIB hosts each secondary host scan interface. All
SIBs that host secondary host scan interfaces are collected and hosted by a dedicated Tile Host
Collector (THC) SIB. The THC SIB is placed in series with the TC SIB as shown in Figure 6-45
on page 302. Use the create_dft_specification command to provide names of additional scan
interfaces.
The following code sample presents an example DftSpecification with two additional IJTAG
host scan interfaces:
IjtagNetwork {
#Blue in figure
HostScanInterface(ijtag) {
Sib(tc) {
Attributes {
tessent_dft_function : tile_client_sib;
}
to_scan_in_feedthrough : pipeline;
so_retiming : off;
Sib(sti) {
…
}
}
Sib(thc){
Attributes {
tessent_dft_function : tile_host_collector;
}
#Red in figure
Sib(th_r2) {
to_scan_in_feedthrough : pipeline;
SecondaryHostScanInterface(r2) {
}
}
#Orange in figure
Sib(th_r1) {
to_scan_in_feedthrough : pipeline;
SecondaryHostScanInterface(r1) {
}
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
See “Schematic of MemoryBISR Inside the C2 Tile” on page 304 for an example BISR network
in the C2 tile. There is one repairable RAM in the C2 tile. In this example, you require access to
the neighboring tiles that are connected to the left of the C2 tile. The neighboring tiles operate in
different power domains, so you need two BISR chains and two client interfaces:
• The first client interface, marked “1”, accesses the BISR segment of RAM in the tile.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
• The second client interface, marked “2”, accesses BISR segments in two neighboring
tiles that work in a different power domain, pdgB.
• The third and fourth interfaces, marked “3” and “4”, are host interfaces for neighboring
tiles in the power domain pdgB. You can create these interfaces using the
set_dft_specification_requirements command with the “-memory_bisr_host_list”
switch.
Place a pipeline element, without the retiming stage, at the end of each of the two BISR chains
(the return path) to provide a full clock period in the loop timing interface (see “Timing of Tile-
To-Tile Connections” on page 285).
For more details on how memory BISR chains are inserted into a tile-based design, refer to
Example 3 in MemoryBisr/Secondary Host Chain Interface in the Tessent Shell Reference
Manual. The following code generates and displays the DftSpecification used to insert the
MemoryBISR logic:
set_dft_specification_requirements -memory_test on \
-design_type tile \
-memory_bisr_host_list {pdgB {pdgB_r1 pdgB_r2}}
create_dft_specification -tile_ijtag_host_list {r1 r2}
report_config_data DftSpecification(c2,rtl2)/MemoryBisr
MemoryBisr {
bisr_segment_order_file : c2.bisr_segment_order;
BisrElement("SegmentEnd(*)") {
Pipeline(after) {
so_retiming : off;
}
}
}
The following code sample shows the bisr_segment_order file. It lists the order of the elements
in the BISR chain from scan-out to scan-in:
BisrSegmentOrderSpecification {
#1 in figure
PowerDomainGroup(pdgA) {
OrderedElements {
RAM; // RepairGroup:None BISRLength:24
}
}
#2 in figure
PowerDomainGroup(pdgB) {
OrderedElements {
#3 in figure
"SecondaryHostChainInterface(pdgB_r1)";
#4 in figure
"SecondaryHostChainInterface(pdgB_r2)";
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
Any DFT signal required for logic test that has not been included in the previous steps must be
added at this step. Such signals include int_ltest_en and ext_ltest_en. For more information on
how to insert SSN network in a tile-based design, refer to Example 3 in DftSpecification/SSN in
the Tessent Shell Reference Manual.
The clock multiplexers for output clocks are also inserted in this step. Refer to “Timing of Tile-
To-Tile Connections” on page 285 for more information.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
The following example adds clock multiplexers to bypass local OCC in internal test mode:
This example shows the commands to add DFT signals in logic test:
The following code is the DftSpecification to insert EDTs for internal and external modes:
EDT {
ijtag_host_interface : Sib(edt);
Controller(c1_int) {
longest_chain_range : 10, 50;
scan_chain_count : 15;
input_channel_count : 4;
output_channel_count : 3;
Connections {
mode_enables : DftSignal(int_edt_mode);
}
}
Controller(c1_ext) {
longest_chain_range : 10, 50;
scan_chain_count : 3;
input_channel_count : 1;
output_channel_count : 1;
Connections {
mode_enables : DftSignal(ext_edt_mode);
}
}
}
The SSN network inserted in the C1 tile does not require any SSN bus multiplexing or SSN
extra output paths. The network begins with the receiver input pipeline stage, followed by SSH,
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
and ends at the output pipeline stage. You can use the DftSpecification from the following code
sample to insert the SSN network:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
The SSN network inserted in the C2 tile has multiplexers to include or exclude neighboring tiles
from the SSN datapath. The following example DftSpecification inserts an SSN network in the
C2 tile:
SSN {
ijtag_host_interface : Sib(ssn);
DataPath(1) {
output_bus_width : 4;
// 1 in Figure
Pipeline(1) {
}
// 2 in Figure
ScanHost(1) {
}
// 3 in Figure
Multiplexer (from_r2) {
Connections {
secondary_bus_data_in : r2_ssn_from_bus _out[3:0];
}
}
// 4 in Figure
Multiplexer (from_r1) {
Connections {
secondary_bus_data_in : r1_ssn_from_bus_out[3:0];
}
// 5 in Figure
ExtraOutputPath {
Connections {
bus_clock_out : r2_ssn_to_bus_clock;
bus_data_out : r2_ssn_to_bus_data_in[3:0];
}
pipeline (r2) {
}
}
}
// 6 in Figure
Receiver1xPipeline (in) {
//7 in Figure
ExtraOutputPath {
Connections {
bus_clock_out : r1_ssn_to_bus_clock;
bus_data_out : r1_ssn_to_bus_data_in[3:0];
}
pipeline (r1) {
}
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
The following figure shows the schematic of the SSN network in the C2 tile:
Run scan insertion with the insert_test_logic command. After scan insertion, change the context
to “patterns -scan”, then import the internal scan mode, and run the check_design_rules
command to start DRC before ATPG.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
The following code example shows scan insertion in the C1 tiles and verification before ATPG.
In the basic DRC check, the severity of the E5 rule that checks for the possible capture of “X”
into scan chains, is modified to an error. Successful scan isolation removes E5 violations and
any sources of “X” within your logic.
# To ensure that there are no sources of X left over in both internal and
external modes
set_drc_handling E5 error
import_scan_mode int_edt_mode
check_design_rules
set_system_mode setup
import_scan_mode ext_edt_mode
#Enable boundary scan isolation
#Only if ebscan segments are present in the tile
set_static_dft_signal_values bscan_input_isolation_enable 1
set_static_dft_signal_values output_pad_disable 1
check_design_rules
analyze_graybox
write_design -tsdb -graybox
After scan insertion, you must generate scan graybox and IJTAG graybox views. Generate these
views after importing external test mode. To generate the IJTAG graybox, you can refer to the
following example:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
must create a dedicated external ATPG mode. The results of internal pattern generation must be
saved in a TSDB to enable reuse after design integration.
Note
All scan modes must be of “internal” type. This means that logic test responses are
captured to scan chains only, and there is no external capture of ports from the tester
side, except for SSN bus outputs. The external scan mode used to detect faults on tile-to-
tile connections must be declared as “internal”.
4. Save the ATPG mode and pattern data for future retargeting using the write_tsdb_data
command.
The following code imports the internal scan mode, generates patterns for the internal mode,
and then saves them. In this example, the TCL script (“../utilities/write_testbenches.tcl”) to
automate writing patterns is used. It invokes the write commands multiple times to save
commonly used pattern sets. You can also save the patterns using the write_patterns command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
check_design_rules
set_fault_type stuck
create_patterns
write_tsdb_data -replace
# source ../utilities/write_testbenches.tcl
# Either use the TCL script above or use write_patterns command calls as
shown below
write_patterns patterns/parallel.v \
-serial -verilog -replace \
-param_list $param_list \
-generate_info_file_dictionary on \
-pattern_sets scan
write_patterns patterns/loopback.v \
-serial -verilog -replace \
-param_list $param_list \
-generate_info_file_dictionary on \
-pattern_sets ssn_loopback
The generation of external mode patterns is almost identical to the generation of internal mode
patterns. The following code example generates an external scan mode and patterns for it. After
importing scan mode “ext_edt_mode”, two signals to provide scan isolation are set to “1”, and
then specify the ATPG mode using the set_current_mode command. Run the write_tsdb_data
command after check_design_rules to save the ATPG mode in the Tessent Shell Database
(TSDB).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
DFT Flow for Tiles Without TAP and BISR Controllers
set_static_dft_signal_values bscan_input_isolation_enable 1
set_static_dft_signal_values output_pad_disable 1
check_design_rules
set_fault_type stuck
set_atpg_limit -p 128
create_patterns
write_tsdb_data -replace
write_patterns patterns/parallel.v \
-serial -verilog -replace \
-param_list $param_list \
-generate_info_file_dictionary on \
-pattern_sets scan
write_patterns patterns/loopback.v \
-serial -verilog -replace \
-param_list $param_list \
-generate_info_file_dictionary on \
-pattern_sets ssn_loopback
During pattern generation, you can import the saved ATPG modes from the TSDB using the
add_core_instances command. The values of any required signals and other settings related to
the imported ATPG modes are also automatically restored. Refer to the code example in Tile-
to-Tile Test at the Package Level where the external ATPG modes of the tiles are used to
configure the internal ATPG modes of the chip.
For transition faults, you must generate dedicated ATPG scan modes and patterns again. The
Tessent Shell scripts to generate these patterns are similar. However, you must create the ATPG
mode using an additional switch “-fast_capture_mode on” and use the set_fault_type command
to set the fault type to “transition”.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Embedded Boundary Scan Insertion in Tiles With a TAP Controller
The following code sample generates the ICL-based patterns and runs the related simulations:
set_simulation_library_sources \
-Y ../../library/macros/ -extensions {v} \
-V ../../library/cells/adk.v
run_testbench_simulations
The following code example is a Tessent Shell script to run verification testbenches:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Embedded Boundary Scan Insertion in Tiles With a TAP Controller
split into two groups. So create two modules, C3_top_pads and C3_bottom_pads, and insert
embedded boundary scan in each module. The DFT insertion in these modules makes them an
embedded boundary scan segment with logic test support that can integrate into a bigger
boundary scan chain.
Insert embedded boundary scan logic using the “set_design_level sub_block” command. This
connects the inserted DFT signals to the newly created ports. Refer to Example 1 in
HostBScanInterface in the Tessent Shell Reference Manual for more details on how the
HostBscanInterface wrapper assembles the boundary scan chain in C3. The
bscan_inout_isolation_enable DFT signal is required to reuse the embedded boundary scan
segments as scan isolation during logic test in external mode. The IJTAG graybox views for
these modules will be automatically created during ICL extraction as described in “Creation of
IJTAG Graybox” on page 291.
The following code example shows the commands to create the required DFT signals:
Figure 6-49. Embedded Boundary Scan Segment With Logic Test Support
Ready for Integration
When the blocks with pads are complete, then perform the insertion of TAP and boundary scan
logic to access other tiles. The IJTAG graybox views of the dedicated containers with pads
(bottom pads and top pads modules) must be read in the next steps. Because the design_level is
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Embedded Boundary Scan Insertion in Tiles With a TAP Controller
set to physical_block, you must force the insertion of the TAP interface using the
set_dft_specification_requirements -host_scan_interface_type tap command (“tap” is the
default type when design_level is “chip”).
The following code shows the setup used to integrate embedded boundary scan in the C3 tile:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Embedded Boundary Scan Insertion in Tiles With a TAP Controller
Use DftSpecification to perform the integration of embedded boundary scan segments with
TAP and insertion of boundary scan logic. The following code sample shows the modifications
to the default specification:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Embedded Boundary Scan Insertion in Tiles With a TAP Controller
This code sample shows the detailed description of the specification used to integrate boundary
scan in the C3 tile:
EmbeddedBoundaryScan {
HostBscanInterface(tap) {
Interface {
ijtag_host_interface :
Tap(main)/HostBscan;
}
EBScanPipeline(from_right) {
}
SecondaryEBScanInterface(right) {
}
EBScanPipeline(to_right) {
}
// 2 in Figure
EBScanInstance(top_pads) {
}
// 3 in Figure
EBScanPipeline(from_left) {
}
SecondaryEBScanInterface(left) {
}
EBScanPipeline(to_left) {
}
EBScanInstance(bottom_pads) {
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Embedded Boundary Scan Insertion in Tiles With a TAP Controller
Note
This is not a mandatory step but helps in early verification of the boundary scan network at
the tile level. You can also verify the boundary scan network after the integration of tiles at
the chip level.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
IJTAG Network Insertion in Tiles With a TAP Controller
The following Tessent Shell script is used to add loopbacks, extract a fake BSDL file, generate
patterns, and simulate the generated patterns:
# Close the host bscan scan interfaces and extract the fake BSDL file for
C3 for early verification
foreach bscan_host {left right} {
lappend inputs [get_ports ${bscan_host}_bscan_from_scan_out]
lappend outputs [get_ports ${bscan_host}_bscan_to_scan_in]
}
add_loadboard_loopback_pairs -inputs $inputs -outputs $outputs
set_flat_model_options -emulate_loadboard_loopback_pairs on
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
IJTAG Network Insertion in Tiles With a TAP Controller
Example 3 in IJTAG Network in the Tessent Shell Reference Manual to build the IJTAG
network in the tiling flow. The following example shows the DftSpecification to insert the
IJTAG network in the C3 tile:
IjtagNetwork {
HostScanInterface(sti) {
Interface {
design_instance: c3_rtl1_tessent_sib_sri_inst;
scan_interface : client;
}
Sib(thc) {
Attributes {
tessent_dft_function : tile_host_collector;
}
}
Sib(th_right) {
to_scan_in_feedthrough : pipeline;
SecondaryHostScanInterface(right) {
}
Sib(th_left) {
to_scan_in_feedthrough : pipeline;
SecondaryHostScanInterface(left) {
}
}
}
Sib(sti) { … }
}
}
The following figure shows the schematic of the inserted IJTAG network. You can insert the
IJTAG network with the MBIST and MBISR instruments simultaneously.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Memory BISR Insertion for Tiles With a BISR Controller
The following code sample shows how the set_dft_specification_requirements command and its
switches are used during memory test insertion:
set_dft_specification_requirements \
-memory_test on \
-memory_bisr_controller on \
-design_type tile \
-memory_bisr_host_list {pdgA {pdgA_left pdgA_right} \
pdgB {pdgB_left pdgB_right}}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Memory BISR Insertion for Tiles With a BISR Controller
The part of the default DftSpecification that describes the memory test does not require any
modifications. Read in the DEF file with coordinates for memories and ports using the read_def
command to generate and stitch the BISR segments in layout-aware order. If the BISR segments
are not in the correct order, edit the generated bisr_segment_order_file before processing
DftSpecification. You can print the generated bisr_segment_order_file using the cat command.
For more information, refer to Example 3 in MemoryBisr/Secondary Host Chain Interface. The
following code example shows the contents of the bisr_segment_order_file generated for the C3
tile:
BisrSegmentOrderSpecification {
PowerDomainGroup(pdgA) {
OrderedElements {
"SecondaryHostChainInterface(pdgA_left)";
"SecondaryHostChainInterface(pdgA_right)";
}
}
PowerDomainGroup(pdgB) {
OrderedElements {
"SecondaryHostChainInterface(pdgB_left)";
"SecondaryHostChainInterface(pdgB_right)";
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
SSN Insertion for Tiles With Primary SSN Ports
You cannot calculate the length of the BISR chains from the scope of the C3 tile with the
DftSpecification. So you must set the “repair_word_size” and “zero_counter_bist” properties in
the MemoryBisr/Controller/AdvancedOptions wrapper using the set_config_value command.
The SSN insertion step requires one additional DFT signal ssn_en to enable auxiliary logic in
embedded boundary scan segments connected to the SSN bus. The SSN network in the C3 tile
needs access to the SSH nodes on its left and right sides. Therefore, you need two multiplexers
on the data path. The default data path configuration (after reset) does not include any
neighboring tiles. For detailed information on how to insert the SSN network in a tile-based
design, refer to Example 3 in DftSpecification/SSN 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.
Tessent Shell Workflows
SSN Insertion for Tiles With Primary SSN Ports
SSN {
ijtag_host_interface : Sib(ssn);
DataPath(1) {
output_bus_width : 4;
Connections {
bus_clock_in : core_data_in[4];
bus_data_in : core_data_in[3:0];
bus_data_out : core_data_out[3:0];
}
# 1 in figure
Pipeline(1) {
}
# 2 in figure
ScanHost(1) {
}
# 3 in figure
Multiplexer (from_left) {
Connections {
secondary_bus_data_in : left_ssn_from_bus_data_out[3:0];
}
}
# 4 in figure
Multiplexer (from_right) {
Connections {
secondary_bus_data_in : right_ssn_from_bus_data_out[3:0];
}
ExtraOutputPath {
Connections {
bus_clock_out : left_ssn_to_bus_clock;
bus_data_out : left_ssn_to_bus_data_in[3:0];
}
# 5 in figure
pipeline (left) {
}
}
}
# 6 in figure
pipeline (in) {
ExtraOutputPath {
Connections {
bus_clock_out : right_ssn_to_bus_clock;
bus_data_out : right_ssn_to_bus_data_in[3:0];
}
# 7 in figure
pipeline (right) {
}
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Scan Insertion and Scan Modes for Tiles with Promoted OCCs
The following figure is the schematic of the SSN network in the C3 tile. The path in red is a
default SSN data path after reset:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Scan Insertion and Scan Modes for Tiles with Promoted OCCs
The following code shows how the add_scan_mode command creates external scan mode in the
C3 tile. To control the clocks, OCC chains must be a part of this scan mode:
ATPG pattern generation is not dependent on the presence of test instruments and is similar for
all the tiles.
Refer to Patterns Generation in Tiles Without a TAP Controller to perform pattern generation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Chip-Level Integration for the Tiling Flow
The following code example shows a Tessent script to extract integrated ICL and BSDL:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Chip-Level Integration for the Tiling Flow
The following code sample shows a Tessent script to generate IJTAG based patterns:
We recommend that you use a “retargeting dictionary” that helps manage the pattern
retargeting. A retargeting dictionary is a TCL dictionary with basic information about
retargeting modes.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Chip-Level Integration for the Tiling Flow
The following code shows a part of a retargeting dictionary that defines the “all_stuck” test
pattern that is retargeting stuck patterns from all tiles:
all_stuck {
instances {
c1_i1 {
mode_name int_edt_mode_stuck
fault_type stuck
}
c1_i2 {
mode_name int_edt_mode_stuck
fault_type stuck
}
c1_i3 {
mode_name int_edt_mode_stuck
fault_type stuck
}
c1_i4 {
mode_name int_edt_mode_stuck
fault_type stuck
}
c2_i1 {
mode_name int_edt_mode_stuck
fault_type stuck
}
c2_i2 {
mode_name int_edt_mode_stuck
fault_type stuck
}
c3_i1 {
mode_name int_edt_mode_stuck
fault_type stuck
}
}
ssn_muxes {
c2_i1.c2_rtl3_tessent_ssn_mux_from_r1_inst.setup
c2_i1.c2_rtl3_tessent_ssn_mux_from_r2_inst.setup
c2_i2.c2_rtl3_tessent_ssn_mux_from_r1_inst.setup
c2_i2.c2_rtl3_tessent_ssn_mux_from_r2_inst.setup
c3_i1.c3_rtl3_tessent_ssn_mux_from_left_inst.setup
c3_i1.c3_rtl3_tessent_ssn_mux_from_right_inst.setup
}
}
Figure 6-54 shows the SSN network configuration for the “all_stuck” mode. The active data
path is marked in red. The red multiplexers require reconfiguration; ICL instances of these
multiplexers are listed under the “ssn_muxes” key in the retargeting dictionary.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Chip-Level Integration for the Tiling Flow
The following code shows part of the dictionary for single-tile retargeting of transition patterns:
c1_i2_tdf {
instances {
c1_i2 {
mode_name int_edt_mode_tdf
fault_type transition
}
}
ssn_muxes {
c2_i1.c2_rtl3_tessent_ssn_mux_from_r2_inst.setup
c3_i1.c3_rtl3_tessent_ssn_mux_from_left_inst.setup
}
}
Figure 6-55 shows the SSN Network configuration for this mode. You do not need to
reconfigure the multiplexers marked in black but those marked in red need reconfiguring. The
setup procedures related to the ICL instances of these multiplexers are listed under the
“ssn_muxes” dictionary key.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Chip-Level Integration for the Tiling Flow
The retargeting dictionary must be processed during the Tessent setup phase.
Tip
We recommend using the automated script attached to the demonstration test case. The
script reads the dictionary, performs the Tessent setup, and saves the retargeted pattern.
Contact your Siemens representative for more information.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Chip-Level Integration for the Tiling Flow
The following code is from a sample dofile that operates on the retargeting dictionary:
# These settings force the BISR controller not to disturb the BISR chains
set_static_dft_signal_values -icl_instance c3_i1 ltest_en 1
if {$retargeting_mode_name ni {c3_i1_tdf all_tdf}} {
add_input_constraints bisr_clock -c0
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Chip-Level Integration for the Tiling Flow
write_tsdb_data -replace
If you do not use the retargeting dictionary flow, you can use the following set of commands to
retarget the TDF patterns on the C1_i2 instance:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Chip-Level Integration for the Tiling Flow
Simulating the retargeted patterns is automated with the PatternsSpecification flow. The
-testbench_files switch ensures that the simulator compiles and uses the correct design view for
each child block of the design.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Chip-Level Integration for the Tiling Flow
PatternsSpecification(chip,gate,c1_i2_tdf_signoff) {
Patterns(chip_c1_i2_tdf_loopback) {
SimulationOptions {
LowerPhysicalBlockInstances {
c1_i2 : full;
c2_i1 : ijtag_graybox;
c3_i1 : ijtag_graybox;
}
}
TestbenchVerify(1) {
testbench_file_name : \
chip_retargeting.testbenches/chip_c1_i2_tdf_loopback.v;
}
}
Patterns(chip_c1_i2_tdf_parallel) {
SimulationOptions {
LowerPhysicalBlockInstances {
c1_i2 : full;
c2_i1 : ijtag_graybox;
c3_i1 : ijtag_graybox;
}
}
TestbenchVerify(1) {
testbench_file_name : \
chip_retargeting.testbenches/chip_c1_i2_tdf_parallel.v;
}
}
Patterns(chip_c1_i2_tdf_serial_chain) {
SimulationOptions {
LowerPhysicalBlockInstances {
c1_i2 : full;
c2_i1 : ijtag_graybox;
c3_i1 : ijtag_graybox;
}
}
TestbenchVerify(1) {
testbench_file_name : \
chip_retargeting.testbenches/chip_c1_i2_tdf_serial_chain.v;
}
}
Patterns(chip_c1_i2_tdf_serial_scan) {
SimulationOptions {
LowerPhysicalBlockInstances {
c1_i2 : full;
c2_i1 : ijtag_graybox;
c3_i1 : ijtag_graybox;
}
}
TestbenchVerify(1) {
testbench_file_name : \
chip_retargeting.testbenches/chip_c1_i2_tdf_serial_scan.v;
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Chip-Level Integration for the Tiling Flow
Note
The core C2_i1 and C3_i1 design views are set as IJTAG grayboxes because this view is
sufficient for simulating the internal mode scan patterns of the C1_i2 core.
process_patterns_specification
set_simulation_library_sources -v ../data/adk.lib/verilog/adk.v -y ../data/mems -extension v
run_testbench_simulations
Capture the responses from the scan pattern to scan chains only (internal capture) because the
primary inputs and outputs get checked during boundary scan verification patterns. To do this,
set the scan mode type to internal using the “set_current_mode -type internal” command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Chip-Level Integration for the Tiling Flow
The following code example shows how a new name for mode is set here:
foreach ssn_mux {
c2_i1.c2_rtl3_tessent_ssn_mux_from_r1_inst \
c2_i1.c2_rtl3_tessent_ssn_mux_from_r2_inst \
c2_i2.c2_rtl3_tessent_ssn_mux_from_r1_inst \
c2_i2.c2_rtl3_tessent_ssn_mux_from_r2_inst \
c3_i1.c3_rtl3_tessent_ssn_mux_from_left_inst \
c3_i1.c3_rtl3_tessent_ssn_mux_from_right_inst} {
set_test_setup_icall \
[list ${ssn_mux}.setup select_secondary_bus 1] -append -merge
}
check_design_rules
set_fault_type stuck
create_patterns
write_tsdb_data -replace
write_patterns chip_atpg.testbenches/chip_ext_edt_mode_stuck_parallel.v \
-verilog -replace -pattern_set scan
You can simulate saved patterns using run_testbench_simulations. Refer to the code sample in
Verification and Simulations.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Tessent Shell Post-Layout Validation Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Soft Link TSDB and Post-Layout Netlist
This flow assumes that within the post-layout netlist, modules exist for the IJTAG network and
inserted EDT and OCC instruments. That is, they remain distinct logical entities. Refer to “Post-
Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic” if you have
ungrouped (unpreserved) logic.
read_cell_library ../../../library/memories/SYNC_1RW_8Kx16.atpglib
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Verify MemoryBIST, Boundary Scan and IJTAG Patterns
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Verifying the Scan-Inserted ATPG Patterns
11 add_black_boxes -modules { \
12 SYNC_1RW_8Kx16 \
13 }
14 check_design_rules
15
16 create_patterns_specification
17 process_patterns_specification
18
19 set_simulation_library_sources \
20 -v ../../../library/standard_cells/verilog/NangateOpenCellLibrary.v \
21 -v ../../../library/memories/SYNC_1RW_8Kx16.v
22
23 # Disable clock monitoring when running simulation on post-layout netlist
24 run_testbench_simulations -simulation_macro_definitions \
25 TESSENT_DISABLE_CLOCK_MONITOR
26 check_testbench_simulations -report_status
27 exit
Verify the Patterns with a Customized Patterns Specification from Pre-Layout Signoff
You may have customized a patterns specification during pre-layout signoff. You can read in
this patterns specification that was stored in the TSDB during pre-layout signoff. Use the
read_config_data command instead of the create_patterns_specification command.
The following example shows how to read in a customized patterns specification from pre-
layout netlist. The pre-layout patterns specification
“processor_core_gate.patterns_spec_signoff” was used to create the patterns on the gate-level
scan-inserted netlist.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Verifying the Scan-Inserted ATPG Patterns
The SDC file is located in the TSDB directory under dft_inserted_designs. Refer to
“Timing Constraints (SDC)” for more information.
Procedure
1. Load the design (lines 1-9). Ensure that you set the context to patterns -scan and read in
the soft-linked post-layout netlist.
2. Set the current mode (lines 11-12). Specify a different name than that used during scan
insertion and used during pre-layout pattern generation.
3. Perform the remainder of the ATPG pattern generation flow (see lines 14-35).
Examples
The following example shows how to verify scan-inserted ATPG patterns by using the patterns
-scan context and a post-layout netlist. This example shows the flow for a flat design. For
hierarchical designs, refer to “Performing ATPG Pattern Generation: Wrapped Core” for
specifics related to wrapped cores and “Top-Level ATPG Pattern Generation Example” for a
top-level example.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Post-Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic
The best way to avoid complications related to ungrouping in layout is to use the
tessent_get_preserve_instances procedures in the generated SDC file to identify which
instances must be preserved based on their intended uses. See the “Synthesis Helper Procs”
section in the Tessent Shell User’s Manual.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Post-Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic
If you expect the layout process to ungroup the test instruments, you can preserve the
hierarchical names by adding persistent buffers. You must generate the IP using the
DftSpecification. The add_persistent_buffers_in_scan_resource_instruments property is on by
default. With persistent buffers present, you can run the add_core_instances command directly
on the IP instance, even if it is ungrouped. Otherwise, you must follow the example using
“add_core_instances -current_design” if the IP is ungrouped without persistent buffers present.
Prerequisites
• If you do not preserve the instances, you must write out a TCD file for every mode of
operation at the core level before you perform layout. In some cases, you may not need
to generate patterns until after layout, but even then, you must run ATPG before layout
to generate the core-level TCD files. Failure to perform this task could result in R14 or
R15 rule check errors.
Procedure
1. Soft link the post-layout netlist to the TSDB. Refer to “Soft Link TSDB and Post-Layout
Netlist” for more information.
2. Generate the graybox model.
Graybox models are only required for hierarchical cores, not for hierarchical top or flat
designs. (The line numbers in this step refer to the example “Generate the Graybox
Model” on page 345.)
a. When loading the design (line 4), specify the same design that you used to write the
post-layout netlist to the TSDB, for example “post_layout”.
Using the same design ID for the graybox model that you used for the post-layout
netlist enables Tessent to access the full design view or the graybox model with the
same design ID.
b. Read the core description for external mode using the add_core_instances command
(line 9).
Because you already ran the pre-layout ATPG step and saved the TCD file to the
TSDB, the add_core_instances command can read the existing TCD file and add the
core instances that are active in external mode.
c. Use analyze_graybox to generate the graybox (line 13). If the IJTAG network was
ungrouped in layout, the analyze_graybox command can automatically find and
preserve the IJTAG SRI network as long as the default names of the logic have not
changed.
3. If you are running in hierarchical mode, run ATPG on the core’s internal mode of the
wrapped core to generate the ATPG patterns that you retarget at the top level of the chip.
If you are running in hierarchical top or in flat mode, run ATPG.
The line numbers in this example refer to example “Run ATPG on the Core’s Internal
Mode” on page 346.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Post-Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic
a. Specify a unique ATPG mode name with the set_current_mode command (line 10).
Append the name with “_post_layout” or “_final” to clarify which mode to use for
silicon diagnosis, and then set the current mode type to “internal”.
b. Add the core instances using the design ID and mode from the pre-layout step (line
15).
This loads the TCD file that contains the information for the design’s core instances.
It is unnecessary to match these instances to the test logic instances that may have
been ungrouped during layout.
c. (Optional) Use the read_faults command to merge the fault list from running
external mode to find the total overall fault coverage of the wrapped core (line 37).
When you run ATPG in internal mode for transition patterns, you must do the following:
• Specify a unique name for the ATPG run with the set_current_mode command. For
example, edt_int_tdf_final.
• Use the add_core_instances command to read the transition mode TCD. For
example:
add_core_instance -current_design -design_id gate -mode
edt_int_transition
• You can optimize the number of capture cycles used by the OCCs by specifying the
optional capture_window_size parameter. The following command specifies a
capture_window_size of 2:
set_core_instance_parameters -instrument_type occ
-parameter_values [list capture_window_size 2]
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Post-Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic
2 set_tsdb_output_directory ../tsdb_outdir
3 read_cell_library \
4 ../../../library/standard_cells/tessent/NangateOpenCellLibrary.tcelllib
5 read_design processor_core -design_id post_layout -verbose
6 read_verilog ../../../library/memories/SYNC_1RW_8Kx16.v -interface_only
7 set_current_design processor_core
8 # Use the add_core_instances command to read the TCD file.
9 #import_scan_mode ext_mode
10 add_core_instances -current_design -design_id gate
11 check_design_rules
12 report_scan_cells
13 # Create and write the updated graybox model to the TSDB.
14 analyze_graybox
15 write_design -tsdb -graybox -verbose
16 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Post-Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic
39
40 # Final coverage of the core that includes both Internal and External
41 # modes
42 # report_statistics -detail
43 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Testbench Generation and Simulation in RTL Mode
• enumerations
• unpacked arrays
• unpacked structs
• SystemVerilog interfaces
You can also create the simulation wrapper manually with the get_current_design,
report_current_design, and write_design commands.
The tool reports a warning if read_design encounters ports that can cause issues in simulation or
in the TSDB flow:
// Warning: The design 'sv_mod1' just read has ports with 'unpacked struct'/'enumerate'
// datatypes declared in Global ($unit) or local scope ('sv_mod1' scope).
// If you try to elaborate this design within its parent, you will get an error.
// It will only work if this design is your current design.
These issues typically arise when port declarations use data types that are not visible to the tool.
The warning indicates that a call to set_current_design of the parent block will raise additional
warnings. Use report_current_design after running set_current_design to obtain more
information about these ports.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Simulation Wrapper Creation
The following example shows how the simulation wrapper is created during extract_icl:
// command: extract_icl
// Writing simulation wrapper : \
./tsdb_outdir/dft_inserted_designs/sv_mod1_RTL1.dft_inserted_design/
sv_mod1.sv09_simulation_wrapper
// Note: Updating the hierarchical data model to reflect RTL design
changes.
// Writing design source dictionary : \
./tsdb_outdir/dft_inserted_designs/
sv_mod1_RTL1.dft_inserted_design/sv_mod1.design_source_dictionary
// Flattening process completed, cell instances=111, gates=1310, PIs=470,
POs=166, CPU time=0.04 sec.
// --------------------------------------------------------------------
// Begin circuit learning analyses.
// --------------------------------
// Learning completed, CPU time=0.02 sec.
// --------------------------------------------------------------------
// Begin ICL extraction.
// ---------------------
// ICL extraction completed, ICL instances=10, CPU time=0.16 sec.
// --------------------------------------------------------------------
// --------------------------------------------------------------------
// Begin ICL elaboration and checking.
// -----------------------------------
// ICL elaboration completed, CPU time=0.09 sec.
// --------------------------------------------------------------------
// Writing ICL file : ./tsdb_outdir/dft_inserted_designs/
sv_mod1_RTL1.dft_inserted_design/sv_mod1.icl
// Writing consolidated PDL file: ./tsdb_outdir/dft_inserted_designs/
sv_mod1_RTL1.dft_inserted_design/sv_mod1.pdl
// Writing SDC file: ./tsdb_outdir/dft_inserted_designs/
sv_mod1_RTL1.dft_inserted_design/sv_mod1.sdc
// Writing DFT info dictionary: ./tsdb_outdir/dft_inserted_designs/
sv_mod1_RTL1.dft_inserted_design/
sv_mod1.dft_info_dictionary
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Simulation Wrapper Creation
The following example shows how the simulation wrapper is created during
process_dft_specification:
// command: process_dft_specification
//
// Begin processing of /DftSpecification(sv_mod1,RTL2)
// --- IP generation phase ---
// Validation of IjtagNetwork
// Validation of OCC
// Validation of EDT
// Processing of IjtagNetwork
// Generating design files for IJTAG SIB module
sv_mod1_RTL2_tessent_sib_1
// Verilog RTL : ./tsdb_outdir/instruments/
sv_mod1_RTL2_ijtag.instrument/sv_mod1_RTL2_tessent_sib_1.v
// IJTAG ICL : ./tsdb_outdir/instruments/
sv_mod1_RTL2_ijtag.instrument/sv_mod1_RTL2_tessent_sib_1.icl
// Generating design files for IJTAG SIB module
sv_mod1_RTL2_tessent_sib_2
// Verilog RTL : ./tsdb_outdir/instruments/
sv_mod1_RTL2_ijtag.instrument/sv_mod1_RTL2_tessent_sib_2.v
// IJTAG ICL : ./tsdb_outdir/instruments/
sv_mod1_RTL2_ijtag.instrument/sv_mod1_RTL2_tessent_sib_2.icl
// Generating design files for IJTAG Tdr module
sv_mod1_RTL2_tessent_tdr_sri_ctrl
// Verilog RTL : ./tsdb_outdir/instruments/
sv_mod1_RTL2_ijtag.instrument/sv_mod1_RTL2_tessent_tdr_sri_ctrl.v
// IJTAG ICL : ./tsdb_outdir/instruments/
sv_mod1_RTL2_ijtag.instrument/sv_mod1_RTL2_tessent_tdr_sri_ctrl.icl
//
// Loading the generated RTL verilog files (2) to enable instantiating
the contained modules
// into the design.
// Processing of EDT
// Generating design files for EDT module
sv_mod1_RTL2_tessent_edt_edt1
// Verilog RTL : ./tsdb_outdir/instruments/
sv_mod1_RTL2_edt.instrument/sv_mod1_RTL2_tessent_edt_edt1.v
// IJTAG ICL : ./tsdb_outdir/instruments/
sv_mod1_RTL2_edt.instrument/sv_mod1_RTL2_tessent_edt_edt1.icl
// IJTAG PDL : ./tsdb_outdir/instruments/
sv_mod1_RTL2_edt.instrument/sv_mod1_RTL2_tessent_edt_edt1.pdl
// TCD : ./tsdb_outdir/instruments/
sv_mod1_RTL2_edt.instrument/sv_mod1_RTL2_tessent_edt_edt1.tcd
//
// Loading the generated RTL verilog files (1) to enable instantiating
the contained modules
// into the design.
// --- Instrument insertion phase ---
// Inserting instruments of type 'ijtag'
// Inserting instruments of type 'edt'
//
// Writing out modified source design in ./tsdb_outdir/
dft_inserted_designs/sv_mod1_RTL2.dft_inserted_design
// Writing simulation wrapper : ./tsdb_outdir/dft_inserted_designs/
sv_mod1_RTL2.dft_inserted_design/sv_mod1.sv09_simulation_wrapper
// Writing out specification in ./tsdb_outdir/dft_inserted_designs/
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Testbench Examples
sv_mod1_RTL2.dft_spec
// Done processing of
DftSpecification(sv_mod1,RTL2
Related Topics
get_current_design
read_design
report_current_design
write_design
set_current_design
Testbench Examples
SystemVerilog design definition with the top level named “top” and one SystemVerilog
interface port named “Bus”:
typedef enum logic [2:0] {
RED, GREEN, BLUE, CYAN, MAGENTA, YELLOW
} color_t;
interface MSBus;
event_bus_split_packet_t Addr;
logic [1:0] Data;
logic RWn;
logic Clk;
modport Secondary (input Addr, RWn, Clk, output Data);
endinterface
Each bit-blasted bit of the DUT is connected to its associated test pattern wire using the post-
synthesis pin name. The name of the test pattern bit is the same as that of the DUT pin bit,
escaped with a backslash (\). The DUT instance (DUT_inst) is the generated simulation
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Testbench Examples
wrapper, with the DUT itself instantiated in it. This table cross-references the DUT pin names
and the test pattern bit names:
Table 6-1. Test Pattern Bit Name Assignments
DUT Pin of Port “Bus” Test Pattern Bits
DUT_inst/\Bus.Addr [10] \Bus.Addr [10]
DUT_inst/\Bus.Addr [9] \Bus.Addr [9]
DUT_inst/\Bus.Addr [8] \Bus.Addr [8]
DUT_inst/\Bus.Addr [7] \Bus.Addr [7]
DUT_inst/\Bus.Addr [6] \Bus.Addr [6]
DUT_inst/\Bus.Addr [5] \Bus.Addr [5]
DUT_inst/\Bus.Addr [4] \Bus.Addr [4]
DUT_inst/\Bus.Addr [3] \Bus.Addr [3]
DUT_inst/\Bus.Addr [2] \Bus.Addr [2]
DUT_inst/\Bus.Addr [1] \Bus.Addr [1]
DUT_inst/\Bus.Addr [0] \Bus.Addr [0]
DUT_inst/\Bus.RWn \Bus.RWn
DUT_inst/\Bus.Clk \Bus.Clk
DUT_inst/\Bus.Data [1] \Bus.Data[1]
DUT_inst/\Bus.Data [0] \Bus.Data[0]
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Testbench Examples
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Testbench Examples
.ijtag_si(ijtag_si),
.ijtag_so(ijtag_so));
. . .
endmodule
Simulation wrapper:
MSBus tessent_intf_inst1();
top current_design(.Bus(tessent_intf_inst1),
.ijtag_tck(ijtag_tck),
.ijtag_reset(ijtag_reset),
.ijtag_ce(ijtag_ce),
.ijtag_se(ijtag_se),
.ijtag_ue(ijtag_ue),
.ijtag_sel(ijtag_sel),
.ijtag_si(ijtag_si),
.ijtag_so(ijtag_so));
endmodule
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Testbench Examples
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Hybrid TK/LBIST Flow for Flat Designs
Tip
This flow increments the basic Tessent Shell RTL and scan DFT insertion flow. To aid
comprehension, ensure that you have reviewed the test case for flat designs.
Refer to the following test case for a detailed usage example of the flow described in this
section. This test case illustrates hybrid IP insertion into a flat design with MemoryBIST in the
first DFT insertion pass and EDT, OCC, and LogicBIST in the second DFT insertion pass.
tessent_example_hybrid_tk_lbist_flow_<software_version>.lbist
You can access this test case by navigating to the following directory:
<software_release_tree>/share/UsageExamples/
RTL and Scan DFT Insertion Flow With Hybrid TK/LBIST. . . . . . . . . . . . . . . . . . . . . 356
Perform the First DFT Insertion Pass: Hybrid TK/LBIST . . . . . . . . . . . . . . . . . . . . . . . 357
Perform the Second DFT Insertion Pass: Hybrid TK/LBIST . . . . . . . . . . . . . . . . . . . . . 360
Perform Test Point Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Perform Scan Chain Insertion (Hybrid Flow) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Performing ATPG Pattern Generation: Hybrid TK/LBIST . . . . . . . . . . . . . . . . . . . . . . 370
Performing LogicBIST Fault Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Perform LogicBIST Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform the First DFT Insertion Pass: Hybrid TK/LBIST
Note
The test case that illustrates the hybrid TK/LBIST flow does not include boundary scan
insertion. Refer to “First DFT Insertion Pass: Performing MemoryBIST and Boundary
Scan” on page 178 for information about inserting boundary scan in the first DFT insertion
pass.
Refer to “First DFT Insertion Pass: Performing MemoryBIST and Boundary Scan” on page 178
for additional information.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform the First DFT Insertion Pass: Hybrid TK/LBIST
Note
The line numbers used in this procedure refer to the command flow dofile in Example 6-13
on page 358.
Procedure
1. Load the RTL design data and set the design parameters. (See lines 1-11.)
Note
“rtl1” is the recommended naming convention for the design ID for the first insertion
pass, but you can specify any name. Refer to “Loading the Design” for more
information about setting the design ID. The default design ID for the current test case is
“rtl.”
2. Add a DFT signal to use for controller chain mode. (See lines 13-16.) You must register
the DFT signal name and then add the signal.
By default, Tessent Shell adds a pin at the current design level to control CCM. You can
save this pin by using a TDR register to control CCM; do this by specifying the
add_dft_signal -create_with_tdr switch.
Whether or not you are inserting MemoryBIST or boundary scan, you must add the
CCM DFT signal in the first DFT insertion pass because its generated hardware is used
in the second pass when you insert the hybrid IP.
3. Set the set_dft_specification_requirements command to “on” for -memory_bist. (See
lines 18-19.)
4. Define the design clocks. (See lines 21-23.)
5. Check the design rules and set the system mode to analysis. (See lines 25-26.)
6. Create the DFT specification. (See lines 28-31.)
7. Generate the DFT hardware, IJTAG network connectivity, and test patterns. (See lines
33-43.)
8. Run simulations to verify the design. (See lines 45-50.)
Examples
Example 1
The following dofile example shows a typical command flow as detailed in the preceding
procedure. The highlighted command lines are unique to the process for inserting hybrid IP in a
two-pass DFT insertion process.
Example 6-13. Dofile Example for First Pass, Hybrid TK/LBIST With
MemoryBIST
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform the First DFT Insertion Pass: Hybrid TK/LBIST
Example 2
Typically, you insert MemoryBIST or boundary scan in the first DFT insertion pass before
inserting the hybrid IP (and OCC) in the second DFT insertion pass. The following sample
dofile shows a first DFT insertion pass without MemoryBIST or boundary scan, in which you
are adding the DFT signal for controller chain mode test.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform the Second DFT Insertion Pass: Hybrid TK/LBIST
Example 6-14. Dofile Example for First DFT Pass, Hybrid TK/LBIST Only
check_design_rules
process_dft_specification
extract_icl
# Generate patterns
create_patterns_specification
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform the Second DFT Insertion Pass: Hybrid TK/LBIST
Procedure
1. Load the design and set the environment (see lines 1-6). Refer to “Loading the Design”
on page 183 for more information.
2. Define the DFT signals (see lines 8-28). Refer to “Specifying and Verifying the DFT
Requirements” on page 185 for more information.
Note
Hybrid TK/LBIST has additional DFT requirements for the clock signals.
3. Create the LogicBIST test point and X-bounding signals with a TDR (see lines 23-24).
4. Add a core instance for the MemoryBIST mini-OCC for LogicBIST test. (See lines
30-31.)
add_core_instances -instances [get_instances
*_tessent_sib_sti_inst]
This is required when you have inserted MemoryBIST in the first DFT insertion pass.
5. Creating the DFT Specification. (See lines 38-50.) Include a SIB for LogicBIST by
specifying lbist in the create_dft_specification command.
create_dft_specification -sri_sib_list {edt occ lbist}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform the Second DFT Insertion Pass: Hybrid TK/LBIST
The NcpIndexDecoder wrapper specifies the named capture procedures (NCPs) for
LogicBIST test. For details, refer to “NCP Index Decoder” in the Hybrid TK/LBIST
Flow User’s Manual.
c. In the EDT/Controller wrapper, define the LogicBistOptions if you are not using the
default values.
When you specify the LogicBIST wrapper, the tool adds a LogicBistOptions
wrapper to the EDT controller automatically populated with default values.
The misr_input_ratio property provides a way to specify the MISR size. The
automatic (default) ratio results in the lowest hardware with a small MISR.
You can control how many chains are masked by a single mask register bit using the
chain_mask_register_ratio property. By default, the ratio is 1:1; there are as many
bits in the chain mask register as there are number of scan chains.
Specify the low-power shift options specifically for hybrid IP usage separately from
the low-power shift options for the EDT controller.
6. Process the DFT specification to generate the test hardware, including LogicBIST (see
line 52). Refer to “Generating the EDT, Hybrid TK/LBIST, and OCC Hardware” on
page 192 for more information.
7. Extract the ICL information (see line 54). Refer to “Extracting the ICL Module
Description” on page 192 for more information.
8. Generate the patterns and simulate the testbench (see lines 56-63). Refer to “Generating
ICL Patterns and Running Simulation” on page 193 for more information.
Examples
Example 1: Dofile Flow for the Second DFT Insertion Pass: Hybrid TK/LBIST
The following dofile example shows a typical command flow. The highlighted command lines
are unique to the process for inserting Tessent Shell LogicBIST and hybrid IP instruments in a
two-pass DFT insertion process. In this example, the dofile reads in the DFT specification that
defines the instruments to be inserted.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform the Second DFT Insertion Pass: Hybrid TK/LBIST
Example 2: DFT Specification Example for Second DFT Insertion Pass with Hybrid TK/LBIST
The following example illustrates a DFT specification customized to include the wrappers for
the LogicBIST controller and additional LogicBIST options for the EDT controller.
1 Occ {
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform the Second DFT Insertion Pass: Hybrid TK/LBIST
2 ijtag_host_interface: Sib(occ);
3 capture_trigger: capture_en;
4 static_clock_control: both;
5 Controller(clk) {
6 clock_intercept_node: clk;
7 }
8 Controller(ramclk) {
9 clock_intercept_node: ramclk;
10 }
11 }
12
13 # Include the LogicBIST controller
14 # Example LogicBIST only; modify for your design requirements
15 LogicBist {
16 ijtag_host_interface : Sib(lbist);
17 Controller(c0) {
18 burn_in : on ;
19 pre_post_shift_dead_cycles : 8 ;
20 SingleChainForDiagnosis { Present : on ; }
21 ShiftCycles {max: 40; hardware_default : 1024;}
22 CaptureCycles {max: 4;}
23 # Hardware default is max
24 PatternCount {max: 10000; hardware_default : 1024;}
25 # Hardware default is 0
26 WarmupPatternCount { max : 512;}
27 ControllerChain {
28 present : on;
29 clock : tck;
30 }
31 Connections {
32 shift_clock_src: clk;
33 controller_chain_enable : piccpu_rtl_tessent_tdr_sri_ctrl_inst/ \
34 controller_chain_mode;
35 }
36 }
37 NcpIndexDecoder{
38 Ncp(clk_occ_ncp) {
39 cycle(0): OCC(clk);
40 cycle(1): OCC(clk);
41 }
42 Ncp(ramclk_occ_ncp) {
43 cycle(0): OCC(ramclk);
44 cycle(1): OCC(ramclk);
45 }
46 # References to piccpu_rtl_tessent_sib_1 only applicable when
47 # inserting MemoryBIST
48 Ncp(ALL_occ_ncp) {
49 cycle(0): OCC(clk) , OCC(ramclk) , piccpu_rtl_tessent_sib_1;
50 }
51 Ncp(sti_occ_ncp) {
52 cycle(0): piccpu_rtl_tessent_sib_1 ;
53 cycle(1): piccpu_rtl_tessent_sib_1 ;
54 }
55 }
56 }
57
58 # Example EDT only; modify for your design requirements
59 # Note the additional LogicBIST options for the hybrid TK/LBIST flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform Test Point Insertion
60 EDT {
61 ijtag_host_interface : Sib(edt);
62 Controller (c0) {
63 longest_chain_range : 20, 60;
64 scan_chain_count : 10;
65 input_channel_count : 1;
66 output_channel_count : 1;
67 ShiftPowerOptions {
68 present : on ;
69 min_switching_threshold_percentage : 15 ;
70 }
71 LogicBistOptions {
72 misr_input_ratio : 1 ;
73 chain_mask_register_ratio : 1 ;
74 ShiftPowerOptions {
75 present : on ;
76 default_operation : disabled ;
77 SwitchingThresholdPercentage { min : 25 ; }
78 }
79 }
80 }
81 }
Related Topics
Sib
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform Test Point Insertion
The tool inserts observation points that enable the tool to observe test responses during scan
cycles and control points that activate and receive pseudo-random values during built-in self
test. For details, refer to “Test Points for LBIST Test Coverage Improvement” in the Tessent
Scan and ATPG User’s Manual.
Before inserting the test points, specify a DFT signal that enables X-bounding signals.
X-bounding is the process of preventing signals originating from X-generating nets (from non-
scan cells, black boxes, and primary inputs) from reaching the scan cells. The tool inserts a
MUX with an X-bounding enable signal that is controlled by a top-level pin. X-bounding
ensures that only valid binary values propagate through the scan cells during test. For details,
refer to “X-Bounding” in the Hybrid TK/LBIST Flow User’s Manual.
Prerequisites
• Prior to test point insertion, perform synthesis as described in section “Performing
Synthesis” on page 194.”
Procedure
1. Specify the following command to set the DFT context for test point insertion:
set_context dft -test_point -no_rtl -design_id gate1
For test point insertion, you must use a gate-level netlist. Ensure that you specify a
design ID with a unique name from the design ID for scan chain insertion that you
perform after test point insertion.
2. Load the cell libraries.
read_cell_library ../lib/tessent/adk.tcelllib ../rtl/
picdram.atpglib
3. Specify the same output directory that you used in the first and second DFT passes.
set_tsdb_output_directory ../tsdb_outdir
5. Load the design data for the DFT hardware you previously inserted. For example:
read_design piccpu -design_id rtl2 -no_hdl -verbose
6. Set the maximum number of test points you want to add. For example:
set_test_point_analysis_options -total_number 50
Typically, the maximum number of test points should be 1%-2% of the number of flops
in the design.
7. Set the test point-related insertion options.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform Test Point Insertion
set_test_point_insertion_options -observe_point_share 5
The control_test_point_en and observe_test_point_en enable signals are required for test
point insertion, and they are automatically inferred from the control_test_point_en and
observe_test_point_en DFT signals you previously added.
8. Specify the type of test points you want to insert into the design.
set_test_point_types { lbist_test_coverage edt_pattern_count }
Specify both LogicBIST test coverage and EDT pattern count test point types so that the
tool generates test points to reduce pattern count and improve random pattern testability.
9. Specify to insert test logic on the set and reset signals to make them controllable when
you insert scan chains.
set_test_logic -set on -reset on
You can only insert test points into scan-tested instruments (STIs).
11. Analyze and optimize the test points.
analyze_test_points
Tessent Shell returns a log file that lists the test points that are inserted into the tool. You
can write out a test point dofile that lists the test point locations. You can use this dofile
to edit the test points you want to insert.
write_test_point_dofile tpi.dofile -all -replace
To generate a script to use with third-party test point insertion tools, use the following
command to target the insertion script for Design Compiler.
insert_test_logic -write_in_tsdb off -write_insertion_script \
testpoint_dc.tcl -insertion dc -replace
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform Scan Chain Insertion (Hybrid Flow)
Examples
Example 6-15. Dofile Example for Test Point Insertion
set_current_design piccpu
add_input_constraint reset -C0
set_test_point_analysis_options -total_number 50
# Following command inferred when X-bounding enable DFT signal was added
# -xbounding_enable [ get_dft_signal x_bounding_en ]
set_test_point_insertion_options -observe_point_share 5
set_test_point_types { lbist_test_coverage edt_pattern_count }
set_test_logic -set on -reset on
# no test points in Tessent-inserted IPs
add_notest_point [ get_instance *tessent* ]
set_system_mode analysis
analyze_test_points
insert_test_logic
report_test_logic
exit
Procedure
1. Load the design data and set the design parameters. (See lines 1-6.) Ensure that you
specify a unique design ID name from the name you used for test point insertion.
2. Set DRC handling to issue warnings for E9 and E11 DRC checks. (See lines 8-10.)
set_drc_handling E09 W
set_drc_handling E11 W
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform Scan Chain Insertion (Hybrid Flow)
These DRC checks look for possible bus contention issues. By default, Tessent Shell
ignores these rules. Set these checks to issue warnings so that the X-bounding algorithm
checks them and fixes any X-source contention issues.
3. Specify the pins/ports to exclude from X-bounding. (See lines 12-13.) For example:
set_xbounding_options -exclude { reset }
Exclude the pins/ports that are guaranteed to have a known value during fault simulation
and never propagate an X value to the MISR. The tool does not insert X-bounding
muxes at the specified pins/ports, or at the logic that is driven by these pins.
4. Run X-source analysis with the analyze_xbounding command to identify memory
elements that might capture an unknown during LogicBIST. (See lines 17-19.)
5. Perform wrapper analysis and insertion. (See lines 21-34.)
6. Connect the scan chains to the EDT block, analyze the scan chains, and insert the scan
chains. (See lines 36-50.)
Examples
The following dofile example shows a typical command flow. The highlighted command lines
are unique to the process for inserting Tessent Shell LogicBIST and hybrid IP instruments in a
two-pass DFT insertion process.
Example 6-16. Dofile Example for Scan Chain Insertion: Hybrid TK/LBIST
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing ATPG Pattern Generation: Hybrid TK/LBIST
Related Topics
Performing Scan Chain Insertion: Wrapped Core
Note
The line numbers used in this procedure refer to the command flow dofile in Example 6-17
on page 371.
Prerequisites
• Perform EDT pattern generation as described in “Performing ATPG Pattern Generation”
on page 197.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing ATPG Pattern Generation: Hybrid TK/LBIST
Procedure
1. Load the design and set the environment (see lines 1-12). Refer to “Loading the Design”
on page 183 for more information.
2. Enable CCM (see lines 16-17).
set_static_dft_signal_values controller_chain_mode 1
You had added a DFT signal for ccm_en during IP creation, which is now being
configured. If this is a port (default), then this command is not required.
3. Define the scan chain for CCM (see lines 19-22).
4. Specify tck or edt_clock for CCM, depending on which you are using in your
implementation (see lines 24-25).
5. Define the pin constraints (see lines 33-37).
You must disable core clock and reset activity. If ccm_en was not added as a DFT
signal, then also include a pin constraint for it (enabled).
6. For retargeting, specify to pulse the CCM clock during shift. (See line 39.) The
following command is only required when you use edt_clock for CCM and edt_clock is
a top-level port, or when you use tck for CCM.
set_procedure_retargeting_options -pulse_during_shift edt_clock
The tool automatically generates a test procedure file that configures the scan_en and
shift_capture_clock DFT signals. If the edt_clock is derived from test_clock, do not
specify the set_procedure_retargeting_options command.
7. Specify the set_current_mode command with a unique name to indicate that you are
generating CCM patterns (see line 41). For example:
set_current_mode ccm_stuck
Example 6-17. Dofile Example for ATPG with Controller Chain Mode: Hybrid TK/
LBIST
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing ATPG Pattern Generation: Hybrid TK/LBIST
8 ../lib/tessent/picdram.atpglib
9 set_design_source -format tcd_memory -y ../lib/tessent -extension memlib
10
11 # Read in the scan-inserted design
12 read_design $DesignName -design_id gate2
13
14 report_dft_signals
15
16 # Enable CCM
17 set_static_dft_signal_values controller_chain_mode 1
18
19 add_scan_groups grp1
20 # These are the required scan chains for CCM
21 add_scan_chains ccm_chain grp1 control_chain_scan_in \
22 control_chain_scan_out
23
24 # Add edt_clock or tck as the primary clock source for CCM
25 add_clock 0 tck
26
27 # Specify clocks driven by primary-input ports; this is optional
28 add_clocks 0 clk
29 add_clocks 0 ramclk
30 add_clocks 0 reset
31 add_clocks 0 test_clock
32
33 # Define the pin constraints
34 add_input_constraints clk -c0
35 add_input_constraints ramclk -c0
36 add_input_constraints reset -c0
37 add_input_constraints test_clock -c0
38
39 set_procedure_retargeting_options -pulse_during_shift edt_clock
40
41 set_current_mode ccm_stuck
42
43 set_system_mode analysis
44 add_fault -module [ get_module *tessent* ]
45 report_clocks
46
47 create_patterns
48 report_statistics -detailed_analysis
49
50 report_statistics -instance piccpu_rtl2_tessent_lbist
51 report_statistics -instance \
52 piccpu_rtl2_tessent_lbist_ncp_index_decoder_inst
53 report_statistics -instance piccpu_rtl2_tessent_single_chain_mode_logic
54 report_statistics -instance piccpu_rtl2_tessent_edt_lbist_c0_inst
55
56 write_tsdb_data -replace
57 write_patterns ${DesignName}_ccm_stuck_parallel.v -verilog -parallel \
58 -replace
59 write_patterns ${DesignName}_ccm_stuck_serial.v -verilog -serial \
60 -replace
61
62 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing LogicBIST Fault Simulation
Note
The line numbers used in this procedure refer to the command flow dofile in Example 6-18
on page 374.
Procedure
1. Load the design and set the environment (see lines 1-12). Refer to “Loading the Design”
on page 183 for more information.
2. Set the current test mode to a unique name for the new pattern set you are creating to test
the hybrid IP. (See line 7.)
3. Import the core’s internal mode data. (See line 9.)
Tessent Shell imports the scan-inserted design data for the EDT and OCC logic. For
LogicBIST fault simulation, the tool requires EDT for PRPG/compactor/MISR
configuration and chain tracing, and OCC for the clocks. Using the import_scan_mode
command assumes that you used Tessent Scan to perform scan chain stitching.
For LogicBIST fault simulation, only the internal mode data is valid.
4. Add the hybrid TK/LBIST core instances. (See lines 11-12.) For example:
add_core_instances -instance piccpu_rtl2_tessent_lbist
For the hybrid TK/LBIST flow, you must explicitly add the LogicBIST controller core.
5. Specify the capture procedure names with the set_lbist_controller_options command.
(See lines 16-18.)
Include the names of all Named Capture Procedures (NCPs) that are defined in the
DftSpecification, along with their active percentages, regardless of whether you intend
to use them in LogicBIST simulation.
The tool defines the NCPs in the Tessent Core Description (TCD) file while processing
the DftSpecification. You can override the automatically generated NCPs with the
read_procfile command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing LogicBIST Fault Simulation
6. Define the DFT signals (see lines 23-37). In addition to enabling the ltest_en and
int_ltest_en logic test control signals, you must specify the following signals for the
hybrid TK/LBIST flow:
set_static_dft_signal_values control_test_point_en 1
set_static_dft_signal_values observe_test_point_en 1
set_static_dft_signal_values xbounding_en 1
set_static_dft_signal_values tck_occ_en 1
set_static_dft_signal_values controller_chain_mode 0
7. Set the PLL external capture clocks if your design has a PLL that is a driving clock, but
the PLL itself is driven by external clocks. (See lines 43-46.)
This indicates the number of cycles the NCPs take with respect to the LogicBIST
controller clock, as specified with the -fixed_cycles switch.
8. Specify the maximum number of pseudo-random patterns you want the tool to simulate.
(See line 48.)
9. Set the pattern source to LogicBIST and run fault simulation. (See line 51.)
10. Write out the parallel testbench and save all the data into the TSDB. (See lines 53-57.)
Examples
The following dofile example shows a typical command flow as detailed in the preceding
procedure. The highlighted text illustrates additional considerations for the hybrid TK/LBIST
flow.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform LogicBIST Pattern Generation
Procedure
1. Load the design and set the environment (see lines 1-12). Refer to “Loading the Design”
on page 183 for more information.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform LogicBIST Pattern Generation
2. Set the context to patterns -ijtag and set the design ID to the name of the scan-inserted,
gate-level netlist generated during scan chain insertion.
When you specify the -ijtag switch, Tessent Shell automatically accesses the ICL
module description for the current design, which enables IJTAG retargeting mode.
3. Define clocks and constraints (see lines 7-10).
4. Generate and validate the IJTAG patterns for the design (see lines 14-16).
5. Run and check the testbench simulations (see lines 18-23). The following step is
important for the hybrid TK/LBIST flow:
a. Specify the simulator option to keep all the logic gates for simulation.
The following example applies to Questa® SIM:
run_testbench_simulations -simulator_options \
{ -voptargs="+acc" }
For correct pattern simulation, use the applicable simulator option to ensure that the
necessary design logic is not optimized away during elaboration.
Tessent Shell simulates the logic test operations only, which means the testbench
does not connect all the pins in the design. The tool issues warnings for the
unconnected pins. To filter these warnings out, you can use the
run_testbench_simulations -simulation_option +nowarnTSCALE option.
Examples
The following dofile shows a command flow to generate IJTAG patterns for LogicBIST.
Highlighted text illustrates additional considerations for the hybrid TK/LBIST flow.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Perform LogicBIST Pattern Generation
23 check_testbench_simulations -report_status
24
25 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Running Multiple Load ATPG on Wrapped Core Memories with Built-In Self Repair
You must provide an ATPG model of the eFuse during pattern generation to meet the E14
design rule requirements. If such a model is not available, you can instead provide an input
constraint on the fuseValue output pin of the eFuse interface module. To do this, create a
pseudo-port associated with the fuseValue output pin of the fuse box interface instance. Then,
add a constant 0 input constraint on the “fuseValue” pseudo-port, as shown in the following
example:
add_primary_inputs chip_rtl_tessent_mbisr_controller_inst/ \
chip_rtl_tessent_mbisr_generic_fusebox_interface_instance/fuseValue \
-pseudo_port_name fuseValue
add_input_constraints -c0 fuseValue
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Multiple Load ATPG Pattern Generation
You should be familiar with the two-pass pre-scan DFT insertion flow as described in “RTL and
Scan DFT Insertion Flow for Physical Blocks” on page 208, especially as related to performing
ATPG pattern generation. Figure 6-59 shows this flow.
The init_bisr_chains iProc contains Tcl code you can use to initialize the BISR registers at any
level (core or chip-level) as follows:
• At the wrapped core level, the iProc performs an asynchronous clear of the BISR
registers.
• At the chip-level, the iProc initiates a BISR controller power-up emulation.
The power-up emulation clears the BISR registers if the fuse box has not been programmed, or
initializes the BISR registers with the repair data if memory repair information was
programmed in the fuse box. See “Creating and Inserting the BISR Controller” in Tessent
MemoryBIST User's Manual.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Multiple Load ATPG Pattern Generation
Note
The line numbers used in this procedure refer to the command flow dofile in Example 6-19
on page 381.
Prerequisites
• You have performed the “RTL and Scan DFT Insertion Flow for Physical Blocks” on
page 208 up to the ATPG pattern generation step.
Procedure
1. Load the Tessent Cell Library for the memory. (See lines 1-9.)
2. Load the design. (See lines 11-13.)
3. Set the DFT Signal memory_bypass to 0, so memory is not bypassed. (See lines 24-26.)
4. Load the PDL for the Memory BISR chains, which has an iProc (init_bisr_chains) that is
called with set_test_setup_icall -non_retargetable. (See lines 28-35.)
The init_bisr_chains iProc contains Tcl code you can use to initialize the BISR registers
at any level (core or chip-level) as follows:
• At the wrapped core level, the iProc performs an asynchronous clear of the BISR
registers.
• At the chip level, the iProc initiates a BISR controller power-up emulation.
5. Generate the multiple load ATPG patterns. (See lines 39-40.)
6. Write the design data and patterns to the TSDB. (See lines 42-44.)
7. Write out the Verilog testbenches for simulation. (See lines 47-50.)
Results
At the wrapped core level, if you inject a fault in the repairable memory, and then run the
multiple load ATPG Pattern, the run should fail. This check shows that if a repairable memory
has defect that is not repaired then when you retarget the multiple load ATPG patterns from the
top level, then the multiple load ATPG pattern run will fail.
You must run the memoryBIST inside the wrapped core to determine if the memory is
repairable. If it is, then the repairable information from Built-In Redundancy Analysis (BIRA)
to BISR must be stored and the repair performed by storing the repairable contents using the
fusebox repair solution that you use at the top-level.
Examples
The following example for the repairable memory “MGC_SYNC_1RW_1024x8_C” generates
ATPG patterns that is run by the memory.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Multiple Load ATPG Pattern Generation
Example 6-19. Multiple Load ATPG Pattern Generation for Memories with BISR
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Multiple Load Top-Level ATPG Pattern Retargeting
For retargeting multiple load ATPG patterns where the memories are not bypassed from a lower
level wrapped core that has repairable memories, specify the correct retargeting mode signal.
Subsequently, use the add_core_instances command to load the specific core with the correct
ATPG mode that you want to retarget.
Finally, you need to source the PDL of the BISR chain with the iProc init_bisr_chains. This
PDL was created when the BISR controller RTL was generated at the chip-level. The iProc
detects the presence of the BISR controller and initiates a PowerUpEmulation. When the iProc
is called and no BISR controller is found, the iProc performs an asynchronous clear of the BISR
chains using the primary inputs (bisr_reset port).
Note
The line numbers used in this procedure refer to the command flow dofile in Example 6-20
on page 383.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Multiple Load Top-Level ATPG Pattern Retargeting
Prerequisites
• You have performed the “RTL and Scan DFT Insertion Flow for the Top Chip” on
page 227 up to the ATPG retargeting step.
Procedure
1. Set the context to pattern retargeting. (See lines 1-2.)
2. Specify the TSDB directory and open the TSDB. (See lines 4-8.)
3. Read the Tessent Cell Library. (See lines 10-11.)
4. Load the Verilog design. (See lines 13-15.)
5. Set the retargeting from the lower-level patterns. (See lines 20-24.)
6. Read the PDL of the memoryBISR chains that has the iProc “init_bisr_chains”. This
PDL is different than the one created at the wrapped core level. (See lines 30-34.)
7. Change mode to analysis. (See line 36.)
Examples
The following example retargets the ATPG pattern from the lower level to the chip-level.
1 # Set the context to retarget ATPG Patterns from lower level child cores
2 set_context pattern -scan_retargeting
3
4 # Point to the TSDB directory
5 set_tsdb_output_directory ../tsdb_outdir
6
7 # Open all the TSDB of the child cores
8 open_tsdb ../../wrapped_cores/processor/tsdb_outdir
9
10 # Read the tessent cell library
11 read_cell_library ../../library/standard_cells/tessent/adk.tcelllib
12
13 # Read the verilog
14 read_design chip_top -design_id gate
15 read_design processor -design_id gate -view graybox -verbose
16
17 set_current_design chip_top
18
19
20 # Retarget Transition patterns from processor
21 set_current_mode retarget1_processor_multiple_load
22 set_static_dft_signal_values retargeting1_mode 1
23 add_core_instances -instances {processor_inst1 processor_inst2} \
24 -core processor -mode edt_int_multiple_load_atpg
25
26 report_core_descriptions
27 import_clocks -verbose
28 report_clocks
29
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Multiple Load Top-Level ATPG Pattern Retargeting
30 # Read the PDL of the MBISR chains that has the iProc "init_bisr_chains"
31 # that needs to be called before running the ATPG pattern.
32 source ../tsdb_outdir/instruments/chip_top_rtl1_mbisr.instrument/\
33 chip_top_rtl1_tessent_mbisr.pdl
34 set_test_setup_icall init_bisr_chains -front
35
36 set_system_mode analysis
37 report_clocks
38
39 # write the TCD file for chip-level in the TSDB outdir
40 write_tsdb_data -replace
41 # Read the patterns to be retargeted
42 read_patterns -module processor -fault_type transition
43 set_external_capture_options -pll_cycles 5 [lindex [get_timeplate_list] 0]
44
45
46 # Write Verilog patterns for simulation
47 write_patterns patterns/processor_edt_multiple_load_retargeted.v \
48 -verilog -parallel -replace -begin 0 -end 7 -scan \
49 write_patterns patterns/processor_edt_multiple_load_retargeted_serial.v \
50 -verilog -serial -replace -Begin 0 -End 2 \
51 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Built-in Self Repair in Hierarchical Tessent MemoryBIST Flow
You complete the BISR insertion task with the memoryBIST insertion in the same pass at the
block or chip level. If the BISR insertion task is carried out separately from the memory BIST
insertion, you must perform BISR insertion after you have completed all memoryBIST insertion
tasks at the block or chip level in a single pass.
If you use Tessent Scan, do not scan test the BISR hardware if you plan to generate multiple
load patterns for logic test. Tessent Scan does this automatically.
In contrast, if you use a third-party scan insertion tool, then the non_scannable_instance_list in
the dft_info_dictionary should be honored and is located in the TSDB in the
dft_inserted_designs directory—see “RTL and DFT Insertion Flow With Third-Party Scan” on
page 251.
For additional information, see “First DFT Insertion Pass: Performing Top-Level MemoryBIST
and Boundary Scan” on page 230.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Block Level BISR Insertion
The tool determines the power domain of a memory instance by its bisr_power_domain_name
attribute, which you specify in the following two ways:
• Reading a CPF or UPF file corresponding to the design using the read_cpf or read_upf
command. This is the recommended method.
• Manually setting the bisr_power_domain_name attribute using the set_attribute_value
command.
The following example defines power domains with UPF:
UPF:
create_power_domain pd_A
create_power_domain pd_AA -element {mem3 mem4}
create_power_domain pd_AB -element {mem5 mem6}
BisrSegmentOrderSpecification {
PowerDomainGroup(pd_AA) {
OrderedElements {
mem3;
mem4;
}
}
PowerDomainGroup(pd_AB) {
OrderedElements {
mem5;
mem6;
}
}
For additional implementation details, see “Inserting BISR Chains in a Block” in the Tessent
MemoryBIST User's Manual.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Block Level BISR Insertion
If you want to change the generated BISR change order, you can manually modify the
<design_name>.bisr_segment_order file and change the order of memory instance names
before running the process_dft_specification command.
Note
This is not a typical use model and is rarely implemented.
Related Topics
Inserting BISR Chains in a Block
Excluding Child Block BISR Chains
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Chip Level BISR Insertion
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Performing Chip Level BISR Insertion
The following example shows two instances of the same block (blockA, instances
blockA_clka_i1 and blockA_clkb_i2), which has two BISR chains partitioned by two power
domains (pd_AA and pd_AB):
BisrSegmentOrderSpecification {
PowerDomainGroup(pd_AA) {
OrderedElements {
blockA_clka_i1/pd_AA_bisr_si;
blockA_clkb_i2/pd_AA_bisr_si;
}
}
PowerDomainGroup(pd_AB) {
OrderedElements {
blockA_clka_i1/pd_AB_bisr_si;
blockA_clkb_i2/pd_AB_bisr_si;
}
}
}
As with the block-level BISR insertion, if you change the generated BISR chain order
(<design_name>.bisr_segment_order), you can manually modify this file and change the order
of memory instance names before running the process_dft_specification command.
• Compress the repair information and write the result into the fuse box
• Decompress the fuse box contents and shift the contents into the chip BISR chain
• Initialize or observe BISR chain content via the TAP
• Read and program fuses via the TAP
Note
A BISR controller with an internal fuse box is supported. For details, refer to
“Implementing and Verifying Memory Repair” in the Tessent MemoryBIST User's Manual.
The design instance for the external fuse box must already be instantiated in the design.
Typically, the fuse box is instantiated within a module that also contains interface logic. All
input ports of the module should be tied off, and the output ports should be left open. When
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Verification of Block- and Chip-Level BISR
running the process_dft_specification command, the tool disconnects all input ports and then
reconnects the ports to the BISR controller module.
When using an external fuse box, you must set the fuse_box_location property in the
MemoryBisr/Controller wrapper to external. The fuse_box_interface_module property located
in the same wrapper can be used to specify the library module for the external fuse box. If this is
not specified, the library module is inferred from the design instance specified in the
design_instance property of ExternalFuseBoxOptions wrapper. If neither of these properties are
specified and only a single tcd_fusebox file exists in the design, the fuse box module is inferred
from this tcd_fusebox description.
The core description for the external fuse box can automatically be read in during module
matching using the “set_design_sources -format tcd_fusebox” command or directly using the
read_core_descriptions command.
If the instantiated module has a core description with a FuseBoxInterface wrapper, then
connections between the fuse box controller and the fuse box interface are completed
automatically. If a core description is not available, or not complete, explicit connections can be
made in the MemoryBisr/Controller/ExternalFuseBoxOptions/ConnectionOverrides wrapper.
Related Topics
Fuse Box Interface
Connecting the BISR Controller to an External Fuse Box
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Verification of Block- and Chip-Level BISR
You do not need to run memoryBIST with fault-inserted memories at the top level of the chip.
This type of verification is better performed at the block level where memoryBIST can be run
on the full address space of all memories.
Related Topics
PatternsSpecification
create_patterns_specification
Verifying BISR at the Block Level
Top-Level Verification and Pattern Generation
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Workflows
Verification of Block- and Chip-Level BISR
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 7
Tessent Shell Automotive Workflow
This chapter describes a pre-layout DFT insertion workflow that helps you meet the safety,
quality, and reliability requirements of the ISO 26262 “Road vehicles - Functional safety”
standard. The usage model provides capability for both manufacturing and in-system chip
testing and diagnosis. It also provides examples of how to run, and how to generate UDFM files
for, Automotive-Grade ATPG.
This chapter highlights the important steps required for you to achieve the optimal automotive
DFT strategy early in your design process. At a high level, this is a comprehensive hybrid TK/
LBIST two-pass RTL and scan DFT insertion flow that includes MemoryBIST, MBISR,
advanced BAP, boundary scan, and in-system test.
Tip
This is an advanced-level workflow, which assumes knowledge about the Tessent Shell
two-pass DFT insertion process. Familiarize yourself with the basic hybrid TK/LBIST flow
for flat models as described in “Hybrid TK/LBIST Flow for Flat Designs” on page 356. In
addition, because this is a hierarchical design, the workflow described in this chapter follows
the bottom-up DFT insertion process as described in “Tessent Shell Flow for Hierarchical
Designs” on page 203.
Refer to the following test case for a detailed usage example of the flow described in this
section:
tessent_automotive_reference_flow_<software_version>.tgz
You can access this test case by navigating to the following directory:
<software_release_tree>/share/UsageExamples/
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Introduction to Tessent Automotive
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Test Case Overview and Objective
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Test Case Overview and Objective
the parent blocks until you reach the top level of the chip. You also create ATPG core-level and
top-level patterns and perform ATPG pattern re-targeting of the wrapped cores at the parent
physical block and top level.
Note
The test case and this chapter assume that you understand the Tessent concepts and terms
for hierarchical DFT as described in “Hierarchical DFT Overview” on page 104.
Your objective is to integrate the DFT IP and provide a mechanism to test your logic and
memories during in-system operation. Considering your in-system test time constraints and
coverage requirements, you must:
• Analyze and decide on the algorithms you want to run on the memories in-system for
power-on reset (PoR) and periodic test.
• Analyze and decide the number of pseudo-random patterns during PoR and periodic
test. (This depends on the scan chain length and shift clock frequency.)
• Insert test point and x-bounding cells for LogicBIST.
• Use the advanced BAP capability to provide a low-latency protocol for configuring the
MemoryBIST controller, running Go/NoGo tests, and monitoring the pass/fail status for
in-system and manufacturing test.
• Insert the MissionMode (also known as “in-system test”) IP to access IJTAG
instruments in system, and, depending on the length of your IJTAG network, insert the
in-system test controller within individual cores as well as at the top level. As a
reference, the tool runs both CPU-based and DMA-based in-system test options.
• Test the inserted test logic. That is, the LogicBIST and EDT IP blocks in addition to
testing the core design logic. Do this by using controller chain mode, which enables you
to generate ATPG patterns that target the hybrid EDT/LBIST blocks and LogicBIST
controller in addition to the single chain mode logic and in-system test controller. While
MemoryBIST IPs can be scan tested, under EDT test mode you can test them in system
through LogicBIST.
Design Overview
The test case uses an UltraSPARC (open-source) design with a processor core and two GPS
basebands. The processor core design includes non-repairable and repairable memory, and the
GPS baseband is a logic-only core that is instantiated twice.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Test Case Overview and Objective
Following the bottom-up flow, you insert the following DFT logic at the core level.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Test Case Overview and Objective
After you have inserted the core-level IP, you perform top-level DFT logic insertion and
integration, followed by ATPG and pattern retargeting.
To test your IJTAG instrument in system and achieve high test coverage for your automotive
IC, you insert a MissionMode controller (also called the In-System Test, or IST, controller) that
intercepts the TAP controller and run MemoryBIST tests. This test case inserts a direct memory
access (DMA) MissionMode controller at the top level and a CPU-based MissionMode (MM)
controller within the GPS baseband cores. Depending on your IJTAG network length, you
might or might not need an in-system test controller at the core. A single DMA MissionMode
controller could be sufficient to run MemoryBIST and other IJTAG tests.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Test Case Overview and Objective
For details about the TSDB data flow, refer to “TSDB Data Flow for the Tessent Shell Flow” on
page 463.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Core-Level DFT Insertion for Automotive
DFT Insertion Flow for the Processor Core Physical Block . . . . . . . . . . . . . . . . . . . . . . 401
First DFT Insertion Pass: processor_core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Second DFT Insertion Pass: processor_core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Test Point, X-Bounding, and Scan Insertion: processor_core . . . . . . . . . . . . . . . . . . . . . . 409
ATPG Pattern Generation: processor_core. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
LogicBIST Fault Simulation: processor_core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
LogicBIST Pattern Generation: processor_core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
Interconnect Bridge/Open UDFM Generation: processor_core . . . . . . . . . . . . . . . . . . . . . 418
Cell-Neighborhood UDFM Generation: processor_core . . . . . . . . . . . . . . . . . . . . . . . . . . 420
Automotive-Grade ATPG Pattern Generation: processor_core . . . . . . . . . . . . . . . . . . . . . 424
DFT Insertion Flow for the GPS Baseband Physical Block. . . . . . . . . . . . . . . . . . . . . . . 431
DFT Insertion Pass With In-System Test: gps_baseband. . . . . . . . . . . . . . . . . . . . . . . . . . 432
LogicBIST Fault Simulation With One NCP: gps_baseband. . . . . . . . . . . . . . . . . . . . . . . 436
Interconnect Bridge/Open UDFM Generation: gps_baseband . . . . . . . . . . . . . . . . . . . . . . 436
Cell-Neighborhood UDFM Generation: gps_baseband . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Automotive-Grade ATPG Pattern Generation: gps_baseband . . . . . . . . . . . . . . . . . . . . . . 437
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
For in-system tests, you can apply MemoryBIST during the power-on/off phase of the device
operation or periodically while the device is operating. For details, refer to the Tessent
MissionMode User’s Manual.
Procedure
1. Load the RTL design data and set the design parameters. (See lines 1-15.)
Note
“rtl1” is the recommended naming convention for the design ID for the first insertion
pass, but you can specify any name. Refer to “Loading the Design” for more
information about setting the design ID.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
then specify the BAP connections to the system logic. You can specify the connections
within the DftSpecification wrapper or through a post-insertion procedure.
7. Generate the DFT hardware, IJTAG network connectivity, and test patterns. (See lines
79-86.)
8. Run simulations to verify the design. (See lines 88-92.)
Examples
The following dofile example shows a typical automotive command flow for a core-level first
DFT insertion. Modify the DFT specification for you design requirements.
Example 7-1. Dofile Example for First DFT Insertion Pass, processor_core
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
42 set_config_value
43 DftSpecification(processor_core,rtl1)/MemoryBist/
44 Controller(c1)/DirectAccessOptions/operation_set on
45 set_config_value
46 DftSpecification(processor_core,rtl1)/MemoryBist/
47 Controller(c1)/DirectAccessOptions/memory on
48 set_config_value
49 DftSpecification(processor_core,rtl1)/MemoryBist/
50 Controller(c1)/DirectAccessOptions/step on
51 set_config_value
52 DftSpecification(processor_core,rtl1)/MemoryBist/Controller(c1)/
53 AdvancedOptions/extra_algorithms {SMARCHCHKB SMARCHCHKBCI SMARCH
54 SMARCHCHKBCIL}
55
56 report_config_data $spec
57
58 # Specify BAP connection to system logic
59 read_config_data -in $spec/MemoryBist/BistAccessPort/Connections/
60 -from_string {
61 DirectAccess {
62 controller_select : DBAP_control/ctrl_select ;
63 step_select : DBAP_control/step_select ;
64 step_select_enable : DBAP_control/step_select_en ;
65 algorithm_select : DBAP_control/algo_select ;
66 algorithm_select_enable : DBAP_control/algo_select_en ;
67 operation_set_select : DBAP_control/opset_select ;
68 operation_set_select_enable : DBAP_control/opset_select_en ;
69 ClockDomain (-) {
70 clock : DBAP_control/clkout ;
71 reset : reset_n ;
72 test_start : DBAP_control/start;
73 test_done : DBAP_control/done ;
74 test_pass : DBAP_control/pass ;
75 }
76 }
77 }
78
79 # Generate and insert the hardware
80 process_dft_specification
81
82 extract_icl
83
84 # Generate testbench verification patterns
85 create_patterns_specification
86 process_patterns_specification
87
88 # Run and check testbench simulations
89 set_simulation_library_sources -y ../../../library/memories/
90 -extension v -v ../../../library/standard_cells/verilog/adk.v
91 run_testbench_simulations
92 check_testbench_simulations
93
94 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Note
The line numbers used in this procedure refer to the command flow dofile in Example 7-2
on page 406 unless otherwise noted.
Procedure
1. Loading the Design.
2. Follow the steps described in “Specifying and Verifying the DFT Requirements: DFT
Signals for Wrapped Cores” on page 214, ensuring that you also include the required
DFT signals for the hybrid TK/LBIST flow and for controller chain mode. (See lines 3-
31.)
3. Creating the DFT Specification with SIBs for EDT, OCC, and LogicBIST, and edit the
default specification to include the OCC, hybrid IP, and LogicBIST. (See lines 33-125.)
Use the read_config_data command to edit the DFT specification as follows:
• Specify the OCC wrapper and specify your clock intercept node for the OCC.
For details about OCC for the hybrid TK/LBIST flow, refer to “Tessent OCC TK/
LBIST Flow” in the Hybrid TK/LBIST Flow User’s Manual.
• Specify the EDT wrapper to include a LogicBistOptions wrapper, and specify a
MISR ratio of one. This reduces the chances of aliasing at the MISR (for better
debugging capability) while trading off the area.
If you want to use the edt_clock as a shift clock source for LogicBIST, specify a
dash (-) value in the interface wrapper, which caused the tool to not create a
shift_clock_src port.
• Specify a LogicBist wrapper that contains both a Controller wrapper and an
NcpIndexDecoder wrapper. Tessent Shell automatically converts the EDT controller
into a hybrid TK/LBIST controller.
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. For details, refer to “NCP Index Decoder” in the Hybrid
TK/LBIST Flow User’s Manual.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Note
When you have only one NCP, the tool does not generate an NCP index decoder.
You can use this configuration to implement a static clock sequence loaded through
the ICL network. (You notice this for the GPS baseband block.)
4. Generating the EDT, Hybrid TK/LBIST, and OCC Hardware, plus the LogicBIST
hardware. (See line 125.)
5. Extracting the ICL Module Description. (See line 127.)
6. Generating ICL Patterns and Running Simulation. (See lines 129-140.)
Results
The following figure shows the clocking and DFT controls after the second DFT insertion pass.
Figure 7-7. Enhanced Clocking and DFT Controls After Second DFT Insertion
Pass
Examples
The following dofile example shows a typical automotive command flow for a core-level
second DFT insertion. Modify the DFT specifications for you design requirements.
Example 7-2. Dofile Example for Second DFT Insertion Pass, processor_core
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
66 scan_chain_count : 10;
67 input_channel_count : 1;
68 output_channel_count : 1;
69 LogicBistOptions {
70 misr_input_ratio : 1 ;
71 ShiftPowerOptions {
72 present : on ;
73 default_operation : disabled ;
74 SwitchingThresholdPercentage {
75 min : 25 ;
76 }
77 }
78 }
79 }
80 }
81 }
82
83 # Specify the LogicBIST controller with NCP index decoder
84 read_config_data -in $spec -from_string {
85 LogicBist {
86 ijtag_host_interface : Sib(lbist);
87 Controller(1%ctrl_lbist) {
88 burn_in : on ;
89 pre_post_shift_dead_cycles : 8 ;
90 SingleChainForDiagnosis { Present : on ; }
91 ControllerChain {
92 present : on;
93 clock : tck;
94 }
95 Connections {
96 scan_en_in : scan_enable ;
97 controller_chain_scan_in : ccm_scan_in ;
98 controller_chain_scan_out : ccm_scan_out ;
99 }
100 Interface {
101 shift_clock_src : - ;
102 }
103 ShiftCycles { max : 200 ; }
104 CaptureCycles { max : 7 ; }
105 PatternCount { max : 1024 ; }
106 WarmupPatternCount { max : 512 ; }
107 }
108
109 NcpIndexDecoder{
110 Ncp(dco_clk) {
111 cycle(0): OCC(dco_clk);
112 cycle(1): OCC(dco_clk);
113 }
114 Ncp(ALL) {
115 cycle(0): OCC(dcoo_clk);
116 cycle(1): OCC(directclk);
117 }
118 Ncp(sti_occ) {
119 cycle(0): processor_core_rtl1_tessent_sib_sti_inst ;
120 }
121 }
122 } // End of LogicBIST controller wrapper
123// End of report_config_data
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
124
125process_dft_specification
126
127extract_icl
128
129# Write script for design compilation
130write_design_import_script for_dc_synthesis.tcl -replace
131
132create_patterns_specification
133process_patterns_specification
134
135set_simulation_library_sources -v
136 ../../../library/standard_cells/verilog/adk.v -y
137 ../../../library/memories ../../../library/standard_cells/verilog
138 -extension v
139
140run_testbench_simulations -simulator_option +nowarnTSCALE
141
142exit
Note
For OST, you must add the capture_per_cycle_static_en DFT signal during the DFT
insertion pass.
• X-bounding — X-bounding ensures that only valid binary values propagate through the
scan cells during test. This prevents X sources from reaching the memory elements and
corrupting the signature during LogicBIST. For details, refer to “X-Bounding” in the
Hybrid TK/LBIST Flow User’s Manual.
• Wrapper analysis — In hierarchical DFT, wrapper analysis prepares the functional
scannable sequential elements (or “flops”) for reuse as wrapper cells. Use the
analyze_wrapper_cells command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
• Scan chains — The tool inserts wrapper scan chains around the physical blocks that
connects to each input and output. The input and output wrapper chains are exercised
using the internal and external scan mode DFT control signals. For more information,
see “Performing Scan Chain Insertion: Wrapped Core” on page 216.
In addition, you must configure the controller scan chains and add a scan mode for
controller chain mode (CCM).
Note
Tessent Shell works with any third-party scan insertion or other tools. However, because all
Tessent products reside on the same code and database, you lose some automation with
third-party tools.
Note
The line numbers used in this procedure refer to the command flow dofile in Example 7-3
on page 411 unless otherwise noted.
Procedure
1. After loading the design and setting the design parameters, perform test point, X-
bounding, wrapper, and scan insertion in the merged DFT context. (See lines 7.)
2. Read the design files and specify the requirements for test points and OST observe
points. (See line 9-51.)
3. Post-test point insertion, specify the requirements for X-bounding. (See lines 60-70.)
4. Specify wrapper cell requirements and perform wrapper cell analysis. (See lines 72-77.)
For details, refer to “Scan Insertion for Wrapped Core” in the Tessent Scan and ATPG
User’s Manual.
5. Activate controller chain segments. (See lines 79-82.)
By default, CCM scan segments in Tessent IP cores are not active to prevent them from
being confused with standard scan elements. You must activate a CCM scan mode on
Tessent IP instances before adding them to the scan mode population.
6. Specify the scan modes: internal, external, and controller chain. (See lines 84-94.)
For internal and external modes, connect the scan chains to the EDT block. For CCM
mode, ensure that you only include CCM scan segments as valid scan elements.
7. Analyze scan chains and insert X-bounding, wrapper, and scan chain logic. (See lines
96-103.)
Examples
The following dofile shows a command flow for test point and scan insertion.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Example 7-3. Dofile Example for Test Point and Scan Insertion, processor_core
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
49
50 # Set mcp_bounding_en to 1 to gate BIST.CLK and prevents additional
hardware bounding logic
51 set_static_dft_signal_values mcp_bounding_en 1
52
53 # Check design rule
54 set_system_mode analysis
55
56 # Report clocks and dft signals
57 report_clocks
58 report_dft_signals
59
60 # Analyze test points
61 analyze_test_points
62 write_test_point_dofile processor_core_tpi.dofile -all -replace
63
64 ## Exclude reset from X-bounding to avoid XB DRC. Handled by wrapper
insertion. Automation in 19.2
65 set_xbounding_options -exclude {reset_n}
66
67 ## Perform X-bounding for LBIST
68 analyze_xbounding
69 report_xbounding -verbose > xbound_list
70 report_xbounding -verbose -ignored_x_sources on >
xbound_list_with_ignored_x_source
71
72 # Exclude the edt_channel in and out ports from wrapper chain analysis.
The ijtag_* edt_update ports are automatically excluded
73 set_wrapper_analysis_options -exclude_ports [ get_ports
{*_edt_channels_*} ]
74
75 # Perform wrapper cell analysis
76 analyze_wrapper_cells
77 report_wrapper_cells -Verbose > wrapper_cell.rpt
78
79 # Set attribute value for in-built chains for controller_chain_mode
80 set_attribute_value [get_instances *tessent_single_chain_mode_logic_*]
-name active_child_scan_mode -value controller_chain_mode
81 set_attribute_value [get_instances *tessent_lbist_inst] -name
active_child_scan_mode -value controller_chain_mode
82 set_attribute_value [get_instance -of_module *_edt_lbist_c1] -name
active_child_scan_mode -value controller_chain_mode
83
84 # Specify different modes (internal and external) how the chains need to
be stitched
85 # The type internal/external and enable_dft_signal are inferred from
registered DFT Signals(int_mode and ext_mode)
86 # Create a scan mode and specify EDT instance to connect the scan chains
to
87 set ccm [get_scan_elements -of_child_scan_mode controller_chain_mode]
88 set core [remove_from_collection [get_scan_elements] $ccm]
89 #set core [remove_from_collection [get_scan_elements -class core] $ccm]
90 set edt_instance [get_instances -of_icl_instances [get_icl_instances
-filter tessent_instrument_type==mentor::edt]]
91
92 add_scan_mode int_mode -edt $edt_instance -include_elements $core
-enable_dft_signal int_mode
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
For information about graybox models, refer to “Graybox Model” on page 108.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Procedure
Perform ATPG as described in “Performing ATPG Pattern Generation: Wrapped Core” on
page 220 with the following extra considerations:
a. After running ATPG on the internal mode and saving the collateral data to the TSDB
with the write_tsdb_data command (step 3-d), do the following:
i. Return to setup mode and disable the memory_bypass_en signal.
ii. Read the PDL of the BISR chains that have the init_bisr_chains iProc. The
procedure is located at:
/tsdb_outdir/instruments/
processor_core_rtl1_mbisr.instrument/
processor_core_rtl1_tessent_mbisr.pdl
iii. Run ATPG on the internal mode again and save the data with the
write_tsdb_data command.
ATPG generates a multiple load pattern that can scan through the memory. You
can use multiple load scan patterns to generate scan patterns through ROM and
RAM memories. Before generating multiple load patterns on repairable
memories, any repair information that was previously generated by the
MemoryBIST run must be applied to the memory repair ports.
For details, refer to “Running Multiple Load ATPG on Wrapped Core Memories
with Built-In Self Repair” on page 378.
iv. Use the read_faults command to merge the fault list from running external mode
to find the total overall fault coverage of the wrapped core.
b. Run ATPG on the controller chain mode to create APTG patterns for the following
test logic IPs: hybrid controller, LogicBIST controller, single chain mode logic, and
in-system test controller. Do the following:
i. Load the wrapped cores that contain the child wrapped cores.
ii. If you used Tessent Scan for scan insertion, specify “import_scan_mode
controller_chain_mode” to import the controller chain mode.
iii. Specify a unique ATPG mode name for controller chain mode, such as ccm. For
example:
set_current_mode ccm
iv. After running DRC, generate the ATPG patterns, and store the TCD, flat model,
fault list and PatDB files in the TSDB using the write_tsdb_data command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
The generated ATPG patterns are core-level patterns. You generate these
patterns again at the top level.
v. Use the read_faults command to merge the fault list from running internal mode
to find the total overall fault coverage of the wrapped core.
Note
The line numbers used in this procedure refer to the command flow in Example 7-4 on
page 416. Refer to “Performing LogicBIST Fault Simulation” on page 373 for additional
details about some of the following steps.
Procedure
1. Loading the Design. (See lines 1-10.)
2. Set the current test mode to a unique name for the new pattern set you create to test the
hybrid IP. (See line 12.)
3. Import the core’s internal mode data—that is, the scan-inserted design data for the EDT
and OCC logic. (See line 14.)
Using the import_scan_mode command assumes that you used Tessent Scan to perform
scan chain stitching.
4. Add the hybrid TK/LBIST core instances. (See line 16.)
You must explicitly add the LogicBIST controller core.
5. Specify the capture procedure names and the count percentage to repeat the NCP once
every 256 patterns. (See lines 18-19.)
6. Specify the order of the NCPs. (See lines 21-25.)
7. Read in the NCP testproc file. (See lines 29-32.)
8. Add the faults and specify the maximum number of pseudo-random patterns you want
the tool to simulate. (See lines 34-35.)
9. Set the pattern source to LogicBIST and run fault simulation. (See line 36.)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
10. Write out the parallel testbench and save the data into the TSDB. (See lines 38-40.)
Examples
The following dofile example shows a typical command flow for LogicBIST fault simulation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Note
The line numbers used in this procedure refer to the command flow in Example 7-5 on
page 417. Refer to “Perform LogicBIST Pattern Generation” on page 375 for additional
details about some of the steps in the following.
Procedure
1. Loading the Design, ensuring that you set the context to “patterns -ijtag”. (See lines 1-
7.)
The design ID should be the same design you used for LogicBIST fault simulation.
2. Create the patterns specification. (See lines 15-16.)
3. Edit the patterns specification to specify the LogicBIST pattern configuration. (See lines
18-52.)
If you want to debug Xs in your MISR during simulation, you can enable debugging
with the logic_bist_debug property.
4. Generate the IJTAG patterns for LogicBIST and run simulation. (See lines 55-63.)
Examples
The following dofile shows a command flow for generating IJTAG patterns for LogicBIST in
the automotive Tessent Shell flow.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
26 Patterns(ICLNetwork) {
27 ICLNetworkVerify(processor_core) {
28 }
29 }
30 Patterns(LogicBist_processor_core) {
31 ClockPeriods {
32 dco_clk : 3.00ns;
33 directclk: 12.00ns;
34 test_clock_u: 100.00ns;
35 }
36 SimulationOptions {
37 # You can opt to enable debugging Xs in the MISR during simulation
38 logic_bist_debug : off;
39 }
40 TestStep(serial_load) {
41 LogicBist {
42 CoreInstance(.) {
43 run_mode : run_time_prog;
44 mode_name : lbist_sa ;//same as set_current_mode in
45 lbist fault simulation
46 begin_pattern : 0;
47 end_pattern : 255 ;
48 misr_compares : 1 ;
49 }
50 }
51 }
52 }
53 }
54
55 process_patterns_specification
56
57 set_simulation_library_sources -y ../../../library/memories/ -extension v
58 -v ../../../library/standard_cells/verilog/adk.v
59
60 run_testbench_simulation -simulator_options { -voptargs="+acc" }
61
62 # Use the following command if simulation fails
63 check_testbench_simulations -report_status
64
65 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Note
The line numbers used in this procedure refer to the command flow in “Dofile Example for
Interconnect Bridge/Open UDFM Generation, processor_core” on page 419. Refer to the
following directory, which has a usage example described in this section:
tessent_automotive_reference_flow_<software_version>/wrapped_cores/processor_core/
11.extract_fault_sites
Procedure
1. Load the post-layout design and generate a flat model. (See lines 1-19.)
2. Load the flat model. (See lines 21–23.)
3. Read in the layout data and generate an LDB. (See lines 25-34.)
4. Load the LDB by applying the open_layout command, and then apply the
extract_fault_sites command with an output file name to generate a UDFM. (See lines
36-40.)
Note
Use “all” as the defect_types option for the extract_fault_sites command to write out
both bridges and opens to the UDFM file.
Examples
Figure 7-9. Interconnect Bridge/Open UDFM Generation Flow for
processor_core
The following dofile shows a command flow for generating a bridge/open UDFM for use in the
Automotive-Grade ATPG flow.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
To generate a cell-neighborhood UDFM, extract cell-neighborhood pairs from the design LDB,
then feed the cell pairs information into Tessent CellModelGen. Combine the UDFM files for
all individual cell pairs into a single UDFM file. The required input data is the same as the data
required for generating a cell-aware UDFM on standard cells. For information on Tessent
CellModelGen or input requirements, refer to the Tessent CellModelGen Tool Reference.
Note
The line numbers used in this procedure refer to the command flow in “Dofile Example for
Extracting Cell-Neighborhood Pairs, processor_core” on page 422. Refer to the following
directory, which has a usage example described in this section:
tessent_automotive_reference_flow_<software_version>/wrapped_cores/processor_core/
11.extract_fault_sites
Procedure
1. Extract cell-neighborhood pairs.
a. Load the flat model generated for interconnect bridge/open UDFM generation. (See
lines 1-5.)
b. Load the LDB using the open_layout command, which is generated for interconnect
bridge/open UDFM generation. (See line 7.)
c. Run the extract_inter_cell_data command, specifying an output file name to write
the extracted cell-neighborhood pairs. (See line 9.)
2. Generate the UDFM using Tessent CellModelGen with the extracted cell-neighborhood
pairs.
a. Before running Tessent CellModelGen, ensure that all the required input data is
available and all the required tools are accessible.
b. Create an empty directory, and retrieve run scripts.
cellmodelgen -get_script all
c. Copy the run_flow.merge script into your working directory from the lib/scripts
directory, which you get from step b.
d. Modify the run_flow.merge script for your design. Refer to the comments in the
script for details. The output file from step 1, the extracted inter-cell pairs, is the
input to the run_flow.merge script.
e. Run the run_flow.merge script to run Tessent CellModelGen with the cell-
neighborhood pairs. Specify the filename of the extracted cell-neighborhood pairs
and a working directory name.
f. Copy the run_export.merge script into your working directory from the lib/scripts
directory, which you get from step b.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
The following dofile shows a command flow for generating a bridge/open UDFM for use in the
Automotive-Grade ATPG flow.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
5 read_flat_model flat/${design_name}_post.flat
6
7 open_layout ldb/${design_name}.ldb
8
9 extract_inter_cell_data -output_file inter_cell_data/
${design_name}_cellpairs.data -rep
10
11 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Refer to “UDFM Generation for Cell-Aware ATPG” on page 453 for details on how to generate
the cell-aware UDFM for your technology library.
As you do for regular ATPG, you must generate a graybox model; then, you must perform
ATPG twice: once for the core’s external mode and once for its internal mode. When you run
ATPG in external mode or internal mode, you can run ATPG with topoff runs by loading only
the UDFM files you want to target during an ATPG run. Also, you can run ATPG all together
by reading in all UDFM files at once.
tessent_automotive_reference_flow_<software_version>/wrapped_cores/processor_core/
12.generate_AGA_patterns
Prerequisites
• Existing patterns from previous ATPG runs.
• Existing UDFM file(s) for your technology library and design.
Procedure
1. Load the flat model generated from a post-layout design. (See lines 1–11.)
2. Set a fault type, read in the UDFM file for your standard cells, and add faults. (See lines
14-18.)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Examples
Figure 7-11. ATPG Topoff Run Flow With a UDFM for processor_core
The following dofile shows a command flow for generating Automotive-Grade ATPG flow
topoff patterns.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Example 7-8. Dofile Example for Running Topoff ATPG With a UDFM in Internal
Mode for processor_core
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
tessent_automotive_reference_flow_<software_version>/wrapped_cores/processor_core/
12.generate_AGA_patterns
Prerequisites
• Existing UDFM file(s) for your technology library and design.
Procedure
1. Load the flat model generated from a post-layout design. (See lines 1–11.)
2. Set a fault type and read in the UDFM files for your standard cells, interconnect bridge/
open, and cell-neighborhood defects. Then add faults. (See lines 14-20.)
3. Create patterns. (See line 24.)
4. Write the patterns. (See line 27.)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
Examples
Figure 7-12. ATPG Run Flow With All UDFM for processor_core
The following dofile shows a command flow for generating Automotive-Grade ATPG flow
patterns using only UDFMs.
Example 7-9. Dofile Example for Running ATPG With Only UDFMs in Internal
Mode for processor_core
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the Processor Core Physical Block
12
13 # Cell-Aware Test Pattern Generation
14 set_fault_type udfm -static_fault
15 read_fault_sites \
16 ../../../udfm_gen/stdlib/udfm/NangateOpenCellLibrary.udfm
17 read_fault_sites ../11.extract_fault_sites/udfm/
${design_name}_brdg_opn.udfm
18 read_fault_sites ../11.extract_fault_sites/udfm/CELLS_neighbor.udfm
19 report_fault_sites -undefined_cells
20 add_fault_sites -all
21 add_faults -all
22 report_statistics -detail
23
24 # Generate patterns
25 create_patterns
26 report_statistics -detail
27
28 write_patterns patterns/${design_name}_int_AGA_static.stil.gz -stil -rep
29 write_faults faults/${design_name}_int_AGA_static.faults.gz -rep
30
31 # Write Verilog patterns for simulation
32 write_patterns patterns/${design_name}_int_AGA_static_parallel.v -verilog
-parallel -replace
33 set_pattern_filtering -sample_per_type 2
34 write_patterns patterns/${design_name}_int_AGA_static_serial.v -verilog
-serial -replace
35
36 # To understand the coverage of the faults testable by Internal mode it is
necessary to
37 # eliminate the undetected faults that would otherwise be detected in
External mode. This is done
38 # by merging the fault list from running the graybox in External mode
39 #read_faults -mode ATPG_ext -fault_type udfm -merge
40 read_faults faults/${design_name}_ext_AGA_static.faults.gz -merge
41
42 # Final coverage of the core that includes both Internal and External
modes
43 report_stat -detail
44
45 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the GPS Baseband Physical Block
This section highlights aspects of the flow for gps_baseband that differ from processor_core:
DFT insertion and LogicBIST fault simulation. Refer to the test case for dofile details.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the GPS Baseband Physical Block
Procedure
1. Loading the Design. (See lines 1-8.)
2. Follow the steps described in “Specifying and Verifying the DFT Requirements: DFT
Signals for Wrapped Cores” on page 214, ensuring that you also include the required
DFT signals for the hybrid TK/LBIST flow and for controller chain mode. (See lines 10-
35.)
Constrain the enable signal for the in-system test controller to 0 for manufacturing test.
The tool emulates the control of this port during in-system test. (See lines 25-26.)
For the DFT signals, create a new port if a source node does not exist. The ports are
created only if set_design_level is not chip.
3. Creating the DFT Specification with SIBs for EDT, OCC, and LogicBIST, and edit the
default specification to insert the OCC, hybrid IP, and in-system test controllers. (See
lines 37-138.)
As you did with the processor core, use the read_config_data command to edit the DFT
specification.
• Specify the OCC wrapper and specify your clock intercept node for the OCC.
For details about OCC for the hybrid TK/LBIST flow, refer to “Tessent OCC TK/
LBIST Flow” in the Hybrid TK/LBIST Flow User’s Manual.
• Specify the EDT wrapper to include a LogicBistOptions wrapper, and specify a
MISR ratio of one.
The edt_clock and edt_update signals are automatically connected to EDT instances,
and the EDT controller is built with bypass.
• Specify a LogicBist wrapper that contains both a Controller wrapper and an
NcpIndexDecoder wrapper.
Because this core has a single clock, you only need one NCP; the tool does not
generate the NCP index decoder.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the GPS Baseband Physical Block
• Specify an InSystemTest wrapper, ensuring that you specify that you are using the
CPU interface.
Create a TCD segment for this instrument, and specify the in-system test controller
connections using the Connections wrapper.
4. Generating the EDT, Hybrid TK/LBIST, and OCC Hardware, plus the LogicBIST and
in-system test hardware. (See line 139.)
5. Extracting the ICL Module Description. (See line 141.)
6. Generating ICL Patterns and Running Simulation. (See lines 143-151.)
Examples
The following dofile example shows a typical automotive command flow for a core-level first
DFT insertion. Modify the DFT specifications for you design requirements.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the GPS Baseband Physical Block
36
37 # Create and report the DFT specification
38 set spec [create_dft_specification -sri_sib_list {edt occ lbist} ]
39 report_config_data $spec
40
41 # Edit DFT specification to specify OCC’s SIB and to insert OCC
42 # Modify for your design requirements
43 read_config_data -in $spec -from_string {
44 OCC {
45 ijtag_host_interface : Sib(occ);
46 static_clock_control : external;
47 }
48 }
49
50 # Specify OCC insertion and intercept node
51 # This is a generic method for populating the OCC; modify for your design
52 # Scan enable and shift capture clock signals are automatically connected
53 # to the OCC instances
54 set id_clk_list [list \
55 clk clk\
56 ]
57 foreach {id clk} $id_clk_list {
58 set occ [add_config_element OCC/Controller($id) -in $spec]
59 set_config_value clock_intercept_node -in $occ $clk
60 }
61
62 # Specify the hybrid EDT configuration
63 read_config_data -in $spec -from_string {
64 EDT {
65 ijtag_host_interface : Sib(edt);
66 Controller (c1) {
67 longest_chain_range : 50, 65 ;
68 scan_chain_count : 60;
69 input_channel_count : 2;
70 output_channel_count : 2;
71 LogicBistOptions {
72 misr_input_ratio : 1 ;
73 ShiftPowerOptions {
74 present : on ;
75 default_operation : disabled ;
76 SwitchingThresholdPercentage {
77 min : 25 ;
78 }
79 }
80 }
81 }
82 }
83 }
84
85 # Specify the LogicBIST controller with NCP index decoder
86 read_config_data -in $spec -from_string {
87 LogicBist {
88 ijtag_host_interface : Sib(lbist);
89 Controller(1%ctrl_lbist) {
90 burn_in : on ;
91 pre_post_shift_dead_cycles : 8 ;
92 SingleChainForDiagnosis { Present : on ; }
93 ControllerChain {
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the GPS Baseband Physical Block
94 present : on;
95 clock : tck;
96 }
97 Connections {
98 scan_en_in : SCAN_EN_w ;
99 controller_chain_scan_in : ccm_scan_in ;
100 controller_chain_scan_out : ccm_scan_out ;
101 }
102 Interface {
103 shift_clock_src : - ;
104 }
105 NcpOptions {
106 count : 1 ;
107 }
108 ShiftCycles { max : 200 ; }
109 CaptureCycles { max : 7 ; }
110 PatternCount { max : 1024 ; }
111 WarmupPatternCount { max : 512 ; }
112 }
113
114# Specify the in-system test controller
115read_config_data -in $spec -from_string {
116 InSystemTest {
117 Controller(c0) {
118 protocol : cpu_interface ;
119 host_interface : HostScanInterface(ijtag) ;
120 data_width : 8 ;
121 ControllerChain {
122 present : on ;
123 clock : tck ;
124 segment_per_instrument : on ;
125 }
126 Connections {
127 reset : hw_rstn; //reset of gps_baseband core
128 CpuInterface {
129 clock : cpu_interface_clock ;
130 enable : mission_test_enable ;
131 write_en : from_cpu_write_en ;
132 data_in : data_in;
133 data_out : data_out;
134 }
135 }
136 }
137 }
138}
139process_dft_specification
140
141extract_icl
142
143# Write script for design compilation
144write_design_import_script for_dc_synthesis.tcl -replace
145
146set pat_spec [ create_patterns_specification ]
147process_patterns_specification
148
149run_testbench_simulations
150# If simulation fails use the command below to see which pattern failed
151check_testbench_simulations
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the GPS Baseband Physical Block
152
153exit
Example 7-11. Dofile Example for LogicBIST Fault Simulation With One NCP
...
set_system_mode analysis
...
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
DFT Insertion Flow for the GPS Baseband Physical Block
Refer to the following directory, which has an example on the gps_baseband module:
tessent_automotive_reference_flow_<software_version>/wrapped_cores/gps_baseband/
10.extract_fault_sites
Refer to the following directory, which has an example on the gps_baseband module:
tessent_automotive_reference_flow_<software_version>/wrapped_cores/gps_baseband/
10.extract_fault_sites
Refer to the following directory, which has an example on the gps_baseband module:
tessent_automotive_reference_flow_<software_version>/wrapped_cores/gps_baseband/
11.generate_AGA_patterns
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Top-Level DFT Insertion for the Automotive Flow
For general information about the RTL and scan DFT insertion flow for the top chip, refer to
“RTL and Scan DFT Insertion Flow for the Top Chip” on page 227. (The documented process
relates to a hierarchical test case; however, the basic flow remains the same.)
First DFT Insertion Pass: Top with MemoryBIST, BISR, and Boundary Scan . . . . . . 438
Second DFT Insertion Pass: Top with EDT, OCC, and In-System Test . . . . . . . . . . . . 444
Scan Insertion for the Top Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
ATPG Pattern Generation for the Top Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
ATPG Pattern Retargeting for the Top Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Interconnect Bridge/Open UDFM Generation for the Top Design . . . . . . . . . . . . . . . . 452
Cell-Neighborhood UDFM Generation for the Top Design. . . . . . . . . . . . . . . . . . . . . . . 452
Automotive-Grade ATPG Pattern Generation for the Top Design . . . . . . . . . . . . . . . . 453
UDFM Generation for Cell-Aware ATPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
TCA Based Pattern Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
First DFT Insertion Pass: Top with MemoryBIST, BISR, and Boundary Scan
Note
You must perform the first DFT insertion pass, even if you do not use MemoryBIST or
boundary scan to insert IJTAG to configure your child blocks. You cannot run logic test
DRC in this first pass. Logic test DRC requires that the child blocks are connected to the
network in order to be configured. Because of this, you can only run logic test DRC on the
second DFT insertion pass, after the network is configured.
Note
For general instructions about inserting MemoryBIST and boundary scan at the top level,
refer to “First DFT Insertion Pass: Performing Top-Level MemoryBIST and Boundary
Scan” on page 230. This test case adds in the BISR and DMA memory block to the baseline use
case.
Note
Because you cannot use the in-system test patterns from the DMA memory block to test that
memory block, do not create in-system test patterns for testing the DMA memory.
If you plan to insert a LogicBIST controller at the same level as the DMA IST controller to
generate in-system test logic test patterns (not illustrated by this test case), ensure that the DMA
IST controller and its memory block have the same async clock source. In addition:
• Isolate the DMA memory block, its MemoryBIST logic, and the IST controller by
pushing them into their own module.
• If isolation is not possible because of design considerations, exclude the observation
logic inside the memory interface by disabling the observation_xor_size property. (The
MemoryBIST controller and MemoryBIST interface are scannable logic.) This prevents
a MISR signature difference between manufacturing and in-system LogicBIST tests.
For example:
set_config_value DftSpecification(processor_core,rtl1)/MemoryBist/
Controller(c2)/Step/MemoryInterface(m1)/observation_xor_size off
The memory bypass mux is supported in this scenario as long as you are directly
connecting the memory data output to the IST controller data input.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
First DFT Insertion Pass: Top with MemoryBIST, BISR, and Boundary Scan
Note
The line numbers used in this procedure refer to the command flow dofile in Example 7-12
on page 441 unless otherwise noted.
Prerequisites
• To insert boundary scan, you must have an RTL design with instantiated I/O pads if you
are using a chip-level design.
• For RTL netlists, you must have a Tessent cell library or the pad library.
Procedure
1. Load the design, including opening the TSDBs for the child cores: processor_core and
gsp_baseband. (See lines 1-25.)
In addition, load the design for the DMA memory block, fusebox, and fusebox interface.
The dofile example shows an example fusebox. You must include an efuse and efuse
interface in your design unless you are opting for soft repair only.
2. Specify the DFT specification requirements. (See line 27.)
When you set the design level to chip, “-memory_test on” automatically initiates BISR
insertion if BISR chains exist on blocks instantiated in the current design or repairable
memories exist in the current design. This assumes that you have not changed the
set_dft_specification_requirements -memory_bist, -memory_bisr_chains, and
-memory_bisr_controller options from their default auto settings.
3. Identify TAP pins and pins that cannot add boundary scan cells. (See lines 29-41.)
4. Add DFT signals and clocks. (See lines 43-50.)
5. Create the connections for the CPU-based and DMA IST controllers. (See lines 52-68.)
You must connect the CPU-based IST controllers that you inserted at the block level so
that they can be controlled by the system logic. In addition, create the connection
between the DMA memory block and the DMA IST controller clock.
You can use a post-insertion script to connect the system logic with the IST controller.
6. Check the design rules and create the DFT specification. (See lines 70-76.)
7. Segment the boundary scan to be used during logic test. (See lines 78-79.)
8. Create the BISR controller connections for the clock, VDD, and fusebox. (See lines 81-
91.)
To connect the BISR controller to the system logic, you must specify the connection for
the BISR controller to use for repair clock, BISR reset, and VDD. Typically, system
logic is connected to the BISR controller for initiating memory repair and monitoring
the progress of the operation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
First DFT Insertion Pass: Top with MemoryBIST, BISR, and Boundary Scan
The BISR controller input clock must be driven by an appropriate functional clock.
Specify the connection with the repair_clock_connection property in the
DftSpecification/MemoryBisr/Controller wrapper. The BISR controller input signal
resets the BISR chains and initiates memory repair. Specify the reset signal with the
repair_trigger_connection property in the DftSpecification/MemoryBisr/Controller
wrapper. Also, specify your fusebox module and its location.
9. Identify the functional pins to be shared with EDT channel pins and add the required
auxiliary I/O logic. (See lines 93-100.)
10. Generate the hardware and extract ICL. (See lines 104-106.)
11. Generate ICL patterns and simulation testbenches for the controllers and instruments in
the current and lower physical instances. (See lines 108-115.)
To re-run the lower physical instance simulations at higher levels, enable the
set_default_values simulate_instruments_in_lower_physical_instances property.
12. Run and check testbench simulations. (See lines 117-130.)
Examples
The following dofile example shows a command dofile for the top-level first DFT insertion pass
for the automotive flow.
Example 7-12. Dofile Example for Top-Level First DFT Insertion Pass,
Automotive Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
First DFT Insertion Pass: Top with MemoryBIST, BISR, and Boundary Scan
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
First DFT Insertion Pass: Top with MemoryBIST, BISR, and Boundary Scan
85 MemoryBisr/Controller/programming_voltage_source VDD/C
86 set_config_value -in $spec MemoryBisr/Controller/
87 repair_trigger_connection BISR_RESET/C
88 set_config_value -in $spec MemoryBisr/Controller/fuse_box_location
89 external
90 set_config_value -in $spec MemoryBisr/Controller/
91 fuse_box_interface_module genericFuseBox
92
93 # Add auxilary MUX on the inputs and outputs used for EDT channel pins
94 read_config_data -in ${spec}/BoundaryScan -from_string {
95 AuxiliaryInputOutputPorts {
96 auxiliary_input_ports : GPIO1_0, GPIO1_1, GPIO1_2, GPIO1_3;
97 auxiliary_output_ports : GPIO2_0, GPIO2_1, GPIO2_2, GPIO2_3, GPIO1_0,
98 GPIO1_1 ;
99 }
100}
101
102report_config_data $spec
103
104process_dft_specification
105
106extract_icl
107
108# Include the lower-level physical instances for IJTAG retargeting
109set_defaults_value PatternsSpecification/SignOffOptions/
110 simulate_instruments_in_lower_physical_instances on
111
112# Create pattern testbenches to verify the inserted DFT logic
113set pat_spec [create_patterns_specification]
114
115process_pattern_specification
116
117set_simulation_library_sources -v ../../library/standard_cells/verilog/ \
118*.v
119-v ../rtl/noncore_blocks/pll.v \
120-v ../rtl/noncore_blocks/pad8_io_macro.v \
121-v ../rtl/noncore_blocks/iopad_sel.v \
122-v ../rtl/noncore_blocks/iopad.v \
123-v ../../library/memories/SYNC_1RW_8Kx16.v \
124-v ../../library/memories/SYNC_1RW_32x16_RC.v \
125-v ../../library/memories/SYNC_1R1W_4096x8.v \
126-v ../../library/standard_cells/verilog/adk.v \
127-v fusebox/LVFuseBox.vb
128
129run_testbench_simulations -exclude {InSystemTest_0_MemoryBist_P1}
130check_testbench_simulations -report_status
131
132exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Second DFT Insertion Pass: Top with EDT, OCC, and In-System Test
Note
The line numbers used in this procedure refer to the command flow dofile in Example 7-13
on page 445 unless otherwise noted.
Procedure
1. Load the design. (See lines 1-14.)
Ensure that you load in the TCD for the DMA memory block that is used for in-system
test. (See line 10.)
2. Add DFT signals. (See lines 16-30.)
Ensure that you include a DFT signal for controller chain mode and define retargeting
modes for each group of wrapped cores whose ATPG patterns you want to retarget.
3. Apply the add_dft_modal_connections command to specify the TAM and to connect the
EDT channel IOs of the wrapped cores to top-level pins via the TAM. (See lines 32-76.)
Include connections for controller chain mode. For the processor core, use
retargeting_mode1, and for the GPS baseband, use retargeting_mode2.
With Tessent Shell you can share functional pins as EDT channel pins. The dofile shows
that the input pin GPI01_0 is shared as an EDT channel input pin, and the output pin
GPI02_0 is shared as an EDT channel output pin. Different modes can also share input
and output pins. For example, GPIO1_2 functions as both the processor core EDT mode
channel input and the controller chain mode uncompressed input for the entire design.
4. Set the DFT specification requirements. (See line 78.)
5. Create and process the DFT specification, using the read_config_data command to add
the EDT controller with bypass and the DMA IST controller. (See lines 83-150.)
The top-level EDT controller includes bypass, and the edt_clock and edt_update signals
are automatically connected to EDT instances. The
connect_bscan_segments_to_lsb_chains property defaults to auto and connects the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Second DFT Insertion Pass: Top with EDT, OCC, and In-System Test
divided boundary scan segments from the previous insertion pass to the top-level EDT
controller.
Using the set_config_value command, connect the top-level EDT channels that you left
unconnected during step 3 to the GPIO ports. (See lines 108-114.) The controller chain
connections are completed during scan insertion.
Finally, insert the DMA IST controller. (See lines 116-150.) Set the protocol property to
direct_memory_access. To account for ATPG coverage of the IST controller under
controller chain mode, you can specify a TCD scan segment. Specify the data width,
address width, and max_test_program_count that determine the bus width of the IST
controller’s program index, and thus the number of patterns that are programmed for the
controller. In addition, specify the connections for the DirectMemoryAccess interface.
The DMA IST controller inserts a comparator circuit and outputs a fail flag and done bit.
6. Generate ICL patterns and simulation testbenches for the instruments in the current and
lower physical instances. (See lines 152-172.)
Create the in-system test patterns for the IJTAG instruments you want to test. The dofile
example illustrates applying the MemoryBist_P1 pattern to test the memory inside the
processor core. The resulting Verilog testbench file is named
FilePrefix_TestProgramIndex_PatternSetName.v, and the memory file (for use with the
DMA IST controller) is named testbench_file_name.mem.
7. Run and check testbench simulations. (See line 174-194.)
For in-system test, ensure that you point to the memory file that contains the control
instructions for the testbench and the data necessary for interaction with the DMA IST
controller. (See line 191.) This file has the same name as the testbench file with the
addition of a “.mem” suffix. The testbench loads the memory file during simulation.
In addition, add three levels to the IST controller’s actual location because the run
occurs inside three levels in the simulation_outdir directory.
After running the in-system test patterns, run the remaining testbench simulations for the
top and the physical blocks.
Examples
The following dofile example shows a command dofile for the top-level second DFT insertion
pass for the automotive flow.
Example 7-13. Dofile Example for Top-Level Second DFT Insertion Pass,
Automotive Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Second DFT Insertion Pass: Top with EDT, OCC, and In-System Test
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Second DFT Insertion Pass: Top with EDT, OCC, and In-System Test
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Second DFT Insertion Pass: Top with EDT, OCC, and In-System Test
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Scan Insertion for the Top Design
181-v ../../library/memories/SYNC_1RW_32x16_RC.v \
182-v ../../library/memories/SYNC_1R1W_4096x8.v \
183-v ../../library/standard_cells/verilog/adk.v \
184-v fusebox/LVFuseBox.vb
185
186# Add three levels to the actual location because the run occurs inside
187# three levels in the simulation_outdir/
188run_testbench_simulations -simulator_option
189 { +nowarnTSCALE -voptargs="+acc"
190 +IST_INIT_MEM=../../../../tsdb_outdir/patterns/
191 chip_top_rtl2.patterns_signoff/InSystemTest.mem }
192 -select InSystemTest_0_MemoryBist_P1
193
194run_testbench_simulations -exclude {InSystemTest_0_MemoryBist_P1 }
195
196exit
Note
Tessent Shell works with any third-party scan insertion or other tools. However, because all
Tessent products reside on the same code and database, you lose some automation with
third-party tools.
Note
The line numbers used in this procedure refer to the command flow dofile in Example 7-14
on page 450 unless otherwise noted.
Procedure
1. Load the design. (See lines 1-12.)
Ensure that you specify a unique design ID, and that you open the TSDB for all the child
cores.
2. Exclude some design objects from the scan insertion process. (See lines 17-19.)
Exclude the pipeline stages that you added using add_dft_modal_connections and the
fusebox instance.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Scan Insertion for the Top Design
Examples
The following dofile example shows a command dofile for top-level scan insertion for the
automotive flow.
Figure 7-14. Dofile Example for Top-Level Scan Chain Insertion, Automotive
Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
ATPG Pattern Generation for the Top Design
22
23 set_system_mode analysis
24
25 # Create a scan mode to connect scan chains to EDT
26 set edt_instance [get_name_list [get_instance -of_module [get_name
27 [get_icl_module -of_instances chip_top* -filter
28 tessent_instrument_type==mentor::edt]]] ]
29
30 add_scan_mode edt_mode -edt_instance $edt_instance
31
32 # Start creating a scan mode for controller_chain_mode
33 set_attribute_value [get_instance -of_module *in_system_test*] -name
34 active_child_scan_mode -value controller_chain_mode
35 set_attribute_value [get_instance PROCESSOR_1] -name
36 active_child_scan_mode -value controller_chain_mode
37 set_attribute_value [get_instance GPS_1] -name active_child_scan_mode
38 -value controller_chain_mode
39 set_attribute_value [get_instance GPS_2] -name active_child_scan_mode
40 -value controller_chain_mode
41
42 # Create a scan chain family for elements at the top
43 create_scan_chain_family ccm_mm_top -include_elements
44 [get_scan_elements -of_child_scan_mode controller_chain_mode]
45
46 # Create the ccm scan mode and include elements at core and top
47 add_scan_mode controller_chain_mode -include_chain_families
48 {ccm_mm_top}
49 -include_elements{controller_chain_mode/PROCESSOR_1/ccm_scan_out
50 controller_chain_mode/GPS_1/ccm_scan_out
51 controller_chain_mode/GPS_2/ccm_scan_out} -si_connections
52 [get_single_name [get_auxiliary_pins GPIO1_2 -direction input]]
53 -so_connection [get_single_name [get_auxiliary_pins GPIO2_2
54 -direction output] ] si_associated_ports GPIO1_2
55 -so_associated_ports GPIO2_2 -enable_dft_signal controller_chain_mode
56
57 analyze_scan_chains
58 report_scan_chains
59
60 insert_test_logic
61 report_scan_cells > scan_cells.list
62
63 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
ATPG Pattern Retargeting for the Top Design
If you used Tessent Scan to insert the scan chains, specify the import_scan_mode command for
ATPG pattern generation. Tessent Shell passes the scan-inserted design data through for the
EDT and OCC logic. This data includes the scan structures that are stored in the TSDB under
the “gate” design ID. You can create ATPG patterns for any mode that you need, such as stuck-
at, transition, and controller chain mode.
In addition, Tessent automatically creates and simulates the test_setup procedure cycles that are
required to initialize the EDT and OCC static signals. You only need to specify non-default
parameter values, if, for example, you run EDT with bypass on or set int_ltest_en to 1 to use the
boundary scan as the source of the core values and isolate the ATPG test from the top-level IOs.
You can read in the stuck-at fault models for the wrapped cores to calculate the total fault
coverage for the chip.
Refer to the following directory, which has an example on the top design module:
tessent_automotive_reference_flow_<software_version>/top/9.extract_fault_sites
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Automotive-Grade ATPG Pattern Generation for the Top Design
Refer to the following directory, which has an example on the top design module:
tessent_automotive_reference_flow_<software_version/top/9.extract_fault_sites
Refer to “UDFM Generation for Cell-Aware ATPG” on page 453 for details on how to generate
the cell-aware UDFM for your technology library.
As you do for regular ATPG, you must use graybox models for wrapped cores. The only
difference with the regular top-level ATPG, in terms of the flow, is that you must read UDFM
files for Automotive-Grade ATPG on the top design. You can run ATPG with topoff runs by
loading only the UDFM files you want to target during an ATPG run. Also, you can run ATPG
all together by reading in all UDFM files at once.
Refer to the following directory, which has an example on the top design module:
tessent_automotive_reference_flow_<software_version>/top/10.generate_AGA_patterns
Note
Refer to the following directory, which has a usage example described in this section:
tessent_automotive_reference_flow_<software_version>/udfm_gen/stdlib
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
UDFM Generation for Cell-Aware ATPG
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
TCA Based Pattern Sorting
Procedure
1. Check all inputs and tools requirements are met.
For details, refer to the “Required Licenses and Input Data” chapter in the Tessent
CellModelGen Tool Reference.
2. Create an empty directory, and retrieve run scripts:
cellmodelgen -get_script all
3. Look at the existing run_flow script in the directory. Modify the run_flow script for your
design. Refer to the inline comments within the script for details.
4. Run the run_flow script to run Tessent CellModelGen on your standard cells.
5. Look at the existing run_export script in the directory. Modify the run_export script for
your design. Refer to the inline comments within the script for details.
6. Run the run_export script to combine the individual standard cell UDFM files into a
single UDFM file.
tessent_automotive_reference_flow_<software_version>/wrapped_cores/gps_baseband/
12.pattern_sorting
Procedure
1. Load the flat model generated from a post-layout design. (See lines 1–11.)
2. Set a fault type, read in the UDFM file for your standard cells, and add faults. (See lines
13-18.)
3. Read the patterns you want to sort. (See lines 20-26.)
4. Run the “set_critical_area_options -reporting on” command to enable the TCA coverage
reporting feature. (See line 28.)
5. Simulate the patterns. (See line 30.)
6. Run the “order_patterns -critical_area” to sort the patterns based on TCA. (See line 31.)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
TCA Based Pattern Sorting
The following dofile shows a command flow for generating a bridge/open UDFM for use in the
Automotive-Grade ATPG flow.
Example 7-14. Dofile Example for Running ATPG With All Types of UDFM in
Internal Mode for gps_baseband
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Functional Mode Fault Tolerance for Static IJTAG Signals
6
7 # Add more processors to run ATPG
8 add_processors localhost:4
9
10 # Read flat model
11 read_flat_model ../tsdb_outdir/logic_test_cores/
${design_name}_pnr.logic_test_core/${design_name}.atpg_mode_ATPG_int/
${design_name}_ATPG_int.flat.gz
12
13 # Read UDFMs
14 set_fault_type udfm -static_fault
15 read_fault_sites \
16 ../../../udfm_gen/stdlib/udfm/NangateOpenCellLibrary.udfm
17 read_fault_sites ../10.extract_fault_sites/udfm/
${design_name}_brdg_opn.udfm
18 read_fault_sites ../10.extract_fault_sites/udfm/CELLS_neighbor.udfm
19 add_faults -all
20
21 # Read patterns
22 #read_patterns ../tsdb_outdir/logic_test_cores/
${design_name}_pnr.logic_test_core/${design_name}.atpg_mode_ATPG_int/
${design_name}_ATPG_int_stuck.patdb
23 read_patterns ../11.generate_AGA_patterns/patterns/
${design_name}_int_stuck.stil.gz
24 read_patterns ../11.generate_AGA_patterns/patterns/
${design_name}_int_CAT_static_topoff.stil.gz -append
25 read_patterns ../11.generate_AGA_patterns/patterns/
${design_name}_int_BRDG_static_topoff.stil.gz -append
26 read_patterns ../11.generate_AGA_patterns/patterns/
${design_name}_int_OPN_static_topoff.stil.gz -append
27 read_patterns ../11.generate_AGA_patterns/patterns/
${design_name}_int_intercell_static_topoff.stil.gz -append
28
29 set_critical_area_options -reporting on
30
31 simulate_patterns -source external -store_patterns all
32 order_patterns -critical_area
33
34 write_patterns patterns/${design_name}_int_static_topoff_sorting.stil.gz
-stil -rep
35 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Functional Mode Fault Tolerance for Static IJTAG Signals
This gating and monitoring logic is available for static DFT signals implemented with the
-create_with_tdr option. You can control the implementation of this logic for individual signals.
Procedure
1. Add the dft_signal_disable DFT signal to gate the TDR logic:
add_dft_signals dft_signal_disable
2. Enable the creation of the HFT module for all static DFT signals interacting with
functional logic:
set_dft_signals_options -disable_for_functional_safety static
Results
An instance of an HFT module is created in a TDR hosting the static DFT signals. This module
provides the gating of the specified static DFT signals in addition to SEU monitoring logic. See
Figure 7-17 for an example.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Functional Mode Fault Tolerance for Static IJTAG Signals
The alarm signal is raised only in functional mode, and is gated with the all_test_out signal (the
all_test signal gated with fault tolerant logic). It is accessible on a persistent buffer regardless of
the DftSpecification add_persistent_buffers_in_scan_resource_instruments setting. The buffer
instance name is <tessent_persistent_cell_prefix>_hft_alarm_buf.
Use the following command to introspect the alarm signal:
get_icl_pins –filter \
{tessent_dft_function=="functional_mode_alarm"} \
-of_instance [get_icl_instance –filter \
{tessent_instrument_type=="mentor::ijtag_node"}]
Note
If you do not add the DFT signals explicitly, the tool creates all_test and dft_signal_disable
automatically.
Note
Typically, the reset value for DFT signals is 0. When the reset value is 1, the gating logic is
inverted, as shown with <sig_ResetVal_1> in Figure 7-17. Each DFT signal holds its reset
value in the functional mode of circuit operation.
In the single-pass DFT insertion flow, the dft_signal_disable signal is created in a Scan
Resource Instrument (SRI) TDR. See Figure 7-18 for an example.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Functional Mode Fault Tolerance for Static IJTAG Signals
In the two-pass DFT insertion flow, the dft_signal_disable and all_test signals are defined in a
Tdr(sri_ctrl) module created during the first insertion pass. The TDR with logic test signals is
created in the second DFT insertion pass, and takes the all_test and dft_signal_disable signals as
primary inputs. Each TDR instance contains its own HFT logic, and two alarm signals are
available on the TDR output ports. See Figure 7-19 for an example.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Functional Mode Fault Tolerance for Static IJTAG Signals
If you implement signal monitoring with the global set_dft_signals_options command, only
those signals that affect the functional mode of operation can be monitored. If you implement
signal monitoring and gating on a per-signal basis, any signal can be monitored.
By default, the capture_per_cycle_static_en and se_pipeline_en logic test control signals are not
monitored. Also, no scan mode signals are monitored by default. Monitoring and gating is
possible only for those static DFT signals you create with the -create_with_tdr option.
If you create the dft_signal_disable signal using the -source_node option, the tool implements
the source node as part of an ICL network regardless of design level.
Related Topics
add_dft_signals
set_dft_signals_options
get_dft_signals_option
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Automotive Workflow
Functional Mode Fault Tolerance for Static IJTAG Signals
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 8
TSDB Data Flow for the Tessent Shell Flow
The Tessent Shell Database (TSDB) is a repository for all the files and directories that Tessent
Shell generates. The TSDB enhances flow automation by acting as the central location where
Tessent can access the data it requires for the current task, whether that task be reading in a
design, performing DRC, inserting logic test hardware, or performing ATPG pattern generation.
The TSDB structure aids data management between steps in a process even if you are not
performing these steps within the Tessent Shell platform. If the steps are performed within
Tessent Shell, then specifying the correct design ID automatically ensures that Tessent uses the
correct file inputs for the current task.
Refer to “Tessent Shell Database (TSDB)” in the Tessent Shell Reference Manual for details
about the TSDB directory structure and contents.
The data flow content builds on the material described in “Tessent Shell Flow for Flat Designs”
and “Tessent Shell Flow for Hierarchical Designs” regarding the RTL and scan DFT insertion
flow. During the RTL and scan DFT insertion process, Tessent Shell generates many output
files and directories that it accesses later in the flow as data inputs. This chapter illustrates the
data flow through each step of the RTL and scan DFT insertion flow.
The Tessent Shell task flow is shown in Figure 8-1. The details of the inputs and outputs are
shown in Table 8-1.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Core-Level or Flat TSDB Data Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Core-Level or Flat TSDB Data Flow
Table 8-1. Core-Level TSDB Data Flow Inputs and Outputs (cont.)
Task Input Output
Scan chain • synthesized gate-level netlist • scan-stitched gate-level netlist
insertion • scan modes • ICL, PDL
Design ID for • TCD, ICL, PDL from rtl2 • TCD with scan modes
output: gate • graybox model (not flat)
ATPG pattern • gate scan-inserted design data • flat model
generation • ATPG run name • fault list
• scan mode • patterns database
• TCD
During the first DFT insertion pass, you provide the required files for your DFT
implementation. These files can include the RTL netlist, libraries for MemoryBIST insertion
and boundary scan, and gate-level cells that require a Tessent cell library.
Tessent Shell generates the dft_inserted_designs, instruments, and patterns directories within
the TSDB you specified. By default, Tessent Shell generates the TSDB in the current working
directory if you do not specify a location. For details about these directories and the TSDB, refer
to “Tessent Shell Database (TSDB)” in the Tessent Shell Reference Manual.
Tessent modifies the RTL netlist for the design into which it inserts the first-pass instrument
hardware. This hardware may include a MemoryBIST controller, BAP interface, and IJTAG
network. In the flat DFT implementation, it may also include boundary scan and a TAP
controller. Tessent Shell generates new RTL for the newly inserted DFT instruments.
In addition, Tessent Shell produces the TCD, ICL, and PDL for the design and the inserted
instruments. As shown in the red boxes in Figure 8-2, the design-level files and modified RTL
are stored within the dft_inserted_designs subdirectory for this insertion pass (design ID “rtl1”).
However, the new RTL, TCD, ICL, and PDL files for each inserted instrument are stored in
subdirectories within the instruments directory.
The patterns directory stores the patterns associated with the rtl1 design ID in an associated
subdirectory.
Tip
To facilitate data management, you can save each design (whether flat, core, sub-block, or
chip) in its own TSDB. This is the recommended practice when using Tessent Shell for DFT
insertion.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Core-Level or Flat TSDB Data Flow
Figure 8-2. TSDB File Structure, Core Level, First Insertion Pass
Figure 8-3 shows the file structure for the second DFT insertion pass. The yellow box shows the
design data that the tool saved as rtl1 in the first pass, which it uses as input for the second pass.
The red boxes show the output files.
The relevant design RTL, TCD, ICL, and PDL files from the first DFT insertion pass are
automatically read in after you specify the read_design command as described in “Loading the
Design”. You only need to supply a library, if required, and any DFT input requirement for the
DFT instruments you are inserting during this pass.
The hardware you insert in this pass, such as EDT and OCC, is stored in the instruments
directory. Separate directories are created for each type of hardware inserted in each insertion
pass.
The patterns directory stores the patterns associated with the rtl2 design ID in an associated
subdirectory.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Core-Level or Flat TSDB Data Flow
Figure 8-3. TSDB File Structure, Core Level, Second Insertion Pass
Figure 8-4 shows the TSDB file structure after synthesis and scan chain insertion. The third-
party synthesis tool provides a synthesized gate-level netlist. This netlist, shown in Figure 8-4 in
the yellow box with a red outline, is the input for scan chain insertion along with the design-
level TCD, ICL, and PDL from the rtl2 design generated during the second DFT insertion pass.
For wrapped cores, Tessent performs wrapper analysis along with scan chain insertion, whereas
for flat designs, Tessent performs scan chain replacement and stitching. For information about
using Tessent Scan for scan insertion, refer to “Internal Scan and Test Circuitry Insertion” in the
Tessent Scan and ATPG User’s Manual.
Scan insertion does not insert instruments, so the instruments and patterns directories are not
utilized in this step.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Core-Level or Flat TSDB Data Flow
Figure 8-4. TSDB File Structure, Core Level, Synthesis and Scan Insertion
The inputs to ATPG are the scan-inserted netlist and all the supporting files such as TCD, ICL,
and PDL files that were stored in the TSDB during the scan insertion pass (design_id “gate”), as
shown in the yellow box in Figure 8-5. Tessent creates the logic_test_cores directory to store
the output pattern data for each ATPG run, which can include runs for various test types and
associated fault models as described in “Fault Modeling Overview” in the Tessent Scan and
ATPG User’s Manual. This is shown in the red boxes in Figure 8-5. See Generating Test
Patterns for Different Fault Models and Fault Grading in the Tessent Scan and ATPG User’s
Manual for an example.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Top-Level TSDB Data Flow
Before generating patterns for wrapped cores, Tessent creates a graybox model of the core. This
model is stored using the same design ID as the one created during scan insertion (design ID
“gate”), so that at the top-level you can either use the full design view or graybox view of the
wrapped core. Refer to “Performing ATPG Pattern Generation: Wrapped Core” for more
information.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Top-Level TSDB Data Flow
Table 8-2. Top-Level TSDB Data Flow Inputs and Outputs (cont.)
Task Input Output
ATPG pattern • gate scan-inserted design data • flat model
generation (core • ATPG run name • fault list
level) • scan mode • patterns database
• wrapped core ATPG pattern data, • TCD
retargeted
Figure 8-6 shows the data flow for the first DFT insertion pass. Tessent modifies the RTL netlist
for the design and generates new RTL for the boundary scan and MemoryBIST (if inserted)
hardware. In addition, it produces the TCD, ICL, and PDL for the design and the inserted
instruments.
For integration at the top level, the scan-inserted design data and the interface views from the
wrapped cores are used. This is done by opening the core TSDB directories and using the
read_design command to read in the graybox model and the TCD, ICL, and PDL files.
The patterns directory stores the patterns associated with the rtl1 design ID in an associated
subdirectory.
Tip
To facilitate data management, you can save each design (whether flat, core, sub-block, or
chip) in its own TSDB. This is the recommended practice when using Tessent Shell for DFT
insertion. You should have one TSDB per design.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Top-Level TSDB Data Flow
Figure 8-6. TSDB Data Flow, Top Level, First Insertion Pass
Figure 8-7 shows the data flow for the second DFT insertion pass. In addition to the other input
requirements that you provide as shown in Table 8-2, Tessent uses the design data that was
saved as rtl1 in the first pass, the gate scan-inserted design data, and graybox models from the
wrapped cores.
Tessent saves the output design data for the EDT and OCC hardware in their applicable
instruments subdirectories. The design-level TCD, ICL, PDL, and modified RTL that includes
the EDT, OCC, and IJTAG network is placed in the dft_inserted_designs subdirectory for this
insertion pass (rtl2).
The patterns directory stores the patterns associated with the rtl2 design ID in an associated
subdirectory.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Top-Level TSDB Data Flow
Figure 8-7. TSDB Data Flow, Top Level, Second Insertion Pass
Figure 8-8 shows the data flow for scan chain insertion. Scan insertion does not insert
instruments, so the instruments and patterns directories are not utilized in this step.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Top-Level TSDB Data Flow
Figure 8-9 shows that output from ATPG pattern generation gets stored in the logic_test_cores
directory. As inputs, Tessent uses the scan-inserted design data for the chip and for the cores.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Top-Level TSDB Data Flow
Figure 8-9. TSDB Data Flow, Top Level, ATPG Pattern Generation
As the final step for the top level in a hierarchical design, you perform ATPG pattern retargeting
of the core ATPG patterns as shown in “Top-Level ATPG Pattern Generation Example”.
Figure 8-10 shows that you read in the ATPG patterns from the logic_test_cores directory from
each of the core TSDB directories and the scan-inserted design data for the chip and for the
cores.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Top-Level TSDB Data Flow
Figure 8-10. TSDB Data Flow, Top Level, ATPG Pattern Generation With Pattern
Retargeting
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
TSDB Data Flow for the Tessent Shell Flow
Top-Level TSDB Data Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 9
Streaming Scan Network (SSN)
Tessent Streaming Scan Network (SSN) is a bus-based scan data distribution architecture for
use with Tessent TestKompress. The design of SSN addresses common DFT challenges in
testing system-on-chip (SoC) designs, such as planning effort, tiled designs with abutment, test
cost, and routing and timing closure.
SSN decouples test delivery and core-level DFT requirements. This means that instance core-
level compression can be defined completely independently of chip I/O limitations. It enables
programmatic decisions, such as selecting which cores will be tested concurrently. In a
traditional pin-muxed approach, these options would be hard-wired.
This section describes the recommended SSN work flows, including how to use SSN to
effectively test designs with identical cores and how to use different clock networks with SSN.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Tessent SSN Workflows
The SSN Workflow description focuses on the differences from the base flows described in the
Tessent Shell Workflows section of this manual. The descriptions of the Workflows assume you
understand the information contained in the following sections. It is recommended that you read
them first if you are new to the Tessent Workflows.
The Tessent Shell release tree includes a testcase to accompany the block- and top-level
workflows described in the following sections. From within Tessent Shell, use the
getenv TESSENT_HOME command to find the installation tree. The testcase is in
$TESSENT_HOME/share/UsageExamples in the following file:
tessent_example_hierarchical_flow_with_ssn_v<year>.<quarter>.tgz
Figure 9-1 shows the structure of the directories in the testcase. You can run each step of the
workflow in one of these directories.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Tessent SSN Workflows
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Tessent SSN Workflows
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
Note
This procedure assumes your design meets the prerequisites of the hierarchical flow, as
described in “DFT Architecture Guidelines for Hierarchical Designs”. Additionally, each
physical block must have a full OCC with a shift clock injection mux and shift_only_mode.
The following figure shows an identical block-level workflow used to process a child physical
block to when you are not using SSN. As highlighted in the figure, you insert SSN into the
design during the second DFT insertion pass. In this same step, you add a second smaller EDT
to the design for the wrapper chains during external test. Click the boxes in the flow diagram to
see the section describing each step.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
Procedure
The first DFT insertion pass inserts the non-scan DFT elements, such as memory BIST and
IJTAG. It happens before the second insertion pass inserts the logic test elements. Using SSN in
the second DFT insertion pass does not affect the first DFT insertion pass. At the top level, you
must equip the boundary scan cells with auxiliary input and output pins to connect the SSN bus.
This change to the first DFT insertion pass for the top level is described in “First DFT Insertion
Pass: Performing MemoryBIST and Boundary Scan” on page 178. For complete information
about the current step at the block level, see “First DFT Insertion Pass: Performing Block-Level
MemoryBIST” on page 209.
Examples
Refer to the example dofile run_mbist_insertion in the directory shown in the “Referenced
Testcase Step” section earlier in this topic.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
You can perform this step in the following directories of the Reference Testcase:
• Similar to EDT and OCC, the tool creates the SSN hardware based on the SSN wrapper
of the DftSpecification. For a description of the SSN wrapper, see the “SSN” wrapper
description in the Tessent Shell Reference Manual.
• When the tool creates the SSH, EDT, and OCC elements at the same time with a single
invocation of the process_dft_specification command, the tool automates the
connections between the SSH, EDT, and OCC instances.
• As with the normal flow, after the insertion of the SSN and the other logic test elements,
you must simulate the ICLNetwork pattern to verify the correct IJTAG access to all
inserted logic test elements, including the SSN elements. Following a successful
simulation of the ICLNetwork pattern, you must simulate the SSN Continuity pattern to
verify that the SSN datapath is correctly integrated into the design. The tool automates
the ICL verification patterns and the SSN continuity patterns as part of the
create_patterns_specification and process_patterns_specification commands. During
validation of the SSN datapath, you are responsible to use the iProc command to write to
the Multiplexer node to configure the datapath for which you want to verify continuity,
as explained in Step 7 in the following procedure. You must complete simulation of both
the ICLNetwork pattern and SSN continuity pattern before moving to the next step of
the DFT flow.
• To use third-party OCC with SSN, refer to the topic “Third-Party OCCs With SSN” on
page 657 in the “Tessent SSN Examples and Solutions” section.
To insert the logic test elements with SSN, use the following procedure to modify the dofile
described in “Second DFT Insertion Pass: Inserting Block-Level EDT and OCC” on page 211.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
RTL output for SSN includes waivers for SpyGlass® to avoid lint errors. These waivers include
comments detailing why the rules are waived and use the following format:
// <explanatory comment>
// spyglass disable_block <rule list>
// <waived code>
// spyglass enable_block <rule list>
The <rule list> uses SpyGlass naming for the rules that are being waived (for example,
“W116 W164a”).
Prerequisites
• SSN requires that each physical block have a full OCC with a clock injection
multiplexer and support of the shift_only_mode feature.
Procedure
1. Remove the add_dft_signals commands for the scan signals edt_clock, edt_update,
scan_en, shift_capture_clock, and test_clock.
These signals are not needed because they are sourced by the ScanHost node during scan
test. If you want to have your legacy channel access mechanism coexist with SSN for
your first few designs, see Example 2 in the ScanHost reference page.
a. Delete this line:
add_dft_signals scan_en edt_update test_clock –source_node \
{ scan_enable edt_update test_clock_u }
This creates a dedicated IJTAG Sib node to serve as the host for the IJTAG interfaces of
the ScanHost and Multiplexer SSN nodes.
3. Update the comment for the report_config_syntax command to include SSN as an
option to view the syntax of the SSN DftSpecification:
// Use report_config_syntax DftSpecification/edt|occ|ssn to see full syntax.
4. Update the DftSpecification to include the SSN wrapper to create one or more SSN
Datapaths with the nodes you want to insert in them. The following example creates a
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
32-bit wide Datapath with a ScanHost node preceded and followed by a Pipeline node.
The SSN reference page contains several example of different SSN DftSpecifications:
SSN {
ijtag_host_interface : Sib(ssn);
DataPath(main) {
output_bus_width : 32;
Pipeline(out) {
}
ScanHost(1) {
}
Pipeline(in) {
}
}
}
5. Update the EDT wrapper of the DftSpecification to include mode enables for the EDT,
and add a second EDT for the wrapper chains to be used during external test mode.
a. Change the name of the EDT Controller from “Controller (c1)” to “Controller
(c1_int)” to indicate that this EDT controller is used for internal test mode and is
different from the second EDT that is used in external test mode.
b. Add a Connections wrapper within the EDT “Controller (c1_int)” wrapper with the
mode_enables property to define the DFT Signal “int_edt_mode” as the mode
enable for this EDT. This DFT Signal was added previously in the dofile and is used
in the muxing logic that selects this EDT’s channel outputs to the SSH during the
internal test mode.
EDT {
ijtag_host_interface : Sib(edt);
Controller (c1_int) {
longest_chain_range : 70, 80;
scan_chain_count : 20;
input_channel_count : 3;
output_channel_count : 3;
Connections {
mode_enables : DftSignal(int_edt_mode);
}
c. Add a second EDT controller for the wrapper chains to be used during external test
mode. The “ext_edt_mode” DFT signal is used as the mode enable for this EDT.
This DFT signal was added previously in the dofile and is used in the muxing logic
that selects this EDT’s channel outputs to the SSH during the external test mode.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
Controller (c1_ext) {
longest_chain_range : 70, 80;
scan_chain_count : 2;
input_channel_count : 1;
output_channel_count : 1;
Connections {
mode_enables : DftSignal(ext_edt_mode);
}
}
6. The SSN network that the specification just inserted is checked and extracted within the
ICL model using the same extract_icl command that already checks and extracts the
IJTAG network description. These design rule checks run automatically, and there is
generally no need for additional input, except that you must specify the
“-create_ijtag_graybox on” switch to create the IJTAG graybox in the TSDB.
7. The create_patterns_specification command creates a pattern specification for the ICL
network that includes the SSN logic that was just inserted and all other element types,
such as the Memory BIST logic (if present). The SSN continuity pattern is also created
as part of the create_patterns_specification process and verifies the SSN datapath is
properly connected. This is a mandatory verification step. The following example
contains no Multiplexer node to configure at the block level. If you have such nodes at
the block level, see how they are handled at the bottom of the dofile example in the
section “Second DFT Insertion Pass: Inserting Top-Level EDT, OCC, and SSN” on
page 511. Because you created an IJTAG graybox, the tool creates the ICL verification
patterns wrapper and SSN continuity patterns wrapper using the IJTAG graybox view
for both simulations.
Note
You can also create the SSN continuity pattern with the low-level
create_ssn_continuity_patterns command, as shown at the bottom of the example
dofile found at the end of this section.
Examples
The following is a dofile for the second DFT pass. You can also find it in the
run_ssh_edt_occ_insertion scripts in the testcase directories shown in the “Referenced Testcase
Step” section earlier in this topic. The testcase also includes the run_continuity_sims script that
shows how to simulate the SSN continuity patterns.
# 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.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
# Use read_design with the design ID from the first DFT insertion pass
read_design processor_core -design_id rtl1 -verbose
set_current_design processor_core
report_dft_signals
# Specify the logic to be created with the EDT, OCC, and SSN wrappers.
# The connection between the EDT, OCC, and SSH created by the too.
# Modify the below specification to your specific design requirements.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
# Extract IJTAG network and create ICL file for core level
extract_icl -create_ijtag_graybox on
# Write updated RTL into this new file to elaborate and synthesize later
write_design_import_script -use_relative_path_to . for_dc_synthesis.tcl -
replace
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
exit
The following is an alternate way to create the SSN continuity pattern. Refer to Step 7 in the
Procedure section of this topic for an explanation of how to create the SSN continuity pattern.
#
# Create the continuity pattern
#
# Define SSN bus clock. If you are using time multiplexing
# you must specify the -freq_multiplier switch
add_clocks ssn_bus_clock
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
You can perform this step in the following directories of the Reference Testcase:
In the dofile of the section “Second DFT Insertion Pass: Inserting Block-Level EDT, OCC, and
SSN” on page 483, you used the write_design_import_script command to export a design load
script for use in your synthesis tool.
Refer to the section “Synthesis Guidelines for RTL Designs with Tessent Inserted DFT” on
page 1017 for guidelines on how to perform the synthesis step. Also, see the section “Example
Scripts using Tessent Tool-Generated SDC” on page 995 for example scripts specific to various
synthesis tools.
When synthesis completes, it produces a file containing the concatenated netlist of the physical
block you just synthesized.
• If you performed scan insertion within the synthesis tool, continue with the steps
described in the section “Creating the Post-Synthesis TSDB View (Block-Level)” on
page 491.
• If you are inserting your scan chains within Tessent, continue with the steps described in
the section “Performing Scan Chain Insertion With Tessent Scan (Block-Level)” on
page 493.
Example
Example dofiles are available as the <module_name>.dc_synth_script files found in the
testcase directories shown in the “Referenced Testcase Step” section earlier in this topic. These
files specify the TCK period and the set_load_unload_timing_options values using a separate
file called <design_name>.timing_options. When you source this file at this point, it configures
the SDC during synthesis. A step later in the flow also sources this file from ATPG dofiles to
configure the patterns with the exact timing options that the tool used during timing closure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
You can perform this step in the following directories of the Reference Testcase:
This step combines a third-party scan-inserted netlist and the collateral from the RTL insertion
step into a new dft_inserted_design directory. By consolidating the netlist and the collateral into
the dft_inserted_design directory, you can use the tool automation in future steps to load the
design using the read_design command.
The TSDB consolidation flow works by using the read_verilog command to read the third-party
scan-inserted netlist into the tool and then using the “read_design -no_hdl -design_id rtl2”
command to read the collateral from the last RTL insertion step. Write the design into the
tsdb_outdir directory using the “write_design -tsdb -softlink_netlist -create_ijtag_graybox on”
command.
The following procedure and example dofile show how to create a dft_inserted_design directory
with the post-synthesis TSDB flow.
Procedure
1. Set the context to -no_rtl and define the design_id as “gate” using the set_context
command.
2. Use the read_verilog command to read the scan-inserted design. This is the output of the
third-party scan-insertion step.
3. Use the “read_design -no_hdl -design_id rtl2” command to load the collateral from the
last DFT RTL insertion step.
The design collateral includes the block level ICL, PDL, SDC, TCD, and other files.
4. Use the “write_design -tsdb -softlink_netlist -create_ijtag_graybox_on” command to
populate the dft_inserted_design directory with the collateral and a symbolic link to
your scan-inserted netlist. This also creates a gate-level IJTAG graybox view for the
design that you can use during the ICL-based pattern verification step, and also later
during SSN scan retargeting at the top level.
The tool also updates design instance names in the ICL file. This happens when the ICL
objects were below generated blocks in the RTL.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
Examples
The following is an example dofile for the TSDB consolidation step:
# Read only the collateral from the last DFT insertion step
read_design processor_core -design_identifier rtl2 -no_hdl –verbose
set_current_design processor_core
exit
The complete details for this step appear in the topic “Performing Scan Chain Insertion:
Wrapped Core” on page 216.
When SSN is present, the tool connects wrapper chains to the second, smaller EDT controller
added during the step “Second DFT Insertion Pass: Inserting Block-Level EDT, OCC, and
SSN” on page 483.
The following procedure shows how to modify the dofile from the topic “Performing Scan
Chain Insertion: Wrapped Core” when you are using SSN.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
Procedure
1. Remove the commands that exclude the *_edt_channels_* from wrapper analysis. For
example, remove:
set_wrapper_analysis_options \
-exclude_ports [ get_ports {*_edt_channels_*}]
In the SSN flow, the EDT channels connect directly to the ScanHost node instead of
being brought to the boundary of the block.
2. Add the following code to find each EDT and assign it to its intended scan mode:
foreach_in_collection edt $edt_instance {
if {[regexp {.*int.*} [get_single_name $edt] int_edt_instance]}{
puts "Found instance $int_edt_instance. \
Will use this for internal scan_mode."
} elseif {[regexp {.*ext.*} [get_single_name $edt] \
ext_edt_instance]} {
puts "Found instance $ext_edt_instance. \
Will use this for external scan_mode."
}
}
During the second DFT insertion pass, the tool gave each added EDT controller a name
according to how it was intended to be used (internal mode EDT is “c1_int” and external
mode EDT is “c1_ext”).
3. Add the following commands to assign each EDT to the intended scan mode. In this
example, the scan mode is named using the name of the DFT signal that activates that
mode:
add_scan_mode int_edt_mode -edt_instances $int_edt_instance
add_scan_mode ext_edt_mode -edt_instances $ext_edt_instance
If you wanted to use different scan mode names, you would need to use the
-dft_signal_name switch of the add_scan_mode command to associate the correct DFT
signal to that mode.
4. After you implement all the scan modes using the insert_test_logic command, run the
code block highlighted in gold at the end of the following example dofile to perform
DRC on each scan mode and extract the graybox model for the external mode.
5. Create the gate-level IJTAG graybox view by changing the context to patterns -ijtag and
then running the “analyze_graybox -ijtag” command followed by the “write_design
-tsdb -graybox” command.
Examples
The following is an example dofile for the scan insertion step:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
# Read the design data for the second RTL insertion pass
read_design processor_core -design_identifier rtl2 -no_hdl -verbose
set_current_design processor_core
add_black_boxes -modules { \
SYNC_1RW_8Kx16 \
}
check_design_rules
report_clocks
# Analyze the scan chains and review the different scan modes and chains
# before stitching the chains
analyze_scan_chains
report_scan_chains
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
# Insert scan chains and write the scan-inserted design into tsdb_outdir
insert_test_logic
report_scan_chains
report_scan_cells > scan_cells.list
# DRC check the scan chains in each mode and create graybox for
# external mode
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
You can perform this step in the following directories of the Reference Testcase:
Verifying the ICL-based patterns after synthesis is especially critical when using SSN because
the bulk of the test_setup relies on IJTAG. Your MemoryBIST simulations are also redone in
this step. For the complete details of this step, see “Verifying the ICL Model” on page 219.
When you use SSN, it is important to also reverify the SSN continuity after synthesis before you
try to use it for ATPG and scan retargeting.
The following procedure and example dofile show how to verify an ICL model including SSN.
Procedure
1. The top part of the dofile is identical to the normal flow. You can examine the
PatternsSpecification generated by the create_patterns_specification command to see
how it uses the IJTAG graybox view that you created in the previous step to simulate the
ICLVerify patterns and the SSN continuity patterns.
2. As discussed earlier in this flow, you are responsible for configuring the SSN datapath
you want to verify the continuity for by using iProcs containing iCall commands to the
Tessent-generated pdl to write to the Multiplexer nodes when present. You must
complete simulating both the ICLNetwork pattern and SSN continuity pattern before
moving to the next step of the DFT flow.
Note
You can also create the SSN continuity pattern with the low-level
create_ssn_continuity_patterns command, as shown at the bottom of the example
dofile found at the end of this section.
Examples
This example dofile shows how to verify the ICL model for SSN.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
This example contains no Multiplexer node to configure. If you have such nodes at the block
level, see how they are handled at the bottom of the dofile example in the section “Second DFT
Insertion Pass: Inserting Top-Level EDT, OCC, and SSN” on page 511.
# working directory
set_tsdb_output_directory ../tsdb_outdir
exit
The following is an alternate way to create the SSN continuity pattern. Refer to Step 2 in the
Procedure section of this topic for an explanation of how to create the SSN continuity pattern.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
#
# Create the continuity pattern
#
# Define SSN bus clock. If you are using time multiplexing
# you must specify the -freq_multiplier switch
add_clocks ssn_bus_clock
The complete details for this step appear in the “Performing ATPG Pattern Generation:
Wrapped Core” on page 220. The SSN flow generates the scan graybox model as part of the
“Performing Scan Chain Insertion With Tessent Scan (Block-Level)” step. Therefore, this step
follows most of the standard flow, skipping the graybox generation because the insertion step
has already completed that part. If you are performing scan insertion as part of synthesis, you
create the graybox as part of creating ATPG patterns for the external mode, as shown in the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
When SSN is present, the tool automatically generates all load and unload procedures and their
timing based on the timing specified with the set_load_unload_timing_options,
set_ijtag_retargeting_options, and set_capture_timing_options commands. The default
bus_clock frequency and shift_clock frequency are 400 MHz and 100 MHz, respectively.
Furthermore, you can improve the setup and hold timing around the edges of the scan_en and
edt_updated signals. Use the -scan_en_*_extra_cycles and -edt_update_*_extra_cycles
arguments to the set_load_unload_timing_options command to add extra cycles around the
edges of scan_en and edt_update, respectively. If at any time during scan pattern retargeting or
top-level ATPG you need to change the timing of a physical block, use the
set_current_physical_block command to set the scope of all subsequent load/unload and capture
timing settings. The reference page for the set_load_unload_timing_options command contains
an explanation on how to use a single file that you source in both Tessent and the synthesis tool
to configure the pattern generation and SDC consistently. The 1.run_internal_stuck and
2.run_internal_transition scripts in the reference testcase directories mentioned previously
provide clear illustrations of this process. The <module_name>.timing_options file configures
the SDC during synthesis, and you reuse it later to configure the patterns so that they are
generated consistently.
If you did not use Tessent Scan, you cannot use the import_scan_mode command, and you use
the add_core_instances command to select your active OCC and EDT controllers. You never
need to use the add_core_instances command on the ScanHost instance. The tool automatically
adds ScanHost core instances during the transition to analysis mode. When the tool performs
the check_design_rules command, it automatically adds the ScanHost instance to which a scan
chain or an active EDT traced. The 0opt.run_scan_graybox_generation script in the reference
testcase mentioned previously provides a clear illustration of this process.
After you run create_patterns, the tool maps the SSN data stream to the SSN bus. It calculates
SSH parameters when you write patterns with the write_patterns command. To see the final
calculated parameters of the SSH, use the report_core_instance_parameters command after
having called the write_patterns command.
Use the SSH loopback pattern to verify that the SSN network can successfully deliver
packetized data to each active SSH. During the SSH loopback pattern, the ScanHost node does
not send scan data out to the scan chains and EDT but instead loops it back internally.
• SSN patterns written in the serial testbench format deliver packetized scan data over the
SSN data bus to each active SSH. Each active SSH transfers scan data to the scan chains
and EDT and locally generates the scan signals. The scan out compares are mapped to
the SSN bus_out.
• SSN patterns written in the parallel testbench format apply scan data similarly to a non-
SSN parallel testbench. The tool adds cut points to the boundary of the SSH to drive the
scan signals.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
During Streaming-Through-IJTAG, the tool replaces the parallel SSN bus by the serial JTAG
interface. Select the serial JTAG interface as the streaming interface with the set_ssn_options
command. The tool delivers packetized scan data synchronously through the TDI port using
TCK as the clock. You can stream any SSN pattern set through the serial JTAG interface
without modification. For more information about Streaming-Through-IJTAG, refer to
“Streaming-Through-IJTAG Scan Data” on page 532.
You can create SSN patterns using a scaled-down SSN bus width. Scale the SSN bus width with
the set_ssn_datapath_options command. You can reapply any SSN pattern using a scaled-down
SSN bus.
When simulating patterns at the core level, the SSN bus clock typically runs slower because it is
limited by shift clock frequency. To run the bus clock at maximum frequency, set the
“SIM_SSN_MAXIMUM_BUS_SPEED 1” parameter value pair with the “write_patterns
-parameter_list” command and switch to add padding to the packet.
SSN supports only the .patdb file format for scan pattern retargeting.
Prerequisites
• Running ATPG with SSN requires a validated ICL model of the current design.
Procedure
1. Run ATPG in internal mode on the wrapped core.
This step in the SSN flow is similar to the step “Run ATPG on the internal mode of the
wrapped core” in the topic “Performing ATPG Pattern Generation: Wrapped Core” on
page 220, in the hierarchical flow section of this manual. Refer to this section for a
detailed description of this step.
Use the following steps to update the dofile from the hierarchical flow procedure
referenced previously:
a. Set the ijtag_tck period for this core to the required frequency using the
set_ijtag_retargeting_options command. This should be the ijtag_tck clock
frequency you closed timing at.
b. Define the SSN bus_clock and shift_clock periods for the core using the
set_load_unload_timing_options command. The bus_clock period should be the
maximum bus_clock frequency you plan to use for the chip. If you specify a slower
frequency, it will limit the bus clock frequency of the entire datapath when this
ATPG pattern is retargeted. The default bus_clock period is 2.5 ns, and the default
shift_clock is 10 ns. The 1.run_internal_stuck and 2.run_internal_transition scripts
in the reference testcase directories mentioned previously show you how to do this
with the synthesis process used.
c. Define the clock frequency used during the capture process. The SSH is capable of
having a different frequency for the shift_capture_clock during the shift and the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
capture cycles. The default slow capture clock frequency is 40 MHz to enable
reliable capture staggering.
d. Report core instances after you run check_design_rules. As part of
check_design_rules, the tool automatically adds the SSH core instance that was
traced to from the active scan chains and EDT controllers.
e. Write the SSH loopback pattern. Simulate this pattern to confirm that the SSN
network can successfully deliver packetized data to the SSH. Start by simulating the
parallel load scan patterns. Once those are clean, simulate the serial SSH loopback
pattern, followed by one Serial Chain pattern and one Serial Scan pattern.
The sample dofile in the following Examples section also creates the on-chip
comparator self-test pattern. This pattern set is only relevant for blocks having a
ScanHost that supports the on-chip compare mode. This pattern set is not required
for sign-off simulation but is critical during manufacturing test to ensure that no fault
within the comparator logic can be present, which could mask faults within the
scanned logic to be detected. Refer to the section “On-Chip Compare With SSN” on
page 534 for more information about this pattern set.
f. Run the “set_chain_test -type nomask” command. This enables writing the chain test
patterns without masking. Simulating all chain test patterns is not practical for most
designs. When you write the chain test patterns with the “-end 0” option, the tool
writes one chain test pattern that simulates all the chains more efficiently.
g. Write a single serial scan pattern. One serial scan pattern combined with a full set of
parallel patterns provides sufficient coverage of the SSN and the scan chains.
Refer to the Examples section for a sample dofile updated using these steps. Also, see
the 1.run_internal_stuck and 2.run_internal_transition scripts in the reference testcase
directories mentioned previously.
2. Run ATPG in external mode on the wrapped core.
This step in the SSN flow is similar to the step “Run ATPG on the external mode of the
wrapped core” in the topic “Performing ATPG Pattern Generation: Wrapped Core” on
page 220, in the hierarchical flow section of this manual. During the external mode run,
the core-level SSH sources the scan signals to the small wrapper chain EDT.
Note
This ATPG pattern is used only to verify the proper behavior of the wrapper chains.
It cannot be reused from the chip level.
The procedure for modifying the dofile presented in the hierarchical flow section is the
same as the procedure for modifying the internal mode dofile. Refer to Substeps “a”
through “g” in Step 1 for the instructions on updating your dofile. See the Examples
section for a sample dofile updated using these steps.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
Examples
Sample Dofile
The following dofile shows the result of following the instructions for internal and external
mode ATPG. Because the dofile for the two modes are very similar, the following dofile shows
the full internal mode dofile. The differences for an external mode dofile appear as comments in
green text marked “EXTERNAL MODE:”.
All changes from the base hierarchical flow for SSN appear in gold text.
# Set the location of the TSDB. Default is the current working directory.
set_tsdb_output_directory ../tsdb_outdir
set_current_design processor_core
# Report core instances that were added as part of importing scan mode
report_core_instances
report_dft_signals
report_core_instances
report_static_dft_signal_settings
check_design_rules
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
# EXTERNAL MODE:
# If you inserted your scan chains during synthesis, extract the graybox
# model here.
# analyze_graybox
# write_design -graybox -tsdb -verbose
report_clocks
report_core_instances
add_fault -all
report_statistics -detail
# Generate patterns
create_patterns
report_statistics -detail
# Store TCD, flat_model, fault list and patDB format files in the TSDB
# directory
write_tsdb_data -replace
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Block-Level SSN Insertion and Verification
# Use this option for signoff simulations to verify all chains with a
# single chain pattern
set_chain_test -type nomask
write_patterns patterns/processor_core_int_edt_mode_stuck_serial_chain.v \
-verilog -serial -replace -end 0 -parameter_list \
{SIM_COMPARE_SUMMARY 1} -pattern_set chain
write_patterns patterns/processor_core_int_edt_mode_stuck_serial_scan.v \
-verilog -serial -replace -end 0 -parameter_list \
{SIM_COMPARE_SUMMARY 1 ALL_EXCLUDE_UNUSED 0} \
-pattern_set scan
# EXTERNAL MODE:
# write_patterns patterns/processor_core_ext_edt_mode_stuck_parallel.v \
# -verilog -replace -parameter_list {SIM_COMPARE_SUMMARY 1} \
# -pattern_set scan
# write_patterns patterns/processor_core_ext_edt_mode_stuck_loopback.v \
# -verilog -serial -replace -parameter_list {SIM_COMPARE_SUMMARY 1} \
# -pattern_set ssn_loopback
# Use this option for signoff simulations to verify all chains with a
# single chain pattern
# set_chain_test -type nomask
# write_patterns patterns/processor_core_ext_edt_mode_stuck_serial_chain.v \
# -verilog -serial -replace -end 0 -parameter_list \
# {SIM_COMPARE_SUMMARY 1} -pattern_set chain
# write_patterns patterns/processor_core_ext_edt_mode_stuck_serial_scan.v \
# -verilog -serial -replace -end 0 -parameter_list \
# {SIM_COMPARE_SUMMARY 1 ALL_EXCLUDE_UNUSED 0} -pattern_set scan
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
Note
This procedure assumes your design meets the prerequisites of the hierarchical flow, as
described in “DFT Architecture Guidelines for Hierarchical Designs”. Additionally, each
physical block must have a full OCC with a shift clock injection mux and shift_only_mode.
Figure 9-3 shows the same top-level workflow you follow when not using SSN. It has been
updated to indicate that you insert SSN into the design during the second DFT insertion pass.
This step adds a single EDT if there is top-level logic. You can also add the boundary scan
chains to this top-level EDT using the BoundaryScan/max_segment_length_for_logictest
property. Unlike at the core-level SSN insertion flow, this process does not add a second,
smaller EDT, because the top-level boundary scan chains can provide isolation for the top level
during top-level ATPG. Click the boxes in the flow diagram to see the section describing each
step. The steps described in this section are implemented in the “top” directory of the Reference
Testcase.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
• For a complete description of this step in the standard hierarchical flow, refer to the
section “First DFT Insertion Pass: Performing Top-Level MemoryBIST and Boundary
Scan” on page 230. To define the auxiliary logic pins for connecting the SSN bus and
bus_clock, modify the dofile described in this referenced procedure.
• Identify the top-level input and output ports in your design that you plan to use for the
SSN bus and bus_clock. The bus should have the same number of input and output ports
(for example, 16 inputs and 16 outputs).
• The “set_dft_specification_requirements -memory_test” switch in the reference testcase
is set to “On” even though this testcase has no memories in the top level. This requests
that the memory clocks at the boundary of the child blocks receive design rule checks
(DRCs) all the way to the top. Although the extract_icl process would detect any issues,
you would need to redo the DFT insertion to fix them. By performing the DRC before
DFT, you can detect and correct those issues sooner.
Prerequisites
• SSN requires that the top-level design has an IEEE 1149.1 interface available during
logic test.
• The lower-level physical blocks should have SSN inserted prior to inserting SSN into
the top-level design. If the SSN is incomplete for any lower-level physical blocks, use
the ijtag_greybox view to model the SSN datapath through the physical block during
top-level SSN insertion. Alternatively, use an SSN multiplexer to force the SSN
datapath around the incomplete physical block.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
Procedure
Modify the auxiliary_input_ports and auxiliary_output_ports wrappers with the top-level ports
you plan to use for the SSN bus and bus_clock:
# Add auxiliary mux on the inputs and outputs used for SSN bus and
# bus_clock
# bus_in {GPIO3_0 GPIO3_1} bus_out {GPIO4_0 GPIO4_1} bus_clock
{GPIO3_2}
read_config_data -in ${spec}/BoundaryScan -from_string {
AuxiliaryInputOutputPorts {
auxiliary_input_ports : GPIO3_0, GPIO3_1, GPIO3_2;
auxiliary_output_ports : GPIO4_0, GPIO4_1;
}
}
Examples
The following dofile is for the first DFT insertion pass. It contains changes to support SSN.
These changes appear in gold text.
# Set the location of the TSDB. Default is the current working directory.
set_tsdb_output_directory ../tsdb_outdir
set_design_level chip
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
# Specify all clocks so that the proper BSCAN cells gets inserted
automatically for them
check_design_rules
report_config_data $spec
# Add auxiliary mux on the inputs and outputs used for SSN bus and
# bus_clock
# bus_in {GPIO3_0 GPIO3_1} bus_out {GPIO4_0 GPIO4_1} bus_clock {GPIO3_2}
read_config_data -in ${spec}/BoundaryScan -from_string {
AuxiliaryInputOutputPorts {
auxiliary_input_ports : GPIO3_0, GPIO3_1, GPIO3_2;
auxiliary_output_ports : GPIO4_0, GPIO4_1 ;
}
}
report_config_data $spec
# Extract IJTAG network and create ICL file for the design
extract_icl
run_testbench_simulations
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
• DesignInstance wrapper
• Any of the following SSN nodes along the datapath:
o Pipeline
o Receiver1xPipeline
o OutputPipeline
o Multiplexer
o BusFrequencyDivider
o BusFrequencyMultiplier
This section explains the slight modifications that you do to the standard flow when you insert
the SSN, EDT, and OCC at the top level. For a complete description of this step in the standard
flow, refer to “Second DFT Insertion Pass: Inserting Block-Level EDT and OCC” on page 211.
You can perform this step in the following directory of the Reference Testcase:
• Similar to the logic test insertion passes at the block level, the tool creates the SSN
hardware based on the SSN wrapper of the DftSpecification. For a description of the
SSN wrapper, see the “SSN” wrapper description in the Tessent Shell Reference
Manual.
• When the tool creates the SSH, EDT, and OCC elements at the same time with a single
process_dft_specification command, the tool automates the connections between the
SSH, EDT, and OCC instances.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
• You must complete an ICL-based verification step at the end of the second DFT
insertion pass in order to verify the DFT elements you just added to the IJTAG network.
The ICL-based patterns are created as part of running the create_patterns_specification
and process_patterns_specification commands, and you simulate them using the
run_testbench_simulations command. The following are the ICL-based pattern
verifications:
o ICLNetwork Pattern — Verifies IJTAG access to all new DFT elements added to
the IJTAG network and to the child blocks.
o SSN Continuity Pattern — Verifies you have correctly integrated the SSN datapath
into your design and detects potential problems along the datapath. If your datapath
includes SSN multiplexers, you must configure the multiplexer select to test each leg
of the multiplexer, as demonstrated in step 5 and at the bottom of the
1.run_ssh_edt_occ_insertion script in the directory of the reference testcase
mentioned previously.
Note
You can also create the SSN continuity pattern with the low-level
create_ssn_continuity_patterns command, as shown at the bottom of the
example dofile found at the end of this section.
• To use a third-party OCC with SSN, refer to the topic “Third-Party OCCs With SSN” on
page 657 in the “Tessent SSN Examples and Solutions” section.
To insert the logic test elements with SSN, use the following procedure to modify the dofile
described in “Second DFT Insertion Pass: Inserting Block-Level EDT and OCC” on page 211.
Prerequisites
• SSN requires that each physical block have a full OCC with a clock injection
multiplexer and support of the shift_only_mode feature.
• It is recommended that you have terminated the wrapper chains of the child blocks on a
local small EDT and that EDT is driven by the ScanHost node local to the block, as it
was done in the flow description found in the section “Second DFT Insertion Pass:
Inserting Block-Level EDT, OCC, and SSN” on page 483.
Procedure
1. Remove the add_dft_signals commands for the scan and retargeting signals edt_clock,
edt_update, shift_capture_clock, test_clock, retargeting1_mode, retargeting2_mode,
retargeting3_mode, and retargeting4_mode.
The scan signals (edt_clock, edt_update, shift_capture_clock, and test_clock) are not
needed because they are sourced by the SSH located in the top level. The scan signals to
the lower-level EDT and wrapper chain are sourced by the SSH inside the lower-level
child core. When the lower-level child cores are in external test mode, the internal mode
EDT is inactive.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
The retargeting signals (retargeting<n>_mode) are not needed because each core-level
EDT is accessible through the ScanHost node, effectively decoupling the dependency
between core-level EDT channels and top-level I/O. With SSN, you can retarget each
core to the top level individually or concurrently with any combination of the other
cores.
To remove these commands, delete these lines:
add_dft_signals test_clock edt_update -source_nodes \
{TEST_CLOCK_top EDT_UPDATE_top}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
5. Create the SSN continuity pattern to test the primary and secondary paths through the
SSN multiplexer.
a. Identify the different paths from SSN bus_in to bus_out through each leg of the SSN
multiplexers. In the example in substep b, a single multiplexer is in the datapath.
Some complex datapaths may contain multiple SSN multiplexers.
b. Create an iProc to program the secondary datapath through the multiplexer. Reuse
the iProc during ATPG pattern generation to ensure that the datapath during ATPG
has been checked. Some complex datapaths may have multiple iProc procedures to
program the different multiplexer combinations.
#
# PDL for configuring top-level mux.
# When mux select=1'b1, gps_baseband physical blocks are included
#
iProcsForModule chip_top
iProc include_gps_blocks_in_ssn_datapath {} {
iCall chip_top_rtl2_tessent_ssn_mux_gps_byp_inst.setup \
select_secondary_bus 0b1
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
c. For each configuration of the multiplexers, use the ProcedureStep wrapper to create
the continuity pattern.
# Add path through gps_baseband physical blocks to continuity pattern.
read_config_data -last -in_wrapper $spec/Patterns(SSN) -from_string {
ProcedureStep(cfg_datapath) {
iCall(include_gps_blocks_in_ssn_datapath) {
}
}
SSNContinuityVerify(include_gps_baseband) {
}
}
6. Add the “-create_ijtag_graybox on” switch to the extract_icl command. The ICL-based
patterns verification step also makes use of the IJTAG graybox views of the top and
child levels to optimize the simulations.
Examples
The following is a dofile for the second DFT pass.
# Set the location of the TSDB. Default is the current working directory.
set_tsdb_output_directory ../tsdb_outdir
set_current_design chip_top
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
# The design level is already specified in the first pass; no need to specify it
# again
check_design_rules
report_dft_control_points
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
Occ {
ijtag_host_interface : Sib(occ);
include_clocks_in_icl_model : yes;
Controller(pll_clock_0) {
clock_intercept_node : PLL_1/pll_clock_0;
}
Controller(INCLK) {
clock_intercept_node : INCLK;
}
}
EDT {
ijtag_host_interface : Sib(edt);
Controller (c1) {
longest_chain_range : 60, 100;
scan_chain_count : 17;
input_channel_count : 2;
output_channel_count : 2;
Connections {
EdtChannelsIn(1) {
}
EdtChannelsOut(1) {
}
}
}
}
}
# Note the effective data and clock rate comments above each SSN node in the
# following command
report_config_data $spec
# Extract IJTAG network and create ICL file for the design
extract_icl -create_ijtag_graybox on
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
run_testbench_simulations -simulation_macro_definitions
TESSENT_DISABLE_CLOCK_MONITOR
check_testbench_simulations
exit
The following is an alternate way to create the SSN continuity pattern. Refer to Step 5 in the
Procedure section of this topic for an explanation of how to create the SSN continuity pattern.
#
# Create the continuity pattern
#
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
In the dofile of the section “Second DFT Insertion Pass: Inserting Top-Level EDT, OCC, and
SSN” on page 511, you used the write_design_import_script command to export a design load
script for use in your synthesis tool.
Refer to the section “Synthesis Guidelines for RTL Designs with Tessent Inserted DFT” on
page 1017 for guidelines on how to perform the synthesis step. Also, see the section “Example
Scripts using Tessent Tool-Generated SDC” on page 995 for example scripts specific to various
synthesis tools.
When synthesis completes, it produces a file containing the concatenated netlist of the physical
block you just synthesized.
• If you performed scan insertion within the synthesis tool, continue with the steps
described in the section “Creating the Post-Synthesis TSDB View (Block-Level)” on
page 491.
• If you are inserting your scan chains within Tessent, continue with the steps described in
the section “Performing Scan Chain Insertion With Tessent Scan (Block-Level)” on
page 493.
Example
Example dofiles are available as the <module_name>.dc_synth_script files found in the
testcase directories shown in the “Referenced Testcase Step” section earlier in this topic. These
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
files specify the TCK period and the set_load_unload_timing_options values using a separate
file called <design_name>.timing_options. When you source this file at this point, it configures
the SDC during synthesis. A step later in the flow also sources this file from ATPG dofiles to
configure the patterns with the exact timing options that the tool used during timing closure.
You can perform this step in the following directory of the Reference Testcase:
Procedure
Creating the post-synthesis TSDB view at the top level is identical to the equivalent step at the
block level. The only difference is that you also need to open the TSDB to the child blocks.
Refer to the section “Creating the Post-Synthesis TSDB View (Block-Level)” on page 491 for
the details. The create_post_synthesis_tsdb_view script in the directory shown previously in the
reference testcase also illustrates this process.
You can perform this step in the following directories of the Reference Testcase:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
Procedure
When you are using SSN, the scan insertion step at the top level is very similar to the flow you
use at the block level. The only difference is that you do not need wrapper chains and, typically,
have a single scan mode. The boundary scan chains implemented in the section “First DFT
Insertion Pass: Performing Top-Level MemoryBIST” on page 508 were built so that the EDT
controller can control them during scan test, and they can serve as isolation from the outside.
Those chains were preconnected to the EDT ports and are left untouched during scan insertion.
Refer to the section “Performing Scan Chain Insertion With Tessent Scan (Block-Level)” on
page 493 for more details. It may also be helpful to look at the run_scan_insertion script in the
directory shown previously in the reference testcase.
You can perform this step in the following directory of the Reference Testcase:
Procedure
The verification of the ICL-based patterns at the top level is identical to the procedure at the
block level. The only difference in the script is that you must open the TSDB for the child
blocks. See the section “Verifying the ICL-Based Patterns After Synthesis (Block-Level)” on
page 496 for the full details. It may also be helpful to review the
1.create_post_synthesis_icl_verification_patterns script in the directory shown previously in
the reference testcase.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
You can perform this step in the following directories of the Reference Testcase:
Procedure
Generating the ATPG patterns at the top level is identical to generating the patterns at the block
level. The block levels are in external mode when you create top-level ATPG patterns, so you
only need to read in their scan graybox views using the “read_design -view scan_graybox”
command.
You also need to import the .timing_options file used for all blocks so that you create the
ATPG patterns to satisfy the maximum frequencies within all the blocks. The
1.run_tk_chip_stuck and 2.run_tk_chip_transition scripts in the directory shown
previously for the reference testcase illustrate the loading of the timing options. Use the
following Tcl code used to perform this import procedure:
# Import timing options used during synthesis
set tck_period 0
foreach {physical_block path} {
processor_core ../../wrapped_cores/processor_core/3.synthesize_rtl \
gps_baseband ../../wrapped_cores/gps_baseband/2.synthesize_rtl \
chip_top ../3.synthesize_rtl/} {
Refer to the section “Generating Block-Level ATPG Patterns” on page 499 for more
details about the content of the dofile, or examine the 1.run_tk_chip_stuck and
2.run_tk_chip_transition scripts in the directory shown previously for the reference
testcase. The file 3.run_sims in same directory shows how to perform the simulation. It
compiles the full view of the top level and the scan graybox view of the child blocks.
Similar to the block-level process, the parallel load scan patterns are simulated first,
followed by the serial SSH loopback patterns and then the one Serial Chain and one
Serial Scan patterns.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
You can perform this step in the following directories of the Reference Testcase:
When you use SSN, the design does not have a scan_mode to set at the top level that configures
the channel access to the required blocks. Instead, you simply use the add_core_instances
command to specify which mode you want to retarget on a given set of block modules or
instances. During the DFT signoff process, you typically retarget one block at a time so that you
can speed up the simulation and use the IJTAG graybox views of all blocks other than the one
you are retargeting. This is the usage model that the reference testcase demonstrates. The
testcase retargets the stuck and transition patterns for process_core into a set of testbenches
independently from the stuck and transition patterns for the gps_baseband block. The
3.run_retarget_processor_core_sims and 6.run_retarget_gps_baseband_sims scripts in the
reference testcase directory show how to compile the correct view for each simulation.
When you want to create the manufacturing patterns, you can retarget any number of blocks in
parallel. The flow is identical to the one in the dofile in the Examples section, except that you
use the add_core_instances command to specify all the blocks you want to include in the given
retargeting pattern set. The SSN procedure has the advantage that you do not hard code the
grouping of blocks at design time, so you can optimize them later, between power and test time.
The example dofile shows how you source the .timing_options files from each block again at
this time to ensure you create the SSN patterns consistently with how timing was closed within
each block.
Procedure
1. Load the design in Tessent Shell.
Regardless of which blocks you are retargeting, you always load the IJTAG graybox
view of all blocks when doing scan retargeting with SSN. The three “read_design -view
ijtag_graybox” commands used in the example dofile illustrate how to do this.
2. Import the timing options files for all blocks.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
As shown in the dofile in the Examples section and in the description of the previous
step, the tool automatically configures the SSN patterns to satisfy the requirements
specified with the set_load_unload_timing_options command. You use the same
command to configure the Tessent SSN SDC during timing closure. Specifying the
command in a distinct file for each block enables you to share the exact same
specification during timing closure and pattern generation to ensure they are always
consistent.
3. Configure the SSN Multiplexer node to provide access to all active SSH blocks.
The third section of highlighted code in the example dofile is commented out because
the iCall it contains configures the Multiplexer node when you want to include the
gps_baseband. However, this dofile only retargets the patterns for the processor_core
block. As illustrated in Figure 9-4 on page 515 in the section “Second DFT Insertion
Pass: Inserting Top-Level EDT, OCC, and SSN”, an inserted Multiplexer node enables
you to bypass the gps_baseband blocks. When you want to retarget the scan patterns of
the gps_baseband block, you must configure the Multiplexer to include them in the
active SSN datapath.
Examples
The following dofile example illustrates how to perform scan retargeting with SSN.
# Set the Context to retarget ATPG Patterns from lower level child cores
set_context pattern -scan_retargeting
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
#For scan retargeting with SSN, only the ijtag_graybox view is needed.
read_design chip_top -design_id gate -view ijtag_graybox
read_design processor_core -design_id gate -view ijtag_graybox
read_design gps_baseband -design_id gate -view ijtag_graybox
set_current_design chip_top
# source ../ssn_datapath_configuration.pdl
# set_test_setup_icall include_gps_blocks_in_ssn_datapath -append
check_design_rules
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
exit
Note
This procedure validates that reverse mapping failures back to the core level is working
properly. It does not validate diagnosis.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
Note
When you write SSN patterns with the maxloads option and exclude one of the pattern files
from being applied to the DUT on the tester, you should also exclude that file from the
reverse failure mapping process from reading that pattern file.
Tessent tools support a flow for validating the reverse failure mapping process that leads into
the diagnosis flow in the preceding figure by enabling the Verilog testbench to log simulation
failure information in a format similar to a tester fail file. To generate those failures, you must
inject a fault on a design primitive instance (sequential or combinational logic). The simplest
way to do this is to force a design node to a fixed value during the entire simulation, as
illustrated in the testcase demonstration.
This demonstration injects a fault at one of the core scan cells during the event-driving
simulation using Questa Advanced Simulator or a third-party simulator. You use the fail file
generated during pattern testbench simulation to generate a core-level failure file; this does not
change the diagnosis flow. Then you use the failure file, design flat model, and pattern database
to perform the diagnosis and generate the list of suspects in an effort to find the root cause.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
You can perform this step in the following directory of the Reference Testcase:
• While the diagnosis flow requires post-layout design flat models and patterns, the
testcase uses the post-synthesis flat model and patterns for the sole purpose of
demonstrating the validation flow.
• This validation flow uses the Verilog testbench for serial patterns. You cannot use the
parallel Verilog testbench.
• The Verilog testbench and STIL patterns should come from the same session, which
means that the number of patterns written for Verilog simulation must match the STIL
patterns.
• The number of Verilog testbench patterns affects the simulation results during fault
injection. Choose a number that you can simulate in a reasonable amount of time while
still being able to detect the injected fault. This is typically ten patterns if you inject
faults on the D input of a scan flop.
• To demonstrate the flow, the testcase uses a Tessent-generated testbench of the serial
scan patterns to simulate and inject a fault at a given scan cell.
• Tessent uses the provided name as a prefix. This results in the following generated
filename:
<command-provided_filename_>__<core_module_name>__<scan_test_mode>
Prerequisites
• When you create the serial scan testbench, you must set the parameter
SIM_DIAG_FILE with a value of two to create the fail file during the fault-injected
simulation:
write_patterns <testbench_filename> -serial -parameter_list {SIM_DIAG_FILE 2}
• You have injected a fault at any design cell. Do this by directly forcing any cell
instances pin in the design to a constant value to emulate a fault. The testcase does this
as part of the simulation invocation, as shown at the end of this prerequisite. The testcase
uses the following cells as a fault location:
o gps_baseband core — sw_rst_reg/D
o processor_core core — watchdog_0.wdt_reset_reg/D
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
The following example uses the Questa Advanced Simulator force command to inject a
fault on the data input of a design sequential cell:
vsim -c -voptargs="+acc"
chip_top_top_retarget_processor_core_stuck_serial_scan_v_ctl -l
logfiles/verilog.log_top_retarget_processor_core_stuck_serial_scan \
-do " force sim:/
chip_top_top_retarget_processor_core_stuck_serial_scan_v_ctl/
chip_top_inst/PROCESSOR_1/PROCESSOR_1/watchdog_0/wdt_reset_reg/D 1 -f ; \
if {0} {log -r /*};run -all"
Procedure
1. Perform reverse failure mapping:
a. Set the context for failure mapping.
set_context patterns -failure_mapping
d. Read in the fail file generated during pattern fault injection and simulation.
read_failures <fail_file>
The ATPG process for the targeted pattern creates this model. Typically, this is a
compressed file with a .gz extension.
c. Read in the core-level pattern database.
read_patterns <pattern_database_path>.patdb
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Top-Level SSN Insertion and Verification
Examples
Example 1
The following dofile is for the gps_baseband failure mapping. Find it in the run_script in the
testcase directories for this step.
Example 2
The following dofile is for the gps_baseband failure diagnosis. Find it in the run_script in the
testcase directories for this step.
# Diagnose failures
diagnose_failures top_retarget_gps_baseband_stuck_serial_scan. \
failure_diagnosis___GPS_2__gps_baseband__int_edt_mode_stuck
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Advanced Topics
Advanced Topics
The following topics provide additional information about working with SSN. This information
can help you use other features and modes with SSN, configure your design for optimal use
with SSN, and understand the underlying structures of SSN.
Streaming-Through-IJTAG Scan Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
On-Chip Compare With SSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
Types of Clock Networks To Use With SSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
Broadcast to Identical SSN Datapaths. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
Determine Failing Cores on ATE With SSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Yield Statistics on ATE With SSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
Manufacturing Patterns With SSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Manufacturing Pattern Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
SSN Pattern Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
How To Write Complete SSN Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
How To Write JTAG and Payload Procedures Separately . . . . . . . . . . . . . . . . . . . . . . . . . 562
How To Write SSN On-Chip Compare Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
How To Write Streaming-Through-IJTAG Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
SSN Debug on the Tester . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Signoff Patterns With SSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
Block-Level Signoff Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
Top-Level Signoff Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
Signoff Pattern Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
SSN SDC Constraints in the Design Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Overview of SSN-Related SDC Procs and Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
SSN/SSH SDC Constraint Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Fast IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
Design Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
SSN Fast IO Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
Modeling a Double Data Rate Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
Adaptive Tuning on ATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
SSN Fast IO Bandwidth Improvement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
Fast IO Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
SSN Fast IO Limitations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
Burn-In Pattern Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638
Burn-In Pattern Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638
Recommended Flows for Creating Burn-In Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Burn-In Functionality Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
LVX Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
LVX Hardware Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
Creating EDT With LVX Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Streaming-Through-IJTAG Scan Data
When activated, the ijtag_si data reaching the ScanHost node is injected on bit 0 of the input
data register, and bit 0 of the output data register is fed back to the ijtag_so pin, as the blue lines
in Figure 9-6 show. TCK is also injected as the SSN bus clock within the ScanHost node.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Streaming-Through-IJTAG Scan Data
Scan data delivery into the chip is significantly slower when using Streaming-Through-IJTAG
than with the SSN data bus. It is only one bit wide and limited to the maximum operating
frequency of TCK. However, the IJTAG network is very robust due to its two-edge timing and
is always accessible in the system through the IEEE 1149.1 JTAG TAP.
In silicon, if you find you have a timing problem in a section of the SSN datapath, the
Streaming-Through-IJTAG mode is available as an alternative method to deliver patterns to
bring up your initial parts. For this reason, the Streaming-Through-IJTAG mode is also referred
to as a fail-safe mechanism.
The Streaming-Through-IJTAG feature is also a more flexible replacement for LPCT-2. You
are no longer limited to being able to drive only a single EDT controller having a single channel
pair when using the IEEE 1149.1 protocol for delivering scan data.
The IEEE 1838 standard mandates that you can perform the die interconnect test through the
IEEE 1149.1 JTAG TAP, using only TCK as the scan and capture clock. To do this, create a
scan mode within each die that collects the wrapper cells interacting with the pins of the die, and
create ATPG patterns using this scan mode to target the interconnect faults. Apply these
patterns through the normal SSN bus, which is effectively the FFP mode of the IEEE 1838
standard. Alternatively, retarget those ATPG patterns to apply through the IEEE 1149.1 TAP by
using the Streaming-Through-IJTAG mode that comes with SSN, and satisfy the IEEE 1838
requirements.
• All ScanHost nodes you want to include must be in the active IJTAG scan path.
Streaming-Through-IJTAG mode does not support IJTAG broadcast. Star network
configurations restrict the number of ScanHost nodes that can be active in parallel. The
IJTAG solver within the Tessent tool automatically opens up the IJTAG path if the
network allows it.
• The Streaming-Through-IJTAG mode supports both internal and external capture, and
all fault models are supported.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
On-Chip Compare With SSN
Tip
At the top level, make the boundary scan chains available to the top-level EDT
controller for best results. (See the max_segment_length_for_logictest property
description in the DftSpecification/BoundaryScan wrapper reference page for more
details.) Add the int_ltest_en DFT signal at the top level and set it to 1 using the
set_static_dft_signal_values command during ATPG.
This enables full coverage of the chip logic without the need to drive the primary inputs
and observe the primary outputs during ATPG.
• You can run any number of ScanHost nodes concurrently in this mode as long as your
IJTAG network allows placing all the ScanHost nodes along the active IJTAG scan
path.
• When a Streaming-Through-IJTAG session is complete, the binary states of all SIBs
along the active scan path are restored to their states that were present before streaming
began. This provides a predictable IJTAG network configuration between
Streaming-Through-IJTAG sessions.
All scan testable instruments on the IJTAG network must be isolated from the following IJTAG
interface signals:
• ijtag_select
• ijtag_se
Caution
If the state of these IJTAG interface signals is observable into scan cells, the enabling of the
IJTAG streaming feature may invalidate the patterns.
You can accomplish this isolation by gating the signals with the ltest_en DFT signal. All scan
tested instruments under the SIB STI are already isolated and do not require any hardware
changes. Refer to the figure “Sib(sti) With Scan Isolation Chain” in the Sib reference page for
mode details about the way scan tested instruments are isolated from the IJTAG network during
scan test when you use the recommended Sib structure that is automatically inferred within the
create_dft_specification command.
• Common Usage Scenarios — Scenarios that the on-chip compare feature is designed to
address.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
On-Chip Compare With SSN
• On-Chip Compare Mode Operation — The methods used by the on-chip compare
feature and the packet format when the feature is enabled.
• Costs, Benefits, and Recommendations — Trade-offs between DFT area and test time
efficiency, and recommendations for when the on-chip compare feature is most
effective.
• On-Chip Compare Mode Setup — Instructions for building your ScanHost with the on-
chip compare feature and enabling the feature during ATPG and scan pattern
retargeting.
• Diagnosis Using On-Chip Compare — Instructions for enabling detailed diagnostics
when using the on-chip compare feature.
• You have one or more physical blocks that are instantiated multiple times within the
design. With on-chip compare, the packet includes the chain input values and also the
expected and mask values. The packet values are not altered by the ScanHost node
because the chain input values are not replaced by the chain output values and thus can
be reused by any number of instances of that physical block. The section “Costs,
Benefits, and Recommendations” on page 536 describes the number of instances of the
physical block required for the on-chip compare feature to become beneficial for test
time and test data volume considerations.
• You want to quickly identify the failing cores on the ATE during manufacturing because
you have a Partial Good Die methodology that tolerates a subset of identical cores
failing. In such a case, the failing cores must be identified on the tester, and the test flow
must take actions to decommission them while testing the rest of the chip.
The on-chip compare mode provides a sticky status bit per ScanHost node that IJTAG
scans out at the end of the pattern set to directly identify the failing blocks. You can also
scan out a sticky status per channel output if you require. Refer to the
OnChipCompareMode/sticky_status_resolution property description in the ScanHost
reference page in the Tessent Shell Reference Manual for information about how to
request usage of this feature. Refer to the OnChipCompareMode/present property
description in the same topic for information about the the special annotations added to
the STIL file to quickly identify the comparisons that match the sticky status bits.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
On-Chip Compare With SSN
mode of operation is illustrated in the figure “SSN Packet Formats When Not Using On-Chip
Compare” in the ScanHost reference page in the Tessent Shell Reference Manual.
When you enable the on-chip compare mode of operation, the packet is modified to include the
channel input values followed by the expected values, the mask values, and the optional status
values. The packet format in on-chip compare mode is illustrated in the figure “SSN Packet
Formats When Using On-Chip Compare” in the ScanHost reference page in the Tessent Shell
Reference Manual. When building a ScanHost node with support for on-chip compare, you
should use as few output channels as possible to minimize the time slot count used to carry the
expected and mask data.
For more details about the packet format in both modes, refer to the section “SSN Packet
Formats” in the ScanHost reference page.
The typical area of a ScanHost node that does not support the OCComp mode is significantly
smaller than a typical EDT controller. When the ScanHost node supports the OCComp mode,
its area becomes comparable to a typical EDT controller. To minimize the area impact of
OCComp on the ScanHost node, you must minimize the number of output channels you use
with the EDT. In this case, you typically use a single output channel.
You can build the ScanHost node with the support of many status groups for diagnosis.
Building support for many status groups increases the area of the ScanHost node, and using
many status groups increases test time and data volumes. Refer to the section “Diagnosis Using
On-Chip Compare” on page 537 for more information when and how to use multiple status
groups.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
On-Chip Compare With SSN
have one of the conditions described in the section “Common Usage Scenarios” on page 535.
Use the OnChipCompareMode/sticky_status_resolution property within the wrapper to specify
whether you want one sticky status per output channel or only a single one for the entire
ScanHost node.
Enabling On-Chip Compare Mode During ATPG and Scan Pattern Retargeting
By default, using the write_patterns command in the patterns -scan or patterns -scan_retargeting
context does not enable OCComp mode. Manually enable OCComp mode by using the
“set_core_instance_parameters -parameter_values {on_chip_compare_enable on}” command.
You can either specify a group of ScanHost instances by using the -instances switch or use the
“-instrument_type ssh” switch to enable on-chip compare on all ScanHost nodes that support it.
When several ScanHost nodes are programmed to use the same status time slots, which is the
default behavior, diagnosis may require reapplication of the pattern set to collect all the data
needed to perform detailed diagnostics of every failing core. Consider a case where all identical
core instances are placed into a single status group, such that their per-cycle pass/fail
information aggregates into the same status time slots. If any of those bits indicate failures, you
have the cumulative per-pin, per-cycle fail data but may not be able to determine which core or
cores the failures came from. The sticky status bits unloaded at the end of the pattern set through
IJTAG indicate which cores failed at least once. If only one core in this group failed, then you
know the per-cycle pass/fail data came from this core alone; therefore, you have all the
information needed for diagnosis. However, if multiple cores fail, you must then separately test
and observe each failing core to get its individual fail data. If two cores fail, for example, then
you reapply the same test set twice, with patching applied to the
disable_on_chip_compare_contribution bit for all but one ScanHost node at a time. There is no
need to store separate patterns for diagnosis on the tester. Refer to the description of the
disable_on_chip_compare_contribution bit in the table “IJTAG Registers in ScanHost Nodes”
in the ScanHost reference page in the Tessent Shell Reference Manual for more information
about the special iWriteVar annotation that identifies the location of such patchable bits.
Note
If you disable contribution with the disable_on_chip_compare_contribution bit, the sticky
status bits for that SSH are not set.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
On-Chip Compare With SSN
If identical core instances are split into multiple groups, this slightly increases the test time, but
decreases the probability of resorting to multiple test applications for collecting diagnosis data.
In the example shown in the figure “SSN Packet Formats When Using On-Chip Compare” in
the ScanHost reference page in the Tessent Shell Reference Manual, the six cores are split into
two groups. If you find cores A1 and A4 to have failed, there is no need for test reapplication,
because cores A1 through A3 accumulate their status bits separately from cores A4 through A6.
However, if cores A1 and A3 fail, you must reapply the tests with patching to acquire the
individual fail data. In an extreme case, you may choose to assign each core instance to its own
group to observe each core individually. This mode of operation may be better suited for silicon
debug than high-volume manufacturing.
To learn about the ATE failure log format, refer to the section “ATE Failure File Format
Requirements” in the Tessent Diagnosis User’s Manual. Performing on-chip compare requires
special handling for scan diagnosis in both test application and failure logging. For details, refer
to the section “Logging Failures for SSN On-Chip Compare” in the Tessent Diagnosis User’s
Manual.
To learn about how to map the failures at the chip boundary to the core level and to enable
performing detailed diagnostics, refer to the section “Reverse Mapping Top-Level Failures to
the Core” in the Tessent Diagnosis User’s Manual. The failure mapping steps described in this
section are required when using SSN, even for top-level ATPG patterns. This is unlike when
you are not using SSN, where they are only required for retargeted scan patterns.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
On-Chip Compare With SSN
Figure 9-7. Faults in Comparator Logic That Could Mask Real Faults
The self-test pattern programs the ScanHost node with the following register values, so that
each scan load comprises exactly five packets.
edt_update_falling_launch_word 0
edt_update_falling_transition_words 0
extra_shift_packets 0
force_suppress_capture 1
loop_back_en 1
on_chip_compare_enable 1
on_chip_compare_group 1
on_chip_compare_group_count 1
scan_en_launch_packet 0
scan_en_transition_packets 0
total_shift_cnt_minus_one 1
With these settings, each scan load is exactly five packets long, and the packets have the
following labels: edt_update, shift0, shift1, post_shift0, and post_shift1. The values of the
from_scan_out_bits registers equal the number of output chains usable during on-chip compare
for each chain group; refer to the ScanHost reference page for more details in the description of
the output_chain_count_in_on_chip_compare_mode property. The values of the
to_scan_in_bits registers match the exact value of the from_scan_out_bits register for each
chain group. This ensures that there are exactly the same amount of scan-in values as there are
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
On-Chip Compare With SSN
comparators to test. The format of the five packets is shown in the following output for an
example ScanHost having 3 comparators. The green values in the following output carry the
scan payload in and out. The tool compares the i0, i1, and i2 values provided in the shift0 and
shift1 packets against the e0, e1, and e2 values and masks them with the m0, m1, and m2 values
scanned in during the post_shift0, and post_shift1 packets. The tool scans out the comparator
statuses per output chain during the post_shift0 and post_shift1 packets.
The following list describes three control bits whose time slots are identified in gold in the
preceding scan load description.
• select_sticky_status — This control bit is scanned in during the i0 time slot of the
edt_update packet. When the value is “1”, the select_sticky_status signal, shown in
Figure 9-7 on page 539, goes high at the end of the shift1 packet within the same scan
load.
As that figure illustrates, the logic injects the sticky status results into the status time
slots of the post_shift0 and post_shift1 within the same scan load. It also injects the
global sticky status into the status time slots of the shift0 packet (shown in magenta in
the preceding scan load description) of the next scan load. As previously described, the
select_sticky_status signal goes up or down at the end of the shift1 packet, which
explains why the global sticky status observed in the shift0 packet happens in the next
scan load.
• last_scan_load — This control bit scans in during the i0 time slot of the post_shift0
packet. It indicates to the ScanHost that the current scan load is the last one and to stop
performing any comparisons in the next scan loads that may continue to flow through
the datapath, which are to complete the testing of other ScanHosts with more
comparators to test.
• clear_sticky_status — This control bit is scanned in during the i0 time slot of the
post_shift1 packet. When the value is “1”, the clear_status signal, shown in Figure 9-7
on page 539, goes high during the shift1 packet within the next scan load. As mentioned
in the preceding “select_sticky_status” section, the tool observes the global sticky status
during the shift0 packet, which is before the clear_sticky_status takes effect. Therefore,
it observes the effect of the clear_sticky_status in the next scan load, assuming no new
miscompares were injected during the post_shift0 and post_shift1 packet to cause the
global sticky status to go up again after it was cleared at the end of the shift1 packet.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
On-Chip Compare With SSN
The on-chip comparator self-test pattern set comprises six phases, described in the following
sections. Every compare in the pattern uses a unique label for identification, constructed as in
the following:
The output patterns file such has STIL will have one such bit_annotation for each output time
slot to help quickly identify the meaning of any miscompares. Refer to the section “Retargeted
Symbolic Variables” in the Tessent IJTAG User’s Manual for information about the bit
annotations.
The following describes the six phases of the on-chip compare self-test, with the faults from
Figure 9-7 on page 539 that they each cover.
Phase 1
This phase consists of a single scan load formed with one set of the five packets shown
previously. This scan load uses consistent scanin and expected values for both shift cycles so
that it generates no miscompares and the sticky statuses get initialized to 0. The phase_id is
“phase1”.
i0 i1 i2 e0 e1 e2 m0 m1 m2 s0 s1 s2
edt_update: 0 0 0 0 0 0 0 0 0 L L L
shift0: 1 1 1 0 0 0 0 0 0 L L L
shift1: 0 0 0 0 0 0 0 0 0 L L L
post_shift0 0 0 0 1 1 1 0 0 0 L L L
post_shift1 0 0 0 0 0 0 0 0 0 L L L
Phase 2
This phase consists of N scan loads used to test that the N XOR gates in Figure 9-7 on page 539
are not stuck at 0 when the scanin value is 0 and the expected value is 1. The phase_id is
“phase2_X” when testing the Xth comparator. The following is the scan load used to test
comparator 0.
i0 i1 i2 e0 e1 e2 m0 m1 m2 s0 s1 s2
edt_update: 0 0 0 0 0 0 0 0 0 L L L
shift0: 0 0 0 0 0 0 0 0 0 L L L
shift1: 0 0 0 0 0 0 0 0 0 L L L
post_shift0 0 0 0 1 0 0 0 0 0 H L L
post_shift1 0 0 0 0 0 0 0 0 0 L L L
Phase 3
This phase consists of N scan loads used to test that the N XOR gates in Figure 9-7 on page 539
are not stuck at 0 when the scanin value is 1 and the expected value is 0. The phase_id is
“phase3_X” when testing the Xth comparator. The following is the scan load used to test
comparator 0.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
On-Chip Compare With SSN
i0 i1 i2 e0 e1 e2 m0 m1 m2 s0 s1 s2
edt_update: 0 0 0 0 0 0 0 0 0 L L L
shift0: 1 0 0 0 0 0 0 0 0 L L L
shift1: 0 0 0 0 0 0 0 0 0 L L L
post_shift0 0 0 0 0 0 0 0 0 0 H L L
post_shift1 0 0 0 0 0 0 0 0 0 L L L
Phase 4
This phase consists of two scan loads. It tests that the sticky statuses are able to hold. As shown
in Figure 9-7 on page 539, there is a global sticky status and optional sticky statuses per output
chain. The ScanHost/OnChipCompareMode/sticky_status_resolution property controls the
presence of the sticky statuses per output chains. The phase_id for those two scan loads are
“phase4_0” and “phase4_1”.
The effect of the select_sticky_status control bit takes effect at the end of the shift1 packet
within the same scan load. The effect of the clear_sticky_status happens at the end of the shift1
packet within the next scan load.
When only the global sticky status is present, the pattern looks like the following diagram. The
select_sticky_status takes effect at the end of the shift1 packet. The red H in the second scan
load corresponds to the global sticky status being observed during the last status time slot of the
shift0 packet. The global sticky status remembers the faults injected during Phase2 and Phase3
and clears at the end of the shift1 packet of the second scan load.
i0 i1 i2 e0 e1 e2 m0 m1 m2 s0 s1 s2
edt_update: 1 0 0 0 0 0 0 0 0 L L L // select_sticky_status
shift0: 1 1 1 0 0 0 0 0 0 L L L
shift1: 0 0 0 0 0 0 0 0 0 L L L
post_shift0 0 0 0 1 1 1 0 0 0 L L L
post_shift1 1 0 0 0 0 0 0 0 0 L L L // clear_sticky_status
i0 i1 i2 e0 e1 e2 m0 m1 m2 s0 s1 s2
edt_update: 1 0 0 0 0 0 0 0 0 L L L // select_sticky_status
shift0: 1 1 1 0 0 0 0 0 0 X X H
shift1: 0 0 0 0 0 0 0 0 0 L L L // status cleared here
post_shift0 0 0 0 1 1 1 0 0 0 L L L
post_shift1 0 0 0 0 0 0 0 0 0 L L L
When the sticky statuses per output chain are present, the pattern looks like the following
diagram. The global sticky status observation is identical to what was described previously.
However, because the sticky statuses per output chain are present, the tool observes them during
the first scan load. The clear_sticky_status control requested during the first scan load takes
effect after the shift1 packet of the next scan load, which explains why the status values return
to being L during the second scan load.
i0 i1 i2 e0 e1 e2 m0 m1 m2 s0 s1 s2
edt_update: 1 0 0 0 0 0 0 0 0 L L L // select_sticky_status
shift0: 1 1 1 0 0 0 0 0 0 L L L
shift1: 0 0 0 0 0 0 0 0 0 L L L
post_shift0 0 0 0 1 1 1 0 0 0 H H H
post_shift1 1 0 0 0 0 0 0 0 0 H H H // clear_sticky_status
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
On-Chip Compare With SSN
i0 i1 i2 e0 e1 e2 m0 m1 m2 s0 s1 s2
edt_update: 1 0 0 0 0 0 0 0 0 L L L
shift0: 1 1 1 0 0 0 0 0 0 X X H // global sticky status
shift1: 0 0 0 0 0 0 0 0 0 L L L // status cleared here
post_shift0 0 0 0 1 1 1 0 0 0 L L L
post_shift1 0 0 0 0 0 0 0 0 0 L L L
Phase 5
This phase consists of N scan loads. It tests that all inputs of the wide OR gate feeding the global
sticky status register are not stuck at 0. The tool generates faults for each comparator in its
respective scan load by setting the shift0 value to 0 and expecting a H. It observes the global
sticky status in the last status bit of the Shift0 packet of the next scan load. The phase_id for
those two scan loads is “phase5_x”.
The following diagram shows the first two scan loads with the sticky status per chain output
feature enabled. The failure appears during the post_shift1 packet, even though the tool detected
the fault in the post_shift0 packet because of the presence of the blue flip-flops in Figure 9-7 on
page 539:
i0 i1 i2 e0 e1 e2 m0 m1 m2 s0 s1 s2
edt_update: 1 0 0 0 0 0 0 0 0 L L L // select_sticky_status
shift0 0 1 1 0 0 0 0 0 0 L L L // global sticky status
shift1 0 0 0 0 0 0 0 0 0 L L L
post_shift0 0 0 0 1 1 1 0 0 0 L L L
post_shift1 1 0 0 0 0 0 0 0 0 H L L // clear_sticky_status
edt_update: 1 0 0 0 0 0 0 0 0 L L L // select_sticky_status
shift0 1 0 1 0 0 0 0 0 0 X X H // global sticky status
shift1 0 0 0 0 0 0 0 0 0 L L L
post_shift0 0 0 0 1 1 1 0 0 0 L L L
post_shift1 1 0 0 0 0 0 0 0 0 L H L // clear_sticky_status
The following diagram shows the first two scan loads with the sticky status per chain output
feature turned off. The failure appears during the post_shift0 packet because of the absence of
the blue flip-flops in Figure 9-7:
i0 i1 i2 e0 e1 e2 m0 m1 m2 s0 s1 s2
edt_update: 1 0 0 0 0 0 0 0 0 L L L // select_sticky_status
shift0 0 1 1 0 0 0 0 0 0 L L L // global sticky status
shift1 0 0 0 0 0 0 0 0 0 L L L
post_shift0 0 0 0 1 1 1 0 0 0 H L L
post_shift1 1 0 0 0 0 0 0 0 0 L L L // clear_sticky_status
edt_update: 1 0 0 0 0 0 0 0 0 L L L // select_sticky_status
shift0 1 0 1 0 0 0 0 0 0 X X H // global sticky status
shift1 0 0 0 0 0 0 0 0 0 L L L
post_shift0 0 0 0 1 1 1 0 0 0 L H L
post_shift1 1 0 0 0 0 0 0 0 0 L L L // clear_sticky_status
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Types of Clock Networks To Use With SSN
Phase 6
This phase consists of one scan load. It observes the last global sticky status result associated to
the last comparator that was triggered during the last scan load of Phase 5. During this phase,
the tool also fault-injects all comparators to set all sticky statuses per comparator and observes
them with an IJTAG scan load as a last step when the feature is present. The phase_id for this
scan load is “phase6”.
i0 i1 i2 e0 e1 e2 m0 m1 m2 s0 s1 s2
edt_update: 0 0 0 0 0 0 0 0 0 L L L
shift0 0 0 0 0 0 0 0 0 0 X X H
shift1 0 0 0 0 0 0 0 0 0 L L L
post_shift0 1 0 0 1 1 1 0 0 0 H H H // last scan load
post_shift1 0 0 0 0 0 0 0 0 0 L L L
The SSN DftSpecification offers several node types to help with crossing clock domain
boundaries. The following sections explain various ways in which you can implement clock
trees to best meet your requirements.
Note
For more information about clock tree synthesis (CTS) and implementing exclude points for
CTS, refer to the section ““CTS Exclude Points for the SSH” on page 618.
• To see how to insert the clock domain transfer node within the top physical regions,
refer to Example 1 of the BusFrequencyDivider topic.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Types of Clock Networks To Use With SSN
• To see how to insert the clock domain transfer node such that the source and destination
clock domains remains localized to each physical block, refer to Example 2 of the
BusFrequencyDivider topic.
• To see how to insert the clock domain transfer node inside the receiving physical block
to keep the number of pins crossing the physical block boundary to a minimum, refer to
Example 3 of the BusFrequencyDivider topic. When you do this, you need an extra
miniature clock tree within the receiving physical block for the BusFrequencyDivider
node and must use a source synchronous timing interface between the sourcing and
receiving physical block. Refer to the next section for an explanation of such timing
interfaces.
Refer to the Using the BusFrequencyDivider to Cross CTS Regions section of the
BusFrequencyDivider topic in the Tessent Shell Reference Manual for an explanation on how
the BusFrequencyDivider and BusFrequencyMultiplier nodes work together to provide an
arbitrarily large tolerance of skew between the transmitting and receiving clock domains by
increasing the frequency_ratio value.
Example 3 of the BusFrequencyDivider topic uses this technique. The transmitting physical
block ends with a Pipeline node, which launches the data on the positive edge of the clock. The
receiving BusFrequencyDivider is built with the input_retimed property set to “on” so that it is
equipped with a negative edge retiming flip-flop stage on its input data bus. The retiming stage
ensures that the receiving node strobes the data on the opposite edge of the clock relative to the
launch edge of the transmitter.
The forward timing technique is used in Example 3 of the BusFrequencyDivider topic to hand
off data from one physical block to the next without requiring the balance clock tree of one
block to enter the other. It also uses the narrow data bus when crossing the physical block
boundaries. It is important to use this technique combined with a BusFrequencyDivider and
BusFrequencyMultiplier node pair so that you can return to using a hierarchical clock tree for
the other section of the datapath. Although it is possible to use a source synchronous interface
between each physical block, due to its easy implementation, this is not a recommended practice
in a large design, because this would accumulate a CTS insertion delay in each physical block.
The data output of the last physical block would become so delayed relative to the clock input
coming from the tester that it would be impossible to reliably sample the output data on the ATE
and find a strobe point that would work for best- and worst-case conditions.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Types of Clock Networks To Use With SSN
The following sections explain how to use forward design timing between each node when the
datapath goes and comes back between each pair of physical blocks.
Figure 9-8 shows a block diagram of a chip where the SSN datapath starts from the center top of
the device and makes a loop going down the middle of the chip. The datapath also branches out
to both sides in mirrored groups of physical blocks called “Corea.” The GPIO are all localized
in the top center block, including the clock input. The timing with the tester is completely
localized into that physical block and is predictable before you complete the full chip layout. As
Example 3 of the SSN topic illustrates, the timing of the datapath is localized between each pair
of blocks and not affected by distant elements. In the example, there are three instances of corea
on top of each other. These correspond to three Corea instances in following figure, where the
bottom corea instance from the example is the Corea instance closest to the center in the figure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Types of Clock Networks To Use With SSN
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Broadcast to Identical SSN Datapaths
Figure 9-9. Stepping Down the Clock Tree on the Last Pipeline Stage
However, not all designs with multiple datapaths benefit from input broadcast. For example,
multi-die designs with nonidentical datapaths do not benefit from broadcasting their inputs from
the same source, because nonidentical die do not use the same scan payload. Instead, each
datapath requires its own payload. Similarly, designs with mux access to their datapaths would
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Determine Failing Cores on ATE With SSN
not benefit from input broadcast, because the mux access to the different die requires serial
testing.
“Identical” refers to both the physical specifications of the datapaths and the configuration of
the datapaths. For example, if one instance has on-chip compare enabled and a second otherwise
identical instance has on-chip compare disabled, these instances are not eligible for input
broadcast. The datapaths must be physically identical and their SSHs must be configured
identically. The only exception to this is that you can include extra pipelining or a disabled SSH
(which acts like pipeline stages) after the last active SSH.
Even when broadcasting to identical datapaths, top-level ATPG can still be run. This means that
broadcast to SSN datapaths has a broader use than retargeting. In this case, the lower-level
instances must load the same scan data, whether performing retargeting or top-level ATPG.
Independent observation of datapaths is required both during loading and unloading of the
datapath.
The following figure shows an example sticky_status bit annotation. Identify the vector
annotation by searching for “sticky_status” at the end of the register name. The first portion of
the register name ending with “_inst” is the SSH instance name.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Determine Failing Cores on ATE With SSN
Normally there is one SSH instance per core instance, but there can be more than one SSH per
core as shown in the figure. Every SSH instance has its own packet location on the SSN bus.
The following figure illustrates this rotation for an example SSN bus with five pins for core
instances a and b. Core “a” has two bits per scan word: a1 and a2. Core “b” has five bits per scan
word: b1 through b5. These bit locations repeat every seven cycles.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Determine Failing Cores on ATE With SSN
The following figure summarizes the information using a table for each pin on the SSN bus.
Each table also indicates the modulus and core instance relationships:
Figure 9-13. Pin Tables With Modulus and Core Instance Relationships
These pin tables associate each failing pin and cycle combination with a particular core instance
based on the following modulus calculation:
The cycle repetition is seven, which was first established in Figure 9-12. If there is a failure in
cycle 15 on Pin1, the equation 15 % 7 calculates that the modulus is 1. Using the Pin 1 look-up
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Determine Failing Cores on ATE With SSN
table in Figure 9-13, modulus 1 reveals that the failure came from core instance “b”. The
following figure has a summary:
Figure 9-14. Determine Failing Core Instance With Modulus and Pin Tables
There are annotations in the pattern file to provide the necessary information to calculate
modulus and setup pin tables. The following figure shows an example of these annotations,
which are located in the “ssn_mapping” section:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Yield Statistics on ATE With SSN
The final piece of information that you need is the cycle where the rotation begins. The vector in
the retargeted pattern file that has the following annotation is the cycle where the rotation
begins:
Note
Creating SSN patterns with packet constraints is useful for testing non-identical cores for
which the SSH is not implemented with the on-chip compare feature.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Yield Statistics on ATE With SSN
Regardless of the number of bus words the packet occupies, when you use the “set_ssn_options
-packet_constraints no_rotation” command, the tool adds padding to the packet to make the
packet a multiple of the bus width. This enables a predictable mapping from top-level data_out
ports to the active SSHs. Because the packet can be multiple bus words, the mapping is different
for each bus_clock cycle, as shown in the following example.
This example illustrates the annotations that the write_patterns command adds to the SSN STIL
or WGL pattern files to show the SSH to SSN data_out port mapping required when you use the
“set_ssn_options -packet_constraints no_rotation” command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Yield Statistics on ATE With SSN
Example 9-1. Annotations for SSN Mapping With Packet Rotation Disabled
This mapping enables the ATE to set up a fail limit per pin × (shift_cycle % cycle_repetition),
where cycle_repetition is the number of bus words a packet occupies. In this way, you can
ensure that all cores can be observed and the ATE can enforce a per-pin limit for failure
messages.
If you need to map back to the specific from_scan_out bus of the SSH without dealing with the
complexities of bandwidth tuning, you can disable data throttling, combined with disabling the
packet rotation. This typically costs test efficiency, so it may not suit your overall run time
needs. Use the “set_ssn_options -packet_constraints no_rotation -throttling off” command to
disable data throttling and stop the rotation of the packet around the bus.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Yield Statistics on ATE With SSN
The following example shows annotations that the write_patterns command adds to the SSN
STIL or WGL pattern files to show the SSH to SSN data_out port mapping required when you
use the “set_ssn_options -packet_constraints no_rotation” command.
Example 9-2. Annotations for SSN Mapping With Packet Rotation and
Throttling Disabled
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Yield Statistics on ATE With SSN
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
Use the set_load_unload_timing_options command to set the timing of the SSN when creating
manufacturing patterns. If you share the SDC procedure set_load_unload_timing_options
between the Tessent tools and static timing analysis, it is only required for you to source the
shared file. Sharing the SDC procedure set_load_unload_timing ensures the timing of the
manufacturing patterns written from the Tessent tools precisely matches the timing of the
design.
Table 9-1 shows the patterns you should use to test your silicon with SSN. These patterns are
recommended for both first silicon test and production test. It is also recommended for both that
you start with the least complex patterns and incrementally verify the SSN with each pattern up
through the most complex patterns. The ICLNetwork Verify patterns are the least complex,
gradually leading to Retargeted SSN patterns and (where applicable) Top-Level ATPG SSN
patterns. For more detailed descriptions of the patterns in this table, refer to the section “Signoff
Patterns With SSN” on page 575.
Only designs that you have implemented with on-chip compare require the OCComp Self-Test
Pattern shown in this table. This pattern verifies that the SSN on-chip compare logic is free of
any stuck-at faults. For more information about SSN on-chip compare patterns, refer to “How to
Write SSN On-Chip Compare Patterns” in this section.
Table 9-1. SSN Manufacturing Pattern Summary
Order of Priority → → → Order of Priority
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
2. Based on multiplexers in the active datapath, you may need multiple continuity patterns.
3. Required only when the SSN is equipped with on-chip compare. If your datapath includes multiplexers,
required only when the multiplexers are configured such that the datapath contains ScanHost nodes with
OCComp.
4. Optional pattern that can be used to identify cause of failure.
Note
Manufacturing patterns achieve maximum test coverage of the device under test and do not
have any pattern limits when created.
The following topics describe the SSN patterns and, because you can write the procedures that
make up SSN patterns to separate files, they also describe the strict order you must follow when
applying the manufacturing patterns to the tester when you have written the different procedures
of the SSN pattern to separate files:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
The ssn_setup and ssn_end procedures configure the SSN nodes before and after you apply the
test_payload to the network. The test_payload is packetized scan data that streams over the SSN
bus, which delivers it to the streaming scan hosts (SSH) and scan chains. The ssn_setup
procedure prepares each active SSH to receive streaming data by programming the SSH
ijtag_registers. The ssn_end procedure prepares the SSN for the next test_payload by resetting
the SSN nodes without resetting the IJTAG programming. When you write SSN patterns using
the -maxloads option, inclusion of an ssn_end procedure after each test_payload enables the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
individual test_payload patterns to be applied in any order. The ssn_end procedures also unload
the SSH sticky bits when on-chip compare is active.
To produce the simplest SSN scan pattern, run the write_patterns command using only a format
and the -replace switch. The following example and figure show an SSN pattern with the SSN-
specific procedures along with the test_setup and test_end procedures. The ssn_setup and
ssn_end SSN procedures occur directly before and after the test_payload, respectively.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
Follow these rules when you write the procedures of SSN patterns to separate files:
• Each write_patterns command must use the same pattern parameters (such as -begin/
-end and -pattern_sets).
• The individual procedures must be applied in the correct order on the tester.
• No additional clock cycles (including TCK) or pin constraints should be applied to the
DUT before or after applying the different pattern files.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
Tip
SSN patterns are natively written to a single pattern file. Use write_patterns command
options to control whether it excludes a procedure when it writes the pattern files
Tip
When you write the SSN payload out separately and use the -maxloads option, ensure the
number of loads is greater than the number of cycles of ssn_setup and ssn_end.
Tip
The constraint “timeplate_constraints same_period” applies to SSN patterns when you write
the JTAG procedures and payload to the same pattern file. When you write them into
separate pattern files, the tool uses “timeplate_constraints none”. Writing JTAG and payload
procedures into separate files provides the most efficient use of tester memory. Refer to the
“set_tester_options” command for more information about -timeplate_constraints.
Example 9-5 shows how to optionally write some of the procedures of the SSN pattern to
separate pattern files. It writes the test_setup, ssn_setup, and test_end procedures separately
from the SSH loopback and payload patterns. By writing out test_setup, ssn_setup, and test_end
separately, you can apply numerous payload patterns without the penalty of applying slow TCK
procedures more than once.
Separate ssn_setup patterns are required for SSH loopback and scan payload data to ensure the
SSH programming matches the payload.
When you add ssn_end procedures to the payload, it enables you to apply the payload patterns
in any order.
The payload patterns from the commands in this example can be applied on the tester in any
order. The SSN data stream is dependent on the order of how the JTAG patterns are applied on
the tester. Figure 9-20 illustrates the correct order in which to apply the pattern files.
The test_setup procedure depends on your design and your custom chip configuration. The
ssn_setup procedure prepares the SSN network by configuring each SSH node. The payload
patterns can be applied in any order. The ssn_end procedure, which is part of the payload
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
pattern, is applied as part of the payload and prepares the network for the next pattern file.
Finally, after the last payload pattern is applied, the test_end procedure is applied, reconfiguring
the IJTAG network to a state that is equivalent to the state after iReset.
Note
The figure illustrates the correct order in which to apply the patterns.
Figure 9-20. SSN Pattern Files With Order for Application on Tester
Example 9-6. SSN Pattern Files With Combined Single test_setup and
ssn_setup
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
When you write SSN patterns with the -all_setup_only switch, it produces a combined setup
STIL file that is separate from the test_payload and SSN and test end procedures, as in the
following figure.
Figure 9-21. SSN Pattern Files With Combined Setup Showing Tester Order
You can similarly combine the end procedures, ssn_end and test_end, into a single pattern file
using the “write_patterns -all_end_only” switch.
Note
You cannot combine the -all_end_only switch with the -maxloads option, because the
ssn_end procedure must be applied after each payload pattern file, as shown in Figure 9-20
on page 564 and Figure 9-21.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
Example 9-7. Writing Each Procedure of the SSN Pattern to Individual Files
The JTAG and payload patterns in this example must be applied on the tester in the correct
order to avoid mismatches on the SSN bus output. The SSN data stream depends on the order of
how the patterns are applied on the tester.
This example extends the idea of the example in the section “How To Write JTAG and Payload
Procedures Separately” on page 562 by writing the on-chip compare self-test and the separate
test_end procedure. As described previously, the on-chip compare self-test verifies the on-chip
compare logic in the SSH. The on-chip compare self-test should be applied before any payload
patterns when you have enabled on-chip compare.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
While Streaming-Through-IJTAG patterns are being applied, the TAP finite-state machine is
put into the Shift-DR state while data is being delivered to the network through TDI. The SSH
functional behavior during Streaming-Through-IJTAG is the same as when you use the parallel
bus. The only difference is the delivery of streaming scan data to the network as a single bit
through TDI.
Note
Any SSN pattern created using the parallel bus can be retargeted through the top-level TAP
controller and converted to a Streaming-Through-IJTAG pattern.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
Note
Writing the on-chip compare hardware self-test pattern is not compatible with Streaming-
Thorough-IJTAG mode.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
• ICLNetwork Verify Patterns — Confirms the IJTAG registers of the SSN can be
accessed.
• Continuity Patterns — Confirms the parallel bus is connected to each SSN node and
each branch of SSN multiplexer is accessible from bus_in to bus_out.
• SSH Loopback Pattern — Confirms the network can reliably deliver packetized data
to the active SSHs without involving the EDT/scan chains.
• On-Chip Compare Self-Test Pattern — Confirms there are no stuck-at faults in the
on-chip compare logic, including the sticky bit status registers.
The examples in the following sections show how to create and apply these patterns on the
tester. This flow diagram indicates the order in which to apply them and incrementally verify
the functional behavior of the SSN:
Figure 9-24. Order To Apply Patterns for SSN Pattern Failure Debugging
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
that they can be read and written without any errors. Passing ICLNetwork verify patterns
indicates the SSN network is properly configured, including the SSH nodes that are
programmed as part of the ssn_setup procedure. To see the order of application for ICLNetwork
verify patterns, refer to Figure 9-25.
Continuity Patterns
The following example shows the commands to write SSN continuity patterns for application
on the tester. These patterns verify that the parallel bus is connected to each SSN node without
any bit swizzles or opens and that each branch of an SSN multiplexer is accessible from
bus_data_in to bus_data_out. A passing SSN continuity pattern indicates the parallel bus in the
design has no opens or gaps. To see the order of application for SSN continuity patterns, refer to
Figure 9-26.
Note
Each of the SSN multiplexers along the parallel bus is configured individually with an
IJTAG iProc followed by an iCall to that procedure. Refer to the script in the section
“Second DFT Insertion Pass: Inserting Top-Level EDT, OCC, and SSN” on page 511 for a
working example of how the iCall reconfigures the SSN multiplexers.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
Note
The ssn_end procedure is an empty procedure when it is written and the pattern set is
ssn_continuity.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
In this example, the SSH loopback patterns test the SSH without involving the EDT and scan
chains. The SSH loopback pattern uses the ssn_setup procedure to configure the SSH based on
the payload of the active cores. During the SSH loopback pattern, the streaming interface (bus
or IJTAG) delivers packetized data to each active SSH that is programmed to match the
payload. The ssn_end procedure is applied to the network after the SSH loopback pattern. When
you combine SSH loopback patterns and payload patterns, you must place the SSH loopback
patterns before the payload patterns, because the SSH loopback patterns confirm that the
network can reliably deliver packetized data, as described previously. A passing SSH loopback
pattern indicates the SSN can reliably deliver packetized data to the current configuration of
active cores. To see the order of application for SSH loopback patterns, refer to the following
figure.
The following example shows the commands to write the chain and scan patterns with the
loopback pattern for application on the tester. By extending the previous example to include the
chain and scan patterns, you can further narrow the scope of failing patterns on silicon. To see
the order of application for SSH loopback, chain, and scan patterns on the tester, refer to
Figure 9-29.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Manufacturing Patterns With SSN
Example 9-13. Writing SSH Loopback, Chain, and Scan Patterns to Individual
Files
Figure 9-29. Order To Apply SSH Loopback, Chain, and Scan Patterns
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Signoff Patterns With SSN
The following sections describe the unique behavior of each type of signoff pattern when
written with SSN present. The signoff pattern guidelines in these sections minimizes the risk of
problems occurring in your post-layout netlists. For each test, the section does the following:
1. Parallel Scan
2. SSH Loopback
3. Serial Chain
4. Serial Scan
Each pattern uses the previously validated step. You should create and simulate these patterns
until they are error-free before signoff, regardless of whether you choose parallel bus or IJTAG
streaming for SSN.
Note
You should create signoff patterns only after you have successfully simulated the ICL
Network Verify and SSN Continuity patterns without any errors.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Signoff Patterns With SSN
Note
Verification of the SSN at intermediate levels of hierarchy in your design is necessary prior
to top-level ATPG or pattern retargeting when you have assembled the datapath by hand or
using a script.
While you simulate these patterns, the synchronous clock source to the SSN is not active, and
the data delivered to the scan cells is not packetized data. The SSH is not actively transferring
data between the SSN bus and the EDT/scan chains, and the scan signals generated by the SSH
in the serial patterns are replaced by cut points that the tool automatically creates. The
transitioning of the scan signals precisely models the protocol of the scan pattern. The
shift_capture_clock and capture clock run at their default clock periods unless you use the
set_load_unload_timing_options and set_capture_timing_options commands to specify
otherwise.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Signoff Patterns With SSN
During simulation of this pattern, the SSN bus_clock is the clock source, and packetized data
synchronously streams over the SSN. The SSH extracts the correct bits from the packet based
on the ssn_setup procedure. The data loops back into the SSH, skipping the EDT/scan chains.
After the data loops back into the SSH, it returns to the packet in the same time slot as the input
data. As the packet synchronously streams through the network, the expected values are strobed
on bus_out. During simulation of this pattern, only the bus_clock runs, and the scan signals
from the SSH do not toggle and are constrained to zero.
During simulation of these patterns, the SSN bus_clock is the clock source, and packetized data
synchronously streams over the SSN. The SSH extracts the correct number of bits from the
packet and transfers them to the EDT/scan chains. The scan signals are synchronously created
within the SSH and clock the scan circuit. When SSN is present, the tool suppresses the capture
clock, regardless of whether you use the Tessent OCC or a third-party OCC. Without the
capture cycle, the SSH holds the scan_en high during chain tests. During unloading of the scan
chains, the SSH puts the scan unload data back into the packet. When on-chip compare is off,
the scan unload data is added back into the packet in the same time slots as the input data. When
on-chip compare is enabled, the data is added back into the packet but does not overwrite the
input data. It is added to the packet in a location determined by the number of status groups.
The shift_capture_clock runs at the default clock period unless you use the
set_load_unload_timing_options command to specify otherwise.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Signoff Patterns With SSN
Typically, the SSN bus_clock runs at a slower frequency than specified with the
set_load_unload_timing_options command at the block level. The bus clock period is governed
by the packet size relative to the bus width. When the packet size is less than two bus_clock
cycles, the SSN bus_clock is reduced to the shift_capture_clock frequency. To increase the
bus_clock frequency to the default or to the maximum frequency you specified using the
set_load_unload_timing_options command, use the SIM_SSN_MAXIMUM_BUS_SPEED
testbench parameter. When you write the testbench with this parameter set to one, the tool
increases the size of the packet so that the bus_clock runs at its maximum frequency in a
Verilog testbench.
It can be difficult to debug mismatches in a serial SSN simulation, because the SSH obfuscates
the EDT channels/scan chains. Furthermore, there may be any number of pipeline stages along
the SSN bus, further complicating the analysis of the root cause to the failure. To debug serial
SSN simulations, use the SIM_PARALLEL_MONITOR testbench parameter. When you set
this parameter to one, the testbench monitors the load and unload values of each memory
element and echoes the instance name to the log file for easier analysis of any failure.
For large designs, simulating all chain test patterns can be time-consuming and impractical. Use
the “set_chain_test -type nomask” command to enable you to efficiently simulate the shift path
of all your scan chains without testing the magic logic of the EDT decoder. Combine the
“set_chain_test -type nomask” command with the “write_patterns -end 0” command to write a
single chain test pattern that tests the shift paths of all the scan chains. A single chain test pattern
that simulates all scan chains is all you require.
The following example commands write a single serial chain test pattern that excludes testing
any of the EDT decode logic:
When simulating this pattern, the SSN network operates exactly as described in the preceding
subsection, Serial Chain Patterns, with the addition that capture cycles are included in this
pattern. The correct number of capture pulses comes through the OCC clock control bits.
During stuck-at fault testing, the SSH synchronously creates the capture clock from the SSN
bus_clock. The SSH capture clock frequency comes from the default clock period unless you
use the set_capture_timing_options command to specify otherwise. During transition fault
testing, the functional clock is the capture clock. This pattern is an SSN end-to-end test.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Signoff Patterns With SSN
For large designs, simulating all serial scan patterns can be time-consuming and impractical.
Use the “write_patterns -end 0” command to write a single end-to-end scan test pattern that is
sufficient to test the SSN along with the previously specified patterns.
You can use the SIM_PARALLEL_MONITOR testbench parameter, as described in the Serial
Chain Patterns section, to debug the serial scan patterns.
The following example command writes a single serial scan test pattern:
Depending on your flow, you can perform verification of the SSN during integration either at
the RTL or the gate level. For both cases, the ICLNetwork verification patterns also verify the
Streaming-Through-IJTAG Scan Data path of the SSN. The entry point and path within the
SSH is the same, regardless of whether you are accessing IJTAG registers in the SSH or
streaming scan data through the IJTAG interface of the SSH.
Table 9-3. Block-Level Verification Pattern Summary
Least complex → → → Most complex
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Signoff Patterns With SSN
• Parallel pattern during top-level ATPG with child cores — During ATPG, the top-
level scan chains and the wrapper scan chains of each child core are active. This pattern
tests the intra-domain capture between the top level and the child cores. The active SSHs
in the parallel pattern are capture-aligned. You should write the parallel pattern without
a pattern count limit.
• Parallel pattern during pattern retargeting — Normally, during scan pattern
retargeting with SSN, each core transitions between shift and capture independently.
However, a Verilog testbench cannot accurately model this behavior for the cores.
Therefore, in this testbench the active cores appear to be capture-aligned, although this
is not the way that the implemented design will behave. Use this pattern to verify the
clocking during pattern retargeting.
For a description of parallel scan pattern behavior and an example of how to write the pattern,
refer to the section “Parallel Scan Patterns” in the topic “Block-Level Signoff Patterns” on
page 576.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Signoff Patterns With SSN
During top-level ATPG when child cores are present, the top-level SSH loopback pattern
delivers packetized data to the top-level SSH and the SSH of each child core. The cores are in
external mode. During simulation of this pattern, the tool forces the scan signals at the edges of
the SSHs low. The packet contains data for the top-level SSH and the SSH for each child core.
This pattern is short and simulates quickly. It verifies that each SSH can precisely extract and
replace data in the packet.
You cannot retarget SSH loopback patterns. During pattern retargeting, the packet used in the
SSH loopback test is created from the scan data for each core whose patterns is being retargeted.
In this case, the purpose of the SSH loopback pattern is to test the SSN with a representative
packet to be used during pattern retargeting.
For a description of SSH loopback pattern behavior and an example of how to write the pattern,
refer to the section “SSH Loopback Patterns” in the topic “Block-Level Signoff Patterns” on
page 576.
• Serial chain pattern during top-level ATPG with child cores — During ATPG, this
pattern delivers packetized scan shift data to the top-level SSH and to the SSH of each
child core. The child cores are in external mode, and the local SSH to those child cores
shifts their wrapper chains. During simulation of this pattern, the capture clock is
suppressed and the top-level SSH and child core SSHs are capture-aligned.
• Serial chain pattern during pattern retargeting — During simulation of this pattern,
the tool creates the packet from each core whose patterns are being retargeted. Each core
operates independently of the others, receiving a different number of bits per packet
based on data throttling.
For a description of serial chain pattern behavior and an example of how to write the pattern,
refer to the section “Serial Chain Patterns” in the topic “Block-Level Signoff Patterns” on
page 576.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Signoff Patterns With SSN
• Serial scan pattern during top-level ATPG with child cores — During ATPG, this
pattern delivers packetized scan data to the top-level SSH and to the SSH of each child
core. The child cores are in external mode, and the local SSH to those child cores shifts
their wrapper chains. During simulation of this pattern, the scan chains shift and capture,
and the top-level SSH and child core SSHs are capture-aligned.
• Serial scan pattern during pattern retargeting — During simulation of this pattern,
the tool creates the packet from each core whose patterns are being retargeted. Each core
operates independently of the others, receiving a different number of bits per packet
based on data throttling.
For a description of serial chain pattern behavior and an example of how to write the pattern,
refer to the section “Serial Scan Patterns” in the topic “Block-Level Signoff Patterns” on
page 576.
Depending on your flow, you can perform verification of the SSN during integration either at
the RTL or the gate level. For both cases, the ICLNetwork verification patterns also verify the
Streaming-Through-IJTAG Scan Data path of the SSN. The entry point and path within the
SSH is the same, regardless of whether you are accessing IJTAG registers in the SSH or
streaming scan data through the IJTAG interface of the SSH.
Table 9-4. Top-Level Verification Pattern Summary
Least complex → → → Most complex
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Signoff Patterns With SSN
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Signoff Patterns With SSN
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
SSN SDC constraints work in conjunction with many of the Tcl procs dedicated to Tessent-
logictest SDC constraints, such as those that define the shift, slow_capture, and fast_capture
STA modes. This is possible because SSN is simply a faster and more flexible scan
implementation than traditional implementations.
The generated constraints added for SSN perform the following functions:
• Declare the SSN bus clocks and define the timing of the SSN bus ports.
• Relax paths across node multipliers and node dividers with MCP constraints.
• Accurately time the SSH scan interface circuits, which includes creating the scan clocks
and adding timing exceptions for the scan control signals and serial paths.
• Add timing exceptions to and from subphysical block boundaries.
• Provide a way to time the SSN/SSH logic of the lower-level physical blocks.
• Properly time SSN nodes that can only stream through IJTAG, with no SSN bus clock.
• Provide ways to disable the SSN logic if needed, and prevent other mode clocks, such as
ijtag_tck, from propagating to the scan flops.
For more information about constraints, refer to the section “SSN/SSH SDC Constraint
Descriptions” on page 595.
The chapter “Timing Constraints (SDC)” on page 945 describes the flow usage of the standard
logictest Tcl procs. The addition of SSN constraints adds only minor changes to the usage of
these procs. You still use the following design flow:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
Note
When you specify the SSH scan_signals_bypass, all modified logictest proc constraints
cover both the SSN mode and the bypass mode timing paths at the same time, so there is no
need to separate your bypass-mode STA from your SSN-mode STA runs.
Summary of New and Modified Tcl Procs for SSN Timing Support
<prefix> :== tessent_set
• The SDC file equivalent of the command of the same name in Tessent Shell
For usage information, refer to the set_load_unload_timing_options command reference
page.
• Sets global Tcl timing variable values, which are used in SSN constraints
Modified Preexisting Procs
<prefix>_ltest_create_clocks
• Creates SSN bus clocks on top-level ports and generated clocks within the SSH logic
<prefix>_ltest_non_modal
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
<prefix>_ltest_modal_edt_slow_capture
Note
This proc still permits ts_tck_tck to propagate to the SSH logic so it can properly
time the serial scan path to and from the IJTAG network. It uses the assumption that
timing paths between the SSH IJTAG registers and the SSH logic always meet a single-
cycle path of ts_tck_tck, with no excessive stress to the quality of results (QoR) for the
layout. Clock tree synthesis can balance both branches of ts_tck_tck within the SSH
logic.
• <prefix>_ltest_ssn_with_sub_PBs
• <prefix>_ltest_create_clocks_with_sub_PBs
• <prefix>_ltest_modal_shift_with_sub_PBs
• <prefix>_ltest_modal_edt_slow_capture_with_sub_PBs
• <prefix>_ltest_modal_edt_fast_capture_with_sub_PBs
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
The following summarizes the usage flow for preparing a block with SSN for synthesis:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
Note
The <prefix>_non_modal proc declares all SSN bus clocks and SSH-generated scan clocks
and propagates them alongside your functional clocks to all your scannable domains. Such
clocks may expose some invalid shift_capture_clock (SCC)-speed capture paths between
otherwise asynchronous functional domains. Because synthesis usually runs with ideal clocks,
these bogus timing paths are unlikely to fail hold timing; however, it is possible that they could
still fail setup timing if your specified scan frequency is too high. Such a proc is also unusable
as-is in layout without major modification, as described in the subsection “Single-Mode vs
Dual-Mode Constraining in Synthesis/Layout” in the section “LOGICTEST Instruments” on
page 969.
If your design includes at least one SSH controller, your clock tree synthesis (CTS) step must
include the CTS exclude point declarations listed by the tessent_get_cts_skew_groups_dict proc
inside your generated SDC file. These points are located at the base of the SSH edt_clock and
shift_capture_clock generated clock source pins. These prevent the potentially problematic
balancing of the SSN datapath clock network with your potentially very large scan clock
network.
The following sections describe how the presence of SSN affects these SDC constraints.
Loads non-modal constraints for all Tessent DFT controllers but turns off the logictest DFT
logic, including all SSN bus nodes and the SSH. In this mode, some constraints are needed
to prevent ts_tck_tck from propagating to the scannable domains through the SSH “ijtag
streaming” and “capture with tck” logic. For more details, refer to the subsection
“<ltest_prefix>_non_modal” on page 979.
Forces the SSH and SSH bypass scan_enable signals to be tied active and covers all SSN
bus and SSH scan interface timing paths. If the SSH supports bypass mode, both bypass and
SSH modes are covered at once.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
Adds the same SSN constraints as the <prefix>_modal_shift proc but leaves the SSH
scan_en signals toggling in order to time them using specifications from the
set_load_unload_timing_options command. Optionally relaxes SCC intra- and cross-
domain paths to avoid false violations. Its main function is to cover the scan_en signal
timing path.
You can merge the preceding Modes 2 and 3 into a single stage to save on total layout runtime
and complexity. You can do this only if your design meets the following criteria:
• Clock tree synthesis (CTS) has balanced the entire SSH shift_capture_clock source
fanout, along with the same SSH edt_clock source fanout, so that there are no hold
issues on same-edge cross-domain paths.
• All cross-domain paths can still meet setup timing in one SCC cycle. Capture clock
waveforms are assumed to be the same as those of the shift clock.
In this case, you only need to run the <prefix>_modal_edt_slow_capture proc, which then
covers both the shift paths and capture paths in addition to properly timing the scan_enable
signal with the specified number of setup and hold cycles.
set tessent_relax_xdomain_capture_paths 1
Setting this variable means the tool supports hardened OCCs and all-design-level STA. Each
generated clock is defined at the OCC slow_clock input pin, to permit a possible
shift_capture_clock from the parent level to go through the fast_clock pin in multi-level
designs. If the OCC persistent slow_clock buffer is visible in the netlist, the multicycle path
constraint is defined on its input pin.
You can modify each generated clock OCC pin by editing a global OCC dictionary, but support
for full custom OCC is not available.
If you do not define this variable, you can also choose from the following options:
• Not relaxing any path—this means closing stuck-at slow capture timing, for setup and
hold, across those generated clocks coming from the OCC
• (default) Applying a global same-edge multicycle path -hold to the SSH
shift_capture_clocks
Limitation for bypass mode constraints: When the SSH bypass is present, the bypass mode
scan_en and edt_update input ports have no MCP declaration, unlike the SSH local scan_en
signal sources, which MCP constraints relax based on timing specifications from the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
Furthermore, the bypass mode test clock frequency is assumed to be the same as the SSH test
clock frequency, which is unlikely to be the case. If you intend to run the SSH-bypass scan at a
slower frequency than the SSH-based scan, you must override the SSH-bypass test_clock
definition in your main script after calling the procs listed previously. You may also need to add
your own MCP declarations for both scan_en and edt_update top-level ports, as in the following
example:
<prefix>_modal_edt_slow_capture
create_clock –period <bypass test_clock period> \
[get_ports test_clock port]
Set_multicycle_path 2 –setup –from [get_ports <scan_enable port>]
Set_multicycle_path 2 –hold –from [get_ports <scan_enable port>]
Set_multicycle_path 2 –setup –from [get_ports <edt_update port>]
Set_multicycle_path 2 –hold –from [get_ports <edt_update port>]
Note
As with SSN/SDC Constraints for Layout, if your design meets the configuration conditions
described in the note in that section, you can run only the
<prefix>_modal_edt_slow_capture proc to cover both the shift and edt_slow_capture modes
simultaneously.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
partial child PB instance netlists, you must replace your call to the usual logictest modal procs
with their “*_with_sub_PBs” equivalent; that is, the following:
• <prefix>_ltest_modal_shift_with_sub_PBs
• <prefix>_ltest_modal_edt_slow_capture_with_sub_PBs
• <prefix>_ltest_modal_edt_fast_capture_with_sub_PBs
These procs include retargeted SDC constraints for all SSN logic inside all of your individual
child PBs. Tessent-generated graybox models include all SSN logic. Without them, the parent
SSN bus clock would enter through the block’s SSN bus pins and propagate directly to the
block’s scannable logic. This, in turn, would overconstrain the child SSH-generated DFT
signals. The following is an example of such a retargeted constraint:
When you run top-level logictest STA with isolated lower-level PBs, your calling script must
also call the proc <prefix>_ltest_lower_pbs_external_mode. This takes care of constraining the
DFT signal and the OCC logic of the lower PBs. For example, to set the shift STA mode, you
must run the following command sequence:
tessent_set_default_variables
set_load_unload_timing_options <list of timing options>
# (or source the file containing this command)
<prefix>_ltest_modal_shift_with_sub_PBs
<prefix>_lower_pbs_external_mode
Note
Using *_with_sub_PBs procs is subject to the following limitations:
• These procs create retargeted SSN/SSH SDC constraints for all instances of SSN/SSH
modules in the child PBs; however, all PBs end up using the same set of timing
parameter variables (such as the bus clock, the shift clock frequency, and the number of
scan_en/edt_update extra setup/hold cycles) as the level of the current design. Child PBs
may have been designed and laid out with different parameter sets, with potentially
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
faster internal shift clocks than their parents. If this applies to any of your PBs, you must
manually fix their associated constraints in your extract_sdc file.
• SSN/SSH constraints are declared for all PB instances, so you must load all of those
instances to avoid errors in reading constraints.
• You cannot set child PBs to internal ltest mode only using the provided procs in the SDC
file. If you need to do this, you can copy your <prefix>_lower_pbs_external_mode
proc, change its name, and manually change the settings of the int_ltest_en and
ext_ltest_en signals to put all child PBs into internal mode.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
global tessent_ssn_bus_clock_network_period
global time_unit_multiplier
set local_ssn_bus_clock_network_period \
[expr $tessent_ssn_bus_clock_network_period * $time_unit_multiplier]
create_clock <port> -name tessent_ssn_bus_clock_network \
-period $local_ssn_bus_clock_network_period –add
The option values corresponds to the maximum possible SSN network speed across your entire
design, even if your current level test patterns do not require that speed. Refer to the
set_load_unload_timing_options command reference page for more information on using it in
the SSN reference flow.
Note
If your SSN scan host implementation uses only Streaming-Through-IJTAG, your
generated SDC file does not contain this declaration. For more information about
Streaming-Through-IJTAG, refer to “Streaming-Through-IJTAG Scan Data” on page 532.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
• Force SSN bus data primary inputs at 0% of the tester period or 50% of the bus_clock
period. Refer to the following discussion for further explanation.
• Cause the bus clock to rise at 0% of the tester period.
• Measure SSN bus data primary outputs at 0 ns into the next tester period.
This translates to an external delay of zero for both directions.
The first node of an SSN bus might capture its input data at every rising edge of the bus clock or
on the first phase of a multi-phase node. This is the case for nodes of type Pipeline, ScanHost, or
Multiplexer, or one of BusFrequencyMultiplier with its capture_phase property set to
“transmitter”. For such nodes, the following is true:
• If the current design level is chip, the SSN patterns force the bus inputs at 50% of the
bus clock period inside the tester period, thus giving a half bus_clock_period margin for
both setup and hold.
• Otherwise, the patterns assume a synchronous data path across the block boundaries and
force the bus inputs at 0% of the tester period.
For all other node types, SSN patterns force the bus inputs at 0% of the tester period.
The 0% output delay permits a full bus clock period to the setup margin of the bus data out loop
timing path, as shown in the figure “Schematic Showing Loop Timing Path for Bus Data Out”
in the section “BusFrequencyDivider” in the Tessent Shell Reference Manual.
The input/output delay constraints include an “-add_delay” option that enables them to share
their primary pin with functional signals when you apply the non-modal constraints.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
At the chip level, the tester directly feeds input/outputs. Therefore, input/output pin delays are
based on the actual pattern waveforms, and no adjustments or virtual clocks are necessary. For a
chip, constraints look like the following:
For a block, in order to account for pre- and post-layout designs with varying ssn_bus_clock
latency and in order to facilitate timing path budgeting, the proc declares a virtual clock and
set_input/output_delay constraints use global user-modifiable Tcl variables, such as in the
following example:
proc xxx_ltest_set_timing_variables_default:
proc xxx_ltest_ssn:
set local_ssn_bus_clock_network_period \
[expr $tessent_ssn_bus_clock_network_period * $time_unit_multiplier]
set local_ssn_bus_input_delay
[expr $tessent_ssn_bus_input_delay_percentage/100. * \
$local_ssn_bus_clock_network_period]
set local_ssn_bus_output_delay \
[expr $tessent_ssn_bus_output_delay_percentage/100. * \
$local_ssn_bus_clock_network_period]
Note
To accurately reflect the generated test patterns, the following occurs at the chip level:
• If the first SSN datapath node is a receiver_1x_pipeline (which captures at the falling
edge of the ssn_bus_clock), the preceding input delay is set to 0.0 ns.
• If the first node is anything else (that is, captures at the rising edge of the
ssn_bus_clock), the input delay is set to 0.5 × ssn_bus_clock_period.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
For a core, the input delay is always set to 0.0 + <an external delay timing budget>, assuming
the following:
The driving node exists inside the chip, either in the parent design or in another core.
SSN source nodes always toggle their output data on the ssn_bus_clock posedge, and full-speed
data paths likely need balanced source/destination clocks.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
As another example, a bus datapath between a (1 4) divider and a (3 4) multiplier ends up with
timing margins of two cycles of setup and two cycles of hold, making that combination suitable
for data handoff between two skewed CTS regions:
# -----------------------------------------------------------------------
# From bus_frequency_divider (phase 1 4) to bus_frequency_multiplier
# (phase 3 4)
set_multicycle_path -setup 2 -start \
-from [tessent_get_cells <divider node instance>/datapath/r1*] \
-to [tessent_get_cells <multiplier node instance>/datapath/r0*]
set_multicycle_path -hold 3 -start \
-from [tessent_get_cells <divider node instance>/datapath/r1*] \
-to [tessent_get_cells <multiplier node instance>/datapath/r0*]
A bus datapath between the previously referenced (1 4) divider node and a (1 4) output pipeline
node features timing margins of four cycles of setup and zero cycles of hold, thus requiring
balanced source and destination clocks:
# -----------------------------------------------------------------------
# From bus_frequency_divider (phase 1 4) to output_pipeline (phase 1 4)
set_multicycle_path -setup 4 -start \
-from [tessent_get_cells <divider node instance>/datapath/r1*] \
-to [tessent_get_cells <multiplier node instance>/datapath/r0*]
set_multicycle_path -hold 3 -start \
-from [tessent_get_cells <divider node instance>/datapath/r1*] \
-to [tessent_get_cells <multiplier node instance>/datapath/r0*]
Datapaths from SSN bus output ports of a (1 4) OutputPipeline node also feature four cycles of
setup margin, as shown in the figure “Output Data Slow Down Using BusFrequencyDivider
Node” in the section “BusFrequencyDivider” in the Tessent Shell Reference Manual, because
the test patterns capture the bus data at the rising edge of Phase 1, leaving all four bus cycles for
data to close its output timing loop:
# -----------------------------------------------------------------------
# From output_pipeline (phase 1 4) to output bus ports
set_multicycle_path -setup 4 -start \
-from [tessent_get_cells <divider node instance>/datapath/r1*] \
-to [tessent_get_ports <list of output bus ports>]
set_multicycle_path -hold 3 -start \
-from [tessent_get_cells <divider node instance>/datapath/r1*] \
-to [tessent_get_ports <list of output bus ports>]
More subtle MCP constraints are required when handling datapath sections that run across bus
clocks that operate at frequencies that are ratios of each other. This could result in, for example,
a (1 2) divider fanning out to a (3 4) multiplier, which implies that the destination multiplier is
clocked at double the frequency of the source divider. In such cases, the MCP constraint always
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
sets its setup and hold number of cycles relative to the faster of the two clocks, using either the
-start or the -end option:
# -----------------------------------------------------------------------
# From bus_frequency_divider (phase 1 2) to bus_frequency_multiplier
# (phase 3 4)
set_multicycle_path -setup 2 -end \
-from [tessent_get_cells <divider node instance>/datapath/r1*] \
-to [tessent_get_ports <multiplier node instance>/datapath/r0*]
set_multicycle_path -hold 2 -end \
-from [tessent_get_cells <divider node instance>/datapath/r1*] \
-to [tessent_get_ports <multiplier node instance>/datapath/r0*]
Input and output pins of child physical blocks may also include phases if they internally connect
to either SSN multiplier or divider nodes. These phases are reported in the module description
of their .icl file. Because the internal cells of a physical block are not normally visible to the
parent SDC, you must set MCP constraints using the -through switch with the PB boundary
pins, as in the following example:
# -----------------------------------------------------------------------
# From PB output pins (phase 1 2) to PB input pins (phase 0.5 1)
set_multicycle_path -setup 1 -start \
-through [tessent_get_pins <PB1 list of bus data output pins> \
-through [tessent_get_pins <PB2 list of bus data input pins>]
set_multicycle_path -setup 1 -start \
-through [tessent_get_pins <PB1 list of bus data output pins> \
-through [tessent_get_pins <PB2 list of bus data input pins>]
The extract_sdc command itself actively traces the .icl files of the design to find which actual
SSN node is connected to which other SSN nodes and whether phase specifications are
involved. Such tracing enables handling of bus networks with multiplexer nodes and
connections between partial lists of SSN bus ports or subphysical block pins, which can further
complicate the list of MCPs. For the sake of clarity and self-documentation, the SDC file reports
the traced list of connections under a comment banner labeled “SSN list of node connections.”
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
This banner shows all connections, including those not involving clock phases, as in the
following example:
#----------------------------------------------------------------------
# SSN list of node connections
# output_pipeline 'top_rtl2_tessent_ssn_out_pipe_out_inst'
# --> SSN Bus Data Outputs
# bus_frequency_divider 'top_rtl2_tessent_ssn_bus_freq_div_1_inst'
# --> output_pipeline 'top_rtl2_tessent_ssn_out_pipe_out_inst'
# scan_host 'top_rtl2_tessent_ssn_scan_host_1_inst'
# --> bus_frequency_divider 'top_rtl2_tessent_ssn_bus_freq_div_1_inst'
# pipeline 'top_rtl2_tessent_ssn_pipe_2_inst'
# --> scan_host 'top_rtl2_tessent_ssn_scan_host_1_inst'
# bus_frequency_multiplier 'top_rtl2_tessent_ssn_bus_freq_mult_1_inst'
# --> pipeline 'top_rtl2_tessent_ssn_pipe_2_inst'
# physical_block 'corea_i1' (launching phase = 1/2)
# --> bus_frequency_multiplier 'top_rtl2_tessent_ssn_bus_freq_mult_1_inst'
# physical_block 'corea_i2' (launching phase = 1/2)
# --> physical_block 'corea_i1' (strobing phase = 0.5/1)
# pipeline 'top_rtl2_tessent_ssn_pipe_1_inst'
# --> physical_block 'corea_i2' (strobing phase = 0.5/1)
# SSN Bus Data Inputs
# --> pipeline 'top_rtl2_tessent_ssn_pipe_1_inst'
#----------------------------------------------------------------------
Datapath instances retimed using a trailing edge (TE) register at their inputs have a multicycle
path timing exception from the reset register that controls the datapath registers to the TE
retiming registers. This includes the Receiver1XPipeline, and it also includes the FIFO and
BusFrequencyDivider instances if their datapaths are retimed with TE registers. The input data
for these instances is held at zero during reset.
# Reset of the TE datapath retiming register can have a setup MCP of 2 because
# the initial data in this register is flushed and not observed during test.
# The data input of the registers is also zero during reset.
set_multicycle_path -setup 2 \
-from [tessent_get_cells \
top_tessent_ssn_receiver_1x_pipe_in_inst/fsm/bus_sync_reset_ff*] \
-to [tessent_get_cells \
top_tessent_ssn_receiver_1x_pipe_in_inst/datapath/r0_n*]
set_multicycle_path -hold 1 \
-from [tessent_get_cells \
top_tessent_ssn_receiver_1x_pipe_in_inst/fsm/bus_sync_reset_ff*] \
-to [tessent_get_cells \
top_tessent_ssn_receiver_1x_pipe_in_inst/datapath/r0_n*]
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
Shell identifies which clocks are associated with the first and last sequential elements on the
SSN datapath for SDC extraction when a Fifo node is present.
A Fifo node includes an input register for storing input packets, similar to that of a
BusFrequencyDivider, and it selects the output packet based on the phase counter value, similar
to the operation of a BusFrequencyMultiplier. Similar to datapaths between
BusFrequencyDivider and BusFrequencyMultiplier explained in the section “SSN Datapath
Timing Constraints” on page 598, a set_multicycle_path declaration can relax FIFO internal
paths from the input register. The setup and hold parameters for this declaration depend the
following property values inside the DftSpecification/SSN/Datapath/Fifo wrapper:
• frequency_ratio
• in_clock_to_out_clock
• in_clock_to_out_clock_skew_programmable
You can think of the last two properties as defining a “deskewing” mode.
Data output from the FIFO input register remains stable for a number of clock cycles equal to
the value of the FIFO frequency_ratio property. The FIFO output register captures this data
either in the middle of these cycles (when in_clock_to_out_clock_skew is early_or_delayed) or
at the end of these cycles (when in_clock_to_out_clock_skew is delayed_only). Refer to the
figures “Waveform for FIFO early_or_delayed Configuration” and “Waveform for FIFO
delayed_only Configuration” in the “Fifo” reference page in the Tessent Shell Reference
Manual to see examples of these capture cycles. Because of this, both of your SDC FIFO
multicycle path (MCP) constraint “-setup” and “-hold” parameters depend on the FIFO
frequency_ratio and in_clock_to_out_clock_skew parameters. You can adjust them at run time
if the in_clock_to_out_clock_skew_programmable parameter is on.
In the SDC, the setup and hold calculations are done explicitly using intermediate Tcl variables.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
Examples
Example of FIFO Settings in Your Primary Calling Script
The following example shows how to use Tcl variables in the primary calling script to set up the
FIFO and control programmable skew settings:
tessent_set_default_variables
tessent_ssn_fifo_deskew_setting(sfifo0) delayed_only
tessent_ssn_fifo_deskew_setting(sfifo1) early_or_delayed
tessent_ssn_fifo_deskew_setting(sfifo2) delayed_only
tessent_set_non_modal
# this proc calls the tessent_set_ltest_ssn proc, which appears in the
# next example section
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
global tessent_ssn_fifo_deskew_setting
array set sfifo_setup_multiplier {delayed_only 1 early_or_delayed 0.5}
# sfifo0:
# frequency_ratio : 4
# in_clock_to_out_clock_skew: delayed_only
# in_clock_to_out_clock_skew_programmable: on
set deskew_setting delayed_only
set frequency_ratio 4
set_multicycle_path \
-setup [expr int($frequency_ratio* $sfifo_setup_multiplier($deskew_setting))] \
-from [tessent_get_cells $tessent_sfifo_mapping(sfifo0)/datapath/fifo_reg*] \
-to [tessent_get_cells $tessent_sfifo_mapping(sfifo0)/datapath/bus_data_out*]
set_multicycle_path \
-hold [expr $frequency_ratio - 1] \
-from [tessent_get_cells $tessent_sfifo_mapping(sfifo0)/datapath/fifo_reg*] \
-to [tessent_get_cells $tessent_sfifo_mapping(sfifo0)/datapath/bus_data_out*]
Note
The preceding constraints repeat for sfifo1 and sfifo2, but with variations for the actual
MCP constraints that depend on the DftSpecification property settings for these FIFOs.
Note
The section in bold in the previous example is present only when programmable skew is
enabled; that is, in_clock_to_out_clock_skew_programmable is set to “on”.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
“ScanHost Scan Interface Operation and Timing Requirements” of the ScanHost reference page
in the Tessent Shell Reference Manual.
Call the set_load_unload_timing_options command to configure the SDC clock and control
signal timing parameters, and to configure pattern generation so that the parameters of the
generated patterns are consistent with those used during timing closure and analysis. The
following table lists set_load_unload_timing_options arguments that define Tcl variables used
in SDC. If your primary timing script does not explicitly set these options, then the tool uses the
default values from the table.
Table 9-6. set_load_unload_timing_options Arguments and SDC Variables
Option SDC Timing Variable Default
-ssn_bus_clock_period tessent_ssn_bus_clock_network_period 2.5 ns
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
When the ScanHost node is active, the SSN bus clock pin generates the shift_capture_clock and
the edt_clock used to operate the scan circuitry. One scan bit per chain gets shifted in per SSN
packet. If the SSN packet is small enough to occupy less than two bus clock cycles on the
network, the scan clocks can be generated from the SSN bus_clock using a clock gater. The test
patterns then adjust the SSN bus clock frequency to match the required shift_clock_period.
However, when the SSN packet is large enough to occupy a minimum of N bus clock cycles on
the network, a faster frequency clock is applied to the ssn_bus_clock pin and is divided to
generate the shift clocks using a clock divider flop, maintaining as much as possible a fifty-
percent duty cycle. Because these two clock paths differ slightly, both must be covered in SDC
and STA, requiring the SDC to create one generated clock for the gated clock and another for
the divided clock.
When the test patterns generate the scan clocks using a clock gater, they must increase the SSN
bus clock period to be as large as the shift clock period, which defaults to 10 ns. The SDC
version of the SSN bus clock created at the shift_clock_period is called
ssn_bus_clock_scan_slow (green dot labeled 1 in Figure 9-31) and is referenced as the source
of the generated clocks ssn_shift_capture_clock_gated and ssn_edt_clock_gated, which are
defined on the outputs of the edt_clock_cg and shift_capture_clock_cg persistent cells (green
dots 2 and 3 in Figure 9-31).
When the test patterns generate the scan clocks using a clock divider, another SDC clock called
ssn_bus_clock_scan_fast is required (blue dot 1 in Figure 9-31) and becomes the -master option
of the divided_by N generated clocks called ssn_shift_capture_clock_div and
ssn_edt_clock_div, which are defined on the output of the edt_clock_div and
shift_capture_clock_div cells (blue dots 2 and 3 in Figure 9-31).
The SDC aims to set the period of the ssn_bus_clock_scan_fast clock to exactly half that of the
ssb_bus_clock_scan_slow clock. Then it applies a “divided_by 2” generated clock at the output
of the clock divider flop. This enables all scan timing paths depending on that divided clock to
be constrained to their tightest possible limits. If the target ssn_bus_clock_scan_fast period
would actually make the SSN bus exceed its maximum speed, then it is instead made equal to
the ssn_bus_clock_network period. Consider an example where the ssn_bus_clock period is
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
2.5 ns and the shift_clock period is 10 ns. In this case, the SDC would set the
ssn_bus_clock_scan_fast period to 10 ns / 2 = 5 ns. If the ssn_bus_clock period were instead set
to 6 ns, then the SDC would set the ssn_bus_clock_scan_fast period to the same 6 ns, making
the divided generated scan clock slower than the target shift_clock; this is acceptable because it
correctly reflects the reality of the test patterns.
Note
In practice, the divided clock frequency ratio might often exceed 2, because that value
depends on the size of the SSN bus packet. The packet size can be quite large if many SSHs
are driven in parallel or if the number of EDT channels greatly exceeds the SSN bus width.
Even more clock declarations are required if the SSH supports the optional scan bypass mode.
These clocks are represented by the brown dots in Figure 9-31. Both the *edt_clock and
*ssh_shift_capture_clock are divided_by 1 versions of the test_clock. For simplification of the
constraints, the generated SDC file assumes a test_clock period that always matches the value
specified by the “set_load_unload_timing_options -shift_clock_period” command, even though
the latter value ideally applies only to the SSN scan mode and not the bypass mode.
The preceding clocks belong to clock groups that correspond to their dot colors in Figure 9-31.
Red, blue, green, and brown clocks never run at the same time. Therefore, the SDC declares
them as “-physically_exclusive.” All such clocks are also asynchronous to all functional domain
clocks, because both clock types may interact at the same time on the pre-OCC branches during
scan. The following is an excerpt from a sample design:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
The SSH generates the edt_update signal with a negedge flop (brown dot 3) when
bus_clock_period = scan_clock_period to provide negedge retiming to its destination EDT
controller’s posedge flops. The posedge flops run off the late edt_clock relative to the
bus_clock. When edt_clock is divided, on the other hand, a posedge source flop (brown dot 2)
can properly toggle the edt_update signal 0.5 edt_clock cycles before and after the posedge of
the destination flop.
Although the scan_en signal may propagate to either posedge or negedge scannable flops on a
delayed SCC clock tree, the fact that SCC is gated while scan_en toggles makes both its setup
and hold timing safer without needing to rely on a negedge flop source like for edt_update.
Furthermore, the scan_en setup margin to negedge flops gets a half-cycle bonus, because the
first SCC falling edge after a scan_en transition always occurs after the first rising edge. The
following figure shows the margin definitions.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
By default, although these signals show some very safe setup and timing margins, you can still
extend them by calling the set_load_unload_timing_options command. As discussed
previously, this proc sets several global Tcl variables used in timing exceptions discussed in the
following information.
In the Tessent SDC file, the hold and setup margins of all MCP constraints are derived
dynamically from the variable values in Table 9-6. The following excerpt from an SDC file
shows how all setup and hold margins are calculated. In this excerpt, the Tcl variable names
intentionally match the setup and hold margin names shown in Figure 9-34. As previously
mentioned, it is helpful when reading this excerpt to remember that the divided scan clock is a
“divided_by 2” version of the ssn_bus_clock_scan_fast clock.
The following is an example of how the preceding $setup and $hold Tcl variables are typically
used in the SDC file MCP constraints:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
To help you visualize these constraints, the following figures show some actual simulation
results of the timing of the scan_en and edt_update signals relative to the SSN bus and SSH scan
clocks:
Figure 9-35. Gated Scan Clocks With All *extra_cycle* Variables Set to 1
(Default)
The following figure is the same as the previous, but the *extra_cycle* variables are set to zero.
This results in shorter setup and hold margins.
Figure 9-36. Gated Scan Clocks With All *extra_cycle* Variables Set to 0
In this figure, due to some inner SSH logic requirements, the scan_en setup and hold paths get
some bonus margins over the gated clocks case.
Figure 9-37. Divided Shift Clocks With Ratio of 4 and *extra_cycle* Variables at
0
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
Figure 9-38. Divided Shift Clocks With Ratio of 4 and *extra_cycle* Variables at
1
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
• All of the preceding SSH scan interface negedge (green) flops are used only in
combination with the slower tessent_ssn_bus_clock_scan_slow and tessent_ssh*_gated
clocks:
set_false_path -fall_from [tessent_get_clocks tessent_ssn_bus_clock_scan_fast*]
set_false_path -fall_to [tessent_get_clocks tessent_ssn_bus_clock_scan_fast*]
• Similarly, all green flops are active only when a slow shift-speed clock is injected on the
ssn_bus_clock port. Therefore, the resulting half-cycle paths are all false with regard to
the maximum speed of the tessent_ssn_bus_clock_network. The simpler -fall_from/-
fall_to tessent_ssn_bus_clock_network constraint cannot be used, because it might also
kill some valid half-cycle timing paths inside the SSN 1x receiver pipelining nodes.
set negedge_flops_list [list \
<SSH instance>/clock_gen/edt_update_ret* \
<SSH instance>/datapath/to_scan_in*_ret_not_for_div* \
<SSH instance>/datapath/from_scan_out*_ret_n* \
<SSH instance>/datapath/last_in_bits_in_current_bus_word_ret* \
]
set_false_path -from [tessent_get_clocks "tessent_ssn_bus_clock_network*"] \
-to [tessent_get_cells $negedge_flops_list]
set_false_path -to [tessent_get_clocks "tessent_ssn_bus_clock_network*"] \
-from [tessent_get_cells $negedge_flops_list]
• The SSH with the posedge flop that sources the to_scan_in signal is only active with the
divided clock and toggles in the middle of the tessent_ssh*_div clock cycle in order to
act as a retiming scan element.
set_false_path -from [tessent_get_cells \
<SSH instance>/datapath/to_scan_in*_ret_for_div*] \
-to [tessent_get_clocks tessent_ssh*_gated]
set_multicycle_path -hold 1 -start \
-from [tessent_get_cells \
<SSH instance>/datapath/to_scan_in*_ret_for_div*] \
-to [tessent_get_clocks tessent_ssh*_div]
• The from_scan_out logic constraints are more complex than other constraints because
they support scan SO paths coming from either leading-edge (LE) or trailing-edge (TE)
flops.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
# With a gated clock, all chain SO are captured by a single strobing flop. All
# other paths are false.
set_false_path -from [tessent_get_clocks tessent_ssh*_gated] \
-through [tessent_get_pins \
<SSH instance>/datapath/tessent_persistent_cell_from_scan_out*_mux*/Y]
# With a gated clock, the chain SO TE flop is captured by the TE strobe register
set_false_path -fall_from [tessent_get_clocks tessent_ssh*_gated] \
-to [tessent_get_cells \
<SSH instance>/datapath/from_scan_out*_ret_p*]
# With a gated clock, the chain SO LE flop is captured by the LE strobe register
set_false_path -rise_from [tessent_get_clocks tessent_ssh*_gated] \
-to [tessent_get_cells \
<SSH instance>/datapath/from_scan_out*_ret_n*]
• For SSH loopback logic, only valid paths exist inside the SSH controller, and they
always meet one cycle of the slow shift clock with zero hold, so they can be accurately
timed using only the SSN slow scan clock. However, because the SSH constraints are
multimode, the absence of case_analysis settings enable unexpected invalid paths to
pass through the SSH*_bypass ports, coming from different irrelevant clocks, including
those from other SSHs. Such clocks must be disabled.
set non_ssn_slow_clocks [remove_from_collection [all_clocks] \
[tessent_get_clocks tessent_ssn_bus_clock_scan_slow*]]
set_false_path \
-from $non_ssn_slow_clocks \
-through [tessent_get_pins \
<SSH instance>/tessent_persistent_cell_to_scan_in*_buf/Y] \
-through [tessent_get_pins \
<SSH instance>/tessent_persistent_cell_from_scan_out*_and/A0]
set_false_path \
-through [tessent_get_pins \
<SSH instance>/tessent_persistent_cell_to_scan_in*_buf/Y] \
-through [tessent_get_pins \
<SSH instance>/tessent_persistent_cell_from_scan_out*_and/A0] \
-to $non_ssn_slow_clocks
• Disable false paths going through SSH scan control signals to external EDT pipelining
flops, which are only used when the SSH is inactive.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
set_false_path \
-from [tessent_get_clocks tessent_ssn_bus_clock*] \
-through [tessent_get_pins \
<SSH instance>/tessent_persistent_cell_from_scan_out*_and/*] \
-to [tessent_get_clocks tessent_ssh*]
• The setup margin of full- and half-cycle ijtag_tck timing paths is relaxed with a two-
cycle multicycle path (MCP), and the hold margin is set to false.
# Static SSH TDR registers to SSH mission logic are all stable during test.
# Both source and destination are in the fanout of the ijtag clock.
set ssh_flops [tessent_get_flops \
[list $tessent_ssh_mapping(ssh0)/* \
$tessent_ssh_mapping(ssh0)/*/* \
$tessent_ssh_mapping(ssh0)/*/*/*] \
-filter {is_hierarchical==false}]
set ssh_ijtag_flops [tessent_get_flops \
$tessent_ssh_mapping(ssh0)/ijtag_registers/* \
-filter {is_hierarchical==false}]
set ssh_mission_flops [remove_from_collection $ssh_flops $ssh_ijtag_flops]
set_multicycle_path 2 -from $ssh_ijtag_flops -to $ssh_mission_flops
set_false_path -hold -from $ssh_ijtag_flops -to $ssh_mission_flops
• The following provides various additional necessary constraints that may be present
depending on the SSH options:
# Block ts_tck_tck used as capture clock
set_disable_timing [tessent_get_pins \
<SSH instance>/clock_gen/clock_signals/tessent_persistent_cell_*_or2/<A1>
# ssh0 enable_sync is static during test and fans out to ltest logic through the
# scan_en and edt_update signals.
set_false_path -from [tessent_get_cells <SSH instance>/fsm/enable_sync*] \
-to [tessent_get_clocks "tessent_ssh*_gated tessent_ssh*_div"]
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
You cannot output a single generated clock from the clock shaper in the SDC to simplify the
constraints and reduce analysis time, although it would otherwise be beneficial, because this
SDC configuration introduces inaccuracies, as described in the following paragraph. Therefore,
Tessent SDC does not support this configuration.
The timing checks between the SSH and the scan chains involve both the negative and positive
edges of the test clock. However, the negative edge of the gated test clock is generated from the
negative edge of its master clock, while the negative edge of the divided test clock is generated
from the positive edge of its master clock. A single generated clock in the SDC cannot
accurately represent the delay calculations on the clock path for both of these cases.
In addition, some timing tools incorrectly apply some of the SSH timing constraints between the
scan gated clock and the SSH registers of the fast SSN bus clock, thereby resetting the
propagation delay of the SSN fast clock to zero or ignoring the Clock Reconvergence
Pessimism Removal (CRPR) of the common path between that clock and the scan gated clock
on the timing reports.
In summary, the Tessent SDC provides two generated clocks for each clock shaper in the SSH:
a gated clock and a divided clock, which enable accurate timing of the design.
You can simplify the clock definitions by specifying that the SSH generates only the test_clock
source, which in turn feeds the external edt_clock and shift_capture_clock clock gaters. Refer to
the figure “ScanHost Node Sourcing test_clock With Following DFT Signal Clock Gater” in the
ScanHost reference page in the Tessent Shell Reference Manual. The following shows how the
SDC creates such a gated clock with its master clock:
# Master clock
create_clock [tessent_get_ports ssn_bus_clock] \
-name tessent_ssn_bus_clock_scan_slow_0 \
-period $local_ssn_bus_clock_scan_slow_period -add
# SSH generated clock
create_generated_clock [tessent_get_pins \
<ssh_instance>/clock_gen/clock_signals/*_test_clock_shaper/clk_out] \
-source [tessent_get_ports ssn_bus_clock] \
-name tessent_ssh0_test_clock_gated \
-master tessent_ssn_bus_clock_scan_slow_0 -add \
-combinational \
-divide_by 1
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
The fact that a single clock source pin fans out to both scannable logic and EDT controller
circuit branches makes clock tree synthesis (CTS) balance these two branches by default. This
helps maximize the scan mode shift speed.
It is also possible to further simplify the SDC when SSH bypass mode is present and the
test_clock DFT signal is shared with the ssn_bus_clock port, by setting the SSH
use_ssn_bus_clock_as_test_clock_bypass property to “on”. In this case, the SSH hardware does
not add a bypass mode test_clock injection multiplexer, and the SDC does not need to create a
separate test_clock, because both SSN and bypass clock trees are identical. The figure
“ScanHost Sourcing test_clock Reused for Legacy Bypass Mode” in the ScanHost reference
page in the Tessent Shell Reference Manual provides a detailed example.
ScanHost (id) {
use_clock_shaper_cell : on;
scan_signal_bypass : on;
use_ssn_bus_clock_as_test_clock_bypass: on;
Interface {
ChainGroup {
test_clock_present : on;
shift_capture_clock_present : off;
edt_clock_present : off;
}
}
}
it reduces the resulting SDC from defining six different generated clocks:
to a single clock:
tessent_ssh*_test_clock_gated
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
The preceding figure shows where Siemens Digital Industries Software recommends specifying
clock tree synthesis (CTS) instructions for balancing exclude points. If you omit these exclude
points from your CTS script, the tool interprets this script as indicating that it must balance all
of your scannable functional domains along with your SSN network bus clock tree. This can
lead to the following notable timing closure issues during layout, among others:
• A large increase in the total SSN bus clock tree latency. This creates excessive SSN
clock skew between neighboring tile blocks, your top-level SSN data bus ports, or both.
This, in turn, demands either large BusFrequencyMultiplier/BusFrequencyDivider
nodes or deep SSN FIFO nodes and could also potentially impact your maximum SSN
bus clock frequency.
• Placement of your SSH clock generation subcircuit in the SSH clock_signal block in
Figure 9-40 at the very root of the clock tree generated by CTS, instead of at the leaf
cells in the fsm and datapath block. This, in turn, results in a large reduction in your P1
timing path setup margin, by the amount of the clock tree propagation D2. This can
make it impossible to meet timing, even for large functional trees or slow clock
frequencies. You cannot add a pipelining flop to the path, because this breaks the SSN
scan protocol.
• Increased IJTAG clock network latency, because the ijtag_clock tree would come
through the scannable logic to the clock_signals logic.
If you specify the recommended CTS exclude points, it makes the scan clock tree delay (D2)
part of the chain SI/SO timing paths in a predictable manner. This might force you to insert one
or more rows of Tessent pipelining flops along your EDT channels. The design of the SSH Scan
SI/SO Interface already handles a minimal level of skew, where all to_scan_in paths are retimed
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
and all from_scan_out timing paths are full-cycle paths of the slow clock. The from_scan_out
circuit requires no retiming, because it includes a single-direction clock timing loop, as shown
in the figure. Timing Loop #2 includes the potentially very large D2 delay, which the pipelining
flops can reduce to the D1 value. The number of required pipelining flops depends on both the
size of your scannable domain and your target scan frequency. A large number requires more
effort during physical design to select the correct clock tree tapping point for each flop layer.
Automation has the potential to reduce these efforts, as does reducing the scan domain size by
multiplying the number of SSH instances at the DFT planning stage.
No other CTS constraints are required for the SSH bus clock and the ijtag_tck clocks. Tessent
SDC declares these clocks as physically exclusive, so the CTS process does not need to balance
them together. However, the ijtag_tck feeds both the ijtag_registers block, which contains
standard TDR setup logic, and the fsm and datapath block, which contains the SSH scan mode
control logic. This enables timing tck paths between the two blocks. The clock path to the fsm
and datapath block is enabled only during streaming_through_ijtag or bus_register access
modes. When these modes are active, timing paths P3, P4, and P5 must meet timing in 0.5 tck
cycles, while P2 paths are static control signals that Tessent SDC declares as false. All other tck
timing paths within the fsm/datapath logic are more tightly constrained by the faster SSN bus
clock. CTS balances these two tck branches by default in the absence of specific guidance,
which improves the maximum IJTAG network speed without placing too much of a penalty on
the total tck insertion delay.
In the output SDC file, the extract_sdc command writes a Tcl proc named
tessent_get_cts_skew_groups_dict, which returns a dictionary of the CTS exclude points or
skew groups across all OCC instances in your design.You can use that dictionary with a custom
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN SDC Constraints in the Design Flow
script that issues CTS commands specific to your layout tool. The header comment for the proc
contains instructions on how to use it during CTS. The following is an example:
proc tessent_get_cts_skew_groups_dict {} {
# This proc returns a dictionary of clock source pins from where clock
# tree synthesis balancing should stop.
# Use it in your CTS script, along with your proper tool command.
# In Synopsys ICC, invoke:
# set_clock_tree_exceptions -exclude_pins <exclude_pin>
# In Cadence Innovus, invoke:
# create_ccopt_skew_group -sources <exclude_pin> -auto_sinks
# -skew_group <group name>
# The effect of that command is:
# * to prevent adding delay buffers to the small OCC internal clock tree,
# due to balancing with all flops in the OCC fanout, therefore
# helping the OCC clock_enable signals meet setup timing.
# * to prevents adding long delays to the SSN clock tree due to balancing
# with the functional clock tree in the fanout of each SSN scan host
# (SSH).
#
#
# You can use the dictionary the following way:
# set cts_skew_groups_dict [tessent_get_cts_skew_groups_dict]
# dict for {skew_group sub_dict} $cts_skew_groups_dict {
# dict with sub_dict {
# foreach pin $cts_exclude_pins {
# puts "$skew_group : $dc_instance/$pin"
# <insert your CTS command here>
# }
# }
# }
set return_dict {
cts_skew_group(occ0) {
dc_instance top_rtl2_tessent_occ_parent_clka_inst
cts_exclude_pins {occ_control/
tessent_persistent_cell_ltest_ntc_sync_cell/CK occ_control/
tessent_persistent_cell_cgc_SHIFT_REG_CLK/CK occ_control/
tessent_persistent_cell_SHIFT_REG_CLK_mux/A1}
}
cts_skew_group(occ1) {
dc_instance top_rtl2_tessent_occ_parent_clkb_inst
cts_exclude_pins {occ_control/
tessent_persistent_cell_ltest_ntc_sync_cell/CK occ_control/
tessent_persistent_cell_cgc_SHIFT_REG_CLK/CK occ_control/
tessent_persistent_cell_SHIFT_REG_CLK_mux/A1}
}
…
cts_skew_group(ssh0) {
dc_instance top_rtl2_tessent_ssn_scan_host_1_inst
cts_exclude_pins {clock_gen/clock_signals/
tessent_persistent_cell_edt_clock_buf/Y clock_gen/clock_signals/
tessent_persistent_cell_shift_capture_clock_buf/Y}
}
}
return $return_dict
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
Fast IO
SSN Fast IO is an SSN configuration in which the top-level external input and output ports of
the SSN run faster than the internal SSN bus.
These input and output ports are single-ended or DDR I/O ports, not SerDes or differential I/O
ports. These I/O ports can reliably run at 200 MHz and higher speeds. When you implement an
SSN Fast IO datapath, you place a BusFrequencyDivider (BFD) and BusFrequencyMultiplier
(BFM) along with Fifo nodes at either end of the SSN. These nodes collectively retime the data
between the fast external interface and the slower internal SSN bus.
Note
The I/O ports that make up the fast external interface to the SSN must be part of the design
before you implement SSN Fast IO. The Tessent implementation does not supply these
ports.
The following topics describe how to implement and use SSN Fast IO functionality:
Design Requirements
To implement SSN Fast IO, you must have a design with a single data rate or double data rate
digital interface that can be reused as the external interface to the SSN.
The interface should be capable of running faster than standard GPIO, which typically is limited
to a maximum operating frequency of 200 MHz. You can use a single clock as the source for
both input and output of the SSN. You can also use an optional second clock as one of the SSN
clock sources, as shown in Figure 9-41 on page 624.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
Furthermore, you can also use a slower external interface to share access to the SSN. This
requires an equal number of data inputs and outputs to be used as the SSN bus_data_in and
bus_data_out. It also requires a single slower clock as the clock source to the SSN when you use
the slower external interface. A multiplexer, slow_fast_mux, enables the slower external
interface to share access to the SSN, as shown in Figure 9-42 on page 624.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
The BFM, on the output side of the SSN, is the interface from the slower, wider SSN to the
faster external interface, as in the figure. The BFM speeds up the internal data rate of the SSN
by the frequency ratio N and narrows it by the same ratio. The FIFOout retimes the data coming
from the slower internal SSN to the BFM that runs at the faster external interface frequency.
The output clock of the BFM is created from the fast external clock input and creates a loop
timing path between the FIFOout and the BFM, allowing a full clock cycle of the fast clock for
the data to propagate to the BFM. The data returns to the tester through pipeline stages that are
also running at the faster external frequency. For more information about the clocks created by
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
the BFM and how to use them with SSN Fast IO, refer to “BusFrequencyMultiplier” in the
Tessent Shell Reference Manual.
As an alternative to the previous configuration (where the fast external interface is the only
access to the SSN), you can add a slow_fast_mux, as shown in the following figure, to share
access to the SSN through a slower external interface. The multiplexer enables you to share
access to the SSN between the two interfaces. The slow_fast_mux enables you to develop the
SSN and create patterns using the slower external interface while you work on the access
through the faster external interface. You can remove the slow_fast_mux once you are satisfied
with the faster external interface as the only access mechanism to the SSN.
Figure 9-42. Example SSN Fast IO Bus With SDR Clocking and Alternate
External Interface Access to the SSN
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
The following figure shows an example of SSN Fast IO with DDR clocking. When you use the
DDR external interface, the input and output pipelines on the SSN are optimal due to the nature
of the DDR clocking scheme.
When you use the DDR external interface, the clocks generated from the BFD and BFM are still
required, as described in “Single Data Rate Clocking” on page 623.
As with SDR clocking, you can add an alternate external interface to the SSN Fast IO with DDR
clocking configuration. The alternate external interface can access the SSN through a
slow_fast_mux, shown in the following figure. This mux enables you to develop the SSN and
create patterns while you work on the access through the faster external interface. You can
remove the slow_fast_mux once you are satisfied with the DDR interface as the only access
mechanism to the SSN.
Figure 9-44. Example SSN Fast IO Bus With DDR Clocking and Alternate
External Interface Access to the SSN
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
When you use the DDR external interface, the clock is defined relative to the data. The data rate
is one bit per edge of the clock. On the rising edge of the clock, one data bit is strobed. On the
falling edge of the clock, a different data bit is strobed. Define the clock so that one bit of data is
strobed for each edge of the clock.
Defining the clock with a frequency divider of two (half of the data rate) means that each edge
of the clock strobes data:
For example, if the DDR clock period is defined as 10 ns, the data is strobed every 5 ns: once on
each clock edge, rising and falling.
When you use the PatternsSpecification to create DDR verification patterns, define the DDR
clock with the same frequency division, as in the following example:
PatternsSpecification(…) {
Patterns(…) {
ClockPeriods {
<ssn_ddr_clock_name> : tester, 0.5 ;
}
}
}
Refer to the PatternsSpecification reference topic and its subtopic Patterns in the
“Configuration-Based Specification” chapter of the Tessent Shell Reference Manual for more
information about using a PatternsSpecification.
The following topics provide specific information about modeling the interface in various
languages:
ICL Modeling
The following sections show examples of how to model the DDR input and DDR output in ICL.
New ICL attributes are required for the DDR ICL models. These attributes are highlighted in
these examples.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
Module ddr_in {
ClockPort clk {
Attribute function_modifier = "tessent_ssn_clock";
Attribute forced_high_dft_signal_list = "ssn_en";
}
ToClockPort clk_out {
Attribute function_modifier = "tessent_ssn_clock";
Source clk;
}
DataInPort di {
Attribute function_modifier = "tessent_ssn_bus_data";
Attribute tessent_ssn_function = "ddr_bus_data_input";
Attribute forced_high_dft_signal_list = "ssn_en";
}
DataOutPort do[1:0] {
Attribute function_modifier = "tessent_ssn_bus_data";
Attribute forced_high_dft_signal_list = "ssn_en";
Source do_ret[1:0];
}
DataRegister do_ret[1:0] {
WriteDataSource di_neg_ret,di_pos_ret;
WriteEnSource 1'b1;
}
DataRegister di_neg_ret {
Attribute tessent_active_clock_edge = "falling";
WriteDataSource di;
WriteEnSource 1'b1;
}
DataRegister di_pos_ret {
Attribute tessent_active_clock_edge = "rising";
WriteDataSource di;
WriteEnSource 1'b1;
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
Module ddr_out {
ClockPort clk {
Attribute function_modifier = "tessent_ssn_clock";
Attribute forced_high_dft_signal_list = "ssn_en";
}
ToClockPort clk_out {
Attribute function_modifier = "tessent_ssn_clock";
Source clk;
}
DataInPort di[1:0] {
Attribute function_modifier = "tessent_ssn_bus_data";
Attribute forced_high_dft_signal_list = "ssn_en";
}
DataOutPort do {
Attribute function_modifier = "tessent_ssn_bus_data";
Attribute tessent_ssn_function = "ddr_bus_data_output";
Attribute forced_high_dft_signal_list = "ssn_en";
Source ddr_mux;
}
DataRegister di_ret[1:0] {
WriteDataSource di[1:0];
WriteEnSource 1'b1;
}
DataRegister di_ret1 {
WriteDataSource di_ret[1];
WriteEnSource 1'b1;
}
DataRegister di_ret0 {
Attribute tessent_active_clock_edge = "falling";
WriteDataSource di_ret[0];
WriteEnSource 1'b1;
}
Instance do_select Of ddr_out_do_select {
InputPort in = clk;
}
DataMux ddr_mux SelectedBy do_select.out {
1'b0 : di_ret1;
1'b1 : di_ret0;
}
}
Module ddr_out_do_select {
Attribute tessent_ssn_function = "ddr_out_selector";
ClockPort in {
Attribute function_modifier = "tessent_ssn_clock";
}
DataOutPort out;
}
Verilog Modeling
The following sections show examples of how to model the DDR input and DDR output using
Verilog HDL. Use these examples to help create your simulation models if needed.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
DDR Inputs
module ddr_in (clk, di, do, clk_out);
input clk;
input di;
output reg [1:0] do;
output clk_out;
endmodule
DDR Outputs
module ddr_out (clk, di, do, clk_out);
input clk;
input [1:0] di;
output do;
output clk_out;
endmodule
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
Figure 9-46. Proper Tuning of Input Data and the Output Strobe
The waveform of d-V1 at time zero shows the data perfectly centered around the rising edge of
the clock clk1g, which provides a sufficient setup and hold margin. Both are shown to be
applied at time zero without considering the delays inside the chip. However, the waveform for
clk1g_int in cycle T2 shows a roughly 400 ps delay before the first rising edge appears at the
internal clock pin. To reliably strobe the input stimulus, the input data from the ATE must be
delayed to account for the delay on the clock net. When it is not delayed and forced at time zero,
as is shown in the preceding figure, there is not enough setup and hold margin to be strobed by
clk1g_int. Therefore, the input d-V2 is mistakenly strobed.
As a result, to sample the d-V1 input data with sufficient setup and hold margin, it must be
delayed to account for the delay on the clock net inside the chip. The waveform d_tuned-V1
shows how the ATE can provide a delayed version of the input data that is properly centered
around the rising edge of clk1g_int, providing sufficient setup and hold margin.
The output strobe is more commonly required to be tuned even at lower frequencies, to account
for the delays internal to the chip, because those delays translate into the data appearing on the
output later in the cycle compared to ideal timing. In Figure 9-46, the strobe is placed at the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
falling edge of the clock clk1g, as shown in cycle T8. This strobe placement is based on timing
of the clock being applied at time zero without considering the delays inside the chip.
The waveform of q-V1 shows the actual timing of the output based on the delay of the data
before it appears on the output. The “strobe” waveform shows the output strobe can be moved
to later in the cycle T8 while still providing sufficient setup and hold margin on q-V1. The tuned
placement of the output strobe is shown in the waveform strobe_tuned.
The previous figure and accompanying description demonstrate the need to perform adaptive
tuning to test your chip reliably when you use SSN Fast IO. Refer to the section “ATE
Calibration” on page 633 for the process of calibrating the tester to adapt to the internal delays
of your chip using the SSN continuity pattern.
ATE Calibration
Use the SSN continuity pattern to calibrate the tester to the delays in your chip.
To calibrate the ATE, start by slowing the pattern by a factor of four and setting the output
strobe point just before the end of the tester cycle. Slowing the pattern to this degree enables
you to have a reliable output strobe and a slow enough clock to strobe the input data reliably
without any delay from the tester.
When you test your device at a frequency of 200 MHz or higher, you must find a reliable output
strobe. When your external clock frequency is 400 MHz or higher, you may also need to tune
the input data from the tester to account for internal clock delays across all PVT conditions.
Testing your part without properly calibrating the tester may result in yield loss.
Use the following equations to calculate the clock period and the location of the output strobe.
In these equations, T is the clock period (ps) of the SDR or DDR clock defined for the SSN
continuity pattern:
Equation 1: Clock Period for the SSN Continuity Pattern When Calibrating the ATE
Equation 2: Location of the Output Strobe, in Picoseconds, When Calibrating the ATE
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
With the SSN continuity pattern running at a 4× slower speed, increase the delay on d-V1 from
the tester until the output shows failures. The delay added to d-V1 moves the data change edge
of d-V1 toward the rising edge of the clock clk1g_int, causing a setup violation, which results in
failures on the SSN bus output.
This is the amount of delay that causes the pattern to stop working and is the same for any clock
frequency. Use this delay to calculate the amount of delay needed by the tester before applying
the input data d-V1. Use the following equation to calculate this delay:
Subtracting 750 ps from the delay puts the data eye of d-V1 into the timing window T2, around
the rising edge of clk1g_int, and it provides 250 ps of hold margin, as shown in d_tuned in the
waveform. Similarly, the delay puts the data eye of d-V2 into the timing window T3 and around
the falling edge of clk1g_int, with the same hold margin. This is also shown in d_tuned in the
waveform.
Start with the clock period of the SSN continuity pattern at full rate. You must restore the clock
to its maximum frequency before slowing it down to determine the input delay. If you have
moved the output strobe, you must also return it to its original position. It should be in the
middle of the data eye of q-V1 in the timing window T8. With the clock running at full
frequency and with the input tuned to the delay of the clock, delay the output strobe by moving
it toward the end of the T8 timing window and the data change edge of q-V1. Increase the delay
until the strobe point no longer works, which occurs when you have moved it sufficiently close
to the data change edge between q-V1 and q-V2. The point of failure occurs when the strobe
violates the hold time of q-d1. This amount of delay causes the pattern to stop working. Use this
delay to calculate the output strobe point, as shown in the following equation:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
Subtracting 250 ps from the measured delay puts strobe_tuned toward the end of the data eye of
q-V1. This provides a sufficient setup margin and 250 ps of hold margin, as shown in the figure.
Tip
Calculate SSN bandwidth by multiplying the number of I/O ports by their maximum
operating frequency.
In some cases when a faster external interface with SDR clocking has fewer I/O ports than the
number of slower external I/O ports, the Fast IO interface does not yield a higher bandwidth
for the SSN. The following table shows that an SSN using SDR clocking with a slower external
interface of 32 I/O ports yields 6.4 Gbps when running at 200 MHz. To achieve the same
bandwidth with a faster external interface requires 16 I/O ports running at 400 MHz or 8 I/O
ports running at 800 MHz.
However, an SSN Fast IO can still provide value even if there is less throughput while testing a
single part at a time. If the bandwidth of a Fast IO interface is less than that of the slower
external interface, multi-site testing can improve the test time. For example, the following table
shows you can test one SSN device with 32 I/O ports running at 200 MHz in one-fourth of the
test time of the same SSN device with a faster external interface running at 800 MHz with 2 I/O
ports.
Table 9-7. SSN Bandwidth Comparison for I/O Port/Frequency Combinations
Number of I/O Ports Data Rate (Gbps) Data Rate (Gbps) Data Rate (Gbps)
@ 800 MHz @ 400 MHz @ 200 MHz
2 1.6 0.8 0.4
4 3.2 1.6 0.8
8 6.4 3.2 1.6
12 9.6 4.8 2.4
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Fast IO
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Burn-In Pattern Support
During generation of burn-in patterns with SSN, the tool configures the SSH hardware into
“infinite shift” mode. In this mode, capture is disabled, and the burn-in payload loops without
an ssn_end procedure.
The burn-in payload can target all SSHs (the default) or one or more SSHs. The packet is
serially distributed along the SSN bus. The packet size calculation is based on the number of
input channels of each active EDT. Each EDT has its own time slots in the packet. There is no
data throttling during the application of the burn-in patterns. Unlike normal SSN operation, the
output response is not added back into the packet for observation at the SSN outputs.
The default payload sequence for burn-in is “1100”: the first two packets drive all bus inputs to
1, and the next two drive all bus inputs to 0. This triggers pseudorandom data out of the EDT
and is compatible with uncompressed chains.
To configure the burn-in pattern, use the set_burnin_options command, which controls the
target SSH instance or instances, the payload sequence, and the number of repetitions of the
sequence in the pattern.
Note
Because low-power shift hardware interferes with the operation of burn-in patterns, you
must disable any low-power shift hardware in your design to use the burn-in pattern
functionality.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Burn-In Pattern Support
When you bypass both the EDT and SSH and use tool automation of add_dft_signals to create
shift_capture_clock and edt_clock from test_clock, the tool ensures edt_clock is correctly
controlled. The pulsing of test_clock results in pulsing of the edt_clock during the load_unload
and shift procedures. If you do not use automation of the add_dft_signals in this case, you must
manually define the edt_clock on an independent top-level port and manually constrain it off
(to 0) to avoid scan chain blockages and unknowns during simulation:
Changing the clock source for the EDT channel pipeline stages to shift_capture_clock and using
edt_bypass mode results in DRC violations during ATPG. In addition, the pipeline stages are
uninitialized for simulation, resulting in unknowns being driven into the EDT decompresser and
scan chains.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Burn-In Pattern Support
The flat ATPG flow uses the same setup that ATPG uses, simplifying the process to configure
this flow.
In normal (non-burn-in) SSN operation, when a core has at least one lower-level child core, the
parent is in internal test mode, and the child cores are in external test mode, where only the
wrapper chains of these child cores are active. However, when you create burn-in patterns for a
parent-child core configuration with SSN, only the parent-level scan chains are active and the
tool resolves the module instances for child cores using IJTAG grayboxes. The child cores are
not configured into external mode in this case.
Only the IJTAG graybox design view is required for all design levels (including the top level) to
create burn-in patterns following the retargeting flow. The IJTAG graybox design view is only a
small fraction of the design size, and it is already a recommended part of the SSN flow.
Tip
When you set up your burn-in patterns, use a mode name that includes a phrase like
“burnin” so you can easily identify your burn-in patterns. Refer to Step 2.a for an example
of this. You can use this mode name with the set_current_mode command.
Prerequisites
• The IJTAG graybox view is highly recommended for the retargeting flow. Although you
can still create burn-in patterns without them, doing so causes the flow to use
significantly more memory and take much longer.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Burn-In Pattern Support
Procedure
1. Generate a Tessent core description (TCD) file for each level of hierarchy, starting at the
lowest level.
a. Create a burn-in TCD at the wrapped core level.
The setup for this TCD is identical to what you use for the “patterns -scan” context.
It represents a core configured for burn-in. Treat any lower levels of hierarchy as
IJTAG grayboxes (for example, “read_design -view ijtag_graybox”).
b. Configure the tool into internal mode. Add the core instances for the EDTs and
OCCs using a command such as read_core_descriptions or add_core_instances.
c. Check the design rules with the check_design_rules command.
The tool automatically adds the SSH core instance information.
d. Write the TCD out with the write_tsdb_data command.
This command uses the name (if any) you supplied with the set_current_mode
command.
e. (Optional) Write out the testbench, using the set_burnin_options command, to verify
the burn-in setup and sequence.
f. Repeat this process for each hierarchical level, including the top level.
2. Create a top-level burn-in pattern. The setup is identical to what you would use for
pattern retargeting, including the context (“set_context patterns -scan_retargeting”).
a. Target the top level and any lower-level cores added by the TCD file. For example:
add_core_instances -instances {top corea_i1 corea_i2} -mode edt_mode_burnin
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Burn-In Pattern Support
Procedure
1. Configure the tool into internal mode.
2. Add the core instance for the EDTs and OCCs using a command such as
read_core_descriptions or add_core_instances.
3. Check the design rules with the check_design_rules command.
The tool automatically adds the SSH core instance information.
4. (Optional) Configure the burn-in pattern setup with the set_burnin_options command.
5. Write the burn-in STIL pattern and testbench for verification.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
LVX Support
LVX Support
Tessent software includes the capability for laser voltage imaging (LVI) and laser voltage
probing (LVP) functionality. Tessent LVI and LVP support is referred to collectively as “LVX”
support.
The LVX capabilities of laser scanning microscopy platforms measure timing and functional
characteristics of semiconductor devices. Their architecture usually supports docking with
automated test equipment (ATE) and back-side analysis for localization of cell- and transistor-
level faults and design marginalities.
• Packet-based delivery of any repeating sequence, such as “1100”, from the tester
through the SSN network to all chains of an EDT (using EDT LVX hardware) or
uncompressed chains.
• Broadcasting the sequence to all chains of an EDT or to a specific chain that you select
on the tester.
• Looping a payload pattern set (after setup) that applies the repeating sequence on
internal chains without interruption. You do not need to apply the ssn_end procedure
between iterations, as ATPG patterns require.
• Diagnosis reporting of the failing chains with the full ICL instance pathname of the
driving EDT instances and the chain indices.
LVX Hardware Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
Creating EDT With LVX Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
LVX Operation Modes With LVX Hardware Configuration . . . . . . . . . . . . . . . . . . . . . 649
Configuring and Generating LVX Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
LVI_PATCHING_INFO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
LVX Support
DftSpecification(module_name, id) {
EDT {
Controller {
LVxMode {
present: on | off | auto ;
enable_one_chain: on | off ;
}
}
}
}
Note
If you specify enable_one_chain as “off” instead, the EDT can broadcast the LVX
sequence only to the scan chains.
Results
The DftSpecification results in an EDT with two new TDRs for controlling the LVX hardware:
• lvx_mode
• lvx_chain_index
These TDRs are controlled behind a SIB, as shown in the following figure, and accessible
through the IJTAG interface.
Figure 9-47. Tessent LVX TDRs
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
LVX Support
The PDL represents both of these TDRs with iWriteVars, so they are annotated in the pattern set
and you can patch them on the tester.
With the LVX setup, the EDT controller has an IJTAG scan interface. The tool resets the EDT
hold registers using the ijtag_reset signal.
Siemens EDA recommends that you have no more than one EDT or one uncompressed chain
per SSH chain group. If you do not put each EDT and uncompressed chain into its own chain
group, this results in the tool adding padding to the packet. This, in turn, increases the number of
shifts between each EDT/chain in the lvx_loop sequence. Adding each EDT and uncompressed
chain into its own SSH chain group results in a more efficient packet for applying the lvx_loop
to all the EDT/chains.
The tool delivers the LVX payload as packetized data serially along the SSN bus, as with
normal scan operation. Unlike normal scan operation, the LVX payload consists of a single bit
per active EDT. For example, using the preceding recommendation, the packet size for a single
SSH with two active internal mode EDTs, each in their own SSH chain_group, is two bits: a
single bit for each EDT. The least significant bit (LSB) of each SSH chain group drives a
specific scan chain or broadcasts to all chains, based on the LVX hardware for each EDT.
LVX Hardware for Channel Input
The following figures show the LVX hardware for the EDT channel input both with and without
enable_one_chain specified as part of the DftSpecification. The enable_one_chain specification
adds chain masks after the phase shifter. This is the hardware that the tool adds to the EDT to
support LVX. Specifying enable_one_chain enables you to observe individual chains during the
application of the LVX pattern. Without enable_one_chain, the LVX hardware does not have
the granularity to block individual chains. Instead, the hardware includes an additional
mask_all_chains signal when you do not specify enable_one_chain.
Figure 9-48. LVX Hardware With enable_one_chain for Channel Input
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
LVX Support
When multiple cores are active in an lvx_loop pattern, each core can be independently
controlled through the EDT LVX IJTAG registers for each individual core. This enables some
cores to broadcast the lvx_loop sequence to all scan chains, while other cores target unique scan
chains trough the lvx_chain_index TDR. Control this by patching the iWriteVars in the pattern.
LVX Hardware for Channel Output
The following figures show the LVX hardware for the EDT channel output both with and
without enable_one_chain specified. The enable_one_chain specification adds some logic to
accommodate the enable_one_chain signal on EDT channel output 1. When a single SSH and
EDT are active, the LVX mode output appears on channel output 1. The SSH loads the LVX
output into the packet, and it is visible on the SSN bus output. When observing a single chain,
the EDT masking logic is controlled, and the one-hot masking logic that is already part of the
EDT propagates the selected chain to the first EDT channel output and the other chains are
masked off. When broadcasting the LVX payload to all chains, the chain selected by
lvx_chain_index is visible on the first channel output.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
LVX Support
In the case without enable_one_chain, the tool does not add any LVX hardware to the output of
the EDT.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
LVX Support
When using the lvx_loop pattern with enable_one_chain, the SSH unloads channel 1 of each
active EDT back into the packet, and that random data is observable at the SSN bus output. The
lvx_loop pattern lacks the ability to confirm the current LVX configuration, because the
expected output seen at the SSN output does not provide a pass/fail status. The lvx_verification
pattern, however, enables you to verify and confirm the LVX payload. The lvx_verification
pattern is functionally the same as the lvx_loop pattern except that the output observed on the
SSN bus output is compared against an expected value and provides a pass/fail status. Changing
an iWriteVar such as lvx_chain_index in the lvx_loop pattern causes the two patterns, lvx_loop
and lvx_verification, to differ.
When generating the lvx_verification pattern set, the tool generates sufficient data on the input
side for one full shift through the scan chains. This means that the pattern set consists of two
patterns. The first is applied and shifts in the LVX sequence into the scan chains, and the second
unloads the LVX sequence from the scan chains and compares it with the calculated expected
sequence.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
LVX Support
This pattern illustrates how every pattern has an expected sequence on the SSN bus data output
ports.
The following examples show how to specify the LVX mode with the “lvx_mode” parameter
value in the set_core_instance_parameters command:
or
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
LVX Support
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
LVX Support
2. Configure EDT for LVX by setting the LVX mode with the
set_core_instance_parameters command.
This is typically for one of the following use cases:
• You have generated the EDT with enable_one_chain hardware, so that
enable_one_chain is the default LVX mode, but you want to use broadcast mode
(enable_all_chains) instead.
• You want to change the default chain selected from chain 0. For example:
set_core_instance_parameters -instrument_type edt \
-parameter_values {lvx_mode enable_one_chain lvx_chain_index 5}
This writes the setup sequence, containing the test_setup and ssn_setup
procedures.
Note
The test_setup procedure for LVX mode contains significant differences from
the procedure when LVX mode is not specified. In LVX mode, the procedure
programs the IJTAG registers inside the EDT, which does not occur outside of LVX
mode.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
LVX Support
Note
Changing the chain index from the value used when the tool wrote the
lvx_verification pattern causes pattern failures. The expected value is computed
using the original chain index.
Both the lvx_loop and lvx_verification pattern sets share the same ssn_setup
programming. You can optionally apply the lvx_verification pattern to the DUT to
confirm targeted shift register response. Then you can apply the lvx_loop payload
directly following the lvx_verification pattern to minimize the time between application
of LVX sequences.
The following example commands write the combined setup pattern (that is, test_setup
and ssn_setup), the lvx_loop, and the lvx_verification patterns:
write_patterns lvx_all_setup.stil -all_setup_only \
-pattern_sets lvx_loop -stil
write_patterns lvx_loop.stil -test_payload \
-pattern_sets lvx_loop -stil
write_patterns lvx_verification.stil -test_payload \
-pattern_sets lvx_verification -stil
Even though the command to write the combined setup pattern uses “-pattern_sets
lvx_loop”, the SSH programming for lvx_loop and lvx_verification is identical for both
patterns. This means you can share the ssn_setup information for both lvx_loop and
lvx_verification patterns.
Refer to the write_patterns command in the Tessent Shell Reference Manual for more
information about how to write both of these pattern sets.
LVI_PATCHING_INFO
The LVI_PATCHING_INFO table enables the use of fault isolation techniques for SSN by
providing two pieces of information: the ICL instance name for EDT instances driving failing
chains and the chain index of the failing chain (as reflected in the STIL pattern).
LVI is an electrical fault isolation (EFI) technique for localizing defects in scan chains. LVI
requires a repeating periodic pattern on the chain of interest. This periodic pattern causes
transistors in the scan chain to turn on and off within the field of view of the LVI equipment.
LVI collects the signals and analyzes them in the frequency domain. The analysis detects
transistors that switch with the expected pattern (and those that do not) and produces an image.
During hardware generation in hierarchical DFT flows, the tool can only generate the LVX
verification pattern for the specified default chain. The tool can generate the loop pattern for any
chain driven by the LVX hardware. However, the tool's default pattern set contains the loop
pattern for the default chain, which is the same default chain specified when creating the LVX
hardware. You can specify scan chains with lvx_chain_index, or you can enable broadcast
mode for all chains. See “LVX Operation Modes With LVX Hardware Configuration” on
page 649 for more information.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
LVX Support
Note
For failure analysis (FA) purposes, you must patch the patterns to apply the looping pattern
to the (failing) chain of interest. When using SSN, usually the FA engineer that runs LVI
patches the patterns.
The goal of patching is to ensure that a repeating sequence drives the failing chain of interest.
The FA engineer requires the full ICL instance pathname of the EDT instance that drives the
failing chain, and the chain index of the failing chain to patch the original LVI patterns
delivered by design engineering teams.
When the tool generates a diagnosis report, it automatically adds the LVI_PATCHING_INFO
table within the XMAP table if the design has LVI or LVP hardware present.
diagnosis_mode=chain
#symptoms=1 #suspects=1 CPU_time=0.70sec fail_log=chain.flog
XMAP_TABLE_BEGIN
…
LVI_PATCHING_INFO_BEGIN
symptom chain_name chain_index ICL_instance EDT_instance
1 edt…_chain_8 7 xtea…_edt_c1_inst /xtea…_edt_c1_inst
LVI_PATCHING_INFO_END
…
XMAP_TABLE_END
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
LVX Support
Ann {* + Targets: *}
Ann {* + Apply 0 *}
Ann {* + writes: *}
Ann {* + xtea_2.edt_three.edt_bypass = 0 *}
Ann {* + xtea_2.edt_three.edt_low_power_shift_en = 0 *}
Ann {* + xtea_2.edt_three.lvx_chain_index[1:0] = 00 *}
Ann {* + xtea_2.edt_three.lvx_mode[1:0] = 00 *}
Ann {* + xtea_2.xtea_rtl_tessent_edt_one_inst.edt_bypass = 0 *}
Ann {* + xtea_2.xtea_rtl_tessent_edt_one_inst.lvx_chain_index[2:0] = 000 *}
Ann {* + xtea_2.xtea_rtl_tessent_edt_one_inst.lvx_mode[1:0] = 00 *}
Ann {* + Shift-DR *}
…
Ann {* TESSENT_PRAGMA variable
xtea_2.xtea_rtl_tessent_edt_one_inst.lvx_chain_index \
-type write \
-var_bits {2:0} -pin tdi -relative_cycles {30:28} *}
…
Signal Groups
The pin of the Tessent pragma is in a signal group of your pattern. In the following
SignalGroups, the tdi pin is in the _pi_ signal group at the third position from the end.
SignalGroups {
…
_pi_ = '"ssn_bus_data_in"[11] + "ssn_bus_data_in"[10] +
"ssn_bus_data_in"[9] + "ssn_bus_data_in"[8] + "ssn_bus_data_in"[7] +
"ssn_bus_data_in"[6] + "ssn_bus_data_in"[5] + "ssn_bus_data_in"[4] +
"ssn_bus_data_in"[3] + "ssn_bus_data_in"[2] + "ssn_bus_data_in"[1] +
"ssn_bus_data_in"[0] + "ssn_bus_clock" + "reset_pad" + "xtea_1_rst" +
"xtea_2_rst" + "tck" + "tdi" + "tms" + "trst"';
…
}
Vector Locations
Tessent pragma annotations at each bit variable mark vectors of each index location. The
following annotations identify the three vectors to patch.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Retention Testing With SSN
For SSN, the test_setup and ssn_setup procedures for retention are different from those of non-
retention pattern sets. Use the “write_patterns” command to write those two IJTAG procedures
separately:
For more information about writing SSN patterns, with examples, refer to the section
“Manufacturing Patterns With SSN” on page 558.
Note
We recommend that you write the IJTAG and payload procedures for all SSN patterns to
separate files.
Like logic test SSN patterns, SSN retention test patterns require failure mapping when a
miscompare is identified on the SSN bus output. The failure mapping step identifies the SSH
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Retention Testing With SSN
the failing register is associated with. You can identify the precise failing register using Tessent
Diagnosis. The following is a recipe for both failure mapping and diagnosis with a retention test
pattern:
Note
Retention testing with SSN requires a scan host generated with a 2022.1 or newer release.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Tessent SSN Examples and Solutions
Problem
Third party OCCs need connections to scan_en and shift_capture_clock, which do not exist
until the SSN ScanHost node is inserted. This section explains how to automate these
connections.
Solution
The third-party OCCs are assumed to be pre-inserted into the design when SSN is inserted as
described in the section “Second DFT Insertion Pass: Inserting Block-Level EDT, OCC, and
SSN” on page 483. The scan_en and slow_clock pins on the OCC instances are tied low.
Follow these steps to properly connect the OCC to the ScanHost node:
Discussion
In the solution described in the previous subsection, you use the add_dft_control_points
command to make the scan_en and shift_capture_clock connections to the OCC. This is the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
Third-Party OCCs With SSN
general command you use to connect any DFT signal to any destination. When you insert the
ScanHost node, the insertion process remaps dynamic DFT signals scan_en, edt_update,
edt_clock, and shift_capture_clock to the output pins of the ScanHost node.
Because the ScanHost node delivers the scan data in both the internal and external scan modes,
your third-party OCC must still be able to inject the slow_clock into the clock_domains when
scan_en is high, even when the OCCs are not active. In a wrapped core, you have an OCC on
each clock input. Those OCCs are active during the internal scan modes but are typically
inactive during the external test modes, such that the sourcing for the capture clock is from a
single OCC localized at the functional clock source of the domain. Those inactive OCCs must,
however, still inject the shift_capture_clock generated by the local ScanHost node when
scan_en is high during the external modes. This is the shift_only_mode feature described in the
Tessent OCC reference page. The presence of this feature enables easier timing closure because
the entire shift timing is internal to the physical block and completely derived from the SSN bus
clock, as illustrated in the following figure:
If you want your legacy scan access mechanism to coexist with SSN in your first few designs
that use SSN, add the scan_en and other dynamic DFT signals on their original sources as you
do currently. Then, continue to preconnect the scan_en and slow_clock inputs of your third-
party OCC to those sources. When the ScanHost node is inserted, the complete fanout of the
specified sources moves so that the output pins of the ScanHost node drive them, and your
original sources are connected to the bypass_in pins of the ScanHost. See Example 2 in the
ScanHost reference page for more information about this flow.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN Frequently Asked Questions
Unlike with the Tessent OCC, you must describe the third-party OCC to the Tessent Tool. To
do this, use the “add_clocks -capture_only” command manually on each OCC output clock pin,
and provide a clock control definition as described in the “Support for Internal Clock Control”
section of the Tessent Scan and ATPG User’s Manual.
Note
The SSN bus_clock frequency operates at the slowest specified frequency set by the
set_load_unload_timing_options command at any physical block.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN Frequently Asked Questions
5. What design view of my physical blocks should I use during pattern retargeting?
Use the graybox design view of the physical block whose patterns you want to retarget.
6. How do I program my SSN multiplexer nodes?
Use the generated PDL to write the select of the SSN multiplexer using the
set_test_setup_icall command.
set_test_setup_icall \
"chip_top_ssh_insertion_tessent_ssn_mux_returnPath_inst.setup
select_secondary_bus 1" -append
7. How is the negative edge of scan_en synchronized across all SSH during top-level
ATPG?
During top-level ATPG, one SSH may enter the capture state before another SSH in the
same active datapath. This may happen with certain bus configurations and is normal
behavior. During top-level ATPG, all active SSH nodes are capture-aligned. Each SSH
receives the same number of packets before entering or leaving the capture state. This
guarantees that each physical block does not miss any capture clock pulses.
8. Can I use a custom test_setup sequence with “pulse TCK” and “force TMS” to
initialize an analog IP and still use SSN?
Yes, add your custom test_setup sequence using the set_procfile_name command, and
the SSN initialization is appended at the end of your custom sequence.
9. How do I enable Streaming-Through-IJTAG?
Use the set_ssn_options command to enable the Streaming-Through-IJTAG mode.
set_ssn_options -streaming_interface ijtag
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN Limitations
SSN Limitations
Use of SSN is subject to limitations in pattern writing, ScanHost identification, failure mapping,
Streaming-Through-IJTAG mode, automatic configuration, and certain commands that are
incompatible with SSN.
• The following write_patterns command switches are not supported for SSN:
o -MEMory_size
o -SCAN_Memory_size
• For hierarchical designs, writing core-level patterns in the PatDB format using the
write_patterns command is the only source for retargeting scan patterns to the top level.
ASCII format patterns are not supported for retargeting.
• Do not use the add_core_instances command to add SSN ScanHost core instances.
The ScanHost instances are inferred from the ICL, and the active ScanHost instances are
automatically identified.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN Limitations
Streaming-Through-IJTAG Limitations
The status of the on-chip compare self-test is available only through the SSN parallel output
bus. If you try to write the on-chip compare self-test using Streaming-Through-IJTAG, the tool
reports an error.
• The IJTAG control signals include additional pipelines to enable an increased TCK
clock shift frequency.
• One or more of the active scan hosts on that path are capture-aligned with other active
scan hosts in the streaming scan network.
• You are writing a pattern that requires capture alignment, such as “write_patterns
-pattern_set scan” or “write_patterns -pattern_set retention”.
For more information about Streaming-Through-IJTAG, refer to the section “Streaming-
Through-IJTAG Scan Data” on page 532.
Command Limitations
You cannot use the macrotest command with SSN.
• You must ensure there are no incidental inversions or permutations of bits on the SSN
bus.
• The bit sequence of the datapath must be maintained throughout the SSN bus.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN Limitations
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Streaming Scan Network (SSN)
SSN Limitations
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 10
Tessent Examples and Solutions
This chapter contains Tessent solutions for specific DFT scenarios and problems. This includes
applications and flows that solve common, difficult issues encountered in DFT.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Handle Parameterized Blocks During DFT Insertion
Multiple Unique Sets of Parameter Overrides with No Impact on RTL DFT Insertion
The simplest of the three scenarios has multiple unique sets of parameter overrides. However,
the effect of those parameter overrides on RTL DFT insertion is no different than the default
parameter values. Synthesis creates multiple netlists that must be mapped to a single RTL view.
Two or More Unique Sets of Parameter Overrides That Impact RTL DFT Insertion
Differently
In the typical scenario, the parameter overrides affect RTL DFT insertion; however, the effect
on insertion for each set of overrides is the same. During insertion, the block must be
instantiated in the same way as it is instantiated in the parent block. Any of the override sets can
be selected, because they all have the same effect on insertion. Synthesis creates multiple
netlists when there are multiple unique sets of parameter overrides. Those netlists must be
mapped to a single RTL view, as in the simplest scenario.
Two or More Unique Sets of Parameter Overrides That Impact RTL DFT Insertion
Differently
In the most complex scenario, each set of parameter overrides can affect RTL DFT insertion
differently. The parameterized block must be uniquified such that all sets of parameter overrides
associated with a given uniquified block affect RTL DFT insertion in the same way. The
material in this section regarding insertion and the mapping of multiple netlists applies
separately for each uniquified block.
The following topics provide full problem descriptions, solutions, and examples for all three of
these scenarios:
Problem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Problem
Problem
Different design scenarios with parameterization wrappers have different impacts on the DFT
insertion process.
Multiple Unique Sets of Parameter Overrides with No Impact on RTL DFT Insertion
In the simplest scenario, the parameters have no impact on the DFT logic that is being inserted.
In the insertion steps the design is elaborated with its default parameter values. It makes no
difference if the parameter values are different when the block’s root module is instantiated into
its parent module because the parameters do not affect the DFT logic that is inserted. The
distinctive characteristic of this scenario is multiple unique sets of parameter overrides;
therefore, synthesis creates multiple netlists. Those netlists must be mapped to a single RTL
view with DFT inserted. A small modification to the standard flow enables this mapping.
In addition to having normal Verilog parameters, your design may have SystemVerilog
interface ports with modports or it may have parameterized types. In the first case, as long as the
modports that are specified when the block’s root module is instantiated do not affect RTL DFT
insertion, the above scenario and its solution are applicable. In the second case, as long as the
actual type specified for the parameterized type when the block’s root module is instantiated
does not affect RTL DFT insertion, the above scenario and its solution are applicable.
One or More Unique Sets of Parameter Overrides That Impact RTL DFT Insertion in the
Same Way
In the typical scenario, the parameters do have an impact on the DFT logic inserted during RTL
DFT insertion. There may be multiple unique sets of parameter overrides; however, in this
scenario, all of them have the same effect on RTL DFT insertion. For example, your design may
have a parameter that controls the size of a generate loop which instantiates memories. Given
that memory BIST must be configured to test the right amount of memories, it is mandatory
that, during DFT insertion, the parameter be set to the same value it has when the block's root
module is instantiated into its parent module.
Tessent Shell provides parameterization wrappers to ensure that the block’s root module is
instantiated in exactly the same way as in its parent module. A parameterization wrapper is a
module that instantiates the block's root module with the same parameter overrides used in the
parent module's instantiation. If the design has multiple unique sets of parameter overrides, the
choice of which set to target in the parameterization wrapper is arbitrary since they all have the
same effect on RTL DFT insertion.
• System Verilog interface ports with modports specified in the instantiation of the
block’s root module. If the modports that are specified in the instantiation affect RTL
DFT insertion, a parameterization wrapper must ensure that the modports that are
specified during insertion are the same as in the parent module instantiation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Problem
• System Verilog generic interface ports that are bound in the instantiation of the block’s
root module to System Verilog interface nets. In this case, a parameterization wrapper is
always required. You cannot perform standalone elaboration of the top module of a
design that has generic interface ports. The generic interface ports must be bound to
actual interface nets.
• System Verilog parameterized types and the default types are overridden in the
instantiation of the block’s root module. If the actual types that are specified in the
instantiation affect RTL DFT insertion, a parameterization wrapper ensures that the
types that are specified during insertion are the same as in the parent module
instantiation.
Parameterization wrappers properly handle those constructs; that is, they specify that the
block’s root module be instantiated with the same actuals (modports, interface nets, or types) as
in the instantiation of the block in the parent module.
Two or More Unique Sets of Parameter Overrides That Impact RTL DFT Insertion
Differently
In the most complex scenario, your parameterized block must be uniquified in such a way that
the sets of parameter overrides associated with a given uniquified block have the same effect on
RTL DFT insertion. Tessent Shell provides a uniquification feature that enables you to associate
multiple instantiations with a single uniquified block. The Tessent flow facilitates the solution
steps for each uniquified block. Once you decide which instantiations of the block to associate
with a given uniquified block, the tool performs the required uniquification, creates the needed
parameterization wrappers, and provides the structures to facilitate RTL DFT insertion,
synthesis, and gate-level insertion on each uniquified block and its associated netlists.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
Solution
This section presents the Tessent parameterization wrappers solution flow.
You can handle most of the flow as described in “Tessent Shell Flow for Hierarchical Designs”
on page 203. However, with the exception of the simplest scenario, you must add a step that
performs block uniquification (when required) and creates the parameterization wrappers. You
must also replace a few existing command sequences with new ones.
Figure 10-1 shows the flow for using parameterization wrappers. It uses the following
conventions:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
The red step on the top left in Figure 10-1, “Creation of parameterization wrappers and initial
TSBDs”, creates parameterization wrappers for each parameterized child block that requires
RTL DFT insertion. For most parameterized designs, parameterization wrappers are required
for insertion as well as for synthesis. If your design has one or more unique sets of parameter
overrides that impact RTL DFT insertion in the same way, this step is mandatory. We also
recommend this step in the simpler case of multiple unique sets of parameter overrides with no
impact on RTL DFT insertion. Refer to “Creation of Parameterization Wrappers and Initial
TSDBs for Typical Designs” on page 672 for details.
The red step on the top right in Figure 10-1, “Block Uniquification and Creation of
Parameterization Wrappers and Initial TSDBs”, uniquifies the design such that a given
uniquified parameterized block is only instantiated with parameter overrides that impact RTL
DFT insertion in the same way. The tool must create parameterization wrappers for each
(possibly uniquified) parameterized block before it performs RTL DFT insertion on the block.
If your design has two or more unique sets of parameter overrides that impact RTL DFT
insertion differently, this step is mandatory. Refer to “Block Uniquification and Creation of
Parameterization Wrappers and Initial TSDBs for Complex Designs” on page 673 for details.
The remaining steps in Figure 10-1 apply to all three of the scenarios described in the Problem
section.
The dashed red optional step, “Creation of the gate-level TSDB for a Physical Block”, is
required only if you do not use Tessent Scan for scan insertion.
Creation of Parameterization Wrappers and Initial TSDBs for Typical Designs . . . . . 672
Block Uniquification and Creation of Parameterization Wrappers and Initial TSDBs for
Complex Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
Modifications to the First DFT Insertion Pass for Blocks . . . . . . . . . . . . . . . . . . . . . . . . 676
Modifications to the Second DFT Insertion Pass for Blocks . . . . . . . . . . . . . . . . . . . . . . 677
Synthesis for Physical Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
Creation of the Gate_Level TSDB for a Physical Block. . . . . . . . . . . . . . . . . . . . . . . . . . 678
Scan Insertion for Physical Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
Modifications to the First DFT Insertion Pass for Chips. . . . . . . . . . . . . . . . . . . . . . . . . 679
Modifications to the Second DFT Insertion Pass for Chips. . . . . . . . . . . . . . . . . . . . . . . 680
Synthesis for the Chip Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
Procedure
1. Specify the Tessent Shell context with a unique design_id and set the TSDB output
directory:
set_context dft -rtl -design_id rtl0
set_tsdb_output_directory golden_rtl_contexts.tsdb
2. Tag the design files to indicate the block to which they belong and load the design files:
set_read_design_tag <root_module_name_of_block>
read_verilog <design_files_for_the_block>
Repeat these two commands for each block you list in the configuration specification,
including the top block of the design. You must invoke the set_read_design_tag
command before loading the design files for each block.
3. Elaborate the design:
set_current_design <root_module_name_of_top_block>
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
The tool creates an initial set of TSDBs for the blocks. The next step is “Modifications
to the First DFT Insertion Pass for Blocks” on page 676. We also recommend that you
use the synthesis approach exemplified in the scripts in “Synthesis Guidelines for
Parameterization Wrapper Flows” on page 1022.
For a discussion of these steps applied to an example design, refer to “Creation of the
Parameterization Wrappers and Initial TSDBs” on page 683.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
the proper parameter overrides. The synthesis tool uses all of the wrappers to generate a netlist
for each parameterized view of the block.
In this step of the flow, you tag the design files to indicate the block to which they belong, load
the design files, and elaborate the design. You then create a configuration specification for the
process_parameterized_design_specification command and invoke that command. That
command uniquifies the blocks and creates the parameterization wrappers and side files for
synthesis. It creates a TSDB with a sub-directory for each block and writes the blocks to the
TSDB. Finally, it verifies the correctness of the design source dictionaries for the blocks.
Prerequisites
None.
Procedure
1. Specify the Tessent Shell context with a unique design_id and set the TSDB output
directory:
set_context dft -rtl -design_id rtl0
set_tsdb_output_directory golden_rtl_contexts.tsdb
2. Tag the design files to indicate the block to which they belong and load the design files:
set_read_design_tag <root_module_name_of_block>
read_verilog <design_files_for_the_block>
Repeat these two commands for each block listed in the configuration specification
described below, including the top block of the design. You must invoke the
set_read_design_tag command before loading the design files for each block.
3. Elaborate the design:
set_current_design <root_module_name_of_top_block>
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
The tool creates an initial set of TSDBs for the blocks. The next step is “Modifications
to the First DFT Insertion Pass for Blocks” on page 676. We also recommend that you
use the synthesis approach exemplified in the scripts in “Synthesis Guidelines for
Parameterization Wrapper Flows” on page 1022.
For a discussion of these steps applied to an example design, refer to “Block
Uniquification and Creation of Parameterization Wrappers and Initial TSDBs” on
page 689.
3. Load the interface modules for any immediate child blocks in case those modules have
external dependencies:
read_design <root_module_name_of_block> -design_id \
<id_of_last_RTL_insertion_pass> -view interface
4. Replace the invocations of the read_verilog command for your block’s design files with
the following read_design command:
read_design <root_module_name_of_block> -design_id rtl0
Results
These modified steps of the flow accomplish the following actions:
• The tool automatically loads the parameterization wrapper for the block and uses it to
elaborate the design.
• The tool loads any files containing external dependencies that are present in the
parameterization wrapper but not in the block’s RTL design files.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
2. Load the interface modules for any immediate child blocks in case those modules have
external dependencies:
read_design <root_module_name_of_block> -design_id \
<id_of_last_RTL_insertion_pass> -view interface
3. Replace the invocations of the read_verilog command for your block’s design files with
the following read_design command:
read_design <root_module_name_of_block> -design_id rtl1
Results
These modified steps of the flow accomplish the following actions:
• The tool automatically loads the parameterization wrapper for the block and uses it to
elaborate the design.
• The tool loads any files containing external dependencies that are present in the
parameterization wrapper but not in the block’s RTL design files.
• The -include_child_physical_block_interface_modules option of the
write_design_import_script command causes the tool to load the interface modules for
the child blocks and any files needed to resolve external dependencies in the interface
modules.
• The write_design_import_script command creates a separate analyze.tcl file for each
parameterized view of the block to distinguish any differences in external dependencies
across views. Those files are distinguished by the suffix “_<i>”, where “i” is an integer
starting at 1.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
Refer to “Synthesis for Physical Blocks” on page 685 for a discussion of an example.
Procedure
1. Specify the Tessent Shell usage context with a unique design_id:
set_context dft -no_rtl -design_id gate
2. Specify the same TSDB output directory you used in the first and second RTL DFT
insertion passes:
set_tsdb_output_directory <RTL DFT
insertion output directory>
4. Load the design data for the last RTL insertion pass:
read_design <root_module_name_of_RTL_block> -design_id \
<id_of_last_RTL_insertion_pass> -no_hdl
5. Load the gate level interface views of any child physical blocks:
read_design <root_module_name_of_synthesized_netlist> \
-design_id gate -view interface
6. Elaborate the design. Use the “icl_module” option to map the netlist back to the correct
RTL block:
set_current_design <root_module_name_of_synthesized_netlist> \
-icl_module <root_module_name_of_RTL_block>
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
set_current_design <root_module_name_of_synthesized_netlist> \
-icl_module <root_module_name_of_RTL_block>
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
3. Load the interface modules for any immediate child blocks in case those modules have
external dependencies:
read_design <root_module_name_of_block> -design_id \
<id_of_last_RTL insertion_pass> -view interface
4. Replace the invocations of the read_verilog command for your block’s design files with
the following read_design command:
read_design <root_module_name_of_block> -design_id rtl0
2. Load the interface modules for any immediate child blocks in case those modules have
external dependencies:
read_design <root_module_name_of_block> -design_id \
<id_of_last_RTL insertion_pass> -view interface
3. Replace the invocations of read_verilog for your block’s design files with the following:
read_design <root_module_name_of_block> -design_id rtl1
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Solution
Refer to “Synthesis for the Chip Level” on page 686 for a discussion of an example.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Discussion
Discussion
Parameterization wrappers enable you to succinctly describe design variations at a high level.
The Tessent solution handles all types of parameterization, including simple parameters,
parameterized types, SystemVerilog interface ports with modports, and SystemVerilog generic
interface ports.
The following examples show how to apply this capability for different design types:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Discussion
The following topics apply to this example of a typical scenario. They also discuss common
modifications to the flow for parameterization wrappers in all three scenarios detailed in
“Problem” on page 667.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Discussion
In lines 39-40, the Block wrapper for processor_core is empty because no uniquification is
required.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Discussion
46 process_parameterized_design_specification \
47 ParameterizedDesignSpecification(chip_top, chip)
In this example, the processor_core physical block is instantiated with parameter overrides that
affect RTL DFT insertion and requires modifications to the first pass and second pass DFT
insertion steps.
Refer to the following sections for more information on modifications to the RTL DFT insertion
passes:
• “Modifications to the First DFT Insertion Pass for Blocks” on page 676
• “Modifications to the Second DFT Insertion Pass for Blocks” on page 677
• “Modifications to the First DFT Insertion Pass for Chips” on page 679
• “Modifications to the Second DFT Insertion Pass for Chips” on page 680
In the step in the second pass of DFT insertion that invokes the write_design_import_script
command, the “-include_child_physical_block_interface_modules” option is not applicable at
the block level in this example because processor_core has no child blocks. However, it is
applicable in the general case and in the second RTL DFT insertion pass for chip_top in this
example.
For further discussion of this example, proceed to “Synthesis for Physical Blocks” on page 685.
This example script creates a netlist for each of the two views of processor_core:
processor_core_1 and processor_core_2.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Discussion
This script creates the netlist for the chip_top. The netlist instantiates processor_core_1 and
processor_core_2. This synthesis script differs from the script in “Synthesis for Physical
Blocks” on page 685 only in the values of the design_name and clock_dictionary variables.
Figure 10-3 shows the post-synthesis diagram for the example design shown in the figure in
“Typical Scenario Without Uniquification” on page 683. Two separate netlists are created for
processor_core: processor_core_1 and processor_core_2.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Discussion
Refer to the “Scan Insertion for a Physical Block” topic for a detailed discussion of the ICL
uniquification process.
Example 10-4. Script for Creation of the Gate_Level TSDB for a Physical Block
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Discussion
elaborated in preparation for scan insertion, map that netlist to the proper ICL module in the
RTL view.
Use the set_current_design command as follows:
The -icl_module option specifies the ICL module that maps to the netlist being elaborated. After
scan insertion is completed, a new TSDB is created for this gate-level view. Because there are
two gate views for processor_core, the corresponding ICL needs to be uniquified. All references
to processor_core are updated to either processor_core_1 or processor_core_2 in the .icl, .tcd,
and .tsdb_info files.
When scan insertion is done at the parent level (chip_top) and the new TSDB is written, the ICL
hierarchy which is referenced in the chip_top.icl file is updated to reflect both netlists for the
processor_core block. The ChildBlockModules wrappers in the .tcd and .tsdb_info files are
updated as well.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Discussion
The block processor_core is a parameterized physical block that is instantiated three times with
three sets of parameter overrides. These parameters are shown in the figure as P1 and P2. The
values shown in each block are the parameter overrides. The overrides for PROCESSOR_1 and
PROCESSOR_2 have the same effect on DFT insertion. The overrides for PROCESSOR_3
affect DFT insertion differently than those for the other two instances.
Block Uniquification and Creation of Parameterization Wrappers and Initial TSDBs 689
The following example shows the additional uniquification steps required for a design with two
or more unique sets of parameter overrides that impact RTL DFT insertion differently.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Discussion
ParameterizedDesignSpecification(chip_top, chip) {
Block(processor_core, physical_block) {
UniquificationGroup {
Instances {
PROCESSOR_1;
PROCESSOR_2;
}
}
UniquificationGroup {
Instances {
PROCESSOR_3;
}
}
}
}
}
By default, the tool prefixes each uniquified block name with the top block name, chip_top in
this example. This enables the uniquified block to be used in multiple contexts.
The tool uniquifies the processor_core block such that the parameter overrides that are
associated with the instances specified in the uniquification group wrapper have the same effect
on RTL DFT insertion.
Figure 10-5 shows the same design after uniquification for the example design shown in
“Complex Scenario With Uniquification” on page 689. The tool uniquifies the block
processor_core into chip_top_processor_core_pv1 and chip_top_processor_core_pv2.
In this example, the processor_core physical block is instantiated with parameter overrides that
affect RTL DFT insertion and requires modifications to the first pass and second pass DFT
insertion steps.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Avoid Simulation Issues When Using the Two-Pin Serial Port Controller
Refer to the following sections for more information on modifications to the RTL DFT insertion
passes:
• “Modifications to the First DFT Insertion Pass for Blocks” on page 676
• “Modifications to the Second DFT Insertion Pass for Blocks” on page 677
• “Modifications to the First DFT Insertion Pass for Chips” on page 679
• “Modifications to the Second DFT Insertion Pass for Chips” on page 680
For further discussion of this example, proceed to “Synthesis for Physical Blocks” on page 685.
Problem
Some pad models with internal pull resistors also model delays for the pull value, which allows
a “Z” or “X” value to propagate to the clock pin of the TRST generator. This will cause a
simulation artifact that will propagate an “X” on the network’s TRST signal and effectively fail
the simulation.
Solution
The failure is purely a simulation artifact. The solution uses a Verilog side file that prevents an
undetermined value from propagating to the TRST generator’s clock pins.
`timescale 1ns/1ns
module tpsp_artifact_solution;
`ifndef TPSP_INST
`define TPSP_INST top_rtl_tessent_twopinserialport_tpsp_inst
`endif
always@(TB.DUT_inst.`TPSP_INST.tessent_persistent_cell_spio_in_trst_clk_buf.A) begin
if (TB.DUT_inst.`TPSP_INST.tessent_persistent_cell_spio_in_trst_clk_buf.A === 1'bx)
force TB.DUT_inst.`TPSP_INST.tessent_persistent_cell_spio_in_trst_clk_buf.Y = 1'b0;
else
#0.1 release TB.DUT_inst.`TPSP_INST.tessent_persistent_cell_spio_in_trst_clk_buf.Y;
end
endmodule
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Avoid Simulation Issues When Using the Two-Pin Serial Port Controller
4. Run the simulation using the extra options to provide the TPSP controller’s path, the
extra Verilog side file, and the module inside.
run_testbench_simulations \
-simulation_macro_definitions "TPSP_INST=$tpsp_sim_path" \
-extra_verilog_files ../data/tpsp_artifact_solution.v \
-extra_top_modules tpsp_artifact_solution
Using the Questa Simulator outside Tessent Shell
1. Create a Verilog side file using the code above, such as “tpsp_artifact_solution.v”.
2. Load your design files with Questa’s “vlog” command.
3. Load the side file and provide the path to the TPSP controller instance using the
“+define+” command unless it is hard coded in the side file.
vlog -work dut_work "../../../../data/tpsp_artifact_solution.v" \
+define+TPSP_INST=path.to.instance.top_rtl_tessent_twopinserialport_tpsp_inst
4. Run the simulation using Questa’s “vsim” command, adding the module’s name from
the Verilog side file. (Use “acc” optimization if simulating with SDF.)
vsim -lib "dut_work" -L dut_work -do 'run -all; exit' \
-voptargs=\"+acc\" \
p1_configuration \
p1_sdf \
tpsp_artifact_solution
Discussion
The failure is purely a simulation artifact. The proposed solution is to use a Verilog side file to
prevent an undetermined value from propagating to the TRST generator’s clock pins.
The Two-Pin Serial Port (TPSP) controller is an interface for the 1149.1 TAP controller and can
drive a TAP with two pins on the chip boundary. A 4-bit shift register inside the TPSP generates
the TRST signal pulse for the TAP controllers it drives.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Avoid Simulation Issues When Using the Two-Pin Serial Port Controller
In Figure 1, an undetermined value (“X”) may occur on the internal “spio_in” net and reach the
clock pin of the TRST generator (shown in red), causing corruption of the simulation results.
This register is sensitive to these states, and the TPSP protocol is such that the inout port is put
in a high impedance state every third cycle. For these reasons, Tessent Shell requires a pull
resistor modeled for the SPIO port, whether an Inout Pad or Input Pad model.
The pull value will drive the input immediately if the pad has no delay modeled. The registers
will not get corrupted, and the simulation will end with the correct results. However, if your pad
models a delay for the pull value, you will observe the problem. This problem is purely a
simulation artifact and will not be present during manufacturing tests, and you can use a Verilog
side file to avoid it.
To solve the simulation artifact when your pad model has a delay on the pull value, you can use
a Verilog side file to prevent a corrupting value from reaching the TRST generator registers’
clock pins. The side file changes the behavior of the persistent buffer inside the TPSP controller,
“tessent_persistent_cell_spio_in_trst_clk_buf” (see Figure 1.), to disable the propagation of an
undetermined value through the buffer. The output of the buffer cell (Y) is forced to “0” when
the undetermined value is present on its input (A). The forced value is released with minor delay
when the value on the buffer’s input becomes determined.
An example Verilog side file was provided in the “Solution” on page 691. The code uses the
“`define” statement to provide the TPSP controller instance’s design path. However, the path
could be hard coded as well. Copy the code and create a new Verilog side file (Step 1). Before
you can compile your new Verilog side file and run it with the testbench generated by Tessent,
you must define values for several Tcl variables (Step 2). Define the library sources for
simulation using the set_simulation_library_sources command (Step 3). Finally, run the
run_testbench_simulations command with extra options to use the Verilog side file (Step 4).
You can also compile and run the new Verilog side file directly in a simulation tool such as
Questa. Copy the code and create a new Verilog side file (Step 1). Load your design files into
the Questa simulator (Step 2). Load the Verilog side file and define the path to the TPSP
controller instance using a “+define+” statement unless it is already hard coded in the side file
(Step 3). Finally, run Questa simulation using the additional options to utilize the Verilog side
file (Step 4).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Handle Clocks Sourced by Embedded PLLs During Logic Test
In summary, you can use a Verilog side file to resolve a simulation artifact. A pad modeled with
a delay on the pull value exhibits the problem. You can use a Verilog side file to prevent “X”
value propagation by changing the behavior of a buffer inside the TPSP. The side file solution
works with a Tessent testbench inside the Tessent shell or the Questa simulator outside the
Tessent shell.
Problem
For embedded PLLs, such as the one shown inside “corec” in Figure 10-7, the OCC inserted on
the VCO output of the PLL is used during the internal logic test modes of the core. The OCC is
also reused during the internal test modes of its parent physical regions.
When the PLL is inside a wrapped core that is the child of another wrapped core, you must
ensure that the OCC is still controllable by the scan chains when running logic test modes of the
top level.
Solution
Wrapped Core Only Used in the Top Level
If the PLL is embedded inside a wrapped core that is only used inside the top level physical
region, then no further action is needed. The standard flow handles this scenario automatically,
as described in “Tessent Shell Flow for Hierarchical Designs” on page 203.
1. Add an extra DFT signal when you process the wrapped core that embeds the PLL in
“Second DFT Insertion Pass: Inserting Top-Level EDT and OCC” on page 233 (for
example, when processing corec) as follows:
add_dft_signals promoted_cells_mode
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Handle Clocks Sourced by Embedded PLLs During Logic Test
2. Create a new scan mode when you process the wrapped core that embeds the PLL in the
“Scan Chain Insertion” step (for example, when processing corec) as follows:
set promoted_instances \
[get_attributed_objects \
-attribute_name wrapper_type_from_clock_source \
-object_type instance]
if {[sizeof_collection $promoted_instances] > 0} {
add_scan_mode promoted_cells_mode \
-include_elements [get_scan_elements \
-of_instances $promoted_instances]
}
The new scan mode contains the control flip-flops of the OCCs that need to be
accessible from the top-level.
3. Modify the definition of the external scan mode when you process the parent wrapped
core in the scan chain insertion step of the flow (for example, when processing corea).
set_attribute_value corea_i1 -name active_child_scan_mode \
-value promoted_cells_mode
Modifying the external scan mode definition enables you to include the promoted scan
chains from the child wrapped cores in the external chain of the current wrapped core.
This step ensures that the control flip-flops of the embedded OCCs are accessible by the
test modes of the top level.
4. Depending on the hierarchy of your design, do one of the following:
o If your design only uses the wrapped core at the top level of the chip (such as corea),
then no further modifications are required for the standard flow.
o If your design embeds the wrapped core inside another wrapped core (for example,
there was a layer of wrapped core between corea and top), you need to recreate the
promoted scan mode at the current level.
This step provides access to the OCC control bits in its external scan mode. The
method shown in Step 3 is reapplied to that parent wrapped core as follows:
set_attribute_value corea_i1 -name active_child_scan_mode \
-value promoted_cells_mode
add_scan_mode promoted_cells_mode \
-include_elements [get_scan_elements \
-of_child_scan_modes promoted_cells_mode]
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Handle Clocks Sourced by Embedded PLLs During Logic Test
Discussion
The example chip shown in the following figure illustrates functional clocking when a PLL is
embedded inside a child physical region.
Figure 10-7. Example Chip with PLL Embedded Inside Lower Core
Figure 10-8 shows the location of the OCCs inserted inside corec and coreb. The two OCCs
inside corec are active during its internal test modes to inject the shift clock during the shift
cycles and to chop the functional clocks during capture cycles. The two OCCs inside coreb are
also active during its internal test modes.
Figure 10-8. Active OCCs During Internal Test Modes of corec and coreb
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Handle Clocks Sourced by Embedded PLLs During Logic Test
If you want to run the internal test modes of corec in parallel with those in coreb, you need to
provide a clock bypass path, such that the free running output of the PLL can continue to source
the red clock of coreb when the OCC inside corec is active.
The bypass clock path is not required. The tool issues an error if you try to re-target an internal
test mode of coreb in parallel with an internal test mode of corec or corea, and the bypass path is
not present. The reason for this check is that the OCC at the input of the red domain of coreb
expects and requires a free running clock when active. The red clock output of corea is not a
free running clock when the red OCC inside corec is active. Instead, it is alternating between the
shift clock and bursts of at-speed clock pulses.
If you provide the bypass clock path, you reduce the overall chip test time as you can
concurrently test corec or corea with coreb. If you want to insert the clock bypass path within
the DFT insertion process, use a process_dft_specification.post_insertion callback to create the
ports and make the connections. Use the intercept_connection command to insert the
multiplexer inside coreb. The best option to control the select input of the multiplexer is to
register and add a new DFT signal. See the register_static_dft_signal_names command for more
information.
When you move up to corea, another OCC is inserted at the base of the blue clock domain to be
used during its internal logic test modes, as shown in Figure 10-9.
Figure 10-9. Active OCCs During Internal Test Modes of corea and coreb
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Handle Clocks Sourced by Embedded PLLs During Logic Test
The OCC on the blue domain inside corec is kept inactive, as it is during the functional mode.
The clocking of the entire blue clock domain is controlled by the OCC located inside of corea at
the base of the clock tree. The red OCC inside corec is active during the internal test mode of
corea to control the scannable flip-flops on the red domain inside corea, as well as the wrapper
flops on the red domain inside corec. Because the “fast_clock” input of that red OCC is not
sourced by an input of corec, its scan chain is automatically promoted to its wrapper chains.
This promotion enables the scan chain to be under ATPG control when running the internal test
mode of corea.
If corec was not embedded within another wrapped core (such as coreb that is directly
instantiated in the top level), the handling is completely automated and no deviation from the
standard flow, described under “Tessent Shell Flow for Hierarchical Designs” on page 203, is
necessary. However, when the wrapped core containing the embedded PLL is inside another
wrapped core, you must follow the steps described under “Solution” on page 694 to enable the
embedded OCC inside corec to be under ATPG control at the top level.
The OCCs within the cores are implemented with the shift only mode parameter. This has the
advantage of keeping the internal core shift timing identical between internal and external
modes. The relative shift timing between the many functional clock domains and the EDT clock
domain is derived from the common test_clock entering each core. You can close timing during
layout on each core and not have to wait until you run final STA from the top level to know how
fast each core shifts in external mode.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Handle Clocks Sourced by Embedded PLLs During Logic Test
If the OCCs do not have the shift only mode, the shift clock is injected through the red and the
blue OCCs. The relative timing of the shift clock as it arrives at the input of the two clocks
inside coreb is not known until the clock trees of the two functional clocks are completed, which
does not happen until you complete the layout of the top level.
When you use the add_dft_signals command to add the ext_ltest_en DFT signal to a given core,
the OCCs of that core are automatically equipped with the shift only mode.
Step 4 provides instructions for when corea is not directly instantiated into the top level, but
instead is embedded within another wrapper core. In that case, you need a special scan mode to
collect the embedded OCC chains such that they can be included in the wrapper chains of the
parent wrapped core. You follow step 3 on the parent wrapped core to include the promoted
scan mode of corea within its wrapper chain.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Design Capture Windows for Hybrid TK/LBIST
The purple line in Figure 10-10 represents the promoted scan chain that contains the control
flip-flops of the red OCC. This scan segment is inserted in the “ext_mode” of corea in step 3
such that the OCC is part of the scan chains of the top level.
Related Topics
Tessent OCC Types and Usage
OCC
Problem
The fundamental objectives for LBIST are increased test coverage, decreased test time, and
lower power consumption for the test run. In a typical flow, the full set of data needed to
perform optimal insertion to meet these objectives is not available until the gate-level netlist is
ready. In practice, test circuitry is closely integrated into the design and the design suffers when
test is treated as an ad-hoc component or inserted later in the gate-level netlist.
To address these issues and achieve a high level of test coverage and performance, the Hybrid
TK/LBIST flow enables you to insert DFT logic at the RTL level, before the gate-level netlist is
ready. Capture windows enable the flexibility to add test logic in the RTL and test accurately.
Solution
The solution is provided in two parts:
• Define capture windows (which clocks and how many pulses from each clock).
• Determine how many patterns to run per capture domain to achieve the targeted
coverage.
Define Capture Windows
If the clocking structure is known and determined during the insertion of the IP, define capture
windows for this flow by following the examples under “NCP Index Decoder” in the Hybrid
TK/LBIST Flow User's Manual.
If the clocking structure is not yet defined or finalized, use the following procedure:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Design Capture Windows for Hybrid TK/LBIST
where the integer argument is the number of patterns that are planned for use in
LBIST.
c. Run pattern simulation:
simulate_patterns –source random –store all
f. Design your capture windows using information from the ATPG run and the
report_statistics command.
• The ATPG run helps you identify the test clock domains in the design.
• The report_statistics command helps you identify the number of clock pulses per
clock domain
g. Determine how many patterns to run for each capture domain to achieve the targeted
coverage.
In the following example, the design has three clock domains, with possible interaction between
CLK2 and CLK3. The highest faults per domain is at CLK2 at 78%, followed by CLK3 at 43%.
---------------------------------------------------------------
Clock Domain Summary % faults Test Coverage
(total) (total relevant)
--------------------------------------------------------------
CLK3_OCC 43.07% 99.13%
CLK2_OCC 78.80% 99.08%
CLK1_OCC 22.98% 98.17%
---------------------------------------------------------------
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Use Boundary Scan in a Wrapped Core
In the following example, to achieve the best coverage with the lowest number of patterns, use a
two-cycle capture window for 20% of the patterns and use a single CLK2_OCC/CLK1_OCC
pulse capture window for 80% of the patterns.
pre-filtering
patt. # pattern # type cycles loads capture_clock_sequence
------- ------------- ---------------- ------ ----- ------------------
0 0 basic 1 1 [CLK1_OCC,*]
1 1 basic 1 1 [CLK2_OCC,*]
… … …
1 400 basic 1 1 [CLK2_OCC,*]
2 401 clock_sequential 2 1 [CLK2_OCC,*] [CLK3_OCC,*]
3 405 clock_sequential 2 1 [CLK2_OCC,*] [CLK3_OCC,*]
3 500 clock_sequential 2 1 [CLK2_OCC,*] [CLK3_OCC,*]
Note: [*] = "SHIFT_CLOCK", which is a pulse-in-capture clock.
Problem
Pads embedded inside a wrapped core must be identified such that boundary scan cells can be
added. The resulting boundary scan cells must also be made visible to the tool in order for them
to be included in scan chains and to apply scan patterns.
Solution
The solutions are given for wrapped core and chip-level flows.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Use Boundary Scan in a Wrapped Core
If the core contains pads and boundary scan, you must include the following commands in the
wrapped core flow shown in Figure 10-11 on page 703:
• Insert memory BIST and embedded boundary scan using during the
insert_mbist_ebscan step as follows:
a. Specify DFT requirements to insert memory test and embedded boundary scan:
set_dft_specification_requirements -memory_test on \
-boundary_scan on
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Use an Older Core TSDB With Newly-Inserted DFT Cores
Note
The order specified is the order in which the boundary scan cells are inserted.
• Specify not to add any dedicated wrapper cells on the embedded pad I/O during the
insert_scan step:
set_dedicated_wrapper_cell_options off \
-ports {ta_out0 ta_out1 ta_out2}
set_dedicated_wrapper_cell_options off \
-ports {ta_cci0a taclk ta_cci0b ta_cci1a ta_cci1b ta_cci2a
ta_cci2b}
• Preserve the boundary scan instances in the graybox during the ATPG_patterns
(graybox generation) step.
set preserve_bscan {}
set preserve_bscan \
[get_instances -hier *_tessent_bscan_logical_group_*]
analyze_graybox -preserve_instances $preserve_bscan
write_design -tsdb -graybox -verbose
Chip-Level Flow
For boundary scan at the chip-level, follow the standard chip-level flow by inserting boundary
scan as the first step in the flow. There are no specific additions for embedded boundary scan at
this phase of the flow. The boundary scan segments from the wrapped core are picked up
automatically during chip-level boundary scan insertion.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Use an Older Core TSDB With Newly-Inserted DFT Cores
Tessent Shell provides automation through the TSDB directory and TCD files. From the
TSDB, the tool finds all available TCD files that apply to the design.
2. Load the current design:
read_design <core_name> -design_id <final_design_id>
3. Prepare your legacy cores by configuring them into the correct mode.
a. If scan insertion was performed using Tessent Scan, use the import_scan_mode
command during pattern generation to import the EDT and OCC settings.
b. If the scan insertion was not performed using Tessent Scan, but there are TCD files
in the TSDB, use the add_core_instances command to configure the EDT and OCC.
add_core_instances -module <module_name>
c. If scan insertion was not performed using Tessent Scan and there are no TCD files
for OCC, manually add clock information using the add_clocks command and
define the clock definition as a third-party OCC.
# For OCC clock definition
add_clocks <occ_output_mux/y_pin> -capture_only
# For procedure setup of OCC
set_test_setup_icall "<OCC_name.setup>"
# For OCC clock definition file
read_procfile <occ_control.proc>
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
TAP Configuration
TAP Configuration
Tessent Shell typically relies on an IEEE 1149.1-based Test Access Port (TAP) as the primary
access mechanism to the DFT it inserts. When boundary scan is implemented, the Tessent TAP
fully complies with IEEE 1149.1 standard requirements, however many other possible
configurations are possible.
This section provides a quick reference to the various TAP insertion styles that are supported,
how to specify them, and what to expect from such implementations.
Solution
1. Set the design level to “chip.”
2. Use the following dofile example to insert the TAP:
set DFT [create_dft_specification]
read_config_data -in $DFT -from_string {
IjtagNetwork {
HostScanInterface(ijtag) {
Interface {
tck : tck;
}
Tap(single) {
}
}
}
}
process_dft_specification
The generated TAP connects to the trst, tck, tms, tdi, and tdo pads that were present in the pre-
DFT design.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Insert a Stand-Alone TAP in a Design
Discussion
If the TAP pins in the current design do not use the default names (trst, tck, tms, tdi, or tdo),
then they can be mapped using one of the following:
The tool issues errors if the TAP pads are not yet present in the current design. If the
design is only temporary, you can specify the “set_design_level sub_block” command
instead. Many TAP-specific DRCs are not run in such a case and other side effects may
result. You should read an updated design that includes TAP pads as soon as possible.
The following is a schematic representation of this example:
Related Topics
Insert a TAP with an IJTAG Host Scan Interface
Insert a Compliance Enable TAP with an IJTAG Interface
Insert a Daisy-Chained TAP
Insert a Primary TAP
Insert a Secondary TAP
Connecting to a Third-Party TAP
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Insert a TAP with an IJTAG Host Scan Interface
Solution
1. Set the design level to “chip.”
2. Use the following dofile example to insert the TAP:
set DFT [create_dft_specification]
read_config_data -in $DFT -from_string {
IjtagNetwork {
HostScanInterface(ijtag) {
Interface {
tck : tck;
}
Tap(single) {
HostIjtag(1) {
}
}
}
}
}
process_dft_specification
Discussion
The host scan interface on the generated TAP can be used to control any type of
IJTAG-compliant network.
The host scan interface provides a test_logic_reset output to reset downstream logic; it asserts
the host_<hostname>_to_sel output to 1 when accessing the client IJTAG network.
The capture_dr_en, shift_dr_en, and update_dr_en outputs are consumed by the client IJTAG
network or instruments after qualification with the host_<hostname>_to_sel port.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Insert a Compliance Enable TAP with an IJTAG Interface
Related Topics
Insert a Stand-Alone TAP in a Design
Solution
1. Set the design level to “chip.”
2. Ensure that at least one primary input pad is set to 0 or 1 to enable the TAP logic.
3. Use the following dofile example to insert the TAP:
set DFT [ create_dft_specification \
-active_low_compliance_enables {tap_en0} \
-active_high_compliance_enables {tap_en1} ]
read_config_data -in $DFT/IjtagNetwork/HostScanInterface(tap) \
-from_string {
Tap(CE_decoded) {
HostIjtag(1) {
}
}
}
process_dft_specification
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Insert a Compliance Enable TAP with an IJTAG Interface
Discussion
Note how the CE pins are specified as options to the create_dft_specification command.
The CE decoding module relies on the CE pin values to select the active TDO and TDO_EN
signals and route both to the primary TDO output pad.
The same CE module also gates the TMS signal such that when the proper values are not
present, the TMS input on the TAP is kept to 0. This normally has the effect of “parking” the
TAP in one of the stable FSM states (refer to the IEEE 1149.1 FSM state diagram for details).
Caution
Do not confuse the CE decoding module input port names with expected CE values! For
instance, in the preceding diagram the “ce0” input is actually sourced by the CE pin driven
at 1; the “ce1” input is connected to the CE pin driven at 0.
The general rule is that if n CE inputs are specified, the tool creates CE decoding logic with
input ports ranging from ce<n-1> down to ce0.
If internal CE nodes have to be used (that is, when the pre-DFT design already contains
decoding logic and hookup points to connect the new TAP to), declare those hierarchical nodes
in a new DftSpecification::IjtagNetwork::HostScanInterface::Interface wrapper. The
Tap<name> wrapper then has to be put within the very same interface wrapper.
Related Topics
Insert a Stand-Alone TAP in a Design
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Insert a Daisy-Chained TAP
Solution
Caution
You should not daisy-chain TAP controllers for BoundaryScan. The result is not IEEE
1149.1 compliant, and as a result you cannot create BoundaryScan patterns for the design
with Tessent Shell. During BoundaryScan testing, the scan paths contain both TAP controllers.
This works for the instruction and the BoundaryScan registers, but the bypass and the device_id
path are longer than the mandated size.
Discussion
The first TAP in this example has a name that starts with “top_rtl_”, while the second TAP
begins with “top_rtl1_”. These names are used because this step is typically done as a
subsequent insertion pass, such that the current design already contains at least one valid TAP.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Insert a Primary TAP
Related Topics
Insert a Stand-Alone TAP in a Design
Solution
1. Set the design level to “chip.”
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Insert a Primary TAP
Discussion
Except for the new user_ir_bits[0] output port created using the DataOutPorts wrapper, this
TAP is functionally identical to a stand-alone TAP with a host scan interface.
The added DataOutPort ports are TAP IR bits. If you need to create these bits as DR bits, insert
a TDR on the existing host scan interface using the following command:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Insert a Secondary TAP
Related Topics
Insert a Stand-Alone TAP in a Design
Insert a Secondary TAP
Solution
1. Set the design level to “chip.”
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Insert a Secondary TAP
Discussion
To trace through the secondary TAP implementations, begin with the TDO output and trace
back toward the primary TDI input.
The inserted ScanMux selects the TDI input by default and routes it to its own mux_out output.
The reset value of user_ir_bits[0] is 1. When this output transitions to 0, the secondary TAP is
enabled and the complete JTAG scan path goes through both TAPs.
Note
When the primary TAP is used to host the BoundaryScan chain, it should be the only one
between TDI and TDO to ensure that the design is IEEE 1149.1 compliant.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Insert a Secondary TAP
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Connecting to a Third-Party TAP
Related Topics
Insert a Stand-Alone TAP in a Design
Insert a Primary TAP
Solution
When creating the DFT specification, specify the -existing_ijtag_host_scan_in port option and
point to the ScanInPort on the third-party TAP that receives the scanned-out data from the
inserted IJTAG network or instruments. The DFT specification is then created accordingly.
Related Topics
Insert a Stand-Alone TAP in a Design
Problem
Tessent Shell does not natively generate and insert WSP Controllers for the IEEE 1500
standard. However, you can build one using Tessent Shell’s IJTAG features for the IEEE 1687
standard.
Solution
To create a WSP controller, use an empty Verilog module and an IJTAG network that you can
specify using DftSpecification wrappers for the Tessent Shell. See the “Discussion” for details
of the IEEE 1687 IJTAG network model of the IEEE 1500 WSP interface.
Note
See “IJTAG Network Insertion” in the Tessent IJTAG User’s Manual for more information
about the insertion flow and how to edit or modify a DftSpecification.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Create a WSP Controller in Tessent Shell
4. Create a TDR for the WSP Instruction Register (wsp_ir) that connects to Input(1) of the
scanmux_ir. The length of the TDR depends on the number of registers in the hierarchy.
Use a TDR length greater than or equal to the base 2 logarithm of the number of
registers.
tdr_length ≥ log2(number of registers)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Create a WSP Controller in Tessent Shell
Tdr(wsp_ir) {
length : tdr_length;
DataInPorts {
connection(tdr_length-1) : logic0/Y;
...
connection(1) : logic1/Y;
connection(0) : logic0/Y;
}
DecodedSignal(level1_mux_select) {
decode_values : <tdr_length>'bXX...X1;
}
DecodedSignal(level2_mux_select) {
decode_values : <tdr_length>'bXX...1X;
}
DecodedSignal(level<tdr_length>_mux_select) {
decode_values : <tdr_length>'b1X...XX;
}
}
5. Create the remaining IJTAG network hierarchy under Input(0) of the scanmux_ir. The
bypass register must be accessible only through code consisting of zeros or ones. The
logic constraints specify the device ID (dev_id) default capture value.
Tdr(dev_id) {
length : 32;
DataInPorts {
connection(31:18) : logic0/Y;
connection(17) : logic1/Y;
connection(16:2) : logic0/Y;
connection(2:0) : logic1/Y;
}
}
6. The following code is the complete DftSpecification that models the IEEE 1500 WSP.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Create a WSP Controller in Tessent Shell
DftSpecification(wsp,1_ijtag) {
IjtagNetwork {
DataInPorts {
port_naming : wir_select;
}
HostScanInterface(wsp) {
ScanMux (ir_dr) {
select : DataIn(0);
Input(1) {
Tdr(wsp_ir) {
length : <tdr_length>;
DataInPorts {
connection(tdr_length-1) : logic0/Y;
...
connection(1) : logic1/Y;
connection(0) : logic0/Y;
}
DecodedSignal(level1_mux_select) {
decode_values : <tdr_length>'bXX...X1;
}
DecodedSignal(level2_mux_select) {
decode_values : <tdr_length>'bXX...1X;
}
DecodedSignal(level<tdr_length>_mux_select) {
decode_values : <tdr_length>'b1X...XX;
}
}
}
Input(0) {
// part of the network connected to input 0 of the scanmux
...
}
}
}
}
}
Discussion
You can specify IJTAG networks in Tessent Shell using DftSpecification wrappers. The
DftSpecification interface can mimic an IEEE 1500 Wrapper Serial Port (WSP). The
implementation is fully compliant with the IEEE 1500 standard.
The WSP interface is almost the same as an IJTAG interface fully supported by Tessent Shell
with only one small modification required for the SelectWIR port. A primary input port must be
created for the SelectWIR. The ijtag_sel port is not connected in the model for the WSP.
Table 10-1 summarizes the signals.
Table 10-1. Comparison of IEEE 1687 and IEEE 1500 Ports
Function IEEE 1687 IJTAG IEEE 1500 WSP
Scan Input ijtag_si WSI
Capture Enable ijtag_ce CaptureWR
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Create a WSP Controller in Tessent Shell
Table 10-1. Comparison of IEEE 1687 and IEEE 1500 Ports (cont.)
Function IEEE 1687 IJTAG IEEE 1500 WSP
Shift Enable ijtag_se ShiftWR
Update Enable ijtag_ue UpdateWR
Test Clock ijtag_tck WRCK
Reset ijtag_reset WRSTN
Scan Output ijtag_so WSO
Select ijtag_sel -
Select Instruction Register - SelectWIR
If the WSP module is not hosted by IJTAG, you must assert the ijtag_sel port to logic 1.
IJTAG does not have the SelectWIR port. Therefore, the primary input port created with the
DataInPort wrapper has no relation to the ToIRSelectPort of the TAP.
The DataIn port is used to control the ScanMux Instruction Register (scanmux_ir). The WSP
Instruction Register (wsp_ir) operates as a normal DataRegister in the IJTAG model.
Figure 10-12 shows an IJTAG network model of the IEEE 1500 WSP interface. It consists of a
bypass register, a dev_id register, and five other registers.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Create a WSP Controller in Tessent Shell
Figure 10-12. IEEE 1687 IJTAG Network Model of the IEEE 1500 WSP Interface
The following method is recommended to create a DftSpecification for the IJTAG network
model of Figure 10-12.
Connect the scanmux_ir to the scan output port. Use wir_select primary input signal to drive the
scanmux_ir select signal to model the IEEE 1500 functionality.
Sort the scan muxes by hierarchy level. The yellow level1_mux is the first level in the mux
hierarchy. The green level2_mux0 and level2_mux1 are the second level in the mux hierarchy.
The blue level3_mux00, level3_mux01, and level3_mux10 are the third level in the mux
hierarchy.
The wsp_ir generates signals to control the active scan path. Each bit of the wsp_ir controls one
level of mux hierarchy. Bit 0, the yellow bit, drives the select signal of the level1_mux. Bit 1,
the green bit, drives both select signals of the two level2_muxes. Bit 2, the blue bit, drives all
three select signals of the level3_muxes.
Table 10-2 lists the wsp_ir bit values that drive each select signal in the mux hierarchy. A logic
0 value selects the input labeled 0 of the mux. A logic 1 value selects the input labeled 1 of the
mux.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Create a WSP Controller in Tessent Shell
Table 10-2. Mux Select Signals and wsp_ir Value to Select Input 1
Signal Name wsp_ir Value
level3_mux_select 1XX
level2_mux_select X1X
level1_mux_select XX1
You can create the DftSpecification after understanding the model structure and the signal
values driving the select signals of the muxes. Recreate the structure of this IJTAG network in
the DftSpecification. The additional wir_select signal drives the select signal of the final
scanmux_ir.
DftSpecification(test,rtl) {
IjtagNetwork {
DataInPorts {
port_naming : wir_select;
}
HostScanInterface(wsp) {
ScanMux (ir_dr) {
select : DataIn(0);
Input(1) {
Tdr(wsp_ir) {
length : 3;
DataInPorts {
connection(1) : logic0/Y;
connection(0) : logic1/Y;
}
DecodedSignal(level1_mux_select) {
decode_values : 3'bXX1;
}
DecodedSignal(level2_mux_select) {
decode_values : 3'bX1X;
}
DecodedSignal(level3_mux_select) {
decode_values : 3'b1XX;
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Create a WSP Controller in Tessent Shell
Input(0) {
ScanMux (level1_mux) {
select : Tdr(wsp_ir)/DecodedSignal(level1_mux_select);
Input(1) {
ScanMux (level2_mux1) {
select : Tdr(wsp_ir)/DecodedSignal(level2_mux_select);
Input(1) {
Tdr(tdr4) {
length : 10;
}
}
Input(0) {
ScanMux (level3_mux10) {
select : Tdr(wsp_ir)/DecodedSignal(level3_mux_select);
Input(1) {
Tdr(tdr3) {
length : 8;
}
}
Input(0) {
Tdr(tdr2) {
length : 6;
}
}
}
}
}
}
Input(0) {
ScanMux (level2_mux0) {
select : Tdr(wsp_ir)/DecodedSignal(level2_mux_select);
Input(1) {
ScanMux (level3_mux01) {
select : Tdr(wsp_ir)/DecodedSignal(level3_mux_select);
Input(1) {
Tdr(tdr1) {
length : 4;
}
}
Input(0) {
Tdr(tdr0) {
length : 2;
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Set Up Third-Party Synthesis
Input(0) {
ScanMux (level3_mux00) {
select : Tdr(wsp_ir)/DecodedSignal(level3_mux_select);
Input(1) {
Tdr(dev_id) {
length : 32;
}
}
Input(0) {
Tdr(bypass) {
}
}
}
}
}
}
}
}
}
}
}
}
}
In summary, an IJTAG network can model an IEEE 1500 WSP interface and be fully compliant
with the IEEE 1500 standard. The DftSpecification/IjtagNetwork wrappers can describe the
model for Tessent Shell to generate and insert it into your design.
Solution
You must define constraints in synthesis tools to enable accurate gate level representations of
the RTL. These constraints are primarily made up of clock definitions and timing constraints.
Use the following procedures to set up constraints for Synopsys and Cadence synthesis tools
within the Tessent Shell flow.
Synopsys
The following procedure provides a high-level overview of the synthesis flow for Synopsys. For
complete details, refer to “Example Design Compiler Synthesis Script” on page 995 for an
example.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Set Up Third-Party Synthesis
Note
The value of tessent_tck_period might depend on the maximum tck clock frequency
that can be applied to the circuit. See “IJTAG Network Performance Optimization”
in the Tessent IJTAG User’s Manual showing how to maximize the frequency of the
IJTAG network test clock.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Set Up Third-Party Synthesis
that the gate-level analysis functions correctly. The following statements are examples
of configuration settings:
set_app_var
compile_enable_constant_propagation_with_no_boundary_opt false
set preserve_instances [tessent_get_preserve_instances icl_extract]
set_boundary_optimization $preserve_instances false
set_ungroup $preserve_instances false
set_app_var compile_seqmap_propagate_high_effort false
set_app_var compile_delete_unloaded_sequential_cells false
set_boundary_optimization [tessent_get_optimize_instances] true
set_size_only -all_instances [tessent_get_size_only_instances]
Tip
See “Solutions for Genus Synthesis Issues” on page 1043 if you experience issues
synthesizing mixed Verilog/VHDL designs.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
How to Set Up Support for Third-Party OCCs
Solution
You must place the ICL and PDL files in the same directory as the Verilog of the OCC using the
same file base name. For this example, the OCC Verilog module is in a file named
third_party_occ.v.
Moving the ICL and PDL files into the same directory as the Verilog enables the tool to
automatically load them and carry the information throughout the flow.
• ICL — Provide an ICL file based on the IEEE 1687 IJTAG standard to describe the
ports on the OCC that need to be controlled by IJTAG during test. Name the file
third_party_occ.icl and place it in the same directory as the Verilog file.
• PDL — Provide a PDL file based on the IEEE 1687 IJTAG standard to describe the
procedures that configure the third-party OCC. Name the file third_party_occ.pdl and
place it in the same directory as the Verilog file.
• TCD Scan — Provide a TCD Scan file based on the Tessent Core description language
to describe the OCC’s programming shift register (chain segment) that needs to be
connected to the design’s scan chains during scan insertion.
The following is an example TCD Scan file for a third-party OCC. The sub-chain port
information must be included in the ScanChain wrapper and in the Clock and ScanEn
wrappers to define the polarity of each port.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Test Logic Insertion
Core(third_party_occ) {
Scan {
module_type : occ;
allow_scan_out_retiming : 0;
is_hard_module : 1;
traceable : 0;
pre_scan_drc_on_boundary_only : 1;
Clock(slow_clock) {
off_state : 1'b0;
}
ClockOut(clock_out_mux/y) {
slow_clock_input : slow_clock;
fast_clock_input : fast_clock;
}
ScanEn(scan_en) {
active_polarity : 1'b1;
}
ScanChain {
length : 4;
scan_in_port : scan_in;
scan_out_port : scan_out;
scan_in_clock : slow_clock;
scan_out_clock : ~slow_clock;
}
}
}
• Clock Control Definitions — Provide a test procedure file that contains Clock Control
Definitions (CCDs) for the OCC instances in the design. For details on the format of
CCDs, refer to “Clock Control Definition” on page 777.
Solution
EDT Example
The following EDT example uses a post-insertion procedure to connect the slow_clock port of
the OCC to the newly-generated shift_capture_clock DFT signal. This enables the OCC and
EDT logic to use the same clock source. The post-insertion script is run after the
process_dft_specification command creates all other logic defined in the DftSpecification. For
detailed information on how to create and use a post-insertion procedure, refer to
“process_dft_specification.post_insertion” 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.
Tessent Examples and Solutions
Test Logic Insertion
# Read the design and OCC module. The ICL and PDL files with the
# same base name are automatically read from the same directory
read_verilog ../rtl/RDS_process_with_occ.v
read_verilog ../rtl/third_party_occ.v
set_current_design RDS_process
set_design_level physical_block
check_design_rules
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Configuration for Scan Insertion
Solution
When inserting scan into the post-synthesis netlist, you must specify the location of the TCD
Scan file using the set_design_sources command. The tool uses the description of the OCCs’
scan segment to stitch them into the design’s scan chains.
# Specify the location of the TCD Scan file that describes the OCC's scan
# segment
set_design_sources -format tcd_scan -Y ../rtl -extension tcd_scan
# Add a scan mode and specify EDT instances to which scan chains should be
# connected
set edt_instance [get_instances -of_icl_instances [get_icl_instances \
-filter tessent_instrument_type==mentor::edt]]
add_scan_mode edt -edt_instance $edt_instance
analyze_scan_chains
insert_test_logic
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Pattern Generation and Simulation
Solution
Pattern Configuration
For stuck-at ATPG, much of the setup is automatically imported using the import_scan_mode
command. You should provide additional clock definitions and settings for the OCC for the
OCC’s asynchronous source clocks and the clocks on the output of the OCC instances.
# Specify a procedure file containing clock control definition for the OCC
# instances
read_procfile third_party_occ_clock_controls.proc
create_patterns
write_tsdb_data -replace
write_patterns patterns/RDS_process_stuck_parallel.v -verilog -parallel \
-replace
set_pattern_filtering -sample_per_type 2
write_patterns patterns/RDS_process_stuck_serial.v -verilog -serial \
–replace
In the ANALYSIS mode, specify a procedure file that contains the clock control definitions for
the OCC instances.
For transition fault ATPG, a number of changes to the dofile are highlighted in the following
example. Define any additional internal clocks that are needed for the third-party OCC, similar
to those defined in the example (for example, if the OCC internally gates the fast clock during
transition test).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Pattern Generation and Simulation
Additionally, specify any parameters to the OCC’s iCalls that must be set to configure the OCC
for transition/fast-capture test.
You must constrain the design’s I/Os that are not used for transition test.
add_input_constraints -hold
add_output_masks -all
set_system_mode analysis
# Specify a procedure file containing clock control definition for the OCC
# instances
read_procfile third_party_occ_clock_controls.proc
set_fault_type transition
set_external_capture_options -pll_cycles 5 [lindex [get_timeplate_list] 0]
create_patterns
write_tsdb_data -replace
write_patterns patterns/RDS_process_transition_parallel.v -verilog \
-parallel -replace
set_pattern_filtering -sample_per_type 2
write_patterns patterns/RDS_process_transition_serial.v -verilog \
-serial –replace
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Pattern Generation and Simulation
Pattern Simulation
You must run a Verilog simulation of the generated patterns to ensure no mismatches are
reported and the patterns function as expected during the tester application.
For parallel load patterns specified by the “write_patterns -parallel” command, you simulate all
the patterns.
For serial load patterns, a handful of patterns are sufficient because the run time for simulating
serial load patterns can be significant.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Post-Synthesis Update
Post-Synthesis Update
Mapping complex ports during synthesis may cause name and footprint changes in the design.
ICL and TCD Post-Synthesis Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
Limitations Related to SystemVerilog Interface Arrays . . . . . . . . . . . . . . . . . . . . . . . . . 736
Updating ICL Attributes From the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
Matching Requirements for Port Names in Post-Synthesis Update . . . . . . . . . . . . . . . . 738
Design Name Mapping Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
The following ICL model attributes are updated to enable smooth binding of the ICL objects
and design objects later in the flow:
• set_current_design
• write_design
• update_icl_attributes_from_design
The tessent_design_gate_ports attribute of the ICL port object is automatically updated when
any of the following commands are invoked:
• set_current_design
• write_design
• get_ports -of_icl_ports
• get_pins -of_icl_pins
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Limitations Related to SystemVerilog Interface Arrays
• get_pins -of_icl_ports
• update_icl_attributes_from_design
For ICL ports and instances, the ICL matching performed by set_current_design is insufficient
if the current ICL model does not include the complete ICL of child instances under the physical
blocks. In these cases, the ICL matching is completed later in the flow using the following
commands:
• get_ports -of_icl_ports
• get_pins -of_icl_pins
• get_pins -of_icl_ports
• update_icl_attributes_from_design
Use the -use_path_matching_options option with get_pins, get_ports, or get_instances to match
a name pattern to the ports and pins in the current design when the TCD of instruments dumped
during RTL mode is loaded in no RTL flow.
Use the following syntax to declare the SystemVerilog interface ports array when creating your
RTL design. The packed range must be from 0 to a positive right index Without this syntax,
Tessent Shell cannot match and automatically update ICL objects and TCD models post-
synthesis with Design Compiler.
For example, if your design has an interface type named intf1 and a port named p1, the port
declaration in the design file should be written so that the range is restricted:
intf1 p1 [0:<positive_index>];
The left index must be 0 and the right index must be positive. If you do not follow this
convention, the tool reports a warning similar to the following:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Updating ICL Attributes From the Design
Related Topics
update_icl_attributes_from_design
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Matching Requirements for Port Names in Post-Synthesis Update
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Design Name Mapping Commands
Related Topics
report_rtl_to_gates_mapping
delete_rtl_to_gates_mapping
Note
Negative indices are not supported.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Design Name Mapping Commands
The “abc” string in the name to be looked up must exactly match the string before the
first delimiter in a netlist name. The “def” string in the name to be looked up must
exactly match the string after the last delimiter in the same netlist name.
• Escaping — Escape characters are not matched. They are only used to direct the
matching procedure.
• Delimiters — Delimiters in the lookup name are used only to extract the component
names.
All component names after the first are assumed to have a leading delimiter and
optionally a trailing delimiter in a netlist name. There are two cases to consider when
matching the delimiters for a component name in the netlist:
a. The port name in the netlist is escaped.
Possible matches for component name delimiters are as follows:
• Leading and trailing delimiters of brackets (“[]”).
• Leading delimiter of underscore (“_”) and trailing delimiter of underscore or
null.
• Leading delimiter of period (“.”) or slash (“/”) and trailing delimiter of null.
b. The port name in the netlist is not escaped.
Possible matches for component name delimiters are as follows:
• Leading delimiter of underscore and trailing delimiter of underscore or null.
• Special Characters in the Lookup Name — When matching to a non-escaped name in
the netlist, any characters not allowed by the language without escaping in the lookup
name are replaced with the underscore character (“_”). Matching allows truncation in
the netlist name to two trailing underscores.
Note
This truncation rule applies only to underscore characters derived from special
characters, not delimiters.
• Bit Select Lookup Name — A bit select lookup name (last component name is an
index) can match a one-dimensional vector with the final bit select applied to the match
or match directly to a bit select.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 11
Test Procedure File
Test procedure files specify how the scan circuitry within a design operates. Previously-defined
scan clocks and other control signals specify the scan circuitry operation. To operate the scan
circuitry in your design, the tool must have a specification of the scan circuitry and a test
procedure file to describe its operation. If you used Tessent Shell to insert the test logic or used
the TCD IP mapping flow, the tool automatically creates the test procedure files for most
standard configurations. You can also create and modify test procedure files manually. The
design rule checking (DRC) process, which occurs when you switch from setup to analysis
mode, performs extensive checking to ensure the scan circuitry operates correctly.
Test Procedure File Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
Test Procedure File Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
Test Procedure File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
#include Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
Set Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748
Alias Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751
Timing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
Timeplate Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
Multiple-Pulse Clocks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
Always Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
Procedure Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
Clock Control Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
The Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786
Test_Setup (Optional). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
Shift (Required) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
Alternate Shift Procedure (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
Load_Unload (Required) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
Shadow_Control (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
Master_Observe (Sometimes Required) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
Shadow_Observe (Optional). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
Skew_Load (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799
Clock_run (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801
Capture Procedures (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803
Clock_sequential (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
Init_force (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
Test_end (Optional, all ATPG tools) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810
Sub_procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
Additional Support for Test Procedure Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
Creating Test Procedure Files for End Measure Mode . . . . . . . . . . . . . . . . . . . . . . . . . . 814
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test Procedure File Creation
Serial Register Load and Unload for LogicBIST and ATPG . . . . . . . . . . . . . . . . . . . . . 818
Register Load and Unload Use Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
Static Versus Dynamic Register Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
Test Procedure File Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
Dofile Modifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
Serial Load and Unload DRC Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825
Notes About Using the stil2tessent Tool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
Extraction of Strobe Timing Information from STIL (SPF). . . . . . . . . . . . . . . . . . . . . . . . 831
The STIL ClockStructures Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
Test Procedure File Commands and Output Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
You can also translate a STIL Procedure File (SPF) into a dofile and test procedure file using
the stil2tessent tool. This tool produces a dofile that defines clocks, scan chains, scan groups,
and pin constraints. This tool also creates test procedure files with a timeplate and the following
standard scan procedures: test_setup, load_unload, and shift. For more information about
stil2tessent, refer to “Notes About Using the stil2tessent Tool” on page 831.
You can run the report_procedures command to list the procedures you created and the
procedures the tool created automatically.
The following subsections describe the syntax and rules of test procedure files, give examples
for the various types of scan architectures, and outline the checking that determines whether the
circuitry is operating correctly.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test Procedure File Syntax
Syntax Conventions
The following syntax conventions are used in this chapter:
Reserved Characters
If you have a pin or pathname that uses a reserved punctuation character, you must enclose that
name in quotation marks (“”). See Table 11-1 for a list of reserved punctuation characters.
For example, the following statement is illegal because it uses the exclamation point outside of
quotation marks.
force /inst_my_adder_1/xclk_header!x1!x1/op1[9] 1
The signal name contains a reserved punctuation character, the exclamation point (!), so it must
be enclosed inside quotation marks. The correct syntax would be:
force "/inst_my_adder_1/xclk_header!x1!x1/op1[9]" 1
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test Procedure File Syntax
if { tcl_expr } {
procedure file statements
}
elseif { tcl_expr } {
procedure file statements
}
else {
procedure file statements
}
Where a “tcl_expr” is any Boolean Tcl expression that uses Tcl variables, dofile variables, or
environment variables. Just as when doing variable substitution in the procedure file, other Tcl
statements and defining Tcl variables are not supported. All variables must be defined in the
dofile or from the shell as environment variables.
The body of these Tcl conditional statements should contain only legal procedure file syntax,
not any other Tcl statements. The Tcl conditional statements are treated as preprocessor
statements in the procedure file parser. They are not preserved in the tool after parsing is
finished; only the procedure file code selected by the evaluation of the Tcl “if” expression is
stored in the tool. Therefore, when using write_procfile to write out the procedure file, none of
the Tcl conditional statements are present, and the procedure file code not used is also not
present. For more information refer to “The Tessent Tcl Interface” on page 1009.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test Procedure File Syntax
timeplate tp1 =
force_pi 0;
measure_po 1;
pulse CLK0_7 2 1;
pulse CLK8_15 2 1;
period 4;
end;
procedure shift =
scan_group grp1;
timeplate tp1;
cycle =
force_sci;
measure_sco;
pulse CLK8_15;
pulse CLK0_7;
end;
end;
procedure load_unload =
scan_group grp1;
timeplate tp1;
cycle=
force CLEAR 0;
force CLK0_7 0;
force CLK8_15 0;
force scen1 1;
end;
apply shift 8;
end;
procedure capture =
timeplate tp1;
cycle =
force_pi;
measure_po;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test Procedure File Syntax
pulse_capture_clock;
end;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test Procedure File Structure
#include Statement
The “#include” statement specifies that the tool read test procedure data from a specified file.
The following rules apply to #include statements and files:
• The “#include” statement can occur anywhere in the file, and multiple “#include”
statements can occur in one file. For example:
#include "foo.proc";
• The filename to be included must be enclosed in quotation marks (“”), and the statement
must be followed by a semicolon.
• All timeplates and procedure rules apply to the statements placed in #include files.
• Included files can use the “#include” statement to include other files, up to a maximum
include depth of 512. If you later use the write_procfile command write out procedure
data, the “#include” statements are not preserved, and the tool writes all procedure data
to a single file.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Set Statement
Set Statement
The Set statements define specific parameters used throughout the test procedure file.
The following statements are available:
The tool applies the time scale and unit to the test procedure file and timeplates. The tscale you
specify can be any real number. Time values in the timeplate, however, must be integers,
representing whole time scale units. If you find you are specifying fractional times in the
timeplate, you must reduce the time scale unit so you can specify integer time values in the
timeplate. For example, the following would result in a syntax error:
timeplate fast_clk_tp =
force_pi 0 ;
measure_po 0.500 ;
pulse CLKA 0.750 1.50 ;
pulse CLKB 0.750 1.50 ;
period 3.000 ;
end ;
To correct the syntax, you could change the time scale to picoseconds, and adjust the time value
to meet the scale as follows:
timeplate fast_clk_tp =
force_pi 0 ;
measure_po 50 ;
pulse CLKA 75 150 ;
pulse CLKB 75 150 ;
period 300 ;
end ;
The units supported are ms, us, ns, ps, and fs.
The tool translates the time scale in the procedure file into a Verilog ‘timescale directive in the
Verilog testbench when writing patterns in Verilog format.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Set Statement
If the time scale number you specify in the test procedure file is 1 or larger, the resulting Verilog
‘timescale directive has the same time unit (resolution) and time precision. For example, “set
time scale 1 ns ;” would result in this Verilog directive:
If you want the testbench to have smaller precision than resolution, there are several ways to
designate this:
• Specify a time scale number of less than 1 in the procedure file. For example, “set time
scale 0.5 ns ;” produces this Verilog directive:
‘timescale 1ns / 100ps
• Add non-zero significant bits to the time scale in the procedure file. For example, “set
time scale 10.05 ns ;” produces this Verilog directive:
‘timescale 1ns / 10ps
• Add trailing zeros as significant bits for an asynchronous clock period or pattern_set
period (when creating IJTAG patterns). For example, an “add_clocks -period 10.00ns”
command produces this Verilog directive:
‘timescale 1ns / 10ps
The precision in the Verilog testbench can originate from any of the previous sources, and the
tool uses the smallest specified precision when writing out the Verilog testbench.
The resolution in the Verilog testbench originates from the procedure file. When you use
multiple procedure files, the various “set time scale” statements can specify different values,
and the tool uses the smallest specified resolution when writing the Verilog testbench.
Some tester formats measure primary outputs (POs) at the exact time that you specify with the
measure_po statement in the timeplate. However, other tester formats, such as STIL, require
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Set Statement
that output measurements occur during a specified window of time (window_width). For WGL,
this statement changes the strobe window in the output file.
A strobe window can only stretch from the measure_po time to the end of the cycle or the next
force or pulse event. For example, if you issue a measure_po at time 10 and the rising edge of a
pulse at time 30, the strobe window can only be a maximum of 20. Strobe_window lets you
know that, starting at the measure_po time, the primary output should be stable for the time
specified by the strobe window.
Note
Strobe_window only affects the following formats: STIL, TSTL2, and WGL.
By default (without this statement), if a constrained pin is not forced to the constrained value in
the test_setup procedure, a force event is automatically added to the first cycle of the test_setup
procedure. If the test_setup procedure starts with a call to a subprocedure, then the force event is
added to the first cycle following the subprocedure. If a force event already exists in the
test_setup procedure for a constrained pin, then no additional force event is added for that pin.
When you include the “set autoforce off” statement, the tool does not add any force events on
the constrained pins to the test setup procedure.
Including the “set autoforce off” statement also prevents the tool from forcing clock pins to the
inactive state at the beginning of the load_unload procedure. The statement also disables
copying the last value forced on an input port in test_setup and prevents it from becoming a
force at the start of the load_unload procedure.
The “set autoforce off;” statement also turns off auto forcing Z values on bidis in the
load_unload procedure—see Load_Unload (Required).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Alias Definition
Alias Definition
The Alias definition groups multiple signal names or cell paths into a single alias name. Signal
Alias statements are useful in procedures or timeplates where multiple signals need to be
assigned to the same value at the same time.
Cell Alias statements are used to group cell paths into a single alias name. You must define
aliases before using them. The definition can occur at any place in the procedure file outside of
a timeplate or procedure definition.
Note
When saving STIL2005, CTL, or Structural_STIL patterns, all aliases defined in the
procedure file are defined as SignalGroups in the resulting STIL file.
There is a predefined alias available for specifying all bidirectional pins. The “_ALL_BIDI”
keyword may be useful for forcing all bidirectional pins to a specified value without having to
identify each individual pin. For example:
force _ALL_BIDI Z;
In using a cell Alias statement to group cell paths from condition statements into a single alias
name, it is possible to override a condition statement in a named capture procedure with a
subsequent condition statement that occurs in the same place (global condition, or local to a
specific cycle). A condition statement can only override a previous condition if the first
condition is specified using an alias name, and if the second condition is specified without using
an Alias statement.
Tip
When using multiple named capture procedures where each procedure requires many
condition statements, it is helpful to group cells into a common name and apply the
condition statement once to the entire group of cells, and then override specific cells that need a
different value than what was applied to the group. This frees you from having to enter
numerous condition statements for each named capture procedure, while only a handful of the
cells require different values for each procedure.
or
• alias_name
A string that specifies the name of the alias.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Alias Definition
Note
The alias_name you specify should begin with an alphabetical character. If you
want the name to begin with a numerical character, you must put the name in
quotation marks.
• pin_name
A repeatable string that specifies the pin name to associate with the alias name.
• cell_name
A repeatable string that specifies the cell name to associate with the alias name.
Alias Examples
This example groups two signal names into a single alias name.
alias my_group = T, U;
This next example shows how a named capture procedure should look when using an Alias
statement for condition cells. The example sets each of four cells to a value of 0, and then the
fourth cell (/inst_3/blockb/reg_2/Q) is overridden with a value of 1.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Timing Variables
Timing Variables
Two timing variable block definitions enable a procedure file to express timing using variables
and equations, and to have this equation-based timing preserved in the tool and reproduced in
the correct syntax in pattern output files.
Test data languages such as WGL and STIL have the ability to express time values in the timing
blocks as numerical values or as equations based on variables. Using equation-based timing
enables one value to be specified for a global attribute, such as the test cycle period, while other
values are derived from this using equations.
The two timing block definitions are called “timing_variables” and “variables”. In the
“timing_variables” block, variables can be defined and assigned timing values. These values are
expressed in the time scale that is already specified by the Set Time Scale statement. The
“timing_variables” block must be defined before the timeplate definitions.
The “variables” block is used to define variables that are not time values and have no units
associated with them. These variables can only be assigned integer numbers, and can be used as
scaling multipliers in the timing equations.
The variables in the “timing_variables” block can also be assigned timing equations instead of
time values. These equations can use either timing values or previously defined variables or
timing variables as operands. When using timing equations, you must ensure that the final value
has a valid time unit. When the tool parses the procedure file, timing variables that are
computed to have an invalid time unit cause a W42 DRC error.
Note
The event statements in the timeplate definition block accept timing values and timing
variables.
When saving patterns in the Verilog, WGL, and STIL supported formats, the waveform tables
in these formats are written using the equations and variables, and the variables are defined in
the appropriate definition blocks that exist in each format. When saving patterns in formats that
don’t support equation-based timing, the equations are computed and the timing information is
specified as the resulting numeric values in the pattern file. Setting the
ALL_FLATTEN_TIMING parameter file keyword to “1” causes Verilog, WGL, and STIL
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Timing Variables
outputs to compute the timing equations and use only the resulting numeric values in the output
files. Any equation that does not compute to an integer value is rounded to the nearest integer
value.
variables =
variable_name = integer;
[variable_name = integer; ...]
end;
timing_variables =
variable_name = time_or_equation;
[variable_name = time_or_equation; ...]
end;
Note that time_or_equation can either be an integer time value or a time equation. A time
equation is expressed using operators and operands. An operator is one of +, -, *, or /. An
operand can be a time value or a variable name (time or scaling variable). The multiplication
and division operators (* and /) take precedence over the addition and subtraction operators (+
and -). You can use parenthesis to group operations for precedence.
Note
In the timeplate definitions, any place where a time value can be used, a timing variable is
also valid. A scaling variable from the “variables” block cannot be used in a timeplate
definition. These can only be used in time equations.
Variable names can be any identifier except for reserved keywords used in the procedure file
syntax (such as “period” and “force_pi”). The variable names must conform to the rules that
apply to all identifiers used in the procedure file (alpha numeric string, starting with an alpha
character, and no reserved punctuation marks). If reserved characters or reserved words are used
in a variable name, the name must be enclosed in quotes.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Timing Variables
timing_variables =
t_period = 100;
t_force = 0;
t_meas = ((t_period * 0.1) * v_scale );
t_rise = ((t_period / 2) * v_scale );
t_width = ((t_period * 0.2) * v_scale);
end;
timeplate tp1 =
force_pi t_force;
measure_po t_meas;
pulse ref_clk t_rise t_width;
period t_period;
end;
This is how the preceding timing example would be represented in the STIL output:
Spec STUCK_spec {
Category STUCK_cat {
v_scale = ’1’;
t_period = ’100ns’;
t_force = ’0ns’;
t_meas = ’(t_period*0.1)*v_scale’;
t_rise = ’(t_period/2)*v_scale’;
t_width = ’(t_period*0.2)*v_scale;
}
}
Timing STUCK_timing {
WaveformTable tset_tp1 {
Period ’t_period’;
Waveforms {
input_time_gen_0 { 01 { ’t_force’ D/U; }}
input_time_gen_1 { 01 { ’0ns’ D; ’t_rise’ D/U;
’t_rise+t_width’ D;}}
_po_ { LHX { ’0ns’ X; ’t_meas’ l/h/x; ’t_rise’ X;}}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Timeplate Definition
This is how the timing example would be represented in the WGL output:
equationsheet STUCK_sheet
exprset STUCK_set
v_scale := 1.0;
t_period := 100nS;
t_force := 0nS;
t_meas := (t_period * 0.1) * v_scale;
t_rise := (t_period / 2) * v_scale;
t_width := (t_period * 0.2) * v_scale;
_tp1_fall_1 := t_rise + t_width;
end
end
Timeplate Definition
The timeplate definition describes a single tester cycle and specifies where in that cycle all
event edges are placed.
You must define all timeplates before they are referenced. A procedure file must have at least
one timeplate definition. All clocks must be defined in the timeplate definition. The period
statement must be the last statement in the timeplate definition.
timeplate timeplate_name =
timeplate_statement
[timeplate_statement ...]
period time;
end;
The following list contains available timeplate_statement statements. The timeplate definition
should contain at least the force_pi and measure_po statements. You are not required to include
pulse statements for the clocks. But if you do not “pulse” any of the clocks, the tool uses two
cycles to pulse a clock, resulting in larger patterns.
The tool uses the pulse_clock statement rather than individual pulse statements when generating
default procedures.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Timeplate Definition
timeplate_statement:
offstate pin_name off_state;
force_pi time;
bidi_force_pi time;
measure_po time;
bidi_measure_po time;
force pin_name time;
measure pin_name time;
pulse pin_name time width [, time width];
pulse_clock time width [, time width];
Note
In “timeplate_statement” definitions, you can use timing variables instead of time values.
For more information, refer to “Timing Variables” on page 753.
• timeplate_name
A string that specifies the name of the timeplate.
Note
The timeplate_name you specify should begin with an alphabetical character. If you
want the name to begin with a numerical character, you must put the name in
quotation marks.
Note
An “offstate” statement does not automatically force pin_name to its off state at time
0. For that to occur, you must force or pulse pin_name appropriately in a procedure.
• force_pi time
A literal and integer pair that specifies the force time for all primary inputs.
• bidi_force_pi time
A literal and integer pair that specifies the force time for all bidirectional pins. This
statement enables the bidirectional pins to be forced after applying the tri-state control
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Timeplate Definition
signal, so the system avoids bus contention. This statement overrides “force_pi” and
“measure_po”.
• measure_po time
A literal and integer pair that specifies the time at which the tool measures (or strobes)
the primary outputs.
Note
Capture clocks pulsing on the same cycle must have an overlapped clock waveform.
If they do not, the tool splits the capture cycle into two cycles. This results in an
error reporting that a measure_po event is absent.
• bidi_measure_po time
A literal and integer pair that specifies the time at which the tool measures (or strobes)
the bidirectional pins. This statement overrides “force_pi” and “measure_po”.
• force pin_name time
A literal, string, and integer that specifies the force time for a specific named pin.
Note
This force time overrides the force time specified in force_pi for this specific pin.
Note
This measure time overrides the measure time specified in measure_po for this
specific pin.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Timeplate Definition
To define a multiple-pulse waveform, include multiple time and width pairs separated
by a comma.
All pulses must occur within the tester cycle period. You define this period using the
“period” keyword.
Note
Multiple pulses are only supported for the following output formats: Verilog, WGL,
STIL, STIL2005, CTL, FJTDL, MITDL, and TSTL2. Additionally, the TSTL2
output format does not support more than two pulses.
For MITDL format there is restriction that multiple pulse timing must be a cyclical
repetition of the first pulse. Consequently, multi-pulse and double-pulse timing in the
procedure file only works in the MITDL output without an error if the timing fits the
restrictions of the MITDL syntax.
• pulse_clock time width [, time width ]…
A literal and integer set that specifies the pulse timing for all signals defined as clocks,
unless another statement such as a “force” or “pulse” exists for a particular clock signal.
This is similar to the force_pi statement, which specifies the timing for ports that are not
explicitly overridden by a force statement for those specific ports.
time — Integer that defines the offset from time 0 to the leading edge of the pulse for the
first pulse. For subsequent edges in a multi pulse clock, time equals the time of the
previous leading edge plus the period of the clock.
width — Integer that defines the width of the pulse.
You can use the pulse_clock statement to ensure that any added clocks (especially
internal clocks) automatically have defined timing.
You may have multiple pulse_clock statements within a timeplate definition, as long as
each statement has a different number of offset and width pairs. If two pulse_clock
statements in the timeplate definition have the same number of offset and width pairs,
the tool issues an error.
For more information on multiple-pulse clocks, see “Multiple-Pulse Clocks.”
All pulses must occur within the tester cycle period. You define this period using the
“period” keyword.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Timeplate Definition
timeplate tessent_ijtag =
force_pi 0 ;
measure_po strobe_1;
force tck 0;
pulse_clock t_time t_width;
period tester_period;
end;
• period time
A literal and integer pair that defines the period of a tester cycle. This statement ensures
that the cycle contains sufficient time, after the last force event, for the circuit to
stabilize. The time you specify should be greater than or equal to the final event time.
Example 1
timeplate tp1 =
force_pi 0;
pulse T 30 30;
pulse R 30 30;
measure_po 90;
period 100;
end;
Example 2
The following example shows a shift procedure that pulses b_clk with an off-state value of 0.
The timeplate tp_shift defines the off-state for pin b_clk. The b_clk pin is not declared as a
clock in the ATPG tool.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Timeplate Definition
timeplate tp_shift =
offstate b_clk 0;
force_pi 0;
measure_po 10;
pulse clk 50 30;
pulse b_clk 140 50;
period 200;
end;
procedure shift =
timeplate tp_shift;
cycle =
force_sci;
measure_sco;
pulse clk;
pulse b_clk;
end;
end;
Example 3
In the following example, the pin b_clk is not declared as a clock in the ATPG tool. However,
the shift procedure specifies that the pin is to be pulsed twice with an off-state of 0.
timeplate tp_shift =
offstate b_clk 0;
force_pi 0;
measure_po 10;
pulse clk 50 30;
pulse b_clk 40 50, 140 50;
period 200;
end;
procedure shift =
timeplate tp_shift;
cycle =
force_sci;
measure_sco;
pulse clk;
pulse b_clk;
end;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Multiple-Pulse Clocks
Multiple-Pulse Clocks
You can use the pulse_clock statement to handle multiple-pulse clock timing and still use a
single generic timeplate template definition in various flows. The pulse_clock statement
handles multiple-pulse timing definitions in the same manner as the pulse statement.
The pulse_clock Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
Inferred Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
Differences Between Default add_clock and 1x Multiplier Clock. . . . . . . . . . . . . . . . . . 764
The following example has multiple pulse_clock statements. It is a timeplate that includes both
a port specific pulse statement for a clock and the generic pulse_clock statements for all other
clocks. The first pulse_clock statement sets the default clock timing for this timeplate and
contains a single pair of numbers (offset and width). Clocks other than “SlowClockA” that do
not have frequency multipliers use this timing. Clocks with 2x multipliers use the second
pulse_clock statement, and clocks with 4x multipliers use the third pulse_clock statement. The
tool uses inferred timing for clocks specified with any other frequency multiplier and issues an
error if "SlowClockA" has a frequency multiplier of 2x or more.
timeplate tp1 =
force_pi 0;
measure_po 95;
pulse SlowClockA 20 50;
pulse_clock 30 30;
pulse_clock 13 25, 63 25;
pulse_clock 6 12, 31 12, 56 12, 81,12;
period 100;
end;
The following example shows a timeplate with one port-specific pulse and one pulse_clock
statement for 4x multiplier timing. Clocks other than “ClockA” that do not have a frequency
multiplier use force_pi timing. Inferred timing only occurs when clocks have frequency
multipliers, which means other clocks still use NRZ timing when you use multiple cycles to
create the clock pulse.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Multiple-Pulse Clocks
timeplate tp1 =
force_pi 0;
measure_po 95;
pulse ClockA 20 50;
pulse_clock 6 12, 31 12, 56 12, 81, 12;
period 100;
end;
Inferred Timing
Based on the period of the timeplate, the tool creates inferred timing for frequency multiplied
clocks when there are no pulse_clock statements in the timeplate with the correct number of
clock edges for the clock.
The total period of a clock pulse is the period of the timeplate divided by the frequency
multiplier of the clock. The offset for the leading edge of the first clock pulse is one-fourth of
the period of the clock. For example, the inferred timing for a 4x clock in a timeplate with a
period of 200 is equivalent to the following pulse_clock definition:
The first edge is one-fourth the period of the clock rounded to the nearest integer, and the width
of the pulse is one-half the period of the clock. Each subsequent edge is the previous leading
edge plus the period of the clock.
The tool bases the inferred timing for a 1x frequency-multiplied clock on any other clock timing
found for a single pulse clock; otherwise, it uses the inferred timing formula.
When you specify a timeplate period and a clock frequency multiplier that combine to create
inferred timing that is too small to be integer timing, the tool automatically reduces the
procedure file timescale and scales all timing numbers to larger values.
For example, suppose the timescale for the procedure file is 1ns, the period of the timeplate is 5,
and the clock frequency multiplier is 10. The tool automatically adjusts the timescale to 100ps
and the period of the timeplate becomes 50. It adjusts all of the other numbers accordingly. In
this case, the tool multiplies them by 10.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Always Block
Always Block
This optional block definition specifies events that happen in all cycles of all procedures.
Because the always block specifies events for all cycles, it is used with all timeplates and does
not require a timeplate to be referenced in the block. Also, any signal that is pulsed in the always
block must have a pulse waveform in all timeplate definitions.
If you defined any pulse-always clocks using the add_clocks command, an always block is
automatically created in the procedure file, if one does not already exist, and a pulse statement
added for each clock. Similarly, if you pulse a clock signal in the always block, the signal is
automatically defined as a pulse-always clock. For more information, refer to the add_clocks
description in the Tessent Shell Reference Manual.
Note
Pulse-always clocks are not automatically pulsed in a named capture procedure. The clocks
must be pulsed explicitly.
All events specified in the always block is subject to rules checks that apply to each procedure.
In other words, the events in the always block is added to each cycle of each procedure, and all
DRC rules still apply to these events.
When saving patterns that preserve the structure of the procedures as macros (such as the CTL
pattern file, or structural STIL pattern file), the events in the always block is placed in the cycles
of each procedure. The always block is not present in the structural pattern file as a macro or
procedure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
always =
always_statement ;
[always_statement ; ... ]
end ;
pulse pin_name ;
force pin_name value ;
timeplate tp1 =
force_pi 0 ;
measure_po 10 ;
pulse ref_clk 20 20, 60 20 ;
pulse shift_clk 50 20 ;
period 100 ;
end ;
always =
pulse ref_clk ;
end ;
procedure shift =
timeplate tp1 ;
cycle =
force_sci ;
measure_sco ;
pulse shift_clk ;
end ;
end ;
Procedure Definition
The procedure definition is the heart of the procedure file. The procedure defines precisely how
the scan circuitry operates.
All procedure definitions contain one or more cycle definitions. Each cycle definition in the
procedure specifies a vector; each statement in the cycle specifies which events occur in that
vector. The timeplate being used specifies any timing associated with that vector. The following
is a list of rules for writing procedure definitions:
• If more than one timeplate is defined, you can assign a specific timeplate for each
procedure definition or for each cycle within the procedure definitions. You must assign
a timeplate at some point within a procedure definition.
• You must group all procedure statements, except scan_group, timeplate, apply, and
loop, into cycle statements.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
proc_statement:
[timeplate timeplate_name;]
cycle =
cycle_statement [cycle_statement ...]
end;
annotate "quoted string";
apply proc_name #times;
loop loop_count =
cycle =
cycle_statement [ cycle_statement ...]
end;
end;
cycle_statement:
force_pi;
bidi_force_pi;
force_sci;
force_sci_equiv;
measure_po;
bidi_measure_po;
measure_sco;
restore_pi;
restore_bidi;
bidi_force_off;
pulse_capture_clock;
force_capture_clock_on ;
force_capture_clock_off ;
pulse_read_clock;
pulse_write_clock;
force pin_name value;
expect pin_name value;
condition cell_name value;
measure pin_name;
initialize instance_name [value];
pulse pin_name;
timeplate timeplate_name;
annotate "quoted string";
• procedure_type
A string that specifies the type of procedure that follows. The following list contains
valid procedures types:
• test_setup • capture • seq_transparent
• shift • ram_passthru • test_end
• master_observe • clock_sequential • skew_load
• load_unload • sequential • clock
• shadow_observe • init_force • sub_procedure
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
• shadow_control
For more information, refer to “The Procedures” on page 786.
• proc_name
An optional string that specifies the user-defined name of the procedure. Because you
can specify multiple seq_transparent and clock procedures in a test procedure file, these
procedure types require explicit procedure names, proc_name, for each procedure that
you define.
Note
The proc_name you specify should begin with an alphabetical character. If you want
the name to begin with a numerical character, you must put the name in quotation
marks.
• scan_group scan_group_name
A literal and string pair that specifies a scan group within a scan procedure. Because
some of the scan procedures are scan group specific, you can specify scan groups within
scan procedures. This makes it possible to define the scan procedures (shift,
load_unload) for multiple scan groups within the same procedure file. You can then
specify this file on the add_scan_groups command for each scan group in this file. If you
use the read_procfile command to read a procedure file, you must include this statement.
However, if you use the add_scan_groups command, this statement is optional because
the group is specified on the command line. When the tool writes out a procedure file, it
produces the scan_group statement.
Note
The scan_group_name argument is case-sensitive if the netlist used is case-sensitive.
• timeplate timeplate_name
A literal and string pair that specifies the name of the timeplate the procedure uses.
A timeplate statement at the beginning of the procedure, outside of the cycle definitions,
is the timeplate used by the entire procedure, if no other timeplates are referenced.
A timeplate statement within a cycle is the timeplate used for that cycle and all other
subsequent cycles until another timeplate statement is encountered. For more
information about timeplates, refer to “Timeplate Definition” on page 756.
Note
The timeplate_name you specify should begin with an alphabetical character. If you
want the name to begin with a numerical character, you must put the name in
quotation marks.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
A literal and string pair that reports the Verilog testbench annotations during simulation.
The annotate statement is optional and must always include a quoted string. All
procedures can be annotated, including sub-procedures. The annotate statement can
occur inside or outside of cycle blocks, including before the first cycle or after the last
cycle.
A special use of the annotate statement is to include TESSENT_PRAGMA directives
within a procedure. TESSENT_PRAGMA directives can affect the behavior of the tool
when it writes patterns.
This example shows the annotate statement in the beginning of a cycle along with the
cycle timeplate statement, before any event statements:
CYCLE =
[ TIMEPLATE tp_name ; ]
[ ANNOTATE "quoted string" ; ]
event_statement;
…
END ;
The following is an example of using the annotate statement outside of a cycle block:
procedure test_setup =
timeplate tp1 ;
annotate "Before first cycle" ;
cycle =
...
end;
annotate "start sub procedure" ;
apply mySub 1 ;
...
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
Note
The ALL_IGNORE_SIMULATION_ONLY parameter keyword can affect which
output files contain simulation_only directives. For more information about the
simulation_only directive, refer to the description of the <format_switch> parameter in
the write_patterns command in the Tessent Shell Reference Manual.
• label "quoted_string";
A literal and string pair for including pattern labels in saved patterns. As with the
annotation statement, you can have one label statement per cycle in a procedure
definition. The quoted_string becomes a pattern label for the vector that corresponds to
that procedure cycle.
Only the STIL and WGL pattern formats support a pattern label statement. For pattern
file formats that don't support a pattern label, the label is present as an annotation
statement that has the string “label:” added at the beginning of the label string.
For the simulation testbench, the label is also present as an annotation that has the string
“label:” added at the beginning, and the annotation is echoed when the patterns are
simulated. You can use the existing parameter file keyword SIM_ANNOTATE_QUIET
to turn off echoing the annotations and labels while simulating.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
Each pattern label is a unique identifier, with its vector count appended to the end of the
label string.
This statement can be used at the start of any cycle, just like an annotation statement. A
cycle cannot contain both a label and an annotation statement.
The following example shows how to use the label statement within the test_setup
procedure:
procedure test_setup =
timeplate my_tp;
cycle =
force my_sig 0;
end;
cycle =
label "end of test_setup" ;
force my_sig 1;
end;
end;
The previous example produces the following STIL vectors:
V { _pi_ = …;
}
"end of test_setup_1": V { _pi_ = …;
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
example, the following test procedure file excerpt specifies 3 cycles within the loop that
are each repeated 20 times:
procedure test_setup =
timeplate tp1 ;
cycle =
force_pi;
measure_po;
end;
loop 20 =
cycle =
end;
cycle =
pulse tck;
end;
cycle =
end;
end; // end loop
end;
Nesting loops within other loops is permitted. For example, the following test procedure
file excerpt causes tck to be pulsed 20 times and clk_a to be pulsed 100 times:
procedure test_setup =
timeplate tp1 ;
cycle =
force_pi;
measure_po;
end;
loop 20 =
cycle =
end;
cycle =
pulse tck;
end;
loop 5 =
cycle =
pulse clk_a;
end;
end; // end inside loop
cycle =
end;
end; // end outside loop
end;
This statement can be used in procedures but must be specified outside of the cycle
statement.
The loop statement is preserved in the flat model when the tool writes the model and is
also present in the TCD files.
When writing out the patterns in tester pattern formats, the loops are preserved where
possible, and unrolled if the syntax of the pattern file does not support loops. Specifying
the ALL_NO_LOOP parameter keyword unrolls loops in the pattern files in similar
fashion to sub procedures that are applied more than once. Using the loop statement to
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
repeat a certain number of cycles N times is exactly equivalent to putting those cycles
within a sub procedure, then applying that procedure N times.
• start_pulse pin_name
A literal and string pair that specifies for the tool to start pulsing the named clock pin in
every cycle, starting with the next cycle encountered. This enables you to specify that a
clock that is not a pulse_always clock should be pulsed in every cycle of an iCall
statement. It also enables you to restart a pulse_always clock that has been temporarily
suppressed with the stop_pulse keyword.
This keyword can also be used inside a cycle_statement.
• stop_pulse pin_name
A literal and string pair that specifies for the tool to stop pulsing the named clock pin,
starting with the next cycle encountered. This enables you to suppress a pulse_always
clock for a known number of tester cycles until you restart it with the start_pulse
keyword. It also enables you to stop a clock started with the start_pulse keyword when
you no longer need it to be pulsed.
This keyword can also be used inside a cycle_statement.
• cycle_statement
The following list describes valid cycle_statement keywords. Cycle_statements cannot
contain time values.
o force_pi
A literal that specifies for the tool to force all primary inputs.
o bidi_force_pi
A literal that specifies for the tool to force all bidirectional pins.
o force_sci
A literal that specifies for the tool, in the shift procedure, to place values on the scan
chain inputs, thus implementing scan cell controllability.
o force_sci_equiv
A literal that acts the same as the force_sci statement, except that it also forces all
pins equivalent to the scan input pins. Using this statement places the complement
value on the associated differential pin of a scan input during scan loading. This
statement is necessary because the test procedures do not consider pin equivalence
relationships (those specified with add_input_constraints -equivalent).
o measure_po
A literal that specifies for the tool to measure or strobe the primary outputs.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
o bidi_measure_po
A literal that specifies for the tool to measure or strobe the bidirectional pins.
o measure_sco
A literal that specifies for the tool, in the shift procedure, to measure scan output
values, thus implementing scan cell observability. In End Measure Mode (refer to
“Creating Test Procedure Files for End Measure Mode” on page 814), measure_sco
is also used in the load_unload procedure.
o restore_pi
A literal that returns primary inputs to their original states (before running this
procedure). Use the restore_pi statement at the end of a seq_transparent procedure.
o restore_bidi
A literal that returns bidirectional pins to their original states (before running this
procedure). Use the restore_bidi statement at the end of a “clock” procedure.
o bidi_force_off
A literal that specifies for the tool to force all unconstrained bidirectional pins off.
o pulse_capture_clock
A literal that specifies for the tool to pulse the capture clock.
o force_capture_clock_on
A literal that specifies the cycle when the capture clock goes active. This statement
and the force_capture_clock_off statement can be used in place of the
pulse_capture_clock statement.
The “_on” refers to the active state of the clock, which is not necessarily the high
binary value. This statement is used only with the non-scan procedures and cannot
be mixed with the following statements in the same procedure:
• pulse_capture_clock
• pulse_write_clock
• pulse_write_clock
o force_capture_clock_off
A literal that specifies the cycle when the capture clock goes inactive. This statement
and the force_capture_clock_on statement can be used in place of the
pulse_capture_clock statement.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
The “_off” refers to the inactive state of the clock, which is not necessarily the low
binary value. This statement is used only with the non-scan procedures and cannot
be mixed with the following statements in the same procedure:
• pulse_capture_clock
• pulse_write_clock
• pulse_read_clock
o pulse_read_clock
A literal that specifies for the tool to pulse the RAM read clock.
o pulse_write_clock
A literal that specifies for the tool to pulse the RAM write clock.
o force pin_name value
A literal and pair of strings that forces the specified value of 0, 1, X, or Z on the
specified pin. The pin names you specify must be valid pin pathnames for primary
inputs.
o expect name value
A literal and pair of strings that causes the tool to expect the specified value of 0, 1,
X, or Z on the specified internal pin or port. The default value is X. You can use
“expect” statements only in the test_setup and test_end procedure. Internal pins are
checked by DRC and are compared in the testbench. For ports, the tool validates the
values in the testbench, the DRCs, and in the tester pattern formats.
o condition cell_name value
A literal and pair of strings that you use at the beginning of a seq_transparent
procedure to identify the necessary scan cell states (conditions) to establish
transparency in non-scan cells. You identify the scan cell by the pin pathname
associated with the output of its state element. The path from the defined pin to the
scan cell must only contain buffers and inverters. The value argument sets the value
at the specified pin pathname, which may be inverted relative to the associated scan
cell value.
o measure pin_name
A literal and string pair that specifies for the tool to measure the value of the named
pin. You can use a “measure” statement in the capture procedure only to specify a
measure on a pin in a different cycle than the measure_po event.
o initialize instance_name value
A literal and pair of strings that initializes the named memory element to the value
given. This statement is particularly useful for initializing the finite state machine in
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
the TAP controller of boundary scan circuitry, when the TAP does not contain the
TRST signal. Once set to a binary state, the TCK and TMS pins can place the finite
state machine in a known state. If not set, these pins remain at X.
If you do not specify a value, the tool chooses a random value to assign to all latches
and flip-flops with the specified instance name.
o pulse pin_name
A literal and string pair that specifies for the tool to pulse the named clock pin.
o start_pulse pin_name
A literal and string pair that specifies for the tool to start pulsing the named clock pin
in every cycle. This enables you to specify that a clock that is not a pulse_always
clock should be pulsed in every cycle of an iCall statement. It also enables you to
restart a pulse_always clock that has been temporarily suppressed with the
stop_pulse keyword.
This keyword can also be used outside of a cycle_statement. In this case, it takes
effect starting with the next cycle encountered.
o stop_pulse pin_name
A literal and string pair that specifies for the tool to stop pulsing the named clock
pin. This enables you to suppress a pulse_always clock for a known number of tester
cycles until you restart it with the start_pulse keyword. It also enables you to stop a
clock started with the start_pulse keyword when you no longer need it to be pulsed.
This keyword can also be used outside of a cycle_statement. In this case, it takes
effect starting with the next cycle encountered.
o observe_method value
A literal and string pair set to a value of master, slave, or shadow, to specify for a
specific observe method to be defined for each named capture procedure.
The following example shows how to use a cycle_statement to force scan inputs and
measure scan outputs:
procedure shift =
scan_group grp1;
timeplate tp1;
cycle =
force_sci;
measure_sco;
pulse T;
end;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock Control Definition
ATPG Restrictions
The following restrictions apply to ATPG when clock control definitions are enabled:
• In undefined cycles, the internal clock is assumed to be off, even if the source clock
pulses.
• Source clocks are pulsed regardless of clock restrictions. Any false paths should be
explicitly defined with DC or the add_false_paths command.
• External clocks without clock control definitions are controlled through top-level pins.
• Clock control definitions applied to a clock defined as equivalent also applies to all
associated equivalent clocks.
• Timeplate definitions apply only to external clocks.
• If you use the set_clock_restriction -same_clocks_between_loads command, you must
use one of the following definitions to pulse the controlled clock:
o {ATPG_SEQUENCE, END}
o {ATPG_SEQUENCE <N> <M>, END} with N starting from 0. The generated test
pattern includes M+1 capture cycles between the scan loading operation and the scan
unloading operation.
o <ATPG_CYCLE <i>, END} with i=0 defined
If none of these statements are present a warning displays during ATPG about clock
controls that cannot be applied because of clock restrictions.
• Global control conditions and source clocks defined for equivalent clocks must be the
same.
• When a clock is forced off, it cannot be used as a source in the same definition.
• A FORCE statement cannot force a clock pin to an on state.
• Clock control cannot be applied to an asynchronous free-running clock.
• Condition statements cannot be applied to non-scan state elements.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock Control Definition
• You must specify a condition to turn on the internal clock; otherwise, it is assumed to be
off.
• When multiple sequence clock control definitions are defined for the same clock, they
must use mutually exclusive pulse conditions as follows:
o The clock control condition to pulse a clock in sequence mode must be mutually
exclusive with the clock control condition for the same clock in per-cycle mode.
o The condition to pulse a clock in sequence mode must be mutually exclusive with
the condition to pulse the same clock by using another sequence mode.
Keywords
The following is a list of keywords used in clock control statement:
• ATPG_CYCLE cycle_number
A literal and integer that specifies a test pattern capture cycle to map the clock control
to. The specified capture cycle values start from 0, which corresponds to the first capture
cycle after scan loading.
Multiple ATPG_CYCLE definitions can be declared to pulse the internal clock at the
same capture cycle with different sets of conditions.
Use a FORCE statement to turn the clock off, or the clock continues to pulse when the
conditions are satisfied.
The specified and actual capture cycles may to differ—see “Capture Cycle
Determination” in the Tessent Scan and ATPG User’s Manual.
• ATPG_SEQUENCE N M
A literal and an integer pair that specify a range of capture cycles for clock pulsing from
N to M consecutively.
Define the condition to pulse the clock continuously from capture cycle N (N>=0) to
capture cycle M (M>=N) right after scan loading. If N is greater than 0, the clock is
automatically set to off state from the first capture cycle right after scan loading to the
capture cycle N -1. When the generated test pattern includes more than M capture cycles
after scan loading, the clock is set to off state from the M +1 capture cycle to the last
capture cycle.
Multiple ATPG_SEQUENCE definitions can be declared as necessary.
Use a FORCE statement to turn the clock off, or the clock continues to pulse when the
conditions are satisfied.
The specified and actual capture cycles may to differ—see “Capture Cycle
Determination” in the Tessent Scan and ATPG User’s Manual.
• ATPG_SEQUENCE
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock Control Definition
A literal that specifies clock pulsing. When a condition list is provided, the controlled
clock pulses in all capture cycles in the pattern when the conditions are met. When
checking the off conditions for cycles outside the capture window, the conditions listed
in this special atpg_sequence are ignored.
When there is no condition list, the controlled clock pulses unconditionally in every
capture cycle between scan loading.
Multiple ATPG_SEQUENCE definitions can be declared as necessary.
Use a FORCE statement to turn the clock off, or the clock continues to pulse when the
conditions are satisfied.
The specified and actual capture cycles may to differ—see “Capture Cycle
Determination” in the Tessent Scan and ATPG User’s Manual.
• CLOCK_CONTROL pin_pathname
A literal and string value that specifies the pin pathname of the PI for the internal clock.
The specified pin must be an existing clock. Internal clocks must also be defined with
the add_clocks command.
• CONDITION cell_name value
An optional literal and double string that specifies necessary scan cell states
(conditions). The scan cell is specified by the pin pathname associated with the output of
its state element. The value argument specifies the value loaded into the scan cell at the
end of shift.
The specified and actual capture cycles may to differ—see “Capture Cycle
Determination” in the Tessent Scan and ATPG User’s Manual.
• FORCE pin_pathname value
A literal and double string that forces a value of 0, 1, or Z on a specified pin. The
specified pin names must be valid pin pathnames for primary inputs. This keyword is
used to force necessary pins off during capture cycles when the controlled clock is
pulsed.
• SOURCE_CLOCK pin_pathname...
A literal and repeatable string that specifies one or more source clocks to drive the
internal clock logic to pulse in the specified capture cycle(s). If no source clock is
specified, the source clock is assumed to be an always-capture clock that pulses in every
capture cycle.
• END
Required literal the specifies the end of an ATPG_CYCLE or ATPG_SEQUENCE
block, or at the end of the clock control definition.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock Control Definition
For example, you can specify a CONDITION statement for all ATPG_CYCLE/
ATPG_SEQUENCE blocks within a definition. Then you can define a CONDITION statement
within individual ATPG_CYCLE/ATPG_SEQUENCE blocks to override the global
CONDITION variable when necessary.
The following example uses local conditions (italicized) to define some of the control bits
necessary for each scan cell to pulse the clock. The global conditions define other conditions
that must be satisfied for all clock cycles.
CLOCK_CONTROL /clk_ctrl/int_clk1 =
SOURCE_CLOCK ref_clk;
CONDITION /clk_ctrl/enable_1/q 0;
CONDITION /clk_ctrl/enable_2/q 0;
ATPG_CYCLE 0 =
CONDITION /clk_ctrl/F0/q 1;
END;
ATPG_CYCLE 1 =
CONDITION /clk_ctrl/F1/q 1;
END;
ATPG_CYCLE 2 =
CONDITION /clk_ctrl/F2/q 1;
END;
ATPG_CYCLE 3 =
CONDITION /clk_ctrl/F3/q 1;
END
END;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock Control Definition
CLOCK_CONTROL /clk_ctrl/int_clk1 =
SOURCE_CLOCK ref_clk;
ATPG_CYCLE 0 =
CONDITION /clk_ctrl/F0/q 1;
CONDITION /clk_ctrl/enable_1/q 0;
CONDITION /clk_ctrl/enable_2/q 0;
END;
ATPG_CYCLE 1 =
CONDITION /clk_ctrl/F1/q 1;
CONDITION /clk_ctrl/enable_1/q 0;
CONDITION /clk_ctrl/enable_2/q 0;
END;
ATPG_CYCLE 2 =
CONDITION /clk_ctrl/F2/q 1;
CONDITION /clk_ctrl/enable_1/q 0;
CONDITION /clk_ctrl/enable_2/q 0;
END;
ATPG_CYCLE 3 =
CONDITION /clk_ctrl/F3/q 1;
CONDITION /clk_ctrl/enable_1/q 0;
CONDITION /clk_ctrl/enable_2/q 0;
END
END;
The previous example demonstrates the importance of ensuring that global conditions do not
conflict with local conditions. To further illustrate this point, consider the following incorrect
definition of global conditions:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock Control Definition
On the surface, it may appear correct that the condition in ATPG_CYCLE 0 overrides the
global condition while the other cycles can still be satisfied. However, after the global condition
is expanded to all cycles, the clock control definition looks like this:
You can now see that it would not be possible to pulse the clock in ATPG_CYCLE 0 while also
pulsing it in any other cycle. The tool can load only one value into /clk_ctrl/F0, so it can either
pulse the clock in cycle 0 by loading a 1 or pulse it in another cycle by loading a 0.
CLOCK_CONTROL /top/core1/clk1 =
ATPG_CYCLE 0 =
CONDITION /pll_ctl/cell_0/Q 1;
END;
ATPG_CYCLE 1 =
CONDITION /pll_ctl/cell_1/Q 1;
CONDITION /pll_ctl/cell_4/Q 0;
//both conditions must be satisfied for clock to pulse in
//capture cycle 1
END;
END;
CLOCK_CONTROL /top/core1/clk2 =
ATPG_CYCLE 0 =
CONDITION /pll_ctl/cell_2/Q 1;
END;
ATPG_CYCLE 1 =
CONDITION /pll_ctl/cell_3/Q 1;
CONDITION /pll_ctl/cell_5/Q 1;
END;
END;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock Control Definition
CLOCK_CONTROL /top/core1/clk1 =
SOURCE_CLOCK clk_src;
ATPG_SEQUENCE 0 1 =
// Pulses 2 consecutive cycles if the scan cell
// is loaded with 1, and the source clock is pulsed.
CONDITION /pll_ctl/cell_1/Q 1;
END;
END;
CLOCK_CONTROL /top/core1/clk2 =
SOURCE_CLOCK clk_src;
ATPG_SEQUENCE 0 1=
CONDITION /pll_ctl/cell_2/Q 1;
END;
END;
The following example defines sequence clock control for two internal clocks (/top/core/clk1
and /top/core1/clk2) derived from the source clock clk_src. The clock pulses in all capture
cycles when the conditions are met.
CLOCK_CONTROL /top/core1/clk1 =
SOURCE_CLOCK clk_src;
ATPG_SEQUENCE =
// Pulse clock in all capture cycles if the scan cell
// is loaded with 1, and the source clock is pulsed.
CONDITION /pll_ctl/cell_1/Q 1;
END;
END;
CLOCK_CONTROL /top/core1/clk2 =
SOURCE_CLOCK clk_src;
ATPG_SEQUENCE =
CONDITION /pll_ctl/cell_2/Q 1;
END;
END;
The following example pulses clock /top/core1/clk1 unconditionally in every capture cycle
between scan loading:
CLOCK_CONTROL /top/core1/clk1 =
ATPG_SEQUENCE =
// empty body
END;
END;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock Control Definition
CLOCK_CONTROL /top/core/clk1_int =
SOURCE_CLOCK /clk1;
ATPG_SEQUENCE 0 2 =
CONDITION /pll/ctl_1/Q 1;
FORCE ENABLE_1 1;
END;
ATPG_SEQUENCE 3 4 =
CONDITION /pll/ctl_1/Q 0;
FORCE ENABLE_1 1;
END;
END;
Exclusive conditions ensure that only one sequence block is applied per capture cycle
(otherwise, no sequence is applied). If no cycle numbers are specified for sequence clock
control, the clock pulses in every capture cycle when conditions are loaded.
CLOCK_CONTROL /top/core1/clk1 =
ATPG_CYCLE 0 =
CONDITION /pll_ctl/cell_1/Q 1;
END;
ATPG_CYCLE 0 =
CONDITION /pll_ctl/cell_2/Q 1;
END;
END;
The previous example shows that /top/core1/clk1 can be pulsed in ATPG_CYCLE 0 when any
set of the specified conditions are met. This demonstrates the case where loading a '1' into either
/pll_ctl/cell_1 or /pll_ctl_cell_2 pulses the clock in cycle 0.
Similarly, the following example defines multiple sets of conditions for the same sequence of
cycles, which can overlap. The sequence of cycles must have mutually exclusive conditions to
ensure conditions for each ATPG_SEQUENCE can be satisfied without conflicting with other
sequences.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock Control Definition
CLOCK_CONTROL /top/core1/clk1 =
ATPG_SEQUENCE 0 2 =
CONDITION /pll_ctl/cell_1/Q 1;
CONDITION /pll_ctl/cell_2/Q 0;
CONDITION /pll_ctl/cell_3/Q 0;
END;
ATPG_SEQUENCE 0 3 =
CONDITION /pll_ctl/cell_1/Q 0;
CONDITION /pll_ctl/cell_2/Q 1;
CONDITION /pll_ctl/cell_3/Q 0;
END;
ATPG_SEQUENCE 1 4 =
CONDITION /pll_ctl/cell_1/Q 0;
CONDITION /pll_ctl/cell_2/Q 0;
CONDITION /pll_ctl/cell_3/Q 1;
END;
END;
timeplate _default_WFT_ =
force_pi 0 ;
measure_po 40 ;
pulse clk1 45 10;
pulse ref_clock 15 5, 40 5, 65 5, 90 5;
pulse clocks_02/my_controller/U2/Z 45 10;
pulse clocks_03/my_controller/U2/Z 45 10;
pulse clocks_04/my_controller/U2/Z 45 10;
period 100 ;
end;
procedure capture =
timeplate _default_WFT_;
cycle =
force_pi ;
measure_po ;
pulse_capture_clock ;
end;
end;
In this example, for one pulse of clk1, there are 4 pulses of ref_clock, specifically the ref_clock
frequency is 4 times the frequency of clk1.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
The Procedures
The Procedures
The test procedure file contains scan and clock procedures, and non-scan procedures. The scan
and clock-related procedures inform the tool how to operate the scan chain and pulse clocks.
The non-scan procedures can represent any type of pattern that the tool produces.
You can use the non-scan procedures to specify in which cycles of the procedure “potential
events” happen. A potential event is an event that the ATPG engine may or may not have
created to cover a certain fault.
To avoid DRC violations, each non-scan procedure must contain the proper statements in the
correct order with the timing from the timeplate. The statements in a non-scan procedure can be
spread over any number of cycles using a different timeplate for each cycle if needed.
A basic pattern consists of loading the scan chains, a default capture procedure, followed by
unloading the scan chains; however, you do not specify the loading and unloading of scan
chains in non-scan procedures. The following shows the basic pattern for non-scan procedures.
All example procedures shown in this section use one of the following two timeplates, unless
otherwise stated:
timeplate tp1 =
force_pi 0;
measure_po 10;
pulse scan_clk 30 10;
pulse sys_clk 30 10;
period 50;
end;
timeplate tp2 =
force_pi 0;
measure_po 10;
pulse scan_mclk 15 10;
pulse scan_sclk 30 10;
period 50;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test_Setup (Optional)
Test_Setup (Optional)
This optional procedure, which can only contain force, pulse, init, and expect event statements,
sets non-scan elements to the required states for the load_unload procedure. You may use this
procedure only once for all scan groups, and it appears only once at the beginning of the test
pattern set.
This procedure is particularly useful for initializing boundary scan circuitry. For an example
using this procedure to set up boundary scan circuitry, refer to “Pattern Generation for a
Boundary Scan Circuit” in the Tessent Scan and ATPG User’s Manual.
Note
Use the read_modelfile command instead of this procedure to specify the initial values for
RAMs.
For detailed information, see “How to Set Up Embedded Instruments Through Test Procedures”
in the Tessent IJTAG User’s Manual.
Bidi pins that are clocks or constrained pins are not forced to a Z, as they were already forced to
the off-state or the constrained values. Bidi scan-in pins are also not forced to a Z. Any bidi pin
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test_Setup (Optional)
already forced later in the load_unload procedure is not be forced to a Z. Any bidi forced to a
specific value in the test_setup procedure is instead be forced to this value instead of a Z.
Like previous automatic force values, these can be disabled by putting the “set autoforce off;”
statement at the beginning of the procedure file.
Pin Constraints
If you use the add_input_constraints command to set pin constraints, be aware this command
only forces pins during capture. To constrain these pins during test_setup, you should include
the same pin constraints in the test_setup procedure. This ensures the pins are in the same state
for loading the first pattern as for loading all subsequent patterns.
If you do not properly constrain the pins prior to the end of the test_setup procedure, the tool
automatically constrains them by inserting a cycle statement in the test_setup procedure.
However, this automatic handling may not insert the events with the timing you want. Also, the
automatic handling is not included in DRC.
If you have defined input constraints but have not provided a test_setup procedure, the tool
automatically generates a test_setup procedure to force those pins to their constrained values.
You can use both the write_procfile and the report_procedures commands to see the contents of
the test_setup procedure the tool has generated. The write_procfile command writes existing
procedure and timing data to a specified file. The report_procedures command writes the
information to the screen.
Example 1
The following is an example using a sub_procedure. In this example, the signal named C retains
its value of 1 during the test unless it is forced to a different value in a later cycle, by another
procedure, or it is overwritten by WGL patterns.
The following example shows how to apply the previous sub_procedure. For more information,
see “Sub_procedure” on page 811.
procedure test_setup =
timeplate soc_timeplate;
cycle =
force test_en 1; // force test_en 1
force chip_en 0; // force chip_en to 0
end;
apply initialize 10; // force C to 1 for 10 cycles
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test_Setup (Optional)
Example 2
The following example shows a way to reset a memory. The RST signal is active for the first
128 cycles, then it is deactivated in the next cycle (cycle 129).
Example 3
The following example shows a way to use an expect statement in a test_setup procedure. The
output signal (DFT) is expected to 1 in the first cycle and X in the remaining cycle. An “expect”
statement does not work the same as a force or pulse statement. When none is present, it is
assumed to mean do not measure.
procedure test_setup =
timeplate soc_timeplate;
cycle =
expect DFT 1;
end;
end;
Example 4
This example shows a way to start pulsing a clock in a test_setup procedure. The SYSCLK
starts pulsing at cycle number 2 until the end of test.
timeplate soc_timeplate =
force pi;
measure_po 90;
pulse SYSCLK 50 50;
period 100;
end;
procedure test_setup =
timeplate soc_timeplate;
cycle =
force RST_L 0;
end;
cycle =
pulse SYSCLK;
end;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Shift (Required)
Shift (Required)
This required procedure describes how to shift data one position down the scan chain by forcing
the scan input, toggling the clock(s), and strobing the scan output.
Figure 11-2 shows the data flow process for the shift procedure.
Within this procedure, you must use the force_sci, or force_sci_equiv, and the measure_sco
event statements. You can also use the force and pulse event statements. A shift procedure can
contain more than one cycle, although not all pattern formats can support multiple cycles and
parallel load. Pattern formats that do not support multiple cycles are any parallel format other
than STIL and Verilog. If you use write_patterns to write out one of these other parallel formats
with a multicycle shift procedure, the command generates an AG11 error.
The times at which the timeplate used by the shift procedure applies the force_sci and
measure_sco commands must be consistent with proper operation of the load_unload
procedure. The measure_sco occurs at the measure_po time specified in the timeplate. The
force_sci occurs at the force_pi time specified in the timeplate.
The following are examples of the shift procedure for both mux-DFF and LSSD architectures.
Mux-DFF Example
procedure shift =
timeplate tp1;
cycle =
// force scan chain input
force_sci;
// measure scan chain output
measure_sco;
// pulse the scan clock
pulse scan_clk;
end;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Shift (Required)
LSSD Example
procedure shift =
timeplate tp2;
cycle =
// force scan chain input
force_sci;
// measure scan chain output
measure_sco;
// pulse master clock
pulse scan_pclk;
// pulse slave clock
pulse scan_sclk;
end;
end;
Figure 11-3 graphically displays the waveforms for the clock pin, the scan-in pin, and the scan-
out pin derived from the Mux-DFF shift procedure example. This timing diagram shows one
scan chain shift cycle, assuming the time unit is 1ns.
The procedure contains four scan events: forces scan input values at 0ns, strobes (or measures)
scan output values at 10ns, pulses the scan clock scan_clk (turning it on at 30ns and off at 40ns),
and holds the state of the last event until the procedure finishes at 50ns.
A timing clock monitors when each significant event occurs. If the timing clock is at X when
the shift procedure begins, the timing clock assigns those four events with time values X, X+10,
X+30, and X+40. When the shift procedure finishes, the timing clock advances to X+50. The
shift cycle ending time becomes the starting time for the next shift cycle.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Alternate Shift Procedure (Optional)
The shift procedure enables an optional name following the shift procedure type. For each scan
group, one shift procedure must be defined that has the default name of shift. For each scan
group, additional alternate shift procedures can be defined as long as each has a unique name.
Syntax
Example
The following is a partial example of how the alternate shift procedure might be used in a
procedure file for a scan chain with a length of 100.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Load_Unload (Required)
timeplate tp1 =
force_pi 0;
measure_po 10;
pulse ref_clk 50 50;
period 100;
end;
procedure shift =
timeplate tp1;
scan_group grp1;
cycle =
force ctrl_a 1;
force_sci;
measure_sco;
pulse ref_clk;
end;
end;
procedure shift shift_last =
timeplate tp1;
scan_group grp1;
cycle =
force ctrl_a 0;
force_sci;
measure_sco;
pulse ref_clk;
end;
end;
procedure load_unload =
timeplate tp1;
scan_group grp1;
cycle =
force ref_clk 0;
force scan_en 1;
force ctrl_a 1;
end;
apply shift 98;
apply shift_last 1;
apply shift_last 1;
end;
Load_Unload (Required)
This required procedure describes how to load and unload the scan chains in the scan group. To
load the scan chain, you must force the circuit into the appropriate state for the start of the shift
sequence. This includes forcing clocks, resets, RAM write control signals, and any other signals
that need to be at their off-states for scan chain loading. Also, if a reset signal is defined as a
clock, and pin constrained to its off-state in the dofile, it needs to again be forced to its off-state
in the load_unload and named capture procedures in order to avoid a P34 DRC.
The tool automatically adds the off-state for clock pins, constrained pin values, and other pins
that have values forced in the test_setup procedure as force statements to the beginning of the
load_unload procedure (if not present). This helps reduce DRC failures.
Figure 11-4 shows the data flow for the load_unload procedure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Load_Unload (Required)
If the scan out pin is bidirectional, you must force its value to the Z state (indicating it is
operating in “output” mode) to properly sensitize the scan chain. If there is a scan enable signal,
you must force it on to enable the scan chain prior to the shift. You then use the apply shift
statement to specify the number of shift cycles (which equals the number of scan elements in the
chain). If you have optionally included the shadow_control procedure (which, if used,
immediately follows the shift procedure), you must also include the apply command.
The following list includes the basic statements in the load_unload procedure:
Mux-DFF Example
procedure load_unload =
timeplate tp1;
cycle =
// force clocks off
force RST 0;
force CLK 0;
// activate scanning mode
force scan_en 1;
end;
// shift data thru each of 7 cells
apply shift 7;
end;
LSSD Example
procedure load_unload =
timeplate tp2;
cycle =
// force all clocks off
force RST 0;
force CLK 0;
force scan_sclk 0;
force scan_mclk 0;
end;
// apply shift procedure 7 times
apply shift 7;
end;
The timing for the load_unload procedure is generally straightforward. The load_unload
procedure contains the apply statement. Therefore, the total time for a load_unload procedure
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Load_Unload (Required)
includes the time specified by the timeplate being used plus the time required to run the apply
cycles.
For example, examine the following load_unload procedure, using the example shift procedure
in the previous section.
procedure load_unload =
timeplate tp1;
cycle =
force RST 0;
force CLK 0;
force scan_en 1;
end;
apply shift 1;
end;
The timeplate of the load_unload procedure specifies the period is 50 ns. However, the
load_unload procedure includes an apply statement that runs one shift procedure. The shift
procedure requires an additional 50 ns. Thus, the load_unload procedure actually requires a total
time of 100 ns, as shown in Figure 11-5.
Within the load_unload procedure, after the completion of the cycle block, the shift procedure
starts at 50 ns, runs for 50 ns, and ends at 100 ns. Thus, the load_unload procedure also ends at
100 ns.
As with the shift procedure, the timing clock determines the event times for the load_unload
procedure. If the timing clock is at Y when the load_unload procedure begins, the first three
events happen at time Y. When the apply cycle runs, the timing clock advances to Y+50, which
is when the shift procedure begins. As mentioned previously, the shift procedure requires 50
time units. Therefore, when the apply cycle finishes, the timing clock reads Y+100.
Because it is the last event in the load_unload procedure, the end of the apply cycle determines
the end of the load_unload procedure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Shadow_Control (Optional)
Shadow_Control (Optional)
The optional shadow_control procedure, which may only contain force and pulse event
statements, describes how to load the contents of a scan cell into the associated shadow.
Note
This procedure is not supported when using SSN.
If you use this procedure, you must also apply the shadow_control command in the load_unload
procedure. This procedure must not disturb the contents of any of the scan cells. Figure 11-6
shows the data flow for the shadow_control procedure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Shadow_Control (Optional)
The following procedure file example demonstrates the syntax for applying a shadow_control
procedure within a load_unload procedure:
proc shift =
force_sci 0;
measure_sco 0;
force SK2 1 1;
force SK2 0 2;
force SK1 1 3;
force SK1 0 4;
end;
proc load_unload =
force WE 0 0;
force ABC 1 0;
force COMB_B 1 0;
force SK2 0 0;
force CLK 0 0;
force SK1 0 0;
force sh_clk 0 0;
apply shift 5 1;
apply shadow_control 1 2;
end;
proc shadow_control =
force sh_clk 1 1;
force sh_clk 0 2;
end;
proc master_observe =
force WE 0 0;
force SK2 0 0;
force CLK 0 0;
force SK1 0 0;
force sh_clk 0 0;
force SK1 1 1;
force SK1 0 2;
end;
proc shadow_observe =
force WE 0 0;
force EN 1 0;
force SK2 0 0;
force CLK 0 0;
force SK1 0 0;
force sh_clk 0 0;
force CLK 1 1;
force CLK 0 2;
force SK1 1 3;
force SK1 0 4;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Master_Observe (Sometimes Required)
You do not need to use this procedure if the master element’s output is the output of the scan
cell. The D1 rule ensures that this procedure does not disturb the master memory element’s
contents. You can override this requirement by changing the D1 rule handling. The following
example shows a master_observe procedure for the LSSD architecture:
Shadow_Observe (Optional)
The optional shadow_observe procedure, which may only contain force and pulse event
statements, describes how to place the contents of a shadow into the output of its scan cell,
assuming that data can be transfered in this way in the scan cell. Once the data is at the scan cell
output, you can observe it by applying the unload command. This procedure enables the shadow
to be used as an observation point in the design.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Skew_Load (Optional)
Note
This procedure is not supported when using SSN.
Skew_Load (Optional)
The optional skew_load procedure propagates the output value of the preceding scan cell into
the master memory element of the current cell without changing the slave, for all scan cells.
Using only force and pulse event statements, this procedure defines how to apply an additional
pulse of the master shift clock after the scan chains are loaded.
Figure 11-9 shows the data flow of the skew_load procedure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Skew_Load (Optional)
Figure 11-10 shows where you apply the skew_load procedure and the master_observe
procedure within the basic scan pattern events.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock_run (Optional)
Clock_run (Optional)
For every controller, or concurrent controller group, you can write a clock_run procedure, if
needed. The clock_run procedure has both an internal mode as well as an external mode.
You can specify only one clock_run procedure per controller or concurrent group; however, you
do not need to specify a separate procedure for each controller instance. The same procedure
can be used for multiple controllers. You need to specify a separate procedure for a controller
instance only if it maps to a different set of internal clocks.
In case of controllers running concurrently, and some of these controllers clocks are driven by
PLL internal clocks, the clock_run procedure is required per concurrent group. It is not required
for every BIST controller participating in the group to have its clock driven by a PLL internal
clock. For some controllers, their clocks can be driven by a PLL reference clock or even by a
system clock.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock_run (Optional)
The tool relies on you to control the PLL control signal. This can be achieved by forcing the
PLL control signal to a proper value in a test_setup procedure and in external mode of
clock_run procedure as well (it depends on the PLL model behavior).
A clock_run procedure has to have a N-to-1 or 1-to-N ratio between internal and external
cycles; that is, either the internal mode has to have only one cycle, or the external mode has to
have only one cycle. You cannot have, for example, two external cycles and three internal
cycles.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Capture Procedures (Optional)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Capture Procedures (Optional)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Capture Procedures (Optional)
o If a measure_po statement is used, it can only appear in the last cycle of the internal
mode and must occur before the last clock pulse. If no measure_po statement is used,
the tool issues a warning that the primary outputs cannot be observed.
o The cumulative time from the start of the first cycle to the measure_po must be the
same in both modes.
o The external mode cannot pulse any internal clocks or force any internal control
signals.
o A force_pi statement needs to appear in the first cycle of both modes and occur
before the first pulse of a clock.
o If an external clock goes to the PLL and to other internal circuitry, a C2 DRC
violation is issued.
o At-speed cycles need to be continuous; that is, a named capture procedure cannot
have more than one at-speed clocking subsequence.
o All defined real clocks (excluding internal clocks) must be forced to off state first in
the mode_internal definition.
For more information, see “Internal and External Modes Definition” in the Tessent Scan
and ATPG User’s Manual.
• Do not use the pulse_capture_clock statement in a named capture procedure. The clocks
used are explicitly pulsed.
• If you want to specify the internal conditions that need to be met at certain scan cells in
order to enable a clock sequence, use the condition statement at the beginning of the
cycle statement in the named capture procedure.
• If you want to define a specific observe method for each named capture procedure, use
the observe_method statement in the named capture procedure; otherwise, the ATPG
engine automatically selects master, slave, or shadow observation.
Note
The write_patterns command enables you to save internal or external clock patterns.
Internal clock patterns can be used to simulate the DUT without having the PLL
modeled, while the external patterns only exercise the PLL external clocks and control
signals. Internal patterns are the default for ASCII and binary formats, and external
patterns are the default for tester formats.
• If you generate patterns using a named capture procedure that has both internal and
external modes and you save them in STIL or WGL format, you must use the
write_patterns command’s “internal” option to read them back into the tool (for
example, to use in diagnosis). For more information and for information about special
considerations that apply to LBIST mode in the TK/LBIST Hybrid flow, refer to the
-Mode_internal and -Mode_external switches for the write_patterns command 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.
Test Procedure File
Capture Procedures (Optional)
DRC rules W20 through W36 check named capture procedures. If a DRC error prevents use of
a capture procedure, the run aborts.
cycle slow =
...
end;
• The slow cycle indicates that at-speed faults cannot be launched or captured. The tool
must know which at-speed cycles are slow to get accurate at-speed fault coverage
simulation numbers; therefore, be sure to include “slow” when defining cycles that are
not at-speed cycles in an at-speed capture procedure.
Note
At-speed cycles need to be continuous; that is, a named capture procedure cannot
have more than one at-speed clocking subsequence.
• The load cycle indicates that the cycle is always preceded by an extra scan load. The
first cycle in a named capture procedure is always a load (with or without the load type
designation), so you typically apply “load” to subsequent cycles. An at-speed launch
cycle can be a load cycle; however, none of the cycles that follow in the at-speed
sequence, up to and including the capture cycle, can be load cycles.
Note
To get extra loads, you must enable the tool’s multiple load and clock sequential
capabilities by issuing the set_pattern_type command with “-multiple load on” and
“-sequential <2 or greater>”. For more information, see “Multiple Load Patterns” 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.
Test Procedure File
Capture Procedures (Optional)
launch_capture_pair Statement
Optionally, you can add one or more “launch_capture_pair” statements to the beginning of a
named capture procedure. This statement defines legal at-speed launch and capture points in
non-adjacent cycles. If you do not use the launch_capture_pair statement, the tool launches and
capture only in adjacent cycles. If at least one launch and capture clock pair is defined, the
launch and capture points are derived from the defined launch and capture clock pairs.
Note
This statement is only supported when using a named capture procedure to perform test
generation.
Where:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock_sequential (Optional)
cycle = // cycle 1
force_pi;
force c1 0;
force c2 0;
force c3 0;
pulse c1;
end;
cycle = // cycle 2
pulse c2;
end;
cycle = // cycle 3
pulse c1;
pulse c3;
end;
end; // end of capture procedure
In this example, a valid launch can happen in cycle 1. A valid capture can happen in cycle 3
only with c1 as the capture clock. A launch in cycle 1 and a capture in cycle 2 is not used for
fault detection. The faults to be tested by this named capture procedure are the faults that can be
launched and captured by clock c1.
Clock_sequential (Optional)
The clock_sequential procedure (optional for “patterns -scan” context), which may only contain
force_pi, pulse_write_clock, pulse_read_clock, pulse_capture_clock, bidi_force_pi, and
bidi_force_off event statements, represents the clock sequential events in a clock sequential
pattern. Use this procedure with the capture procedure.
The following shows the clock_sequential procedure pattern.
Figure 11-11 shows an entire clock sequential pattern, which illustrates where the
clock_sequential and capture procedures are used.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Init_force (Optional)
Init_force (Optional)
The init_force procedure (optional for “patterns -scan” context), which may only contain
force_pi event statements, represents the force cycle that is used in an ATPG pattern that targets
a transition fault. The transition must be launched off of the last scan chain shift. This procedure
is used when the fault type is set to transition fault and either the depth is set to 2 or less or the
ATPG engines fail to find a sequential pattern that can cover this transition fault. Use this
procedure with the capture procedure.
The following illustrates the format of the init_force procedure pattern.
Figure 11-12 shows the pattern that uses the init_force procedure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test_end (Optional, all ATPG tools)
The following shows the general pattern for the test_end procedure pattern.
For detailed information, see “How to Set Up Embedded Instruments Through Test Procedures”
in the Tessent IJTAG User’s Manual.
timeplate tp1 =
force_pi 0;
measure_po 10;
pulse ref_clk 50 50;
period 100;
end;
procedure test_end =
timeplate tp1;
cycle =
force ctrl_a 1;
force tms 0;
pulse ref_clk;
end;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Sub_procedure
timeplate tp4 =
force_pi 0;
pulse TCK 10 10;
measure_po 30;
period 40;
end;
procedure test_end =
timeplate tp4;
cycle =
// TMS = 1, change to select-DR state
force TDI 1;
force TMS 1;
pulse TCK;
end;
cycle =
// TMS = 0, change to capture-DR state
...
cycle =
// Scan out signature (MISR has length of 4)
force TDI 1;
force TMS 0;
pulse TCK;
end;
cycle =
force TDI 1;
force TMS 0;
pulse TCK ;
end;
...
end;
Sub_procedure
The sub_procedure procedure eliminates the need to insert duplicate actions within a procedure.
Once you have defined a sub_procedure, you can specify this procedure within other procedures
using the apply statement.
You can also set the tool to reissue the sub_procedure as many times as needed by specifying
the repeat_count. Because the repeat_count is required when using apply sub_procedure, you
must enter a minimum of 1 for this parameter.
Sub_procedure Looping
Sub_procedure looping is used to reduce the size of pattern files. The default behavior of the
sub_procedure is to use “loops” or “repeats” in all applicable pattern formats to repeat the
contents of the sub_procedure N times, where N is greater than 1.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Sub_procedure
The vector data for the sub_procedure “pulse_bclock” would be expanded to be 1000 vectors.
The default for the ALL_NO_LOOP keyword is off (0).
procedure shift =
scan_group grp1;
timeplate tp1;
apply my_subprocedure 4;
cycle =
force_sci;
measure_sco;
pulse T;
end;
end;
Note
You must first define a sub_procedure before using it in a procedure. Next, you can apply a
sub_procedure within any procedure type. Also, you cannot use a sub_procedure within the
“cycle =” and “end;” statements.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Additional Support for Test Procedure Files
The Tcl variable can also be used to evaluate the condition of a Tcl if command located inside
the procfile. The element of a list of ports in the procfile must be separated by commas. If the
port names are escaped identifiers, they must be enclosed in quotes. Use the method shown in
the following example to convert a list of port names into a quoted comma-separated list needed
in the proc file:
set ::add_clocks_timing 1
set ::edges "25 75"
set ::port_list [get_name_list [get_clocks -type sync_source]]
set ::all_clocks [string cat {"} [join $port_list {", "}] {"}]
set_procfile_name ./myproc
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Creating Test Procedure Files for End Measure Mode
However, after leaving setup mode, it is possible to specify non-scan procedures, timeplates,
and new timing for the scan procedures by reading in an additional procedure file with the
read_procfile command. Specifying new information for the same design, from more than one
procedure file, is known as “merging the procedure files.” To properly merge the information
from multiple procedure files, the Vector Interfaces code follows these rules:
• All scan procedures that you use must be specified in the procedure file that you load
with the add_scan_groups command.
• If you load a procedure that contains nothing but the procedure name, a timeplate name,
and an optional scan group, it is a template procedure. If a procedure already exists by
that name for that scan group (if it is a group-specific procedure), then the timeplate is
mapped onto the existing procedure. If no procedure already exists with that name, the
tool stores the template procedure for future use.
• If you load a new complete procedure (not a template) and a procedure already exists by
that name for the specified scan group (if applicable), the new procedure overwrites the
existing one.
• In both cases, when a procedure overwrites an existing one, or if a new timeplate is
mapped to an old procedure, the tool checks the procedures to make sure that the
sequence of events in the new procedure does not differ from the old procedure.
If there are any missing non-scan procedures, the tool creates default procedures and issues a
warning.
For any procedures that are created or that do not have a timeplate specified, the default
timeplate is mapped to these procedures, if it is set. You can set the default timeplate by using
the set default_timeplate statement previously described in the “Set Statement” section. If you
use this statement, the timeplate specified when creating default procedures is used. If the
default procedure needs to be created and no default timeplate has been set, then the first
timeplate specified is used. If no timeplates are specified, a default timeplate is created as well.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Creating Test Procedure Files for End Measure Mode
Prerequisites
• A test procedure file.
Procedure
1. Create a new timeplate that measures the outputs after the clock pulse.
2. Change the timeplate for the shift and load_unload to point to the new timeplate.
3. Add the measure_sco statement to the load_unload procedure.
4. Make sure all shift procedures have the measure_sco statement after the shift clock.
When end measure mode is enabled, the measure_sco statement measures the next value
from the output of the scan chain. The very first value for the output of the scan chain is
measured by a measure_sco statement in the load_unload procedure.
5. Change the timeplate for the capture cycle by breaking it into two cycles. Move the
capture clock to the second cycle of the capture procedure to enable the measure at the
end. In the first cycle, the force_pi and measure_po are performed. In the second cycle,
the capture clock is pulsed. When using end measure mode, a measure cannot be
performed after the capture clock.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Creating Test Procedure Files for End Measure Mode
Examples
set time scale 1.000000 ns ;
set strobe_window time 10 ;
timeplate gen_tp1 =
force_pi 0 ;
measure_po 10 ;
pulse clk 20 10;
pulse edt_clock 20 10;
pulse ramclk 20 10;
period 40 ;
end;
// CREATE A NEW TIMEPLATE THAT MEASURES AFTER THE CLOCK PULSE
timeplate gen_tp2 =
force_pi 0 ;
// measure_po 10 ;
pulse clk 20 10;
pulse edt_clock 20 10;
pulse ramclk 20 10;
measure_po 35 ; // <<== NEW MEASURE STATEMENT
period 40 ;
end;
// FOR CAPTURE SPLIT INTO TWO CYCLES
procedure capture =
timeplate gen_tp1 ;
cycle =
force_pi ;
measure_po ;
end ;
cycle =
pulse_capture_clock ;
end;
end;
// FOR THE SHIFT AND LOAD_UNLOAD, USE THE NEW TIMEPLATE
procedure shift =
scan_group grp1 ;
timeplate gen_tp2 ; //<<=== NEW TIMEPLATE
cycle =
force_sci ;
force edt_update 0 ;
measure_sco ;
pulse clk ;
pulse edt_clock ;
end;
end;
// ADD A MEASURE_SCO TO THE LOAD_UNLOAD PROCEDURE
procedure load_unload =
scan_group grp1 ;
timeplate gen_tp2 ; //<<=== NEW TIMEPLATE
cycle =
force clk 0 ;
force edt_bypass 0 ;
force edt_clock 0 ;
force edt_update 1 ;
force ramclk 0 ;
force scan_en 1 ;
pulse edt_clock ;
measure_sco; //<<=== NEW MEASURE STATEMENT
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Creating Test Procedure Files for End Measure Mode
end ;
apply shift 39;
end;
procedure test_setup =
timeplate gen_tp1 ;
cycle =
force edt_clock 0 ;
end;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Serial Register Load and Unload for LogicBIST and ATPG
• LogicBIST — Used to serially unload certain registers (for example, MISRs) using the
test_end procedure.
• Low pin count test — Used to serially load registers with test information through a
serial access port such as a JTAG TAP controller.
Register Load and Unload Use Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
Static Versus Dynamic Register Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
Test Procedure File Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
Dofile Modifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
Serial Load and Unload DRC Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825
The register value variable is used in the test procedure file to load the value into a register
through the data input pin, or unload a value from a register through the data output pin. The
load/unload procedures support pin inversions, but you must explicitly specify this.
The registers to be loaded/unloaded can be cascaded such that one load or unload operation
loads or unloads multiple values, for example PRPG/MISR values.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test Procedure File Modifications
• Static variable — A specific register value variable string you specify during setup
mode. Once set, you cannot change this variable.
• Dynamic variable — A register value variable string that you can define or change later,
and can use tool-specific switches.
Static Variable
A static register variable is one where the value is assigned to the variable when the variable is
defined (using the add_register_value), and this value then cannot be changed. This static value
is used by DRC when simulating the procedures. A static variable cannot be set using tool
specific switches to link the variable to tool computed values, as these may change.
Dynamic Variable
A dynamic register value variable uses tool-specific switches and arguments to link the variable
to a value computed by the tool. If you use a dynamic variable, then you must specify the
register’s width unless the tool knows this value at the time DRC is run (for example, PRPG
size).
This method is used for defining a variable that has a tool-specific computed value that is
available when patterns are saved and needs to be loaded or unloaded by the test_setup or
test_end procedures. The value defaults to all X bits, and you can specify the actual value in
non-Setup mode by using the set_register_value command.
If no value is specified the first time DRC is invoked after adding a register value variable, the
tool considers the variable to be dynamic for DRC and any future invocation of DRC.
load_unload_registers Procedure
The load_unload_registers procedure is a named procedure; consequently, you can have
multiple occurrences of this procedure, corresponding to multiple groups of registers that need
to be loaded or unloaded. The load_unload_registers procedure can only be called from the
following procedures:
• test_setup
• test_end
The load_unload_registers procedure can load, unload, or both. Additionally, one application of
the procedure can load/unload multiple cascaded registers.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test Procedure File Modifications
When the test procedure file explicitly calls the load_unload_registers procedure from either the
test_setup or test_end procedures, the values to load or unload are passed to the procedure using
the string of binary values (value hard-coded in the procedure application) or the register value
variables.
shift Keyword
The load_unload_registers procedure uses the shift keyword to define a block of events that
result in one shift operation. This is similar to the IEEE STIL syntax where the shift keyword
defines a shift block within a load or unload procedure. It is analogous to embedding the shift
procedure into the load_unload procedure.
The load_unload_registers procedure must have a shift block defined, which has one or more
cycles used to shift the data into the data input pin or the data out of the data output pin. The
procedure can also optionally have cycles that precede or follow the shift block, to be used to
put the circuit into shift mode or finish the shift mode when done, similar to how a load_unload
procedure is used.
Event Statements
Within a shift block, at least one event statements in a load_unload_registers procedure must
use the “#” character to denote where the shift data passed into the procedure is used.
The event statement must be either a “force” event or an “expect” event. An event statement
with the “#” character can also occur in the cycles preceding or following the “shift” block to
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test Procedure File Modifications
express pre-shifts and post-shifts for loading the register. This event statement has the following
syntax:
The apply statement used to call the sub_procedure also calls the shift and
load_unload_registers procedures. However, when calling the shift and load_unload_registers
procedures, the #times argument in the apply statement is replaced with one or more value
assignments for the data in or data out pins.
The identifier used in the shift_data_assignment must match an identifier used within the
procedure in one of the event statements with the “#” character.
• A binary string of 0’s, 1’s or X’s, where the length of the string determines the number
of shifts to load the register.
• A string of a different radix as long as the Verilog syntax of identifying the radix and
width are used, such as “32’h” for a 32 bit hexadecimal value.
If a register_value_variable is used in the shift_data_assignment, then a value computed by the
tool for that register_value_variable (as bound within the dofile) or hard-coded in the dofile is
loaded or unloaded at that time and the shift length is also provided by the tool. It is possible for
more than one value_string or register_value_variable to be assigned to an identifier in one
shift_data_assignment. In this case, the extra values are separated by spaces. This enables
multiple shorter values to be shifted into one register group.
The typical usage is that each register_value_variable corresponds to one register being loaded,
and the specification of multiple variables is used when those registers are cascaded and loaded/
unload on after another.
Alias Names
It is possible to use an alias name in the procedure type for loading shift data, even if that alias
name refers to multiple pins. If this is the case, the number of bits assigned by the “#” character
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Dofile Modifications
for each shift is equal to the width of the alias being used. The length of the value string being
passed to the procedure must be a multiple of the width of the alias.
Loading or unloading an alias can be used if performing parallel load/unload and no shift is
required. For example, if each MISR bit is connected to a separate primary output. Even if no
shifting is required, the functionality is still useful to bind the expected values to the signature
computed by the tool.
If multiple shift_data_assignments are passed to a procedure, then all of them must have the
same shift length such that each pin being loaded/unloaded requires the same number of cycles
to load/unload all the data. No padding is performed by the tool.
If a “measure” event is used in one of these procedures to unload a register, then these measure
values can be compared in the final patterns and the Verilog testbench.
Dofile Modifications
You define register value variables using commands you issue to the tool interactively or in a
dofile. The value variables are subsequently referenced in the procedure file.
You use the following commands to perform these operations:
• add_register_value
• set_register_value
• delete_register_value
• report_register_value
You can only use this command in setup mode. You must define the register value variables in
the dofile before the variables are used in a test procedure file to load values into the registers.
You must specify this value in setup mode; the value is considered to be static by default, and
the value is present when simulating procedures in DRC.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Dofile Modifications
If the –Radix switch is used to change this to a different radix, then a register width must also be
specified using the –Width switch.
You can subsequently enter the actual value once you have exited setup mode using the
set_register_value command. If no value is specified the first time DRC is invoked after adding
a register value variable, it is considered as dynamic in this and any future invocation of DRC.
These are optional switches you use to specify that the data value in this variable should be
inverted before it is loaded into the register through the load_unload_register procedure.
This method is used for defining a variable that has a tool-specific computed value that is
available when patterns are saved and needs to be loaded or unloaded by the test_setup or
test_end procedures.
In this case, you use the add_register_value command with the -Width switch and omit the
value while in setup mode. Once you have exited setup mode, you can use the
set_register_value command to set the variable:
The name of the register value and its width are known prior to parsing the procedure file and
running DRCs. The value is all X bits for DRC.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Dofile Modifications
This command can only be used for a register value that was defined without a value string, and
the width of the value string must match the width specified in the add_register_value
command.
By default, the bits extracted by force/measure “#” in the procedure are from MSB to LSB. If
the value specified should be shifted in/out in the opposite order, with the LSB bits applied/
measured first, use the “-LSB_shifted_first” optional switch.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Serial Load and Unload DRC Rules
If the shift assignment references an undefined register value variable name, a P54 is issued.
P66
The P66 rule is used to check for missing statements within a load_unload_registers procedure.
For example, if no Shift block is specified, or if an event statement using the “#’ character is not
present for each shift_assignment passed to the load_unload_registers procedure, then a P66 is
issued.
The following examples illustrate the types of P66 DRC errors you could encounter.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Serial Load and Unload DRC Rules
Example 1
In the following example, the tool issues this error if there is no shift block within the
load_unload registers procedure:
Example 2
In the following example, the tool issues this error if there are no events in the
load_unload_register procedure that use the “#’ substitute character.
Example 3
In the following example, the tool issues this error if an apply statement that uses a
load_unload_registers procedure has a shift data assignment that uses a signal that does not
appear in the load_unload_registers procedure with the substitute character “#’.
W5
The W5 DRC error is used to flag any extra events or statements in a load_unload_registers
procedure, or any events that are not legal.
For example, if an event type other than Force or Expect is used with the “#’ substitute
character, then a W05 rule is issued. If the load_unload_registers procedure contains more than
one shift block, this rule is issued. If there is a Force or Expect statement using a “#’ character
for a signal name that is not being passed to the procedure as a shift assignment, this rule is
issued. The W05 rule is used when shift assignments for a particular Apply statement do not all
have the same length.
Example 1
The following error is issued if an event in the load_unload_register procedure uses the “#’
substitute character, but no shift data for this signal is passed into the procedure when it is called
“extra shift block”:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Serial Load and Unload DRC Rules
Example 2
The following error is issued if there is more than one shift block in the load_unload_registers
procedure.
Example 3
The following error is issued if more than one event of the same type in the shift block uses the
same signal name with the “#’ substitute character.
Example 4
The following error is issued for an apply statement that uses a load_unload_registers procedure
but has no shift data assignments in the apply statement.
Example 5
The following error is issued for an apply statement that uses a load_unload_registers procedure
and has more than one shift assignment, however, the target of the shift assignments are aliases
and they are not the same width.
Example 6
This is issued for an apply statement that uses a load_unload_registers procedure and has more
than one shift assignment and the assignments have different shift lengths.
Procedure Examples
The definition of the load_unload_registers procedure would look as follows. Notice how this
procedure uses the “shift =” statement and the “force tdi #” statement to denote the shifting and
where the string of data is applied, one bit at a time.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Serial Load and Unload DRC Rules
This procedure could then be applied in the test_setup procedure to initialize the PRPG,
specifying the string of bits to apply to “tdi” during shifting.
procedure test_setup =
timeplate tp1 ;
cycle =
force clk1 0 ;
force clk2 1 ;
force tck 0 ;
...
end;
apply load_prpg1 tdi = 000000000000000000000001 ;
cycle =
...
end;
end;
For loading a register with the shift length during test_setup, using the values computed by the
tool, the procedure definition would look the same, but how the procedure is called is slightly
different. The following example both loads and unloads the register, as this same procedure
could be used in a test_end procedure to unload the shift length value. The dofile for this
example contains the following command:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Serial Load and Unload DRC Rules
This next example uses an alias to group three tdi signals into one alias, and also adds a post
shift cycle to the load_unload_registers procedure. When this procedure is called, the data
passed to it is consumed three bits at a time, with each bit being shifted into tdi1, tdi2, and tdi3
in order. The total number of shifts applied in the “shift” block is the total length of the value
string divided by three, and then minus one for the post shift. Each shift consumes three bits,
and the final cycle adds a post shift that assigns the last three bits. The length of the value string
being passed to this procedure must be a multiple of three.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Serial Load and Unload DRC Rules
This final example shows how to use a dofile commands to set up a user-defined register value
that is used to store total number of scan patterns when the final patterns are saved.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Notes About Using the stil2tessent Tool
If “-edge_strobe_processing on” is specified to the tool, and the edge strobe events (‘H’ or ‘L’)
are used for a measure event, then the strobe window is set to 0 in the procedure file to indicate
edge strobe timing.
If the “-edge_strobe_processing” option is not used or is set to off, and edge strobe events (‘H’
and ‘L’) are used for a measure event, then the existing behavior is maintained where the strobe
window is calculated based on the next force event or the period of the Waveform table. The
strobe window is not set to 0.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test Procedure File Commands and Output Formats
• Fujitsu TDL
• Mitsubishi TDL
• STIL
• TI TDL
• WGL
• TSTL2
• VERILOG
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Test Procedure File Commands and Output Formats
The -PROcfile switch causes the write_patterns command to get its timing information from the
procedure file. For more information, refer to the write_patterns command 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.
Test Procedure File
Test Procedure File Commands and Output Formats
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 12
Tessent Visualizer
Tessent Visualizer is a graphical user interface for Tessent Shell. This chapter describes the
various features of Tessent Visualizer and how to work with those features. With Tessent
Visualizer, you can use schematics, browsers, tables, and other reports to analyze and
understand DFT issues. By cross-referencing between these different viewpoints of your data
and performing various analyses on them, you can more quickly arrive at solutions to those
issues.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Invoking Tessent Visualizer
Irrespective of how you invoke the Tessent Visualizer GUI, two separate processes run and
communicate with each other using the TCP/IP protocol. If you use Tessent Shell commands to
invoke the tool, the details of the TCP/IP protocol such as hostname, port, and the one-time
authorization code are automatically passed to the client. If you choose to launch the GUI
directly in the console, you must pass the TCP/IP protocol details using the optional command-
line switches or provide them in the Tessent Visualizer GUI dialog box.
Use any of the following methods to invoke the Tessent Visualizer GUI:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Invoke Explicitly on a Different Machine
Note
You can invoke Tessent Visualizer without running these commands, but most of
the user interface is disabled until you load a design and library, or an ICL model, of
your design. To debug certain IJTAG issues, loading and extracting an ICL file is
sufficient to enable you to examine the ICL network.
You can also use these commands in the Transcript tab after you invoke Tessent
Visualizer.
4. Invoke Tessent Visualizer explicitly on the same machine Tessent Shell is running:
ANALYSIS> open_visualizer
// Note: Tessent Visualizer client successfully started and
connected to the server.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Invoke Implicitly
Note
You can invoke Tessent Visualizer without running these commands, but most of
the user interface is disabled until you load a design and library, or an ICL model, of
your design. To debug certain IJTAG issues, loading and extracting an ICL file is
sufficient to enable you to examine the ICL network.
You can also use these commands in the Transcript tab after you invoke Tessent
Visualizer.
This opens a remote connection dialog box that prompts for the hostname, port, and
authorization code.
The six-digit authorization code is a one-time password that is cleared upon successful
connection to a server or after five invalid attempts. To reconnect to the same server,
generate a new authorization code by invoking open_visualizer on that server with the
-authorization_code switch.
For more information, see the “tessent” command description in the Tessent Shell
Reference Manual.
Note
The IP address and port of the server must be accessible from the client machine.
Invoke Implicitly
Some Tessent Shell commands run Tessent Visualizer to perform their functions. Therefore,
when you run any of these commands they launch the Tessent Visualizer GUI.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
License-Protected Tabs
Prerequisites
• Comply with the hardware and operating systems requirements listed under “Supported
Hardware and Operating Systems” in the Managing Tessent Software manual.
The requirements also apply to the machine providing the X Window desktop (as
defined by the DISPLAY environment variable).
• Set the DISPLAY environment variable correctly.
Procedure
1. Set a context using the set_context command.
2. Load a design and library using the read_verilog and read_cell_library commands. You
can also load an ICL model using the read_icl command.
3. Set the current design using the set_current_design command.
Note
You can invoke Tessent Visualizer without running these commands, but most of
the user interface is disabled until you load a design and library, or an ICL model, of
your design. To debug certain IJTAG issues, loading and extracting an ICL file is
sufficient to enable you to examine the ICL network.
You can also use these commands in the Transcript tab after you invoke Tessent
Visualizer.
License-Protected Tabs
Some tabs in the Tessent Visualizer window require a Tessent IJTAG (mtijtagf) license. These
tabs are referred to as license-protected tabs.
The following tabs are license-protected:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Framework Overview
Note
When starting the Tessent Visualizer GUI, the tool tries to check out a Tessent IJTAG
license to restore any licensed tab from the previous session. If the tool displays a message
stating that a required Tessent IJTAG license is unavailable, it could mean that you selected
“Do not show this dialog again” and clicked OK in a previous session when a dialog box
informed you that some tabs to be restored require a Tessent IJTAG license. Use the
“open_visualizer -display” command and specify any non-license protected tab to start the GUI.
For example, you can use the “open_visualizer -display instance_browser” command to start
the GUI.
Framework Overview
Tessent Visualizer provides multiple tabs for viewing and debugging design and simulation data
in specialized windows.
The Tessent Visualizer framework consists of the following:
• Windows — Windows contain one or two panes, a global top menu, and a status bar.
The menu and status bar are identical across multiple windows; only the pane content
differs.
• Panes — There are at most two panes per window. By default, one pane provides
multiple tabs. Windows can be split into two panes by dragging and dropping. Each
pane has its own tabs.
• Tabs — You can view and select multiple tabs within a pane. Each functional task in
Tessent Visualizer is placed as a tab. You can reorder the tabs by dragging and dropping,
or cycle through them with Ctrl+Tab (next tab) or Ctrl+Shift+Tab (previous tab). See
“Keyboard Shortcuts” on page 943 for more ways to interact with Tessent Visualizer
using the keyboard. See “License-Protected Tabs” on page 840 for information about
how the tool handles license-protected tabs.
Each window can contain two panes (separate sets of tabs). This is called a split view. To create
a split, drag one of the tabs to either side. Drag and drop a tab to move it from one side of the
split to the other. There are at most two work areas (panes) per window, as shown in
Figure 12-1.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Framework Overview
You can undock any tab from a window as a separate (floating) window and redock as
necessary. Floating windows have the original window’s full functionality, with access to
features such as global settings and the capability to offer a split view. To undock a tab, double-
click the tab or drag and drop it away from the parent window. To redock, drag it back to the
parent window (or any other Tessent Visualizer window) and drop it as a tab in that window.
You can move a tab to the left or right pane with the context menu, 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.
Tessent Visualizer
Framework Overview
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tessent Visualizer Components and Preferences
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tables
Tables
Tessent Visualizer presents data such as tracing results, pin listings, instances, and nets in
tabular form in all windows, including schematics. These tables are configurable, and data can
be filtered dynamically.
Table Toolbar Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846
Columns and Filters Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848
Table Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849
Data Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
Row Highlighting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tables
• Customize the data types included in the table with the Columns and Filters Editor.
• Select one or more table rows in the Tessent Visualizer window and perform various
compatible actions using the popup menus available by right-clicking.
• Export table data in CSV format with the Export Table icon.
• Add line numbers to tables from the Preferences dialog box.
Figure 12-3 illustrates the locations of these items.
Objects
Object Description
Columns and Filters Editor. Controls the form and content of the table.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tables
Object Description
Automatic/Manual Column Width. Toggles between automatic and
manual mode for controlling column widths and column header wrap. In
automatic mode, column widths stretch to fit the table and column headers
wrap if necessary to accommodate narrow data.
Resize columns to contents. This fits the column widths to accommodate
the size of the displayed data.
Funnel. If present, this indicates that filtering is active. This symbol is not
displayed unless a filter is applied.
Loaded row counter. By default, the table loads up to 250 items. Change
the default threshold from the Preferences dialog box.
The “+” next to this number indicates that all data for the table has been
loaded if it is displayed in a gray circle. A green circle indicates that
additional data exists in Tessent Shell. Load this additional data by scrolling
down or clicking the circle.
Filter fields. These control which data are displayed in the table.
Related Topics
Columns and Filters Editor
Tessent Visualizer Preferences
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tables
Objects
Object Description
Apply filters by typing terms in the filter fields, shown in Figure 12-4. When
a column is being filtered, the funnel icon is displayed next to the column
name in both the Column and Filters Editor and the tabbed window being
modified by the Column and Filters Editor.
Reorder columns by dragging and dropping the header items at the top of the
Columns and Filters Editor.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tables
Object Description
Search for specific data types by using string matching in the column for the
property name. Search results are displayed as you type.
Usage Notes
The report table content is automatically refreshed when you accept the modifications by
clicking OK.
Table Filters
Filters limit the data displayed in tables using the search criteria you specify.
The filter field is located directly beneath the column headers, as shown in Figure 12-3 on
page 846. Tessent Visualizer uses the following filters:
• Wildcard match — The default filtering mechanism used in table filters is wildcard
matching. If you do not provide any other keywords or comparators, the tool uses
wildcard matching for the table filters.
Wildcard matching uses the following special characters:
o The asterisk (*) symbol matches any number of characters
o The question mark (?) symbol matches a single character
The tool uses adaptive formatting if the filter text does not contain any special keyword
such as, NOT, GLOB, LIKE, or REGEXP, or any comparison or logical operator. The
tool wraps the text within single quotes ('') when the focus is out of the filter field.
If the tool detects Tcl-escaped text, that is, text within braces ({}) or double braces
({{}}), it replaces the braces with single quotes. For example, {\\\{\{core_i\}\}\ } results
in '\{{core_i}} '. Consequently, if you want to input text that is enclosed within braces,
wrap it with single quotes. Wildcard matching does not work within an escaped Verilog
identifier.
By default, wildcard matching is case-insensitive. However, you can also specify the
“Case sensitive filtering” option for wildcard matching. You can set this option in the
global Tessent Visualizer Preferences dialog box. All the string literals specified with
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tables
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tables
Note
In this filter, the keyword “REGEXP” and the single quotation marks are required.
You can make a filter for a hierarchical data structure “sticky” with the Columns and Filters
Editor as shown in Figure 12-5. Select the checkbox to enable the sticky behavior for the
corresponding column. If the sticky behavior is enabled, a filter defined for one hierarchy level
is applied for all other hierarchy levels. If it is not enabled, the filter applies only to the
hierarchical level where it is defined.
The sticky filter is also marked in the Hierarchical and ICL Instance Browser with a plus sign
(+) on the standard filter icon as shown in Figure 12-6.
This feature is only available for the Instance Browser and ICL Instance Browser’s child
instance tables displaying hierarchical data.
Table 12-1. Filtering Summary
Filter Type Filter Format Examples
Exact match value abc
=value =xyz
=12
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tables
Note
Filters applied to table columns are processed in Tessent Shell on the complete data model,
no matter how many resulting rows appear in the Tessent Visualizer tabular reports.
Data Sorting
The default order of rows in tabular data is determined by the underlying data structure in
Tessent Shell. In some tables, you can sort this data by clicking the column title cell. The
ordering cycles through each of ascending, descending, and the default ordering.
Data sorting is enabled when the number of rows loaded is less than the limit (250 by default,
but configurable in the Preferences menu). Exceptions: sorting is always enabled in the
following cases:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tables
Tip
For better performance, limit the set of visible data with filtering before using the sorting
function.
Related Topics
Tessent Visualizer Preferences
Row Highlighting
Tables in Tessent Visualizer use color coding to indicate the status of rows.
Figure 12-7. Selection Colors
Use Shift+click to select multiple adjacent objects in a table and Ctrl+click to select multiple
nonadjacent objects.
You can also use a Boolean value in the “Displayed” column for easy filtering of objects
displayed in a schematic.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Schematics
Tessent Visualizer schematics contain features that enable you to inspect and navigate your
design.
The figure in the “Toolbar” section shows a Flat Schematic with the following GUI objects
highlighted:
• Toolbar — Controls how objects are displayed in the schematic and export schematic
objects for use by other tools.
• Address Bar — Displays the name of the currently selected object. You can also use
the address bar to add new objects to the schematic by name.
• Selection Buttons for Context Table — Select which context table you want to
display.
Figure 12-8 illustrates some additional schematic common features:
• Attributes Table for the Selected Object — Displays information about the currently
selected object. The specific types of data in this table depend on the object selected.
• Overview Pane — Shows all objects that have been added to the schematic. The
currently zoomed view is highlighted. Drag and drop the highlight rectangle to pan the
view.
• Pin Table — Displays information about the pins on the currently selected object.
Many objects can be transferred from one schematic to another by dragging and dropping or by
right-clicking and using the context menu. Any highlighting on these objects is preserved when
they appear in the target schematic. If you transfer an object into a schematic where it already
exists, any highlighting on the new copy of the object will override any highlighting on the
previous one. If you transfer multiple objects that include connectivity obtained with signal
tracing from the Flat Schematic to the Hierarchical Schematic, or from the IJTAG Network
viewer to the ICL Schematic, that connectivity is preserved if you choose “Transfer
connectivity” from the schematic settings menu. This option is enabled by default.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
Schematic Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858
Context Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870
Signal Net Tracing Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880
Context Menu Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883
Displayed Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883
Tessent Shell Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
Mouse Gestures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885
Toolbar
There is a toolbar at the top of each Tessent Visualizer schematic.
Figure 12-9 shows the location of the schematic toolbar.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Figure 12-9. Schematic Elements: Toolbar, Address Bar, and Selection Buttons
Zoom in.
Zoom out.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Delete unselected: delete all objects from the schematic view except those
currently selected. There are two exceptions:
• If a selected object is an instance that has some pins displayed, those pins
are not deleted.
• If the selected objects are pins that are connected with a net, that net
connection is not deleted.
Delete all: delete all objects from the schematic view.
Note
When a dofile generated with the Export schematic action is run in a future session, the
displayed schematic is re-created as closely as possible. In rare circumstances, some objects
may not be displayed or connected exactly as in the original schematic.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Schematic Symbols
Tessent Visualizer schematics use a variety of conventional symbols to present the structure,
objects, and connections of a design.
Object Types in Schematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858
Markers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864
Buffer and Inverter Collapsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867
Folding and Unfolding Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
Instances
Instances are individual copies of library cells, primitives, or groups of cells connected by nets
to form hierarchical instances. Both the Hierarchical Schematic and Flat Schematic tabs can
contain instances of library cells and primitives, which display as conventional logic symbols
(such as NAND, NOR, and MUX). Library cells display as rectangles in the Hierarchical
Schematic tab, but you can see their functional representation in the Flat Schematic tab.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Note
The ordering of pins on displayed instances matches the ordering as provided by
report_gates.
Hierarchical Instances
Tessent Visualizer schematics show groupings of symbols by enclosing them in rectangles,
objects called hierarchical instances. Hierarchical instances include their pins. All instances
except those at the leaf level display with both the internal and external connections to those
pins.
Figure 12-11 depicts an instance in the Hierarchical Schematic tab. Callouts convey
information about specific design objects in certain contexts, and the schematic shows
simulation data on design pins where appropriate.
Use the right mouse button as shown in Figure 12-12 to show the internal connectivity of a
selected hierarchical instance. If the number of objects at the selected instance’s interface is
large, this option is not available. In this case, use context tables to selectively add instances and
connections to the schematic.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Figure 12-13 shows an instance in the Hierarchical Schematic tab with a red callout symbol.
Hover the mouse pointer over the symbol to show the number of DRC violations, and click the
symbol to display a table of those violations.
Hierarchical cells (HCells, defined by `celldefine and `endcelldefine in Verilog) are depicted
with a slightly lighter gray color than the library cells. You can view objects inside hierarchical
cells, but these are not annotated with gate data from the flat model.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
assign y = a;
endmodule
Black-Boxed Instances
A black-boxed instance is an instance with no defined model that you create with the
add_black_boxes command.
Figure 12-16 shows how the add_black_boxes command creates a blackbox from the dr_mux_i
instance within the tap_i module. The instance then becomes a BB type and displays as a solid
gray rectangle in the Hierarchical Schematic tab.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
The flattening process creates primary inputs and outputs, as well as bus instances necessary for
modeling bidirectional pins and ports. In addition, there are instances that tie a net to a fixed
value.
User-defined cells display as rectangles with a solid fill. User-added ports display with an
orange fill.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Figure 12-18 shows a persistent buffer symbol in the Flat Schematic tab. The same buffer
would look like Figure 12-15 in the Hierarchical Schematic tab because you typically
implement persistent buffers using an “assign” statement.
Callout Messages
Callouts are informational messages that display on a schematic, as shown in Figure 12-11 on
page 859. You can add callouts to any instance, pin, or net object that exists on the schematic
using the add_schematic_callout command.
Callouts can also display in a collapsed format, as shown as “collapsed callouts” in Table 12-3
on page 864. The table describes how to view the text of a collapsed callout. Use the “Collapse
callouts” button as described in Table 12-2 on page 856 to collapse all callouts. Use Ctrl+left
mouse button to drag and drop individual callouts.
Nets
Single nets display as thin green lines, and bus nets display as thicker green lines. When a bus
net branches to a single net, the bus index displays when the mouse pointer is hovered over the
triangular rip point symbol, as shown in Figure 12-19.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Markers
Tessent Visualizer uses marker symbols in schematics to indicate additional properties of the
elements shown. Some, such as trace markers and buffer-collapsing markers, have actions
associated with them.
Table 12-3 lists a summary of marker symbols used in Tessent Visualizer schematics, and
whether they are displayed in flat schematics (F), hierarchical schematics (H), ICL schematics
(I), or the IJTAG Network Viewer (N).
Table 12-3. Marker Symbols
Symbol Type Description
H,F Green diamond: pin with single connection available to display.
Click to display unambiguous connection from this pin.
H,F Orange diamond: pin with multiple connections available to display.
Click to open the Tracer table and select the tracing destination.
H Blue diamond: ambiguous bidirectional pin. When all drivers and
drains of the port are visible, the color changes to green or orange, as
appropriate. Click to open the Tracer table and select the tracing
direction and destination.
H Half-filled diamond (green): single connection left on bus.
Remainder of displayed pins tied or unconnected. Click to open the
Pins context table to show the tie values on all bus pins.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
H,I Circle with 0/1/X/Z (green): tied to 0/1/X/Z. When shown on a bus
port, click to open the Pins context table to show the tie values on all
bus pins.
H,I Circle with “a”: ambiguous tie values (mix of some or all of 0/1/X/Z)
on bus. Click to open the Pins context table to show the tie values on
all bus pins.
H,F,I,N Diamond with “+”: collapsed buffers and inverters. Click this
symbol to expand.
• Green: no hidden fanout.
• Orange: fanout within collapsed region.
H,F,I,N Diamond with “-”: expanded buffers and inverters. Click this symbol
to collapse.
• Green: no fanout in collapsible region.
• Orange: collapsing hides potential fanout.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Orange indicates that there is additional fanout hidden by the buffer/inverter collapsing, as
shown in Figure 12-22 and Figure 12-23:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Additional objects appear after adding the fanouts to the schematic, and the color of the markers
changes to green as shown in Figure 12-24:
Note
Only buffers and inverters added implicitly to the schematic as a result of tracing are
collapsible. These are identified with a gradient fill. Buffers and inverters added explicitly
by name or gate ID are not collapsible and are identified with a solid fill.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Context Tables
Schematics include tables to display information about the objects in the schematic. The tables
take different forms depending on the current selection in the schematic.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Context tables are interactive. They display information, but you also use them to select and
manipulate objects in the schematic. The following example shows a context table listing the
data for a selected instance.
Tracer
The context table for the tracing function provides information about the objects available to the
tracing process.
When you trace from an ambiguous point (orange trace marker) or click the Tracer button next
to the address bar when a pin is selected, the tracer context table opens. Use this table to add the
next object in the tracing path to the schematic by double-clicking the appropriate row in the
table. You can select the tracing direction and strategy, as described in “Signal Net Tracing
Strategies” on page 880.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
You can select an instance in the Hierarchical Schematic tab or Flat Schematic tab and click
the Pins button or the Gate Pins button near the address bar, respectively, to view information
about the pins belonging to that instance.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Select an instance in the Hierarchical Schematic tab and click the Instances button near the
address bar to view information about the child instances.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Select an instance in the Hierarchical Schematic tab and click the Nets button near the address
bar to list the nets one level below that instance.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
The green dashed line in the following figure representing the original fanout net shows that this
replacement is complete, and that there is only one user-added primary input associated with
this fanout. The red scissors symbol indicates that a pseudo-port now drives that fanout.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Figure 12-34 shows the same MUX in the Flat Schematic, as well as the user-added primary
input. The primary input is added to the schematic when you click the green scissors symbol on
the MUX output.
Figure 12-35 shows a Hierarchical Schematic view of the same clock MUX, but in this case it
has had all of its fanout replaced by multiple user-added primary inputs. The orange dashed line
representing the original fanout net shows that this replacement is complete, and that there is
more than one user-added primary input associated with this fanout. The red scissors symbols
indicate that pseudo-ports now drive that fanout.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Figure 12-36 shows the same MUX in the Flat Schematic, as well as the user-added primary
inputs. The primary inputs are added to the schematic when you click the orange scissors
symbol.
Clicking the orange scissors symbol displays the context table for the user-added primary
inputs, and double-clicking a row displays the flat sink.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Use the following commands to add primary inputs. These are indicated by the red scissors
symbol in the Hierarchical Schematic tab.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
As a result, the original fanout of the pi1 pin was disconnected, as indicated by the dashed line.
Figure 12-39 shows the pi1 pin in the Flat Schematic. The circle with the red “X” shows that it
is disconnected, and the orange scissors symbol indicates that its original fanout is now driven
by multiple user-added primary inputs. Click the orange scissors symbol to display the context
table listing the flat sinks, 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.
Tessent Visualizer
Schematics
Figure 12-39. Netlist Driver and Context Table for User-Added Primary Inputs
Figure 12-40 shows the user-added primary inputs in the Flat Schematic. The orange fill
indicates that these are user-added, and the green scissors symbol indicates that they have a
single original driver. Clicking the scissors symbol shows the driver.
Related Topics
Markers
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
For the green trace markers, the following tracing strategies are available in the schematics:
You can continue tracing from the decision point by double-clicking one of the paths in the
table.
For additional information about tracing buses, see “Buses” on page 895.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Figure 12-43 shows the result of a trace using the Decision Point strategy. Pin A1 on the AND
gate has been traced back through the inverter to the MUX, which is the first logic decision
point.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
• Trace backward — The tool activates this action if at least one input or bidirectional
pin is selected. This option enables you to trace backward to the immediately preceding
decision point from the selected pin, bus, or instance objects. If you trace from an
instance object in the schematic, the tool performs the tracing from all the input pins of
the schematic.
• Trace pins — The tool activates this action if you select exactly two pins, ports, or bus
pins. The tool tries to connect the selected pins on the schematic. If the tool cannot find
a connection between the specified pins, it displays a corresponding message.
Displayed Property
All objects in Tessent Visualizer have a property called “displayed.”
The “displayed” property of an object refers to the corresponding schematic for the object, and
indicates whether that object is added to the schematic. The context of being displayed is
important for pin buses because all tracer actions are run for parts of the bus being added to the
schematic. By default, the “displayed” property is indicated in tables by a distinct background
color for a row, and can also be added as a column in those tables.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
By default, only those attributes with non-default values, or that were registered with the
“-show_default” option, are shown. You can use the Show all checkbox to show all attributes,
including those with default values.
You can double-click a cell or use the right mouse button context menu in the GUI column to
select a color in the GUI marking index and show a corresponding marker near schematic
objects that have that attribute set to a non-default value. Hover the mouse pointer over that
marker in the schematic as shown in Figure 12-44 to show a tooltip with the attribute name and
value.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
Note
The circles in the GUI column correspond to the integer GUI marking indices from the
“set_attribute_options -gui_marking_index” command. You can use “> 0” or “!=0” in the
filter field of this column to search for attributes with this property set.
Note
For Boolean attributes, the marker is only shown if the value is set to “true.”
An empty circle in the GUI column indicates that the attribute is set to the default value. A
corresponding marker is not displayed in the schematic window in this case. A half-filled circle
applies to buses only and indicates that not all of the pins composing the bus have the relevant
attribute set to nondefault values. Additionally, the “Value” column indicates “<multiple
values>” for buses where the values for this attribute of separate pins are not consistent.
Mouse Gestures
Zoom in or out within schematics using the left mouse button.
Figure 12-45 summarizes the four mouse gestures (stroke commands) available to perform a
zoom.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Schematics
You can also zoom in and out using the scroll wheel of your mouse.
• Shift-click and drag with the left mouse button: area select.
• Click and drag with the scroll wheel: pan the view.
Customize the mapping of mouse gestures to specific mouse buttons and keyboard modifiers in
the Preferences dialog box. See “Tessent Visualizer Preferences” on page 887.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tessent Visualizer Preferences
• Schematics
• Tables
• Text viewers
• Other
Use the Schematics tab to define how schematics look and operate. Set maximum lengths for
names, set the width of net representations, redefine how the mouse works when interacting
with schematics, and choose the color theme.
There are three predefined color themes available in Tessent Visualizer schematics: light, dark,
and high-contrast. Set the color scheme with the Preferences dialog box.
Use the Tables tab to set the maximum number of rows loaded in tables and to show line
numbers in tables.
Use the Text viewers tab to set the font size and line-wrapping policy in the Text Viewer. You
can also configure the maximum number of lines displayed in the text viewer, the default being
20,000. You can use the Text viewers tab to define an external text editor that can be launched
from the Text/HDL Viewer tab. Choose from several common text editors, or define your own
preferred one. Use the variables “%l” (line number) and “%f” (filename) as arguments to the
text editor executable. For example, this text editor definition opens the file currently in the
Text/HDL Viewer tab in the Gedit editor with the cursor positioned at the current line:
/usr/bin/gedit +%l %f
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Macros
Note
Tessent Visualizer invokes whichever executable you specify as the external text editor.
Ensure that valid and working options are set here.
Macros
You can define a macro for any script or command that you can run in the Tessent Shell
environment.
Open the Macros menu to define or run custom macros. You can use the Macro Editor dialog
box to create new macros or modify existing macros. Figure 12-48 shows the Macro Editor with
two simple macros defined. With the Macro Editor, you can do the following:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tooltips
The following example shows the macros menu after creating the “report myType” macro in the
editor. In this example, the macro runs the report_gates command with the -type option and the
predefined variable shown in Figure 12-48 above.
You can define a keyboard shortcut, for example, Shift+R, for a new macro. You can run the
macro directly from the macros menu, or from the keyboard using that shortcut. If you attempt
to record a keyboard shortcut for a macro using an existing shortcut, an error message is
reported.
Tooltips
Many Tessent Visualizer features have associated tooltips, which are informational text popups
that appear when you hover the mouse pointer over a graphical element such as an object, filter
box, or button.
Figure 12-50, Figure 12-51, and Figure 12-52 show examples of tooltips for several Tessent
Visualizer features.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Saving and Restoring the Session State
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Window Title Prefixes
instance highlighting persist in memory until the Tessent Visualizer server is closed. For
example, if you close a Tessent Visualizer client and later start a new client connected to the
same server, the session is displayed as you left it.
You can save and restore specific configurations with Settings > Export configuration and
Settings > Import configuration. You can also start Tessent Visualizer with a specific
configuration using -import_configuration option of the open_visualizer with either the
open_visualizer command or tessent -visualizer invocation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Window Title Prefixes
The standard window table is prepended with the string you set, as shown in Figure 12-54. In
addition, “Tessent Visualizer” is added to the window title as a suffix:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Tessent Visualizer GUI Reference
Hierarchical Schematic
This section describes features available only in the Hierarchical Schematic tab. The
Hierarchical Schematic shows a representation of the design before design flattening. Use this
feature to explore the structure of your design and the relationships between the elements
making up the design.
Note
“Schematics” on page 854 describes schematic features common to both the Hierarchical
Schematic and the Flat Schematic.
You can use the tools available from the Toolbar, or you can use the context menu to do the
following:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Hierarchical Schematic
• Show the HDL instantiation for the selected object in the Text/HDL Viewer.
• Show all pins, or hide unconnected pins, on the selected instance (as shown in
Figure 12-55).
• Show the internal connectivity of a hierarchical instance.
• Show an instance as parent in the Instance Browser.
• Delete all selected objects from the schematic.
• Delete all unselected objects from the schematic.
• Trace backward, or trace between two selected pins or bus pins.
• Report gates on selected pins.
• Copy the post-synthesis names of selected objects to the system clipboard.
• Copy the active names of selected objects to the system clipboard. Active names are
compatible with Tessent introspection commands.
Figure 12-55. Hierarchical Instances With Pins Shown and Hidden
Note
The menu items Show HDL definition and Show HDL instantiation are available only
when the Tessent Shell context is set to “dft -rtl.” The Show HDL definition menu item is
available for library cells in all contexts when the library cell file is available.
Note
By default, all pins are initially shown on an instance when it is added to the Hierarchical
Schematic if the total number of single pins and bus ports is 16 or fewer.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Hierarchical Schematic
Design hierarchy is shown with rectangles surrounding the objects in a design instance, and
library cells are shown without rectangles and filled with gray. The leaf-level instance names
are displayed above each instance, and the module or cell names are displayed below them.
Buses
The Hierarchical Schematic can display either complete or partial buses, using the following
naming conventions:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Hierarchical Schematic
You can add or remove bus pins in the display from any table that lists hierarchical pins, such as
the Pins table in the Instance Browser or the Pins context table at the bottom of the Hierarchical
Schematic.
You can also add bus pins with the following procedure:
1. Select the instance in the Hierarchical Schematic. The instance name is displayed in the
address bar (see Figure 12-9 on page 856).
2. Append text to the instance name to add the bus pins. For a single pin, include the pin
index (for example, "data[3]" in "mytop/parent_module/this_instance/data[3]"). To
designate the complete bus, use the "*" wildcard character (for example, "data*").
3. Press Enter. The address bar shows both the pins and the nets. Click the pins line. The
pins are added to the instance in the schematic.
The display of bus pins affects the operation of the tracing function, because the tracer starts
from displayed bus pins. Add individual pins for tracing to the Hierarchical Schematic, or apply
filtering in the tracer table for the pins of interest.
Tessent Visualizer uses several naming and symbol conventions for buses in schematic
windows. See Figure 12-57 for examples.
Item Description
Bus-to-scalar connection with rip index (“0” in this case) shown with
mouse pointer hover over rip symbol.
Generated name for a partial bus (two bits of a three-bit bus in this
case).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Hierarchical Schematic
Item Description
Orange diamond representing multiple paths not shown from this bus
pin.
Generated name of a partial bus with a single bit displayed (bit index
2, in this case).
Buses can be split into sub-ranges as shown in Figure 12-58. In this case, ten bits of the 31-bit
output bus from instance s1 are merged with all ten bits of the output buses from instances s2
and s3 to form the 30-bit merged_out_bus.
Bus rip indices can also be shown directly on the hierarchical schematic by choosing this feature
from the options menu.
Note
This schematic does not indicate which ten bits of the output bus from s1 are connected. Use
the Tracer table to determine connectivity.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Hierarchical Schematic
To show all bus pins when only a subset is displayed, select one or more bus pins and right-click
to access the Show all pins item from the context menu:
If the width of the bus is greater than 256 bits, this feature is disabled. To show all pins in this
case, use the Pins Table.
Loopbacks
Loopbacks defined with add_loadboard_loopback_pairs are indicated on the Hierarchical
Schematic as shown in Figure 12-60. All indicators such as trace markers, the tracer table, and
net visualization are available on primary inputs and outputs with these connections.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Hierarchical Schematic
Other Symbols
Additional marker symbols indicate other hierarchical schematic features, such as tied-value
indicators. A tied-value indicator is displayed when a net is tied to a logic value or an unknown.
See Figure 12-61 for an example, and Table 12-3 on page 864.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Flat Schematic
Flat Schematic
The Flat Schematic shows a representation of the design after design flattening. Use the Flat
Schematic to analyze and debug issues when the details required for analysis are not available in
the Hierarchical Schematic. For example, simulation data and functional representations of
hierarchical and library cells are available in the Flat Schematic.
Library and hierarchical cells in the design appear in the Flat Schematic as gates. Cells that
consist of a single gate are displayed with the conventional symbols for those gates.
Figure 12-62 shows cells that consist of multiple gates, displayed either with or without a
bounding box showing the grouping. You can control this display option using the “Cell
grouping” checkbox in the Options menu available from the toolbar.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Flat Schematic
You can right-click the dashed-line bounding box and use the context menu to delete the
instance from the Flat Schematic, show it in the Hierarchical Schematic, or show all gates
within the grouping.
Note
In a library cell bounding box, a NAND function that has at least one (but not all) inputs
inverted is displayed as an OR symbol. A NOR function that has at least one (but not all)
inputs inverted is displayed as an AND symbol.
Note
When cell grouping is turned on, instances shown on the schematic are identified by their
module or primitive names (below the symbol) and leaf-level cell library names (above the
symbol). When it is turned off, they are identified by their module/primitive names and their
gate IDs from the flat model.
Many features of the Flat Schematic are similar to those in the Hierarchical Schematic.
However, one difference is that you cannot control the display of pins on most instances, with
the exception of RAM and ROM instances. You can add or remove pins for these instances by
using the popup menu or by dragging and dropping from the pins table.
Pin names on instances appear in quotation marks when the pin is not part of the design
hierarchy.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
ICL Schematic
ICL Schematic
The Tessent Visualizer ICL Schematic is similar to the standard Tessent Visualizer Hierarchical
Schematic, including a main schematic window, a small overview window, and an attributes
table for selected instances. There are, however, several differences and additional features.
Context Tables
In addition to the Tracer, Pins, and Instances context tables, the ICL Schematic includes two
additional context tables:
• Scan Interfaces — Shows the same information for selected instances as the Scan
Interfaces table in the ICL Instance Browser does.
• Aliases — Shows aliases that reference the selected pin or instance.
Instances and pins referenced by aliases are marked on the ICL Schematic with an orange or
blue port symbol, as shown in Figure 12-63. As with the Hierarchical and Flat Schematics,
objects can be cross-referenced to their text definitions from the ICL Schematic, as shown in the
figure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
ICL Schematic
In addition to the options also available in the Hierarchical Schematic options menu, the ICL
Schematic options menu includes options specific to ICL.
The “Show simulation values” option annotates the ICL Schematic object’s pins with their
simulation data. The tool displays a 0 or 1 to indicate the current ICL simulator value. The tool
encloses the 0 and 1 bits within parentheses (“()”) to indicate that these bits are part of a
symbolic variable and their values are patchable at run time. See Retargeted Symbolic Variables
in the “Tessent IJTAG User’s Manual” for more information.
The tool displays a question mark (“?”) to indicate that the ICL simulator value is not relevant
and that the tool has deferred determining the value until it is needed. The value may be
determined by the IJTAG retargeter after an iApply command when it must be determined to
fulfill the current iApply targets. The remaining unknown values are resolved when the
close_pattern_set command finalizes the pattern.
The tool displays the value as an “A” for automatically determined signals. The tool considers
these signals to be always correct. See Figure 12-64 for an example of automatically determined
signal values on the TAP’s FSM module.
The “Highlight scan path” option displays the Highlight Scan Path toolbar. Refer to “IJTAG
Network Viewer” on page 927 for complete information on this toolbar. Select the “Show scan
pins by default” option to display scan in and scan out ports on instances, or the “Show SSN
pins by default” option to display the SSN pins on the instances. This enables you to easily trace
the scan path or SSN datapath.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
ICL Schematic
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
ICL Schematic
The tool displays a tan square marker on a hierarchical pin on the inside of a block to indicate
that every element in the block normally required to be connected to the indicated pin is
implicitly connected to the signal associated with that pin.
ICL Definition
Choose “Show ICL definition” on the right mouse button menu to display an instance’s
definition in the Text/HDL Viewer. Keywords are highlighted in color.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
ICL Schematic
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Instance Browser
Choose between “network end state” and “last used” in the “Highlight” menu.
Loopbacks
The tool displays loopbacks created with add_loadboard_loopback_pairs on the ICL Schematic.
See “Hierarchical Schematic” on page 893 for complete information.
Instance Browser
Use the Instance Browser to navigate your design and obtain reports about its elements. It is
analogous to a file browser.
The Instance Browser consists of four major elements:
• Tree View — A pane that shows the instances in your design hierarchy directly. Click
the pane header repeatedly to sort the tree in ascending alphabetical, descending
alphabetical, and default ordering.
• Child Instances table — A pane that displays information about the children of the
instance currently selected in the tree view or the Address Bar.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Instance Browser
• Address Bar — A text field that shows the instance currently selected in the tree view
and the parent instance for instances displayed in the Child Instances table. Type an
instance name in this field to select an instance without using the Tree View or Child
Instances table.
• Pins and DRC Violations tables — A table that lists the pins or DRC violations for the
instance(s) currently selected in the Child Instances table.
Note
For huge designs, it may be more efficient to select an instance and then use the filtering
functions in the Child Instances table to find objects and explore the hierarchy from the
search results.
Click an instance in the tree view to display that instance’s contents in the Child Instances table.
Double-clicking an instance in the tree view expands the node in the tree. First, the node is
selected, and it becomes the parent instance. If the double-clicked node is different than the one
previously selected, the Child Instances table is reloaded with the children of the new parent.
Select an instance of any type in the Child Instances table to display its pins or DRC violations
in the appropriate context table. Double-click, or use the Enter key, to open the next level of
hierarchy (if any) in the Child Instances table. Press the Backspace key to navigate up one level
of hierarchy.
Show instances of cells or modules in the Hierarchical Schematic, the Flat Schematic, or the
Text/HDL Viewer by right-clicking the cell or module in the tree view or Child Instances table
and choosing the appropriate option from the popup menu. Add a pin to the pin data table by
right-clicking the pin in the Pin Information table and choosing the Add to Pin Data menu
item.
Copy the active or post-synthesis name of an instance to the system clipboard by right-clicking
the name in the tree view and choosing the appropriate option from the popup menu. Active
names are compatible with Tessent introspection commands; post-synthesis names are not.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Instance Browser
The Child Instances table and Pin/DRC Violations table include toolbars that provide the
common controls described in “Tables” on page 845, as well as buttons you can use to switch
between pin information and DRC violations in the table. The Child Instances table has a
Hierarchy-Up button to navigate to the parent of the currently selected instance. In addition,
the Child Instances table has a gear icon for additional Options. If you click the gear icon, a
dropdown list with options displays (See Figure 12-71 on page 910). If you select the “Enable
cell grouping” checkbox, the tool enables cell grouping and groups all the library cells at the
current hierarchy level into a single new node. The tool creates this new node with the instance
type “LibraryCells”. The fault statistics for all the cells in the current library are collected under
this node. If you select the “Exclude unlisted faults” checkbox, the tool runs the report_statistics
command with the -hierarchy and -exclude_unlisted_faults switches to calculate coverage
statistics.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Instance Browser
Note
The tool provides cell grouping only for the Hierarchical Instance Browser.
To debug directly in the instance browser, use the sorting and filtering functions as shown in
Figure 12-72 to investigate faults and design rule violations, and to discover instances with
problematic coverage statistics. In this example, the “test coverage loss” and “total DRC
violations” columns have been added and sorted, and a significant problem can be seen in the
U_3 instance.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
ICL Instance Browser
ICL Instances
You can examine several types of ICL objects in the ICL Instance Browser:
• Instance
• ScanMux
• DataMux
• ClockMux
• ScanRegister
• DataRegister
• LogicSignal
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Wave Generator
• OneHotDataGroup
• OneHotScanGroup
• Primitive
See “Instrument Connectivity Language” in the Tessent Shell Reference Manual for information
on these and other ICL objects.
• Show ICL definition — Similar to the Show HDL definition action in the hierarchical
design Instance Browser. Displays the ICL object’s definition in the Text/HDL Viewer.
• Show on ICL Schematic — Similar to the Show on Hierarchical Schematic action in
the hierarchical design Instance Browser. Displays the ICL object on the ICL Schematic.
• Show on Hierarchical Schematic — Displays the hierarchical design object associated
with the ICL object in the Hierarchical Schematic, if a mapping from the ICL object to a
hierarchical design object exists.
• Copy name(s) — Copies the name of the selected ICL object to the system clipboard.
Context Tables
The ICL Instance Browser includes two context tables: one for the ICL instance pins, and
another for the ICL scan interfaces. These interactive tables display information about the ICL
objects. You can use these tables to select and manipulate these objects. Use the Columns and
Filters editor to control the information that is displayed in these tables.
Wave Generator
Use the Wave Generator to export data for selected pins to value change dump (VCD) files or to
view their waveforms.
Open the Wave Generator by right-clicking pins on a hierarchical or flat schematic and
choosing Add to Wave Generator. You can also add pins to the Wave Generator from search
tabs, the Instance Browser, or from context tables showing pins or gate pins.
You can also open the Wave Generator by using the add_wave_generator_pins command or
directly from the main window dropdown menu.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Wave Generator
Choose the Test Setup or Test End procedure, and, if required, export the waveform data to a
VCD file or a dofile from the Wave Generator toolbar. You can open the VCD file using any
supported waveform viewer. If the Test Setup or Test End procedure is not loaded into Tessent
Shell, an error message is displayed.
Run an exported dofile with the “dofile” or “source” command to restore the currently displayed
pins to the Wave Generator.
Use the Options menu (gear icon) of the Wave Generator toolbar to set up an external waveform
viewer. By default, the tool searches for the open-source GTKWave tool in the PATH
environment variable. If the tool cannot find the GTKWave tool in PATH, use the “External
wave viewer” dialog box to set the default GTKWave tool path. Alternatively, you can specify
the path to the Questa Visualizer wave viewer (VisWave). To use a Questa Visualizer version
older than 2022.2, you must select the “VisWave < 2022.2” option in the External wave viewer
dialog box.
The following figure shows the supported options in the External wave viewer dialog box:
To control the ordering of the waveforms in the waveform viewer from the Waveform
Generator, check the Update viewer automatically box. When you drag-and-drop the pin
names in the Waveform Generator, the ordering in the waveform viewer changes accordingly. If
you delete a pin from the Wave Generator, that pin is also deleted from the waveform viewer.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Wave Generator
You can right-click a selected set of pin names in the Wave Generator table and choose Copy
names(s) from the context menu. This action creates a Tcl list in the system clipboard that can
be pasted elsewhere, such as into a script or to the Tessent Shell command line.
Note
GTKWave is an open-source third-party application. You should install the GTKWave
binary package from a native Red Hat or SUSE Linux distribution repository. You must
configure custom GTKWave installations (those built from sources) with the Tcl interpreter
enabled to communicate with Tessent Visualizer. You can verify this requirement by issuing the
gtkwave -W command.
You can also delete pins from the Wave Generator with the delete_wave_generator_pins
command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Cell Library Browser
Related Topics
add_wave_generator_pins
delete_wave_generator_pins
• Left Pane — Lists the available cell libraries. This pane can include data such as the
module name, statistics including the number of instances in the design, and fault
coverage.
• Right Pane — Shows the instantiations of those library cells in the design. You can add
columns to display data such as the attributes of those instantiations, the hierarchical
name, the parent module, and fault information.
Figure 12-76. Cell Library Browser
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
DRC Browser
Click in a row in the left pane to show the instantiation information for that cell type in the right
pane. Right-click an instance name in the table in the right pane to get access to all actions
available for hierarchical instances.
DRC Browser
The DRC Browser is a tabular reporting tool for exploring the rule violations in your design and
ICL data models. Customize the browser to group and filter DRC violations by various criteria.
The DRC Browser consists of two panes. The left pane enables you to group the violation list by
rule name (the default), instance, or module.
The right pane shows specific information about the violations associated with the rule,
instance, or module selected in the left pane, such as:
• Violation name
• Description of the violation
• Indication of whether the violation is visualizable
If nothing is selected in the left grouping table, the right table displays all violations currently
registered in Tessent Shell.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
DRC Browser
If you group by instance or module, data for the violations in the selected instance or module is
displayed.
You can display the specifics for a visualizable rule violation in a schematic or the Text/HDL
Viewer by double-clicking a row in the right pane of the DRC Browser, or by right-clicking and
choosing the appropriate item from the popup menu. You cannot visualize all DRC violations.
Note
This method is equivalent to issuing the analyze_drc_violation command on the Tessent
Shell or Transcript command line.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
DRC Browser
You can view the results of analyzing many ICL DRC violations in Tessent Visualizer by
double-clicking them in the DRC Browser window or using analyze_drc_violation on the
command line.
• ICL68
• ICL76
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Config Data Browser
• ICL77
• ICL80
• ICL111
• ICL117-ICL119
• ICL134
• ICL140
Related Topics
analyze_drc_violation
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Config Data Browser
When you open the Config Data Browser with the Open menu action, no wrappers or tabs are
displayed unless a previous session was restored. Use the navigation bar in the top toolbar to
add new tabs with configuration trees. First, choose a partition from the Partition dropdown list
in the toolbar. Then, choose a wrapper by typing or pasting a hierarchical name in the
navigation bar. You can use tab completion while typing a wrapper name. If the wrapper has
already been loaded into the GUI, the existing tab is raised and the specified wrapper is selected.
If the wrapper has not yet been loaded into the GUI, a new tab is opened and the specified
wrapper is selected in the tree view.
Alternately, you can use the add_config_tab command to open a configuration tree in the
Config Data Browser.
The tree view pane enables you to browse wrappers in the configuration hierarchy, and the table
pane displays the properties for the currently selected wrappers. The property table includes
features common to other tabular views in Tessent Visualizer such as filtering and exporting.
Unspecified wrappers and properties with unspecified default values appear in gray text. User-
specified wrappers and properties appear in black text, unless there is an error. If an error is
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Config Data Browser
attached to a wrapper or property, the text appears in red, and the parent wrappers of the node
with the error appear in orange.
The “default” partition enables you to edit the configuration in the GUI. Right-click a property
and choose one of the options to edit it or copy its contents. You can also double-click a
property name or a value to open a popup to change the value. You can also use the context
menu on a wrapper to add data properties or repeatable properties to the wrapper, or to add new
wrappers above as parents or below as children of the wrapper, as shown in the following
figure.
Choose Set name(s) to change the names of named wrappers (ICLNetworkVerify is shown in
the figure). Other actions enable you to cut or copy and paste wrappers, delete wrappers, or
move wrappers to new positions. Use Specify and Unspecify with some wrapper types to mark
them as user-specified or to reset their properties to their default values, respectively.
The toolbar in the view pane for the wrapper tree includes several action buttons, as described in
the following table.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Config Data Browser
The tool stores a snapshot of the GUI configuration data for the root wrapper displayed in the
Config Data Browser. To save the current state of configuration, click and specify the
snapshot name in the dialog box that opens. The tool also automatically saves a snapshot of the
current configuration whenever you click Validate or Process/Execute. In this case, the tool
creates a concatenated name using the action performed and the outcome of the action, and
saves the configuration snapshot with this name.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Pin Data
The following figure demonstrates how the tool displays the current list of saved snapshots:
If you want to restore the GUI configuration to one saved previously, select the required
configuration from the dropdown list. The tool restores the Config Data Browser to the saved
configuration. The configuration you select becomes the latest saved configuration and moves
to the top of the dropdown list with its updated timestamp.
The tool can distinguish between the snapshots you save and the ones that are automatically
saved. If you try to save a snapshot of the current configuration and if the previously saved
configuration is the same, the tool updates the name and timestamp of the previously saved
snapshot and moves it to the top of the dropdown list.
The number of snapshots of each type per configuration tree is limited to 10. The tool removes
the oldest snapshot from the list once the limit is reached. The tool also deletes all saved
snapshots when the Tessent Visualizer session is closed (close_visualizer -server) or if the
specified root wrapper is removed.
Related Topics
add_config_tab
delete_config_tabs
process_dft_specification
process_patterns_specification
report_config_data
Tessent SiliconInsight User’s Manual for Tessent Shell
write_config_data
Pin Data
The Pin Data tab contains a tabular report of specified pins in your design. Use this report to
visualize gate report information in tabular form.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Transcript
Add selected pins to Pin Data by right-clicking the pins and choosing Add to Pin Data.
Related Topics
Using Tessent Visualizer to Debug Design Issues
Transcript
The Tessent Visualizer Transcript tab provides access to the Tessent Shell command line and a
record of commands used and responses to those commands.
Text in the Transcript is highlighted as shown in Figure 12-83:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Text/HDL Viewer
You can issue Tessent Shell commands directly from the Transcript, with the same features as
the standard Tessent Shell command line. (For example, command history using the up and
down arrow keys, command completion using the Tab key, and multi-line commands.)
Commands are syntactically highlighted as you type them.
Press Ctrl+Enter to enable multi-line command mode. The background color of the command
entry box changes to light blue to indicate that multi-line command mode is active. Use
Shift+Enter to insert a new line and the arrow keys to navigate over the multi-line command.
Multi-line commands can be recalled with the up-arrow and edited as shown in Figure 12-83
Text/HDL Viewer
The Text/HDL Viewer enables you to examine the HDL description of your design or cell
library. The text displayed in this window includes syntax highlighting, and can be copied to the
system clipboard for use elsewhere.
Open the Text/HDL Viewer by right-clicking objects in the Instance Browser, Cell Library
Browser, or a schematic and choosing Show HDL definition or Show HDL instantiation from
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Text/HDL Viewer
the popup menu. Figure 12-84 shows the Text/HDL Viewer for an object with the appropriate
line in the HDL highlighted where the definition or instantiation was found. These actions are
available on any hierarchical instance, including library cells, and any table that lists these
instances.
The files opened by the Text/HDL Viewer display on tabs at the bottom of the viewer. To open
the current file in an external text editor, right-click the tab and choose Open in external editor
from the popup menu. Use the Tessent Visualizer Preferences dialog box to specify the external
text editor.
To copy the file path of the current file to the system clipboard, right-click the tab and choose
Copy file path from the popup menu.
Note
When Tessent Shell is in the “dft -rtl” context, you can select a text object in the viewer and
display it in the Hierarchical Schematic. To do so, select a text fragment, right-click, and
choose Show on Hierarchical Schematic.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
IJTAG Network Viewer
The SIB tree in the left pane displays a hierarchical view of the SIB instances in the network.
Select an instance in the SIB tree and choose Show on IJTAG Network from the right-click
popup menu to display it in the schematic view. The IJTAG Network viewer also includes a
schematic overview (similar to the overview in the Flat and Hierarchical Schematics) and a
table of attributes for the selected instance in the right pane. The right pane is collapsed by
default. Expand it to see the schematic overview and the attributes table.
Select an instance in the IJTAG Network viewer and choose Show on ICL schematic from the
right-click context menu to display it in the ICL Schematic. You can also choose Trace to scan
input, Trace to scan output, and Trace backward from this menu. When you select an
instance, the IJTAG Network viewer also highlights the parent SIB of the selected instance in
the SIB tree.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
IJTAG Network Viewer
Select a “from_so” pin on a SIB instance in the IJTAG Network viewer. Right-click and choose
Expand SIB ring from the context menu to show the associated IJTAG nodes hosted by the
SIB. The tool traces scan paths from the “from_so” and “si” pins on the SIB to find the closest
common point and displays these scan paths with the IJTAG nodes that belong to those paths.
You can also trace to scan inputs and outputs by selecting an instance in the SIB tree and using
the right-click context menu.
Hover the mouse pointer over a mux symbol in the IJTAG Network viewer to display the select
values, as shown in Figure 12-86. The tool also displays the active mux input with “<“ on the
symbol.
Use the Options button ( ) in the toolbar to set options unique to the IJTAG Network:
• Collapse scan registers — Select this option to collapse the scan registers. This is
similar to “Collapse buffers/inverters” in the Hierarchical or Flat Schematics. See
“Buffer and Inverter Collapsing” in the Tessent Shell User’s Manual for further
information.
• Show simulation values — Select this option to display simulation values in the IJTAG
Network viewer. Hover the mouse pointer over the callout associated with a shift
register to view the simulation values, as shown in Figure 12-87.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
IJTAG Network Viewer
• Highlight scan path — Select this option to display the Highlight Scan Path toolbar as
shown in Figure 12-85 on page 927. Use this toolbar to select the current top interface
with its scan chain. This toolbar provides GUI access to the “set_icl_network
-top_client_interface” and “set_icl_network -current_scan_chain_number” commands,
which are available in the “patterns -silicon_insight” sub-context.
Choose a scan path highlighting type:
o last used — Highlights the scan path determined when the iApply command was
most recently run.
o network end state — Highlights the scan path determined when the
close_pattern_set command was run. If you have not run close_pattern_set, the scan
path is not highlighted. The highlighted path is an IJTAG data path. The value of the
“-network_end_state” switch for the close_pattern_set command affects the
highlighting of the scan path. See the Tessent Shell Reference Manual for details.
If the close_pattern_set command is run immediately after the iApply command and
without the -network_end_state switch (or with the default value of that switch), the
“network end state” choice behaves like the “last used” choice. An exception to this
is when the iApply affects only the instruction path.
Use the Show SI and Show SO buttons to show respectively the scan-in or scan-out port
of the currently selected scan interface.
When you highlight SIBs in the IJTAG Network Viewer directly or with the
add_schematic_objects -highlight options, the corresponding entry in the SIB tree is also
highlighted as shown in Figure 12-88.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
iProc Viewer
iProc Viewer
The Tessent Visualizer iProc Viewer is similar in form and function to the Tessent Visualizer
Text/HDL Viewer, with additional features.
Choose the ICL module and iProc from the table to the left of the viewer pane as shown in
Figure 12-89. To show iProcs in the viewer pane, select one or more rows in the table, right-
click, and choose Show in iProc Viewer. Alternately, drag the selected row or rows from the
table into the viewer pane.
The iProc Viewer features color syntax highlighting and a find function similar to the Text/HDL
Viewer.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Diagnosis Report Viewer
To display data about the iProc, hover the mouse pointer over its tab in the viewer as shown in
Figure 12-90.
If the filepath of the iProc is available, and the file is accessible on disk, you can right-click the
tab and open the iProc in an external editor.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Diagnosis Report Viewer
In text view mode (Figure 12-91), the diagnosis report opens in the window, annotated with
hypertext links for each design object affected. These links refer to the following:
• Symptoms
• Suspects
• Sub-suspects
• Pin and net objects associated with suspects
You can click a link to show the indicated object in the Hierarchical Schematic. Right-click to
display a popup menu for other actions available to examine these objects.
Figure 12-91 also illustrates text searching in the Diagnosis Report Viewer.
Figure 12-92 shows the three panes of the tabular layout for the diagnosis report. The left pane
is a list of the symptoms denoted with integer IDs. Select a symptom in this pane to display a list
of suspects in the right top table. Double-click an object in the table, or right-click and choose
Show on Hierarchical Schematic, to show it in the Hierarchical Schematic. If a suspect has
sub-suspects, the bottom table displays a list of sub-suspects.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Search Features
Search Features
From the main menu bar, open the Search menu to search for instances, pins, gate pins, or
specific ICL object types in your design. You can also search for iProcs or configuration
elements currently defined in the Tessent Shell session.
Instances
Figure 12-93 shows a search for all instances in the design with module names that begin with
the string “nor”.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Search Features
Pins
Figure 12-94 shows a search for all hierarchical pins with the string “mode” in the pin name.
Note
The search for pins in a large design can be time consuming because the tool searches across
all hierarchical instances and their pins.
Gate Pins
Figure 12-95 shows a search for flat pins (gate pins) that have a hierarchical pin with a leaf
name of “Q” below the bsr_i1 instance.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Search Features
You can select one or more rows in a filtered search table. Then, use the right-click popup menu
to show those objects in a schematic, add them to the pin data (pin searches), or show the HDL
definition (instance searches).
Note
The display properties for Search Instances and Search Pins are based on the Hierarchical
Schematic. The display properties for Search Gate Pins are based on the Flat Schematic.
You can search for ICL aliases in a similar fashion with Search > Search - ICL Aliases.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Search Features
See “Tessent Visualizer Components and Preferences” on page 844 for information about
interacting with these tables in Tessent Visualizer.
To view iProcs from the iProc Search window, select one or more rows, right-click them, and
choose “Show in iProc Viewer.” Alternately, drag and drop the rows into the iProc Viewer.
Config Properties
Use Search > Search - Config Properties to find a particular configuration property or
wrapper path in the currently loaded configuration. Scroll through the list of wrapper paths and
properties or use filtering to find the path and property of interest. Use the right-mouse-button
context menu as shown in the following figure to set the property value or to reset it to its
default value, to change the name of a named wrapper, or to show the wrapper path in the
Config Data Browser.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Using Tessent Visualizer to Debug Design Issues
Related Topics
iProc Viewer
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Using Tessent Visualizer to Debug Design Issues
Procedure
Perform any of the following actions:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Using Tessent Visualizer to Debug Design Issues
Results
Listing all state elements in the fanout of a pin: the Tracer table lists all the state elements and
the distance from the source in terms of number of pins in the traced path. The pin count for the
same traced path is higher in the Hierarchical Schematic than in the Flat Schematic because of
additional pins on hierarchical boundaries.
Adding pins to an instance in a hierarchical schematic: when you add an instance to a schematic
directly or by tracing to it, the schematic displays only the pins that have connections (except
for cases where there are very few pins in total). This feature simplifies the schematic to focus
on pins of interest, improving run time.
Examples
Searching for Pins by Name
The following figure shows a search for the “qai” bus, and subsequent selection of an element
of that bus, which is displayed in the hierarchical schematic. You can then trace the signal.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Using Tessent Visualizer to Debug Design Issues
Related Topics
Nearest State Element Tracing Strategy
Wave Generator
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Accessing Tutorials for Tessent Visualizer
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Accessing Videos for Tessent Visualizer
Part 1: Analyzing and Improving Test Coverage demonstrates how to analyze test coverage and
explore areas of the design that need coverage improvement:
Part 2: Troubleshooting Problems With Verilog Design Files shows how to troubleshoot a
problem with a Verilog design file, which includes the following operations:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Keyboard Shortcuts
Keyboard Shortcuts
A number of keyboard shortcuts are available for Tessent Visualizer.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Visualizer
Keyboard Shortcuts
Note
The Ctrl+G and Ctrl+Shift+G keyboard shortcuts are not supported in all desktop
environments.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 13
Timing Constraints (SDC)
This chapter describes the Synopsys Design Constraints (SDC) generated by Tessent Shell, and
how you use it to constrain the test mode of the Embedded Test hardware generated by the tool.
Generating and Using SDC for Tessent Shell Embedded Test IP. . . . . . . . . . . . . . . . . . 946
SDC File Generation With Tessent Shell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946
SDC Design Synthesis with Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
Preparation Step 1: Sourcing SDC File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
Preparation Step 2: Setting and Redefining Tessent Tcl Variables . . . . . . . . . . . . . . . . . . 948
Preparation Step 3: Verifying the Declaration of Functional Clocks . . . . . . . . . . . . . . . . . 950
Preparation Step 4: Redefining Other Tessent Tcl Variables . . . . . . . . . . . . . . . . . . . . . . . 951
Synthesis Step 1: Applying the SDC Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952
Synthesis Step 2: Preparing the DFT Logic for Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . 952
Synthesis Step 3: Synthesizing Your Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953
Synthesis Step 4: Writing Out Your Final SDC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953
Synthesis Step 5: Writing Out Your Final Netlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953
Running Layout with Tessent Shell DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953
SDC for Modal Static Timing Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959
Checking Your Functional Logic Alone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959
Checking Your Embedded Test Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960
VHDL and Mixed Language Designs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962
VHDL Generate Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962
SDC File Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964
tessent_set_default_variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964
tessent_create_functional_clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965
tessent_<design_name>_set_dft_signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965
<ltest_prefix>_disable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966
tessent_set_non_modal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967
tessent_<design_name>_kill_functional_paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967
IJTAG Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968
LOGICTEST Instruments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969
MemoryBIST Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983
BoundaryScan Instrument. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986
Hierarchical STA in Tessent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987
Mapping Procs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992
Synthesis Helper Procs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993
Example Scripts using Tessent Tool-Generated SDC . . . . . . . . . . . . . . . . . . . . . . . . . . . 995
Example Design Compiler Synthesis Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Generating and Using SDC for Tessent Shell Embedded Test IP
Then we show you how to adjust variables in the SDC file to match your particular synthesis
setup or requirements. There is no need however, to ever directly edit the generated SDC files.
Next, you see how to use the generated SDC file in a step-by-step example synthesis flow,
followed by additional notes on Static Timing Analysis (STA), mixed-language and VHDL
specific issues.
Key SDC procs are then explained. These procedures are used by Tessent instruments (like
MBIST or OCC) or maybe useful to use in your own synthesis scripts.
“Example Scripts using Tessent Tool-Generated SDC” on page 995 shows examples of using
and adjusting Tessent SDC files in third-party synthesis and STA environments.
Note: The SDC described in this manual is to be used in conjunction with your functional SDC
for the synthesis of your design after Tessent Shell RTL insertion and the static timing analysis
of your design after synthesis. The Tessent Shell gate insertion flow uses a different set of SDC
constraints during the run_synthesis command, but the generated SDC should still be used for
layout.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
SDC File Generation With Tessent Shell
The SDC file is located next to the extracted ICL, which is typically in the dft_inserted_designs
directory as follows:
${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
logictest-related instruments such as OCC, EDT, or LBIST, including logictest-related DFT
signals, are all grouped under similar placeholder “ltest” instrument procs.
There is no need to call each instrument’s individual SDC proc. Tessent Shell provides user
procs, which are customized to call all relevant SDC procs for your design.
If you encounter a problem with SDC generation preventing ICL extraction, you can
temporarily skip SDC generation by using the following command options:
extract_icl -skip_sdc_extraction
To regenerate your SDC file for a given design and to take advantage of changes in the SDC
constraints in a newer version that does not reflect a hardware change, you can extract the SDC
of your design without running ICL extraction by loading the design’s full view and running the
Tessent Shell extract_sdc command. You should load the interface view of all physical blocks
of your design. For example:
When it is time to use the SDC, locating your SDC file requires the following:
• Your latest TSDB location for the design you want to synthesize/analyze.
• Your design’s name.
• The design_id of the latest insertion pass of your design.
For example, if your design “myChip” used only a single TSDB directory, the default
“tsdb_outdir”, then your SDC files would be located in the following places:
Note
The latest SDC file is always a superset of the previous one. If you use a two-pass flow, you
only need to load the latest file.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
SDC Design Synthesis with Tessent Shell
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Preparation Step 2: Setting and Redefining Tessent Tcl Variables
Their definitions are contained in the proc tessent_set_default_variables. You must call this
procedure to set all Tessent variables to their design dependent default value. All other Tessent
SDC-related procs make use of these variables. This procedure call is mandatory:
tessent_set_default_variables
Tessent SDC variables can and should be redefined to better suit your setup and design. For
example, you can change the TCK period from the default of 100.0ns to any value by redefining
the variable tessent_tck_period.
Note
The value of tessent_tck_period might depend on the maximum tck clock frequency that can
be applied to the circuit. See the “IJTAG Network Performance Optimization” section in the
Tessent IJTAG User’s Manual showing how to maximize the frequency of the IJTAG network
test clock.
You do not need to edit the Tessent Shell-generated SDC file, but rather use the “set” command
in your synthesis script to overwrite the value of the Tessent Shell tool-specific SDC variable
tessent_tck_period. Refer to “Example Design Compiler Synthesis Script” on page 995 and
“Example Genus Synthesis Script” on page 998 for synthesis script examples.
For designs with Siemens EDA Logictest IP, you possibly need to update the global Tcl
variables that reproduce your fastscan test_proc timeplate specifications, so that your SDC
constraints closely match your simulation waveforms. For more information on these Tcl
variables, see “LOGICTEST Instruments” on page 969.
When the design contains LogicBIST instruments, create the shift_clock_src of the LogicBIST
controller and indicate its name to the SDC procs by using the tessent_lbist_shift_clock_src Tcl
array variable. Creating this clock and setting its name with the tessent_lbist_shift_clock_src
variable is mandatory.
For example:
If multiple controllers use the same clock, create the clock once only. However, you must still
specify the tessent_lbist_shift_clock_src variable for each controller with the same clock name.
Starting at 0, specify as many lbist_inst indices as the number of LogicBIST controllers in the
current design level minus one. For example, for a design with two LogicBIST controllers, set
the tessent_lbist_shift_clock_src(lbist_inst0) and tessent_lbist_shift_clock_src(lbist_inst1)
variables.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Preparation Step 3: Verifying the Declaration of Functional Clocks
You can find the mapping of the lbist_inst<index> identifier to the instance path name of the
LogicBIST controllers in the tessent_lbist_mapping Tcl array variable inside the
tessent_set_default_variables SDC proc. When the clock is created with a different name than
its source, specify the name of the clock as specified with -name option of the create_clock SDC
command. Existence of this Tcl variable and the clock it refers to is rule checked by the
generated SDC.
Similarly, when the design contains InSystemTest instruments, indicate the clocks to SDC by
using the tessent_ist_clock Tcl array variable. You can find the mapping from the
ist_inst<index> identifier to the InSystemTest controller instance path name in the
tessent_ist_mapping variable.
Another key variable to possibly overwrite is the tessent_clock_mapping array explained in the
next section. Other, much less frequently used variables are discussed in “Preparation Step 4:
Redefining Other Tessent Tcl Variables” on page 951.
This array is used by the Tessent Shell tool-generated SDC constraints to refer to your
functional clocks. They do so only through a remapped “tessent_clock_mapping(<TessentShell
ClockLabel>)” array element. By default, in tessent_set_default_variables, <TessentShell
ClockLabel> and <FunctionalSDC ClockLabel> are identical.
Note
It is imperative that you examine this array and look for cases where this default mapping
must be updated. Overriding names are not necessary if you have used the “-label” option of
the add_clocks command in Tessent Shell to match the “-name” value in the SDC.
If you need to update one of the tessent_clock_mapping() array values, please do so in your
main synthesis script, immediately after the call to the tessent_set_default_variables proc. For
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Preparation Step 4: Redefining Other Tessent Tcl Variables
example, if you had a clock defined with a label "CK25" in Tessent Shell, but in your SDC
constraints the same clock is defined with a name "PIN_CK25", you need to specify:
It is important to understand that you do not need to edit the Tessent-generated SDC file, but
rather use the ‘set’ command in your synthesis script to overwrite the value of the Tessent SDC
variable array element you want to change. Alternatively, if many of your Tessent defined
clocks and respective SDC clocks have different names, you might want to redefine a block of
the array:
OR
IMPORTANT: You do not need to define tessent_clock_mapping() entries for clocks that you
have not specified in Tessent Shell. Those are not used in the timing constraints.
Note
The value of tessent_tck_period might depend on the maximum tck clock frequency that can
be applied to the circuit. See the “IJTAG Network Performance Optimization” section in the
Tessent IJTAG User’s Manual showing how to maximize the frequency of the IJTAG network
test clock.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Synthesis Step 1: Applying the SDC Constraints
To apply the Tessent Shell-generated SDC constraints, run the merged non_modal proc:
tessent_set_non_modal
This Tessent SDC proc in turn calls all instrument non-modal procs as needed by your design
and its sub-blocks. There is nothing else for you to do than call this one proc to apply all non-
modal SDC constraints.
Persistent cells should not be optimized as Tessent Shell SDC uses them as anchor points for
layout and STA, and different instances need to be preserved depending on if you do scan
insertion with Tessent Shell or more DFT insertion. Procs are provided in the .sdc file to
generate a list of all instances that need to be preserved in different ways:
tessent_get_preserve_instances, tessent_get_optimize_instances, and
tessent_get_size_only_instances.
First you need to prevent boundary optimization of DFT objects using the proc
tessent_get_preserve_instances:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Synthesis Step 3: Synthesizing Your Design
Avoid inverting the logic signals of any Tessent IP instantiated in Tessent Shell. Signal
inversion can cause design rule checks of the gate-level netlist to fail or disrupt the ATPG flow.
Find all the Tessent sequential cells and turn off any output inversion by the synthesis tool.
Cells from your provided Tessent Cell Library instantiated in Tessent Shell must also be
preserved but can be resized to enable critical data path timing optimization during synthesis.
You can get them using tessent_get_size_only_instances:
If your design contains shared bus assemblies, you can save significant area by ungrouping their
content, with the exception of the MemoryBIST controller. Refer to the “Synthesis Step 3”
portions in “Example Design Compiler Synthesis Script” and “Example Genus Synthesis
Script” for examples of the suggested procedures.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Running Layout with Tessent Shell DFT
Note
This section uses the following convention to shorten proc names:
<ltest_prefix> := tessent_set_ltest
• Use the SDC that you wrote out in previous synthesis Step 5 and feed it directly to your
layout tool, or
• Define all your functional SDC constraints and add Tessent DFT constraints, like you
previously did in synthesis, by repeating the steps:
o Define your functional constraints.
o Set your global Tcl Tessent variables.
o Call tessent_set_non_modal.
You also must preserve your Tessent DFT persistent cells from further layout logic
optimization. Get the list of these cells by calling your SDC file proc
tessent_get_size_only_instances.
That is all you must do if your design does not feature Tessent logictest DFT. If you used 3rd-
party scan insertion tools, please refer to their instructions as to how to constrain that mode. The
rest of this section details what you must do in layout with Tessent logictest DFT.
Locate the tessent_get_cts_skew_groups_dict inside the output .sdc file from the extract_sdc
command, and follow the instructions provided in the banner of that proc to disable this
balancing.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Running Layout with Tessent Shell DFT
The preceding figure illustrates a schematic of a Tessent standard OCC module, with red
indicators showing where CTS exclude points must be applied to prevent balancing internal
OCC logic with its driven clock tree. That balancing would considerably increase the OCC
logic clock insertion delay; this would, in turn, shorten the setup margin of the OCC critical at-
speed paths, shown by the dashed purple arrows, when the OCC runs in fast capture mode. This
could sometimes make it impossible to close timing.
In the Tessent OCC, balancing must be blocked in the following locations, corresponding to the
numbers in the figure:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Running Layout with Tessent Shell DFT
CTS commands specific to your layout tool. The proc includes instructions in the header
comment to help you use the proc during CTS. Refer to the following example:
proc tessent_get_cts_skew_groups_dict {} {
# This proc returns a dictionary of clock source pins from where clock tree synthesis
# balancing should stop.
# Use it in your CTS script, along with your proper tool command.
# In Synopsys ICC, invoke:
# set_clock_tree_exceptions -exclude_pins <exclude_pin>
# In Cadence Innovus, invoke:
# create_ccopt_skew_group -sources <exclude_pin> -auto_sinks -skew_group <group name>
# The effect of that command is:
# * to prevent adding delay buffers to the small OCC internal clock tree, due to balancing
# with all flops in the OCC fanout, therefore helping the OCC clock_enable signals meet
# setup timing.
# * to prevents adding long delays to the SSN clock tree due to balancing with the
# functional clock tree in the fanout of each SSN scan host (SSH).
#
# You can use the dictionary the following way:
# set cts_skew_groups_dict [tessent_get_cts_skew_groups_dict]
# dict for {skew_group sub_dict} $cts_skew_groups_dict {
# dict with sub_dict {
# foreach pin $cts_exclude_pins {
# puts "$skew_group : $dc_instance/$pin"
# <insert your CTS command here>
# }
# }
# }
set return_dict {
cts_skew_group(occ0) {
dc_instance top_rtl2_tessent_occ_parent_clka_inst
cts_exclude_pins {occ_control/tessent_persistent_cell_ltest_ntc_sync_cell/CK
occ_control/tessent_persistent_cell_cgc_SHIFT_REG_CLK/CK
occ_control/tessent_persistent_cell_SHIFT_REG_CLK_mux/A1}
}
cts_skew_group(occ1) {
dc_instance top_rtl2_tessent_occ_parent_clkb_inst
cts_exclude_pins {occ_control/tessent_persistent_cell_ltest_ntc_sync_cell/CK
occ_control/tessent_persistent_cell_cgc_SHIFT_REG_CLK/CK
occ_control/tessent_persistent_cell_SHIFT_REG_CLK_mux/A1}
}
…
}
return $return_dict
}
1. Letting scan_en=X, unblocks a large number of false at-speed path between neighboring
flops on the same scan chains, unless you have your own custom way to globally disable
these paths in your own design environment and flow.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Running Layout with Tessent Shell DFT
2. As opposed to synthesis, where all clocks are ideal, propagating test_clock with
scan_en=X in layout may enable false cross-domain paths between unbalanced
functional domains. Those paths become single-cycle paths of test_clock which, if
test_clock is unbalanced, may cause both setup and hold false timing violation.
3. Some false at-speed capture paths might get unblocked between test-only dedicated
wrapper cells and functional logic.
If your layout flow provides custom methods to work around these issues, you can run layout
using only one global set of constraints that covers both your functional and DFT modes. In
such a case, you would only need to call the tessent_set_non_modal proc with no argument, or
use the extracted .sdc file from synthesis. If not, then you need to use the multi-mode feature of
your layout tool and sequentially load the following modal SDC constraints:
Mode 1:
This adds all Tessent DFT constraints, but disables all logictest DFT paths.
Mode 2:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Running Layout with Tessent Shell DFT
o Enables capture paths across your design’s top ports as single-cycle paths of
test_clock.
• Run layout incrementally again.
To save time and resources, you can choose to skip mode #3 if you know you are running scan
mode at a very slow clock speed and that all your capture paths are guarded with extra cycles of
test_clock.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
SDC for Modal Static Timing Analysis
If flops in your cell library do not propagate constant settings through their set or reset pin to
their data output pin, you need to set a PrimeTime variable:
This turns off all embedded test modes with just a few asserts of the TAP’s reset port.
For example:
-------------------------------------------------------------------------
... loading your functional constraints ....
set case_analysis_sequential_propagation always
# Hold the DFT in reset and kill TCK to make sure only functional logic is
# active.
set_case_analysis TRST 0
set_case_analysis TCK 0
-------------------------------------------------------------------------
You also need to disable your scan circuit timing by forcing your scan_enable pin to its inactive
value, and by issuing a set_false_path to/from all your lockup cells and your pipeline flops.
Those can normally be found with regular expressions such as:
You might also have to turn your BISR clock or reset pin off, if present, like in:
set_case_analysis bisr_clk 0
set_case_analysis bisr_reset 0
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Checking Your Embedded Test Logic
When you are working with a physical block or sub-block, you can turn off all DFT signals
accessible at its interface. For example:
set_case_analysis scan_en 0
set_case_analysis ijtag_tck 0
set_case_analysis ijtag_reset 1
set_case_analysis ijtag_sel 0
set_case_analysis ijtag_se 0
set_case_analysis ijtag_ce 0
set_case_analysis ijtag_ue 0
set_case_analysis ijtag_si 0
set_case_analysis edt_update 0
set_case_analysis edt_clock 0
Resetting the IJTAG logic should also reset any dedicated wrapper cells (DWC). If you want to
explicitly identify and turn off DWCs or other test logic, you can use the
report_insert_test_logic_options command to find the name infix used by the tool when it
inserted the logic. Then use the introspection commands to find the instances you want. For
example, the following returns pins on DWCs:
Tip
To set your own naming convention, use the “set_insert_test_logic_options -logic_infix”
command before test logic insertion.
Related Topics
tessent_set_non_modal
• Loads the generated SDC file and initializes some Tcl variables used by Tessent Shell
SDC constraints.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Checking Your Embedded Test Logic
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
VHDL and Mixed Language Designs
This variable ill restores VHDL generate loop naming to follow Verilog style: blk(0)/jblk(0)/i0
Oasys
Use the following commands in Oasys to generate a naming scheme for generate loops (Verilog
and VHDL) that is compatible with the Tessent SDC constraints:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
VHDL Generate Blocks
wildcards. Ex: the instance path blk[0].i0 which would need to be unrolled would be written out
as blk_0.i0.
For this reason, you should use the provided procs tessent_get_pins and tessent_get_cells They
are able to match your functional instance path “blk[0].i0” to blk_0.i0 using a caching algorithm
that searches for generate blocks in the path and tries to match with our unrolling strategy if the
path does not match outright. Refer to the “Mapping Procs” on page 992 to see the procs’
description.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
SDC File Contents
<ltest_prefix> := tessent_set_ltest
tessent_set_default_variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964
tessent_create_functional_clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965
tessent_<design_name>_set_dft_signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965
<ltest_prefix>_disable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966
tessent_set_non_modal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967
tessent_<design_name>_kill_functional_paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967
IJTAG Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968
LOGICTEST Instruments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969
MemoryBIST Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983
BoundaryScan Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986
Hierarchical STA in Tessent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987
Mapping Procs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992
Synthesis Helper Procs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993
tessent_set_default_variables
This proc defines the initial/default value of all global variables used in all procs of the sdc file.
The variables contained in this proc are there for you to customize the constraints without
having to edit the constraints themselves. A good example of this would be the variable
“tessent_tck_period”. It currently defaults to 100.0 (nanoseconds). If your TCK clock has a
different period than 100ns, you can overwrite the value of this variable after having called the
proc tessent_set_default_variables but before calling the constraint procs.
Note
The value of tessent_tck_period might depend on the maximum tck clock frequency that can
be applied to the circuit. See the “IJTAG Network Performance Optimization” section in the
Tessent IJTAG User’s Manual showing how to maximize the frequency of the IJTAG network
test clock.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
tessent_create_functional_clocks
The mapping between LogicBIST and InSystemTest controller IDs and their instance path
names is available in this proc. Use the mapping information to indicate the clocks of these
instruments to the other ltest SDC procs as described in “Preparation Step 2: Setting and
Redefining Tessent Tcl Variables” on page 948.
tessent_create_functional_clocks
This proc is generated for your convenience. It contains the SDC create_clock and
create_generated_clock commands to define the various functional clocks needed by the
instruments constrained by the SDC procs. Typically, your functional clocks would already be
defined by your functional SDC. If that is the case, you should override the default values of the
tessent_clock_mapping array to match the clock names you used in the definition of your
clocks.
This proc would typically not be called in your synthesis SDC.
Required clocks are determined with ICL tracing. create_clock constraints are added for all
clock sources like top level ClockPort ports and source ToClockPort ports (embedded crystals).
create_generated_clock constraints are added for all generated clocks (add_clocks -reference),
branch clocks and unidentified ICL ToClockPort ports (typically PLLs). If your design contains
an ICL instrument with a ToClockPort that should not require a new generated clock, please set
the exclude_from_sdc attribute on the port.
tessent_<design_name>_set_dft_signals
This procedure forces all your specified static dft_signal sources to either reset or get their
default value during all_test, depending on the proc's argument.
argument mode :== reset | logic_off
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
<ltest_prefix>_disable
that assert through the TDR flops. That may happen in Synopsys PrimeTime when the
control variable “case_analysis_sequential_propagation” is set to “never”.
<ltest_prefix>_disable
This proc disables all Logictest logic in your design. You call this proc when setting up
exclusive STA mode for your IJTAG, BoundaryScan or MemoryBIST, and you do not want to
bother about ltest logic and scan chains timing at the same time.
This proc is invoked by proc tessent_set_non_modal when called with the logictest argument
set to “off”. Specifying “on” would invoke proc tessent_set_ltest_non_modal proc instead. You
would typically use “on” during pre-layout synthesis and “off” during layout. In layout, you
would then need to apply two different mode scripts in your layout tool. The second mode
would time logictest-only shift logic, for which you would invoke the proc <ltest_prefix>_shift.
For more information about this proc, see “<ltest_prefix>_modal_shift” on page 976.
• <ltest_prefix>_disable — Disables logictest controller and forces the all_test dft signal
active. Use this when setting up the membist STA mode. For an example, see “Example
PrimeTime STA Script” on page 1001.
• <ltest_prefix>_disable all_test_x — Disables the logictest controller but does not force
the all_test dft signal. Use this when constraining your design for synthesis or for layout.
For more information, see “tessent_set_non_modal” on page 967
When SSH is present in the design, this proc permits ts_tck_tck to propagate to the SSH logic so
it can properly time the serial scan path to and from the IJTAG network. It assumes that timing
paths between the SSH IJTAG registers and the SSH logic always meet a single-cycle path of
ts_tck_tck, with no excessive stress to the quality of results (QoR) for the layout. Clock tree
synthesis can balance both branches of ts_tck_tck within the SSH logic.
In this case, constraints added at the SSH scan clock sources and scan_en pin prevent ts_tck_tck
from leaking into the scan domains and prevent potential false paths to memory BIST logic
clocked by tck. The following example illustrates these constraints:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
tessent_set_non_modal
tessent_set_non_modal
This proc contains calls to the non_modal procs of all constrained instruments, which are
documented in the sections that follow. For synthesis, this is the only constraint proc you need
to call.
You can call this proc with no argument, or with the argument “off”:
tessent_set_non_modal off
The argument “off” disables logictest circuitry by asserting dft_signal source pins and prevents
adding any non-modal logictest clocks or constraints. The default is to call the proc
tessent_set_ltest_non_modal.
For an example of how to use the proc, see “Single-Mode vs Dual-Mode Constraining in
Synthesis/Layout” in “<ltest_prefix>_non_modal” on page 979.
tessent_<design_name>_kill_functional_paths
This procedure disables all timing paths involving non-Tessent flops. It enables running test-
only timing analysis without having to fix functional path violations with your own functional
SDC constraints. It helps making functional mode STA and Siemens EDA DFT mode STA
fully orthogonal, and reduces the Siemens EDA DFT mode STA run-time.
Caution
Do not call this procedure for any logic test STA modes. It is only intended for use in the
Siemens EDA DFT mode, as shown in “Example PrimeTime STA Script” on page 1001.
You can optionally run this procedure when you know that your functional logic has many
intra-domain timing paths that cannot meet default single-cycle path timing with the clocks
being set by tessent_create_functional_clocks and tessent_set_* procs.
Disabling some sequential cells in your design might accidentally block the test clocks feeding
your inserted instruments. Examples of such cells are Integrated Clock Gating (ICG) cells or
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
IJTAG Instrument
flops that belong to clock dividers. You can fix this by specifying those cells either by module
name or by instance names.
By module name:
Note
This only finds library cells that match this module name pattern. If your module is
hierarchical and the cells you are trying to preserve are below it, use the instance name
option described in the following.
By instance name:
Note
This expression is tested against the full hierarchical instance paths. A pattern that would
match a hierarchical instance preserves all cells within it.
The procedure optionally creates a report file containing a sorted list of all disabled flops
instance names. To enable this option, you need to define the following variable prior to calling
tessent_kill_functional_paths:
set CreateDisabledFlopsReport 1
IJTAG Instrument
Tessent IJTAG provides the following procs:
• set_ijtag_retargeting_options
o This proc would typically be called directly in your synthesis scripts to set the
supported options and related variables.
This proc is a replica of the Tessent Shell command set_ijtag_retargeting_options supporting
options that are pertinent to SDC. Any unsupported option specified to the SDC version of the
command will be ignored.
Table 13-1. set_ijtag_retargeting_options Arguments and SDC Variables
Option SDC Timing Variable Default
-tck_period tessent_tck_period 100.0 ns
• tessent_set_ijtag_non_modal
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
o This proc would typically not be called directly in your synthesis script, it is called
as part of tessent_set_non_modal.
This proc contains the clock creation for your TCK clock and configurable input and output
delays for created ports at the sub_block and physical_block design levels.
It also creates an asynchronous clock group with all TCK clocks. It is used to prevent synthesis
from balancing paths between TCK and functional clocks. This clock group could be recreated
with additional clocks if your design contains Tessent BoundaryScan or Tessent OCC
hardware. This is managed via the “tessent_tck_clock_list” global variable. This variable is
built from different procs (ijtag and jtag_bscan) and used to create an asynchronous clock
group. If you have your own TCK generated clocks that are not used in the Tessent Shell SDC
constraints, we suggest adding their name to this list right after calling
tessent_set_default_variables.
tessent_set_default_variables
lappend tessent_tck_clocks_list my_tck_generate_clock
At the sub-block and physical block levels, constraints are added to reflect the timing of the
IJTAG protocol. The IJTAG reset port is declared a false path and the IJTAG select port’s hold
paths are declared false and its setup paths are given two cycles with a multicycle_path
constraint.
The select signal source of all non-scan SIBs (part of the SRI network) is relaxed to MCP setup
2 hold 2. This is to reflect the protocol and enable deep combinational paths to close timing.
This constraint did not include the SIBs part of the STI network as those should be local to each
physical region, and it should be easier for timing tools to close timing. If you experience
problems with scan-testable SIB select signals, you can add those to the list of SIBs that are
relaxed. However, this will have an adverse impact on scan patterns.
LOGICTEST Instruments
The section lists the logic test-based procs. LogicBIST and InSystemTest-related procs listed in
the following are included only when LogicBIST and InSystemTest controllers are present in
the design.
Note
This section uses the following convention to shorten proc names:
<ltest_prefix> := tessent_set_ltest
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
o tessent_set_in_system_test_non_modal
2. Modal procs, used for signoff STA and optionally for synthesis or layout constraining:
o <ltest_prefix>_modal_shift
o <ltest_prefix>_disable
o <ltest_prefix>_modal_lbist_shift
3. Procs only for per-mode signoff STA constraints:
o <ltest_prefix>_edt_shift
o <ltest_prefix>_bypass_shift
o <ltest_prefix>_single_bypass_chain_shift
o tessent_set_edt_slow_capture
o <ltest_prefix>_edt_fast_capture
o <ltest_prefix>_modal_lbist_shift
o <ltest_prefix>_modal_lbist_capture
o <ltest_prefix>_modal_lbist_setup
o <ltest_prefix>_modal_lbist_single_chain
o <ltest_prefix>_modal_lbist_controller_chain
4. Procs sub-invoked by the preceding procs.
o <ltest_prefix>_create_clocks
o <ltest_prefix>_set_pin_delays
<ltest_prefix>_create_clocks
This proc creates the slow-speed test clocks for use during scan mode. There are a few possible
clock configurations:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
This proc is also called by every SDC proc that propagates the edt_clock or shift clocks,
specifically:
• <ltest_prefix>_non_modal
• <ltest_prefix>_shift
• <ltest_prefix>_modal_slow_capture
• <ltest_prefix>_modal_lbist_shift
• <ltest_prefix>_modal_lbist_capture
The following is an example of the created clocks you get if you run the following commands:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
set slow_clock_period \
[expr $tessent_slow_clock_period * $time_unit_multiplier]
set sc_rise_time \
[expr $tessent_shift_clock_edge1_percentage/100. * $slow_clock_period]
set sc_fall_time \
[expr $tessent_shift_clock_edge2_percentage/100. * $slow_clock_period]
set sc_waveform "$sc_rise_time $sc_fall_time"
set force_pi_rise \
[expr $tessent_force_pi_percentage/100. * $slow_clock_period]
et measure_po_rise \
[expr $tessent_measure_po_percentage/100. * $slow_clock_period]
set min_width [expr 0.25 * $slow_clock_period]
set force_pi_waveform \
"$force_pi_rise [expr $force_pi_rise + $min_width]"
set measure_po_waveform \
"$measure_po_rise [expr $measure_po_rise + $min_width]"
# test_clock:
create_clock [tessent_get_ports test_clock] \
-add -period $slow_clock_period -waveform $sc_waveform\
-name tessent_test_clock
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
• tessent_slow_clock_period
Tessent slow clock period (the same for all clocks).
Default: 40ns.
• tessent_shift_clock_edge1_percentage
Timeplate position of the shift clock rising edge as a percentage of its period.
Default: 50.
• tessent_shift_clock_edge2_percentage
Timeplate position of the shift clock falling edge as a percentage of its period.
Default: 75.
• tessent_force_pi_percentage
Timeplate position of the force_pi point as a percentage of the shift clock period.
Default: 0.
• tessent_measure_po_percentage
Timeplate position of the measure_po point as a percentage of the shift clock period.
Default: 25.
Using percentages instead of absolute time values enables you to quickly modify the
tessent_slow_clock_period specification without also having to update the other Tcl variables.
The defaults described in the preceding reflect the Tessent FastScan timeplate default
specifications, that is:
timeplate gen_tp1 =
force_pi 0 ;
measure_po 10 ;
pulse_clock 20 10 ;
period 40 ;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
create_clock <port> -add -period 40. -waveform {20 30} -name tessent_test_clock
create_clock -period 40. -waveform {0 10} -name tessent_virtual_force_pi
create_clock -period 40. -waveform {10 20} -name tessent_virtual_measure_po
Finally, two more global Tcl variables might be necessary to specify the timing budget of the
scan data paths outside of the current module:
• tessent_scan_input_delay
Default value: 0.
• tessent_scan_output_delay
Default value: 0.
Update these variables if you plan to retarget your test vectors from a higher level module and
you budgeted some propagation delay for your scan signals in that module. Here is how the
variables are used:
Currently, the extract_sdc command assumes that timeplate specified values are identical for
both load_unload and capture phases, which is the Tessent FastScan default. Although, the
“non_modal” ltest proc has to use only one set of specifications, modal shift and capture STA
may have to run with different timeplate specifications. If it is your case, you can do it by
updating the preceding Tcl variables prior to calling the selected shift or capture modal proc.
The fast_capture modal proc ignores those values, because it uses your functional waveform
specifications.
<ltest_prefix>_edt_fast_capture
This proc must be called in your STA to constrain the EDT in fast capture mode. Logictest fast
capture mode is the one that detects your at-speed transition faults. It counts on user SDC to
provide the capture clocks and timing exceptions that would actually time the capture paths.
Typically this would be your original functional SDC constraints, but those might still require
some adjustments if your test conditions (clock frequencies, false paths) slightly differ from
what they are in functional mode. Obviously, you also need to remove any constraint that resets
the IJTAG network or ties the scan_enable or test_enable control pins to zero.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
The proc also enables you to check that some dft signals such as x_bounding_en,
memory_bypass_en, observe_testpoint_en are doing their isolation job correctly. You can
optionally force them to a known value by setting global Tcl variables prior to calling the proc.
Finally, the proc also disables any other timing paths that are ignored during capture, such as
those going through the EDT channel pins.
tessent_set_edt_slow_capture
This proc must be called in your STA to constrain the EDT in slow capture mode.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
• Set an MCP for your edt_update signal, if present, using your global variables
tessent_edt_update_setup_extra_cycles and tessent_edt_update_hold_extra_cycles.
• Enables capture paths across your design’s top ports as single-cycle paths of test_clock.
Note
Just as with the preceding <prefix>shift_ltest_non_modal proc, propagating test_clock may
create false capture timing paths across asynchronous domains as single-cycle paths of
test_clock. This may or may not be a problem, given that test_clock fanout is balanced and
running at slow speed. By default, this proc assumes that all valid intra-domain hold timing
paths were already covered by your functional modes STA, and therefore sets a multicycle_path
of 1 hold to all paths from test_clock to itself. Remember that all scan mode shift paths are
properly covered for both setup and hold by the “xxx_ltest_shift” mode proc defined in the
preceding. If you need to, you can still force the proc to revert to zero-hold constraint by setting
the Tcl variable tessent_time_hold_in_slow_capture to value 1 in your calling script.
<ltest_prefix>_modal_shift
This proc sets the circuit in scan shift mode. It covers both EDT shift modes and all available
bypass modes, assuming you run them all with the same shift clock frequency. If you need more
specific timing analysis, you can choose to apply the following procs in separate STA runs.
These procs sub-invoke the <ltest_prefix>_shift proc:
• <ltest_prefix>_edt_shift
• <ltest_prefix>_bypass_shift
• <ltest_prefix>_single_bypass_chain_shift
The <ltest_prefix>_shift proc applies a set of common constraints required for shifting. Then
they only need to complete their mode setting by forcing the edt_bypass and
single_chain_bypass signals to the required constant value.
Note
You can save on total STA time and flow complexity if you already plan to apply the same
test_clock (with the same period) for all shift and bypass modes. In this case you only need
to call the <ltest_prefix>_shift proc directly in place of all of the three procs defined in the
preceding.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
Note
If you plan to feed your synthesis or layout tool with two separate mode scripts (functional/
dft and logictest), the <ltest_prefix>_shift proc is the one you need to apply for the logictest
mode. That way, all possible shift paths are timed, and because scan_enable is forced active, it
prevents the existence of a potentially large number of false capture timing paths across your
functional logic. It also covers all of your possible scan chain configurations at once, including
the internal and external mode for cores. See later discussion on logictest single-mode or dual
mode usage—see <ltest_prefix>_non_modal.
<ltest_prefix>_modal_lbist_shift
You can configure timing analysis for this mode to run with either shift_clock_src or test_clock.
The default is shift_clock_src. Add the optional test_clock argument when calling this SDC Tcl
proc to analyze timing with test_clock.
• Adds multi-cycle path exceptions on dynamic signals from the LogicBIST controller to
design scan cells and hybrid EDT blocks. These include LogicBIST mode scan enable,
prpg_en, misr_en, and LogicBIST synchronous reset for the hardware default mode of
operation.
• Adds case analysis on the mux, which chooses between the top-level scan enable for
ATPG and the LogicBIST controller-generated scan enable to enable only the
LogicBIST mode paths.
• Adds case analysis to set lbist_en to active.
• Disables single chain mode scan chain concatenation paths.
• Disables paths from edt_chain_mask masking registers to the scan cells. This constraint
is required because even though this register is configured using tck as the source, the
clock net connected to the edt_lbist_clock signal carries both edt_clock and
shift_clock_src clocks.
• You added the following dft signals in your current design level: scan_en, test_clock, or
(edt_clock and shift_capture_clock).
• And you did not insert a Tessent logictest-related controller, such as EDT or logicbist in
that same level.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
These two procs properly assert all static dft signals, such as scan_en and ltest_en. They are the
“no-EDT” version of the following two procs:
• <ltest_prefix>_modal_edt_slow_capture
• <ltest_prefix>_modal_edt_fast_capture
Because no EDT is present in the current design, extract_sdc does not generate these procs:
• <ltest_prefix>_edt_bypass_shift
• <ltest_prefix>_edt_single_chain_shift
However, if your design meets all of the following conditions:
<ltest_prefix>_modal_lbist_capture
This mode is similar to <ltest_prefix>_modal_lbist_shift, except that the LogicBIST mode scan
enable is constrained to off.
<ltest_prefix>_modal_lbist_setup
This mode propagates tck through the IJTAG network within the LogicBIST controller and
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 because it is only intended to check
the IJTAG network paths.
<ltest_prefix>_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
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
shifting. The LogicBIST scan enable is constrained to 1 to time only the shift paths in the design
with the tck signal.
<ltest_prefix>_modal_lbist_controller_chain
This mode is available when controller chain mode (CCM) logic is enabled during IP
generation. When CCM is present, all of the previously described LogicBIST modes disable the
controller chain logic by constraining the ccm_en signal to off. This mode tests the CCM paths
by constraining the ccm_en signal to on. The clock for this mode is either tck or test_clock, as
specified during IP creation.
This mode only tests the LogicBIST and hybrid EDT controller blocks; clocks are not
propagated to design scan cells.
Paths that are normally disabled during the LogicBIST operation modes described in the
preceding become valid single-cycle paths in CCM and are timed accordingly.
• Signals such as lbist_en are not constrained to 1 because paths from the TDR register in
the LogicBIST controller to the hybrid EDT blocks that use this signal are tested with
ATPG in CCM. Paths from static signals—such as x_bounding_en, test_point_en, and
capture_per_cycle—to the design scan cells are correctly excluded because no clocks
are propagated to the scan cells.
• Paths from dynamic control signals that are declared as multi-cycle for other modes—
such as scan_en, prpg_en, and misr_en—that go from the LogicBIST controller to the
EDT blocks are tested as valid single-cycle paths.
• Paths from IJTAG network nodes such as SIBs are timed as valid single-cycle paths of
the CCM clock.
• Input and output pin delays from top-level ports to EDT blocks and CCM scan I/O ports
are included for this mode. This differs from the LogicBIST shift and capture modes,
which do not have any active paths from or to design ports.
<ltest_prefix>_non_modal
This procedure provides SDC timing constraints to add to your combined functional-dft non-
modal timing scripts for one-pass synthesis or layout. Its contents is merged with both your
functional constraints and all other Tessent controller's non-modal constraints. It is called by the
umbrella proc “tessent_set_non_modal” proc.
• <ltest_prefix>_create_clocks
• <ltest_prefix>_set_pin_delays
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
It also:
• Defines a specific clock group (using 'set_clock_groups') for all logictest slow clocks,
isolating them from your declared functional clocks.
• Adds “set_false_path” constraints from each of your primary ports assigned to a static
dft signals such as “all_test”, “ltest_en”, and “edt_mode”. If the same signals come
instead from an internal IJTAG Test Data Register (TDR), the “set_clock_groups”
command between ts_tck_tck and the scan clocks replaces the individual set_false_path
commands.
• Provides constraints to prevent “tck” and your functional clocks to propagate to
unwanted paths inside your Siemens EDA OCCs, as well as constraints that prevent
false timing violations on the select pin of clock muxes inside that OCC.
• Provides constraints that disable automatic clock gating checks across input pins of the
Siemens EDA OCC clock multiplexers, because all OCC clock selection is either
performed statically during test setup or at slow speed in a glitchless way during scan.
• Adds an optional set_multicycle_path constraint from your primary 'scan_en' port and
“edt_update” signal, based on your setting of the global variables:
o tessent_scan_en_hold_extra_cycles
o tessent_scan_en_setup_extra_cycles
o tessent_edt_update_hold_extra_cycles
o tessent_edt_update_setup_extra_cycles
which all default to zero, meaning single-cycle paths of slow clock.
• When using LogicBIST, includes a 3-to-1 shift_clock_select mux at the clock structure
root of the LogicBIST controller. This mux enables any one of three clocks—
shift_clock_src, test_clock or tck—to be used as the source clock for LogicBIST test.
o Blocks tck propagation through the shift_clock_select mux into the design scan
cells. This removes analysis of the slowest LogicBIST mode of operation using tck
to reduce timing analysis run time.
o Propagates both shift_clock_src and test_clock to the design scan cells, but all
interactions between them are blocked.
• Adds the following LogicBIST-related exceptions:
o Declares multi-cycle paths from LogicBIST scan enable generation logic to the
design scan cells. The number of cycles are based on the pre_post_shift_dead_cycles
IP generation parameter and defaults to eight.
o Declares multi-cycle paths from logic that generates the prpg_en, misr_en, and
LogicBIST synchronous reset for hardware default mode operation signals to the
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
1. Scan chains intra-domain shift-only paths are constrained at the speed of the functional
clock.
2. As a result of creating only one shift_capture_clock source and letting it propagate to all
functional clock domains, all cross-domain capture paths become single-cycle of the
shift clock, regardless of whether they are asynchronous in functional mode or not.
This said, these new timing paths do not instantly condemn your layout or physical synthesis
tool to fail timing closure or perform a bad P&R job, knowing that clock tree synthesis also
balances the test_clock fanout by default. Non-physical synthesis is generally not a problem.
On the other hand, re-constraining of all those bogus timing paths would typically require a very
large number of design-dependent timing exceptions, which extract_sdc is not able to provide at
this point. Applying them could also slow down some layout tools considerably.
The alternative to single-mode constraining is to apply individual mode scripts at different times
in the synthesis or layout tool. It is a well-known solution that has been applied by most
Siemens EDA customers historically.
1. Functional/Dft mode:
o Apply your functional constraints
o Invoke proc constrain_<design_name>_non_modal off
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
2. Logictest-only mode, covering all EDT scan configurations, such as EDT shift and EDT
bypass shift:
o Invoke proc <ltest_prefix>_modal_shift
3. If your design contains hybrid EDT/LBIST, another logictest-only mode to cover the
LBIST shift configuration:
o Invoke proc <ltest_prefix>_modal_lbist_shift
This script cannot be combined with EDT scan configuration script because these modes
are not compatible; they propagate different shift clocks, have different case analysis
constraints on the lbist_en signal, and have different timing requirements for scan enable
with respect to the shift clock.
<ltest_prefix>_set_pin_delays
This procedure assigns the clock “tessent_virtual_slow_clock” to your top-level ports that
directly interface with your EDT controllers or your scan chains during scan or EDT mode,
using the “set_input_delay” and “set_output_delay” timing constraints.
This proc is called by every SDC proc which propagate the EDT or shift clocks, that is:
• <ltest_prefix>_non_modal
• <ltest_prefix>_shift
• <ltest_prefix>_modal_slow_capture
Input/Output Pin Delay Constraints
Input and output delay constraints are declared for the EDT control and channel pins. For
example:
# channel_input:
set_input_delay $tessent_scan_input_delay \
-clock tessent_virtual_slow_clock \
[get_ports {my_edt_channels_in[0]}]
# channel_output:
set_output_delay $tessent_scan_output_delay \
-clock tessent_virtual_slow_clock \
[get_ports {my_edt_channels_out[0]}]
# edt_update:
set_input_delay $tessent_scan_input_delay \
-clock tessent_virtual_slow_clock \
[get_ports edt_update]
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
MemoryBIST Instrument
The same procs leave all other logictest-related dft signals toggling, and add a false_path
constraint if they come from a primary port. For example:
If the same signals come instead from an internal IJTAG Test Data Register (TDR), the
“set_clock_groups” command between ts_tck_tck and the scan clocks replaces the individual
set_false_path commands.
MemoryBIST Instrument
Tessent MemoryBIST provides the following procs:
• tessent_set_memory_bist_non_modal for chip synthesis
o This proc would typically not be called in your synthesis script, it is called as part of
tessent_set_non_modal.
• tessent_set_memory_bist_modal for STA
o This proc must be called in your STA script if you want to constrain the MemoryBist
mode.
• tessent_<design_name>_top_set_dft_signals logic_off
Specify this call if your design also feature logictest-based dft signals that need to be
turned off in membist STA mode.
• tessent_mbist_set_ai_timing_mode
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
MemoryBIST Instrument
This procedure assures all functional clocks are defined and properly propagated, but
leaves the asynchronous interface free of constraints so they can be formally analyzed
by procedure tessent_mbist_report_controller_ai_timing. This proc will not be present
or needed if none of the controllers being constrained utilize an asynchronous interface.
• tessent_mbist_report_ai_timing [-verbose 1|0] [-tck_period time_in_ns]
This procedure runs tessent_mbist_report_controller_ai_timing once for every
MemoryBIST controller in the current design. This proc will not be present or needed if
none of the controllers being constrained utilize an asynchronous interface.
• tessent_mbist_report_controller_ai_timing [-verbose 1|0] [-controller_id id]
[-tck_period time_in_ns]
This procedure accurately measures the BAP AI timing paths to the specified
MemoryBIST controller. The covered AI signals are: BIST_SHIFT, BIST_SI,
BIST_SO, and BIST_HOLD.
Because of the asynchronous nature of this interface, the signals listed in the preceding
cannot be accurately timed with SDC constraints. Although the circuit is designed to
always work with a low TCK frequency, this procedure validates that it works at the
frequency you specified.
Each AI signal timing margin depends on a combination of the TCK period, the
controller’s BIST_CLK period, and the skew related to the TCK branch reaching that AI
TCK transition detector. We recommend running this procedure only once with your
worst case operating conditions. In most cases, AI signal timing is expected to largely
exceed their setup timing requirements. Hold timing is never a problem because of the
design of the interface.
This proc will not be present or needed if none of the controllers being constrained
utilize an asynchronous interface.
They contain many multicycle path constraints to and from controller registers aiming to
minimize the impact of the MemoryBIST DFT on your timing closure.
Multi-Clock Memories
Additional timing exceptions were added for synthesis if you have multi-port memories
functionally driven by multiple clocks. A mux is inserted in the memory interface to enable both
clock ports of the memory to be driven using a single clock during the Memory BIST mode.
The insertion of this clock multiplexer adds different timing modes between functional and test
modes that must be described correctly in the SDC file.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
MemoryBIST Instrument
Note
If you want to skip the memoryBIST constraints of clock muxing (creating the generated
clock and false paths) for multi-clock memories, set the
tessent_apply_mbist_mux_constraints variable to “0” in the tessent_set_default_variable proc.
This variable should be set to “0” in two cases:
• For synthesis: When the BIST clock used by the MemoryBIST tests is declared as false
path with the memory’s functional clock in the user’s SDC script.
• For STA: When verifying the timing of the scan modes.
In the following, we explain key points of the MemoryBist constraints to handle these modes
harmoniously. Suppose the situation where CLKA and CLKB are two of your functional clocks
that drive two clock ports of a single memory. The MemoryBIST logic is inserted and runs on
CLKA. CLKA is multiplexed onto the CLKB branch of the memory during tests.
First, we need to create a generated clock on the input of the clock mux. In our example, this
clock is called mbist1_m0_mux0.
create_generated_clock [tessent_get_pins
$tessent_memory_bist_mapping(mbist1_m3)/tessent_persistent_cell_MUX1/b] \
-name mbist1_m0_mux0 \
-source [get_ports CLKA] \
-add -master_clock $tessent_clock_mapping(CLKA) \
-divide_by 1
Creating this clock at the input of the clock mux (instead of the output) enables all input clocks
to propagate through the mux and times the following interactions precisely:
• Timing paths between the memory BIST logic and the memory
• Timing paths between the functional flops and the memory
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
BoundaryScan Instrument
With the mbist1_m0_mux0 defined, we can now define clock-based exceptions to declare as
false any interaction between CLKB and the memory BIST flops, and between
mbist1_m0_mux0 and the functional flops on CLKB. Those false paths are described using the
following SDC commands:
By making these timing exceptions, we are precisely timing the memory BIST interaction with
the memory using CLKA reaching the two-clock ports of the memory and the functional logic
to memory interaction using the CLKB reaching the memory clock port. The added logic is
precisely timed to simplify timing closure. These constraints make physical design tools aware
of the mux on the clock port of the memory and they place the mux in a location where it does
not affect timing.
BoundaryScan Instrument
Tessent BoundaryScan provides the following proc:
• tessent_set_jtag_bscan_non_modal
o This proc would typically not be called directly in your synthesis script, it is called
as part of tessent_set_non_modal.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Hierarchical STA in Tessent
It creates generated clocks from each BoundaryScan interface and relaxes the timing between
them.
Note
This hierarchical STA flow is not the same as running flat logictest STA on a full design
netlist with multiple physical levels. Running flat STA would require an extra layer of
complexity for the needed constraints, especially if you intend to run each level with a different
test_clock frequency. Tessent Shell currently generates no SDC procs to support this type of
procedure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Hierarchical STA in Tessent
to your core before extracting the timing model. Doing this means your core timing model
includes timing arcs that cover the following core pins:
However, if your core logictest DFT logic is controlled entirely by the SSN ScanHost (SSH)
node, with no SSH bypass mode, and your core has no dedicated wrapper cells that change the
functional data paths in logictest mode, you can time your core boundaries fully using only the
extracted model described previously, in all parent-level timing modes including the logictest
ones. This is possible because of the following:
• Scan chain shifting inside the core is directly under the control of the internal SSH of the
core even when running in external test mode. As a result, all scan data transits first
through the core SSN bus pins, which are already timed by this external test mode.
• If your functional data paths across the core are the same as when they are tested in the
parent TDF mode of the core, there are no further logictest-only cross-core timing paths
that are not covered.
If your SSH supports the SSH bypass mode (SSH is turned off and all scan chains are accessed
through other standard EDT channel pins on your core), then you must extract specialized
timing models dedicated to your shift and slow_capture modes. This process is described in the
following sections.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Hierarchical STA in Tessent
Call this proc before extracting your current physical block design timing model, for use
at the next level up.
• <ltest_prefix>_lower_pbs_external_mode — Configures the instantiated lower
physical blocks of the parent design in their external mode, enabling running parent
logictest modes with loaded lower physical block full or partial netlists.
The extract_sdc command generates the <xxx>_mentor_modal_lower_pbs proc even when the
Logictest IP comes from non-Siemens EDA sources. The command only generates the other
two if the IP comes from Tessent TestKompress.
tessent_set_modal_lower_pbs
The tool creates this proc only for parent designs instantiating lower-level physical blocks.
The proc provides STA coverage of the Siemens EDA non-logictest DFT timing path going
across the physical block pins while blocking all other paths. Call it along with either the non-
modal constraints of the current design or the modal DFT STA constraints (membist, BISR,
bscan, IJTAG, with disabled logictest). You need to load some timing models for your lower
physical block instances.
• Disables timing through your physical block interface pins, except those active used
Siemens EDA non-logictest DFT, such as the IJTAG pins, the BISR register pins, or the
embedded boundary scan control pins. All Siemens EDA logictest IP related pins are
also disabled.
• Relaxes some paths in physical block’s IJTAG network.
• Blocks TCK from propagating to physical block logic through the eventual Siemens
EDA OCC muxes.
Assuming that your current hierarchical STA flow methodology may require loading a mix of
black boxes from lower physical blocks, extracted timing models, or backannotated netlists, the
proc always checks whether a physical block’s internal pin is actually loaded in memory before
attempting to apply a constraint to it. As a result, the call to the proc never errors out because of
unloaded lower physical block logic.
Disabling timing on all your physical block input’s clock pins purposely kills their non-DFT
internal functional timing paths. Likewise, physical block scan logic does not require any
additional SDC constraints, because of the following:
• The global scan_enable control signal is assumed already off in their parent design,
leaving all scan flops in functional mode.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Hierarchical STA in Tessent
• All physical block relevant logic (such as controllers, functional scan flops, LogicBist)
receives no clock.
The proc is called along with current level <xxx>_non_modal or Siemens EDA DFT modal
constraints procs to complete timing coverage of both non-modal synthesis and pre/post-layout
modal STA steps.
Note
The <arg> value is required only if your design contains Siemens EDA logictest IP.
tessent_create_functional_clocks
tessent_set_ijtag_non_modal
tessent_set_jtag_bscan_non_modal
tessent_set_memory_bisr_non_modal
tessent_set_memory_bist_modal
tessent_kill_functional_paths
tessent_set_modal_lower_pbs
update_timing
(*) IJTAG constraints are always present in any design. The presence of all other procs are
design-dependent.
tessent_set_ltest_pb_external_mode
The tool creates this proc only for isolated physical blocks with the “ext_ltest_en” DFT signal
present. It forces ext_ltest_en active and int_ltest_en (if present) inactive. Use this call after a
previous call to one of the xxx_ltest_modal_xxx procs, to select the external mode version of
your shift, bypass, or capture modes. The proc merely forces the lower physical block’s
ext_ltest_en and int_ltest_en DFT signals to their external mode requirements. You should
always call this proc when extracting your physical block’s timing model for later use in your
parent ltest STA modes, because it prevents ambiguous timing paths in your extracted model
timing arcs.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Hierarchical STA in Tessent
Current-level <xxx>_ltest_modal* STA procs aim to cover both internal and external mode test
paths in the same STA run, despite that letting ext_ltest_en toggling may introduce a few false
paths that could affect your design timing closure. For most cases, it is a risk worth taking,
because merging multiple STA modes together is highly desirable for minimizing your total
number of STA runs.
<ltest_prefix>_lower_pbs_external_mode
The extract_sdc command writes this proc only for designs instantiating lower-level physical
blocks featuring the ext_ltest_en DFT signal. The objective of this proc is to set all lower
physical blocks into external mode when running one of the logictest STA modes at the parent
level, which covers logictest mode timing paths through the boundary pins of these physical
blocks. Path coverage includes all logic between the physical block pins and their wrapper cells,
in addition to the wrapper chains shift mode paths.
Assuming that your current hierarchical STA flow methodology may require loading a mix of
black boxes from lower physical blocks, extracted timing models, or back-annotated netlists,
the proc always checks whether a physical block’s internal pin is actually loaded in memory
before attempting to apply a constraint on it. As a result, the call to the proc never errors out
because of unloaded lower physical block logic.
• Preventing logictest slow clock reconvergent timing paths inside the physical block
OCC logic.
• Asserting the ltest_en dft_signal.
• Asserting and deasserting the ext_ltest_en and int_ltest_en dft_signals.
• Deasserting the lbist_en dft_signal, if present.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Mapping Procs
Mapping Procs
Because you can use the Tessent SDC constraints both pre- and post-synthesis, the tool must
perform some mapping to find all pins and cells with the pre-synthesis instance path.
The mapping is accomplished with the following procs:
• tessent_get_ports
• tessent_get_pins
• tessent_get_cells
• tessent_get_flops
• tessent_map_to_verilog
• tessent_remap_vhdl_path_list
The procs tessent_get_ports, tessent_get_pins, and tessent_get_cells are wrapper procs of the
original SDC commands get_ports, get_pins, and get_cells, and they are used throughout the
Tessent SDC. These wrapper procs use the tessent_map_to_verilog and
tessent_remap_vhdl_path_list procs as required. Use these mapping procs (as opposed to
get_ports, get_pins, and get_cells) in your functional SDC if you have a design with unrolled
VHDL generate loops, and you have problems applying your functional SDC to the RTL. See
“Dealing with Unrolled VHDL Generate for Loops” on page 962 for more information.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Synthesis Helper Procs
The tessent_get_flops proc runs the tessent_get_cells proc and then filters the result collection
for sequential elements. The proc uses a filtering method appropriate for the current tool.
The tessent_remap_vhdl_path_list proc is used when the instance path cannot be found with the
simple mapping. It should only be needed when Tessent Shell has unrolled some VHDL
generate loops to do uniquified insertion in the instances within them. See “Dealing with
Unrolled VHDL Generate for Loops” on page 962 for more information. The proc supports
finding cells/instances that have a trimmed last character, for example a closing brace or a
question mark. This proc is called by tessent_get_cells and tessent_get_pins if needed. You
should not need to call this proc directly. You can also use the proc in the unlikely event that
your synthesis tool changed the names of cells in an unexpected way such as trimming any
trailing closing brace, for example “my_reg[0]” changed to “my_reg_0” instead of the expected
“my_reg_0_”
For example:
global tessent_custom_mapping_regsub
array set tessent_custom_mapping_regsub {
{\](/| |$)} {\1}
}
This example maps all RTL instance paths from the SDC file to remove any closing bracket
preceding a hierarchy separator (/) or at the end of the path (space for end of list element, $ for
end of list). You would need this mapping expression during your STA run if the synthesis tool
was trimming the closing brace of registers after a change_name. For example, my_reg[0] ->
my_reg_0 instead of my_reg_0_ as expected.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Synthesis Helper Procs
Three procs are provided to return the design instances that need to be boundary preserved,
optimized, or preserved:
• tessent_get_preserve_instances preservation_intent
• tessent_get_optimize_instances
• tessent_get_size_only_instances
tessent_get_preserve_instances preservation_intent returns a collection of instances whose
boundaries must be preserved. It must be provided an argument to establish the future use of the
netlist and determine which instances need to be preserved. The “select” value you need to
choose depends on whether you intend to use your post-synthesis netlist with our tools. Here are
the valid values for the “select” argument, in increasing order of inclusiveness:
• add_core_instances
This usage selection returns instances that need to be preserved for applying SDC
constraints for STA to your post-synthesis design, and instances required for the TCD
automation flow with ATPG.
• scan_insertion
This usage selection returns all instances of the previous selection, plus any instance of
modules having existing scan segments described in a TCD scan file and non-scan
instances (ICL attribute keep_active_during_scan_test=true). This selection is required
if you intend to do scan insertion on your design with Tessent Shell or a third party tool.
• icl_extract
This usage selection returns all instances of the two previous selections, plus any
instance of modules providing an ICL definition. This context is needed if you intend to
go through the DftSpecification flow again, this time with your gate level netlist. ICL
extraction requires that all ICL instances be present and traceable in the design.
If persistent cells added by Tessent Shell are RTL constructs (RTL cells or wrappers from the
cell library), they are returned by tessent_get_preserve_instances. If they are library leaf cells,
they are not returned by tessent_get_preserve_instances. Use the
tessent_get_size_only_instances proc to obtain these (see following).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example Scripts using Tessent Tool-Generated SDC
source \
${tsdb}/dft_inserted_designs/${design_name}_rtl.dft_inserted_design/ \
${design_name}.sdc
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example Design Compiler Synthesis Script
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example Fusion Compiler Synthesis Script
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example Genus Synthesis Script
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example Genus Synthesis Script
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example Genus Synthesis Script
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example PrimeTime STA Script
# Source Tessent Shell generated sdc file and set default variables
source \
${tsdb}/dft_inserted_designs/${design_name}_${design_id}.dft_inserted_design \
/${design_name}.sdc
tessent_set_default_variables
# Optionally override the above Tcl variables values using "set" commands. For
# example:
# set tessent_slow_clock_period 20
# set_ijtag_retargeting_options -tck_period 50
# array set tessent_clock_mapping {
# ts_tck_tck my_tck
# CLK3 CLK_F300
# }
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example PrimeTime STA Script
# If you have fake cells or cells that are not part of your library
# you can provide this file to load them.
if {[file exists load_lib_cells.tcl]} {
source load_lib_cells.tcl
}
# Create the script "load_design.pt" only if you need to load your design
# with a different command than the "read_verilog" below.
if {[file exists load_design.pt]} {
source load_design.pt
} else {
read_verilog $netlist
}
current_design $design_name
link_design
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example PrimeTime STA Script
################################################################################
#
# Tessent DFT
#
# Run the DFT mode with or without merging it with the functional mode.
#
# The first option below is the merged functional and DFT mode. You first
# source all functional SDC constraints for your design, and then merge them
# with the Tessent DFT constraints, the same way you presumably did when
# synthesizing the design before layout.
#
# To isolate all Tessent DFT timing paths from your functional timing paths
# for debugging purposes or if your DFT clock network or frequencies differ
# from your functional mode, refer to the second option in the example.
#
# Both options cover all Tessent-inserted DFT IP,such as IJTAG network,
# boundary scan, MemoryBIST, and BISR. Neither option covers scan or EDT mode,
# which require their own separate STA mode.
################################################################################
# First option: Merging your functional mode SDC with Tessent DFT SDC
echo "\n\n\nAnalysis in merged functional/DFT mode.************************ \n"
reset_design
<apply your functional mode constraints here>
# Merge with DFT mode
tessent_set_non_modal off
RunAndReport TESSENT_MERGED_DFT_MODE
The following block is only needed for v2020.3 and earlier designs that incorporate the
MemoryBIST Asynchronous Interface. Designs from v2020.4 and later incorporate the
Enhanced MemoryBIST Access hardware.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example PrimeTime STA Script
########################################################################
# For v2020.3 and earlier designs only, formally check your BAP Asynchronous
# interface timing paths
########################################################################
if {[info procs tessent_mbist_report_ai_timing] ne ""} {
echo "\n\nChecking your BAP asynchronous interface paths timing********** \n" ;
echo "See the results in output report file AITiming.report"
reset_design
tessent_set_default_variables
tessent_mbist_set_ai_timing_mode
update_timing
# set "-verbose" to 1 for a more detailed timing report
# change the "-tck_period" value for analysis of different shift speeds
redirect AITiming.report { tessent_mbist_report_ai_timing /
-tck_period $tessent_tck_period -verbose 1 }
}
########################################################################
# Combined Edt Shift Modes
########################################################################
reset_design
LoadBackAnnotationData
tessent_set_ltest_modal_shift
set_propagated_clock [all_clocks]
RunAndReport SHIFT
########################################################################
# EDT Slow CaptureMode
########################################################################
reset_design
LoadBackAnnotationData
set tessent_time_hold_in_slow_capture 1
set tessent_scan_en_setup_extra_cycles 1
set tessent_scan_en_hold_extra_cycles 1
set tessent_edt_update_setup_extra_cycles 1
set tessent_edt_update_hold_extra_cycles 1
tessent_set_ltest_modal_edt_slow_capture
set_propagated_clock [all_clocks]
RunAndReport SLOW_CAPTURE
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example PrimeTime STA Script
########################################################################
# EDT Fast Capture Mode
########################################################################
# Important: The following variable setting is important in order to allow
# at-speed coverage of your Tessent OCC's internal shift register and clock gaters
# paths with scan_enable=0:
set case_analysis_sequential_propagation never
reset_design
LoadBackAnnotationData
<load your functional constraints here, including all clock definitions and
functional timing exceptions>
set memory_bypass_en_value 1
set x_bounding_en_value 1
set observe_test_point_en_value 0
tessent_set_ltest_modal_edt_fast_capture
set_propagated_clock [all_clocks]
RunAndReport FAST_CAPTURE
The LogicBIST modes described in the following are required when using the hybrid TK/
LBIST flow.
You can run LogicBIST tests using one of three test clock sources chosen at pattern generation
time: shift_clock_src, test_clock, or TCK. Because TCK is a slow clock, STA verification is not
performed explicitly when using this clock source for LogicBIST; the tool verifies all paths with
one of the other two clocks, except for the clock network differences prior to the LogicBIST
controller.
If you generate LogicBIST patterns to run with test_clock as the LogicBIST clock source,
specify “test_clock” as an argument in the following procs:
tessent_set_ltest_modal_lbist_shift test_clock
tessent_set_ltest_modal_lbist_capture test_clock
The tool supports the values ltest_clock and edt_clock as aliases for “test_clock”.
If you generate two sets of LogicBIST patterns to run LogicBIST tests, run the LogicBIST shift
mode proc described in the following twice: first with the shift_clock_src argument and second
with test_clock argument.
For LogicBIST shift mode and LogicBIST capture mode using the shift_clock_src argument,
create the shift_clock_src clock in the timing tool and indicate its name using the Tessent SDC
Tcl variable tessent_lbist_shift_clock_src, as mentioned in “Preparation Step 2: Setting and
Redefining Tessent Tcl Variables” on page 948.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example PrimeTime STA Script
########################################################################
# LogicBIST Shift Mode
########################################################################
reset_design
LoadBackAnnotationData
tessent_set_ltest_modal_lbist_shift
set_propagated_clock [all_clocks]
RunAndReport LBIST_SHIFT
Unlike EDT, which uses separate fast and slow capture modes, LogicBIST uses a combined
capture mode. The NCPs and fault type used during fault simulation determine whether
LogicBIST test targets stuck-at or transition faults. These NCPs can use single or multiple clock
pulses sourced from either the LogicBIST clock or functional clock, as determined by the
NcpIndexDecoder and OCC settings. Similar to the shift mode, use either one or both of
shift_clock_src and test_clock arguments for analysis. The value for observe_test_point_en
should reflect the setting used during fault simulation. Control test points are typically enabled
for both stuck-at and transition tests.
########################################################################
# LogicBIST Capture Mode
########################################################################
reset_design
LoadBackAnnotationData
tessent_set_ltest_modal_lbist_capture
<when LogicBIST test targets transition faults, load your functional constraints
here, including all clock definitions and functional timing exceptions>
set memory_bypass_en_value 1
set x_bounding_en_value 1
# When observe_test_points are disabled for transition test:
set observe_test_point_en_value 0 ;
set_propagated_clock [all_clocks]
RunAndReport LBIST_CAPTURE
The following proc analyzes timing for the IJTAG network paths used to initialize the BIST
controller and read the MISR values after test is complete. This mode uses TCK.
########################################################################
# LogicBIST Setup (IJTAG Network Paths)
########################################################################
reset_design
LoadBackAnnotationData
set_propagated_clock [all_clocks]
tessent_set_ltest_modal_lbist_setup
RunAndReport LBIST_SETUP
The following proc analyzes timing for the single chain-based diagnosis mode. This mode uses
TCK for reading all the scan cells through the IJTAG network.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example PrimeTime STA Script
########################################################################
# LogicBIST Single Chain Diagnosis
########################################################################
reset_design
LoadBackAnnotationData
set_propagated_clock [all_clocks]
tessent_set_ltest_modal_lbist_single_chain
RunAndReport LBIST_SINGLE_CHAIN
When you implement the optional controller chain mode (CCM), the following proc analyzes
timing for CCM. In this mode, the tool removes timing exceptions between the LogicBIST
controller and the hybrid TK/LBIST blocks (as seen in the shift and capture modes) to reflect
CCM pattern generation setup.
########################################################################
# LogicBIST Controller Chain Mode
########################################################################
reset_design
LoadBackAnnotationData
set_propagated_clock [all_clocks]
tessent_set_ltest_modal_lbist_controller_chain
RunAndReport LBIST_CONTROLLER_CHAIN
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Example PrimeTime STA Script
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix A
The Tessent Tcl Interface
• You can use Tcl variables interchangeably with legacy Tessent tool variables and
environment variables.
• You should use Tcl syntax for setting and referencing variables, including using
$env(ENVARNAME) for accessing environment variables.
For example, if the value of environment variable “foo” equals “mode1” ($foo =
mode1), you can compare this value to a Tcl variable value using the following syntax:
set bar mode2
if {$env(foo) == $bar} {puts Match} else {puts "No match"}
Note
Use Tcl namespaces to avoid creating procedures that conflict with existing tool or
Tcl commands.
• When processing comments within a dofile, the tool does not write comments preceded
with “//” characters to the transcript. However, the tool does write comments that are
preceded with a pound sign (#) (the Tcl comment delimiter) to the transcript.
• A variable can contain a command string or be empty; attempting to run by referencing
$variable results in an error if $variable is empty.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Tessent Tcl Interface
General Tcl Guidelines in Tessent Shell
• When a tool command error occurs, the command interpreter prints the error message
and does not return anything.
• You can use the catch_output command to issue a specified tool command line and
prevent command errors from aborting an enclosing dofile or Tcl proc. The
catch_output command can optionally capture the output of a command or the returned
result.
• When a command error occurs nested inside a Tcl construct or Tcl proc, you can obtain
additional information about the error by issuing the following command:
> set errorInfo
This command prints the value of the $errorInfo Tcl variable, which may contain a
traceback of the nested Tcl calls so that you can determine the root cause of the error.
Difference Between the Dofile Command and the Tcl Source Command
You normally use the tool’s dofile command to run a file of tool commands. The Tcl “source”
command also runs a file of commands, but you should only use it to load Tcl procs, set Tcl
variables, or do other strictly Tcl commands.
You should use the dofile command to run a command file containing tool commands for the
following reasons:
Example 1
In this example, the add_scan_chains command defines every scan chain in the design. This
command is sometimes used hundreds of times and makes the dofile very long. Using Tcl, you
can shorten the dofile substantially by using a loop construct as shown here:
For the values of xx from 1 up to 256, the tool runs a separate add_scan_chains command for
each value. The transcript and logfile contain all 256 add_scan_chains commands (preceded
with “// subcommand: ”).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Tessent Tcl Interface
Encoding Tcl Scripts in Tessent Shell
Example 2
The following example controls the flow of creating test patterns and uses a variable to run
different commands based on the variable’s value:
if {$mode == stuck} {
set_fault_type stuck
. . .
} elseif {$mode == transition} {
set_fault_type transition
set_pattern_type -sequential 2
. . .
}
Example 3
Module hierarchies may become ungrouped through either synthesis or layout and ATPG may
operate on a flattened view of the design. Automated DRCs find and trace the EDT IP and
subsequently find and trace the flattened scan chains automatically. In the following example,
we are capturing the output of the report_scan_chains command and placing it into the variable
“rsc” by using the catch_output command. The foreach loop iterates on the report_scan_chains
output, capturing the chain name, group name and input and output connections in the variables
“chain”, “group”, “input”, and “output,” respectively. This information is written into the file
add_chains.txt.
foreach a $rsc1 {
puts "NEWLINE =\t$a"
regexp {.*chain = (.*)\s+group = (.*)\s+input = \'(.*)\'\s+output = \
'(.*)\'\s+.*} $a match chain group input output
puts $out "add_scan_chains -internal $chain $group \{$input\} \{$output\
}"
}
close $out
For details on how to use the encode_tcl_scripts command, refer to the Tessent Shell Reference
Manual.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Tessent Tcl Interface
Guidelines for Modifying Existing Dofiles for Use With Tcl
The most common issues you can run across with an existing dofile is accounting for Tcl special
characters. For more information, refer to Table A-2 on page 1014, which provides a list of
typically-used Tcl special characters.
Table A-1. Common Dofile Issues and Solutions
Dofile Issue Solution
Stopping dofile runs at a specific Use the native Tcl “error” command to stop the run of a
point dofile at any point. The “error” command requires a
message string, which the tool outputs. But to avoid any
message you can use an empty string:
error ""
Escaping Tcl special characters Use the following techniques to escape Tcl special
characters:
• Quotation marks (“”) group tokens but enable $variable
and [command] evaluations.
• Braces ({}) also group tokens and disable $variable and
[command] evaluations.
• Brackets ([]) implement command substitution and are
used to nest or embed commands.
• A backslash (\) escapes the next character. Use this to
tame a Tcl special character such as $, [, {, or ".
Using dollar signs in pathnames A dollar sign ($) specifies variable substitution. In some
netlists, pathnames (for example, foo/pin$p7) can contain
the dollar sign. When using pathnames with dollar signs,
enclose the pathname with braces ({ }) to prevent the tool
from substituting the value as shown in the following
example:
report_gates {foo/pin$p7}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Tessent Tcl Interface
Special Tcl Characters
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Tessent Tcl Interface
Special Tcl Characters
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Tessent Tcl Interface
Custom Tcl Packages in Tessent Shell
In the following code snippet, the line beginning with “# -type” is not a comment,
because the line immediately above it has a line continuation character (\). In fact,
the “#” confuses the Tcl interpreter, resulting in an error when it attempts to create
the tk_messageBox.
In general, it is good practice to begin all comment lines with a #. Be aware that
the beginning of a command is not always at the beginning of a line. Usually, you
begin new commands at the beginning of a line. That is, the first non-space
character is the first character of the command name. However, you can combine
multiple commands into one line using the semicolon “;” to designate the end of
the previous command:
set myname “John Doe” ; set this_string “next command”
set yourname “Ted Smith” ; # this is a comment
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
The Tessent Tcl Interface
Tcl Resources
The following methods are listed in order of the precedence in effect if there is more than one
package with the same name:
• Default location for Tessent Shell Tcl packages. You can place your package underneath
a directory named tessent_plugin/packages that is located at the top of your Tessent
install tree. When Tessent Shell finds a package in this directory upon invocation, it
appends the directory path to tessent_plugin/packages to the auto_path Tcl global
variable, if it exists.
• TESSENT_PLUGIN_PATH environment variable. You can set this variable to a colon-
separated list of directory paths that contain Tcl packages in a packages subdirectory.
When Tessent Shell finds a package, it appends the directory path to packages to the
auto_path Tcl global variable, if it exists.
• auto_path Tcl global variable. You can issue the following command in Tessent Shell to
specify a package location:
> lappend auto_path pathToTclPackageDir
• TCLLIBPATH environment variable. You can set this variable to a space-separated list
of directory paths that contain Tcl packages. A packages subdirectory is not required
under any of the paths.
Note
Tessent Shell ignores the TCL_LIBRARY environment variable.
Tcl Resources
The following website is a place to start in your search for the reference material that works best
for you. It is not an endorsement of any book or website.
http://www.tcl.tk/
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix B
Synthesis Guidelines for RTL Designs with
Tessent Inserted DFT
This appendix provides guidelines for you to use when synthesizing your design with Tessent
created IP RTL with a third-party synthesis tool, specifically Synopsys DC Ultra™.
You may experience problems with synthesis optimization using DC Ultra caused by
propagating constants even if the boundary optimization is false. This synthesis optimization
results in some of the DFT logic that is not connected until scan insertion being optimized away,
and the ports being kept. This creates a situation where some of the necessary Tessent logic is
eliminated during optimization, which breaks the design.
This problem does not appear to be present with the basic DC compile command; it seems to
only be an issue when using the compile_ultra command in certain tool versions.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
DFT Insertion With Tessent
• Cells
o Requires the use of a set_size_only command
• Design Modules
o Requires ungroup to be set to off
o Requires boundary optimization to be set to off
Boundaries of all instances of modules with Tessent Core Descriptions (TCDs) need to be
preserved, which means the following:
• No boundary optimization.
• No ungrouping.
• No new ports.
• No logic optimization.
The logic test module types that require this include EDT, LBIST, OCC, STI SIB, Bscan
interface, and any module with tcd_scan (pre-existing scan chain). ICL extraction uses modules
and ports of ICL modules so they also need to be preserved. You can avoid preserving the
IJTAG instance boundaries, which enables the synthesis tool to obtain a better optimization
result. You can use the ICL file from RTL in post synthesis and place and route.
The boundary optimization option during synthesis is global in the sense that it applies to every
design hierarchy on and below the specified module or instance. Hence, if you want to globally
optimize your design, you specify it on the root (top) module and then boundary optimization
runs through the entire design doing its work (assuming that there are no “don’t touch” cores,
which were already synthesized earlier). The problem is that valid constrained or not (yet)
connected ports or nets get optimized away. To prevent this, tell the DC tool not to apply this
boundary optimization to selected modules or instances.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Synthesis Guidelines
If you receive this message, you may not fully understand the ramifications or how to correctly
synthesize the Tessent IP in this environment. If not properly handled, you may see additional
information messages from the tool similar to the following:
Synthesis Guidelines
When synthesizing a design for Tessent DFT, certain considerations must be taken into account
to avoid issues later in the flow.
When using Cadence Genus, set the attribute hdl_flatten_complex_port to “true” for any
designs that include complex ports declared using unions to facilitate post-synthesis port name
matching.
When using any of the Synopsys Design Compiler family of synthesis tools, declare the ranges
of any ports declared as SystemVerilog interface arrays be declared as follows to facilitate post-
synthesis port-name matching:
When using DC Ultra, there are two key commands to be aware of to synthesize correctly with
the Tessent IP.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Synthesis Guidelines
• For instance level control, use the following compile directive before using the
compile_ultra command to turn off the constant propagation for cells:
set_compile_directives -constant_propagation false [get_cells <hier-cell-
name>]
Other means of restricting the synthesis tool from changing and optimizing instances and levels
of hierarchy include the set_size_only command and ungrouping. When set_size_only is used
for a specified list of leaf cells, the tool can only change their drive strength, or sizing. The
ungroup, group, set_ungroup, and uniquify commands can be used to control how the tool
removes (or not) levels of hierarchy and how reused blocks are uniqified during synthesis. The
dont_touch attribute is also effective for adding to designs, sub designs, and cells to prevent
them from being ungrouped during optimization.
Note
During the synthesis of MemoryBIST logic, there are two types of warnings that may be
issued by synthesis tools that are related to the optimization of registers. These warnings
may be ignored as synthesis tools are very reliable. Additionally, formal verification can be
used to confirm the functionality is not affected. The warning types are:
• Registers with no fanout are removed, along with the combinational logic driving the
inputs.
• Registers with inputs and outputs that are always identical are merged.
Different guidelines apply to the type of flow you are using, whether a bottom-up synthesis
flow, or a top-down approach.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
SystemVerilog and Port Name Matching
“N” is a positive integer that represents the size of the array minus 1. You can use this method to
properly map the port names in a netlist generated by any of the Design Compiler family of
tools.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Synthesis Guidelines for Parameterization Wrapper Flows
The set of Tcl procedures in “Tcl Procs for Synthesis in the Parameterization Wrapper Flow” on
page 1023 and the example script in this section are designed for interoperability with dc_shell.
If you are using another synthesis tool, we recommend adapting these procedures for use with
that tool.
You can use these procedures for synthesis of all parameterized blocks, including the following
situations:
• The block is parameterized and is instantiated with parameter overrides. The block does
not instantiate parameterized child blocks with parameter overrides.
• The block is parameterized and is instantiated with parameter overrides. The block does
instantiate parameterized child blocks with parameter overrides.
• The block is not parameterized or is not instantiated with parameter overrides; however,
the block instantiates one or more parameterized child blocks with parameter overrides.
Use or adapt the following example script. Invoke the script from the same directory where the
write_design_import_script command wrote the loading scripts for the RTL design files for the
block.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Tcl Procs for Synthesis in the Parameterization Wrapper Flow
flow_procs.tcl
The synthesize_block proc is the top-level proc that you call from your synthesis script.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Tcl Procs for Synthesis in the Parameterization Wrapper Flow
# 'synthesize_block'
# Simple usage
# synthesize_block <design_name> <design_id> <tsdb_path>
#
# where
# <design_name>
# The design name to be synthesized.
# <design_id>
# The design identifier of the design <design_name>.
# <tsdb_path>
# This path must have the following sub-directory structure:
# <tsdb_path>/dft_inserted_designs/<design_name>_<design_id>.
# dft_inserted_design
#
# It is also possible to pass optional arguments to 'synthesize_block'.
#
# -clock_dictionary_name <name_of_clock_dictionary_variable>
# Default value of <name_of_clock_dictionary_variable> is
# "clock_dictionary"
#
# -preserve_type <preserve_type>
# Default value of <preserve_type> is "icl_extract"
# Other allowed values: "scan_insertion" and "add_core_instances".
#
# -import_script_name_tpl<script_name_template>
# Default value of <script_name_template> is "analyze%s.tcl"
# The actual value passed for <script_name_template> can include %s,
# %n, and %i:
# %s:
# The '%s' will be replaced by '_i' when there is more than
# one 'parameterized_view[_i]' in the
# 'parameterization_wrapper_info_dictionary'.
# When only one view is present or the above dictionary is not
# present, the design import script file name is assumed not to
# have a suffix.
# The '%s' MUST be the last characters before the .file_extension
# (not checked)
# %n:
# The '%n' will be replaced by the <design_name> argument value to
# the proc.
# %i:
# The '%i' will be replaced by the <design_id> argument value to
# the proc.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Tcl Procs for Synthesis in the Parameterization Wrapper Flow
#
# -interface_name_tpl <interface_name_template>
# Default value of <interface_name_template> is
# "gates.%n.v_interface".
# See the '-netlist_name_tpl' info above for '%n' and '%i'.
#
# The synthesis uses the following files from the .dft_inserted_design
# directory when present:
# <design_name>.parameterization_wrapper_info_dictionary
# <design_name>.consolidated_child_blocks_info_dictionary
#
# When none of those are present, a simplified synthesis of the design
# will be used.
#
# The synthesis will use the mandatory <design_name>.sdc file from the
# .dft_inserted_design directory.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Tcl Procs for Synthesis in the Parameterization Wrapper Flow
} else {
# Here, there a no information dictionary file.
# Create a fake view for the current design to allow normal synthesis.
# The only entry key is named 'consolidated_view' with empty
# content such that synthesis of the block will not use
# either the parameterization_wrapper_info_dictionary or
# the consolidated_child_blocks_info_dictionary!
set infoDictForDesign [dict create normal_view [dict create]]
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Tcl Procs for Synthesis in the Parameterization Wrapper Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Tcl Procs for Synthesis in the Parameterization Wrapper Flow
remove_design -all
}
set supportProcFilePath \
[file join [file dirname [info script]] support_procs.tcl]
source $supportProcFilePath
support_procs.tcl
proc rename_post_synthesis_child_block_views { } {
upvar info_dictionary_for_view infoDictForView
upvar consolidated_info_dict consolidatedInfoDict
set removeColl {}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Tcl Procs for Synthesis in the Parameterization Wrapper Flow
if { $instancePathOfBlockInParent ne "" } {
append instancePathOfBlockInParent /
}
msg " blockInstancePath '$instancePathOfBlockInParent'"
dict for {childBlockName viewsDict} $consolidatedInfoDict {
msg " childBlockName '$childBlockName'"
array unset postSynthBlockNamesArray
foreach_in_collection cellObj [get_cells -hier -filter
hdl_template==${childBlockName}] {
set match 0
set blockInstancePath [string cat $instancePathOfBlockInParent
[get_attribute $cellObj full_name]]
msg " path '$blockInstancePath'"
dict for {viewName viewDict} $viewsDict {
set postSynthBlockName [dict get $viewDict
post_synthesis_uniquified_block_name]
set blockInstanceList [dict get $viewDict
block_instance_list_in_parent]
set blockInstancePathSearchString \
[string cat $lsearchGlob [string map $lsearchMapList
$blockInstancePath]]
set index [lsearch $lsearchMode $blockInstanceList
$blockInstancePathSearchString]
set match [expr {$index >= 0}]
if { $match } {
msg " blockInstance '[lindex $blockInstanceList $index]'"
break
}
}
if { $match } {
if { ![info exists postSynthBlockNamesArray($postSynthBlockName)]
} {
set refName [get_attribute $cellObj ref_name]
msg " rename_design $refName $postSynthBlockName"
rename_design [get_designs $refName] $postSynthBlockName
set designObj [get_designs $postSynthBlockName]
msg " set_dont_touch $postSynthBlockName"
set_dont_touch $designObj
append_to_collection removeColl $designObj
set postSynthBlockNamesArray($postSynthBlockName) 1
}
} else {
report_error "No match was found for '$blockInstancePath'"
}
}
}
return $removeColl
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Tcl Procs for Synthesis in the Parameterization Wrapper Flow
proc remove_child_block_design_objects
{remove_coll} {
if { [sizeof_collection $remove_coll] > 0 } {
msg " Removing design(s) {[get_object_name $remove_coll]}"
remove_design $remove_coll -hier
}
}
proc msg { args } {
foreach line $args {
puts [string cat ">>>> " $line]
}
}
proc report_error { error_message } {
return -code error $error_message
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Tcl Procs for Synthesis in the Parameterization Wrapper Flow
# source_wrapper_info_file
# Used to source a file with name:
# <design_name>.parameterization_wrapper_info_dictionary
# or
# <design_name>.consolidated_child_blocks_info_dictionary
#
# The argument 'extension_name' is also the variable name being set in
# the info file and must be one of:
# parameterization_wrapper_info_dictionary
# or
# consolidated_child_blocks_info_dictionary
proc source_wrapper_info_file { dft_inserted_design_dir design_name
extension_name } {
set filePath [file join $dft_inserted_design_dir
${design_name}.${extension_name}]
if { ![file exists $filePath] } {
return [dict create]
}
source $filePath
# Return the content of the file
return [set $extension_name]
}
proc initialize_synthesis_tool { args } {
file delete -force ./WORK
file mkdir ./WORK
define_design_lib WORK -path ./WORK
}
proc clean_synthesis_results { args } {
file delete -force ./WORK
}
proc link_block { args } {
link {*}$args
}
proc compile_block { args } {
compile {*}$args
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Synthesis Guidelines for RTL Designs with Tessent Inserted DFT
Tcl Procs for Synthesis in the Parameterization Wrapper Flow
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix C
Clocking Architecture Examples
The clocking architecture in designs may vary, and they play a role during test planning,
especially for hierarchical test.
This appendix provides examples of common clocking architectures and how to insert the on-
chip clock controllers (OCCs) given those architectures. The examples assume that you are
performing hierarchical test as described in “DFT Architecture Guidelines for Hierarchical
Designs” on page 103”.
For information about the OCCs supported by Tessent, refer to “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.
Clocking Architecture Examples
Clock Generators Outside the Cores
During intest mode for the wrapped cores, the OCCs inside the cores are active and the OCCs
outside the cores are inactive. During extest, the OCCs outside the cores are active and the
OCCs inside the cores are inactive.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Clocking Architecture Examples
Clock Sourced From A Core With Embedded PLL
Figure C-3. OCCs With Clock Generators Inside the Cores, Asynchronous
Clocks
During intest mode for the wrapped cores, the OCCs inside the cores are active, and the OCCs
outside the cores are inactive. During extest, the OCCs outside the cores are active, and the
OCCs inside the cores are inactive.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Clocking Architecture Examples
Clock Mesh Synthesis
When you are retargeting coreA and coreB at the same time, you must add a mux. Use a clock
net before reaching the OCC inside coreB as a clock to feed the OCC inside coreA to avoid
having back-to-back OCCs. To retarget both coreA and coreB at the same time, the OCCs
inside coreA and coreB must be active at the same time.
Insert standard OCCs inside the cores. The standard OCC inside the core with the embedded
PLL (coreB) gets promoted so that it is also included in the external chains. When in external
mode, the OCC inside coreB can be reused. For details, refer to “How to Handle Clocks
Sourced by Embedded PLLs During Logic Test” on page 694.
During intest, the standard OCCs inside coreA and coreB are active. The mux is set to 1 to avoid
cascading OCCs. During extest, only the promoted standard OCC within coreB is active, and
the mux is held at 0.
In the following example, you are retargeting coreA and coreB in separate runs, so there is no
need to insert a mux. During intest of coreA, only coreA’s OCC is active, and then during intest
of coreB, only coreB’s OCC is active. During extest of the cores, only the promoted standard
OCC within coreB is active.
Figure C-5. Clock Sourced From A Core With Embedded PLL, Without MUX
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Clocking Architecture Examples
Clock Mesh Synthesis
Core-level child OCCs have additional timing requirements because a single clock on the
boundary of the wrapped core is used for shift as well as for slow and fast capture. For details,
refer to “Recommendations” in the Tessent Scan and ATPG User’s Manual. Using SDC for
timing closure is described in “Timing Constraints (SDC)” on page 945.
During intest of coreA and coreB, the child OCCs are active, and the parent OCCs are in parent
mode. During extest of coreA and coreB, the parent OCCs are in standard mode and the child
OCCs are inactive.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Clocking Architecture Examples
Clock Mesh Synthesis
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix D
Formal Verification
Tessent™ Shell-based products do not generate scripts for use with formal verification tools
such as Synopsys® Formality® or Cadence® Conformal®. You can, however, set constraints in
your design that are used with these tools.
For EDT, constraining scan_en to 0 is sufficient to proceed with equivalence checking. The
formal verification tool reports some unmatched nodes (such as the newly added EDT pins,
clock/update/bypass/low_power/channel) and registers inside the EDT logic.
For OCC, if it has an IjtagInterface, or if the test_mode pin of the OCC is connected to an
IjtagNetwork, then keeping the IJTAG network in the reset state is sufficient. If the test_mode
pin is connected to a top-level port, this port needs to be constrained to 0.
The following sections provide guidance on how to set up formal verification. Use the correct
syntax for your chosen tool.
• Set the circuit to functional mode to hold the IJTAG network or TAP in reset.
• If you are at the chip level, set a constant 0 on TRST. If you are at the sub_block or
physical_block level, set a constant on the ijtag_reset ports to their active value. This is
typically 0.
• If your design has DftSignals coming from ports in both the chip and design levels, these
ports must be held at their reset values. The reset automatically handles DftSignals from
the TDR.
• If you are at the sub_block or physical_block level, suppress the verification of ports
created by Tessent Shell to prevent reporting violations.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Formal Verification
Pre-Layout Versus Post-Layout
• Assert the ijtag_reset pins to their active values on all instruments and SIBs inserted by
Tessent tools.
• Because the ICL network may already be present, the SIBs could result in mismatches
on the ICL network scan path. Set the SIB scan in/outs as “don’t verify” points.
• Use the “Consistency” mode for the verification passing mode rather than the “Equality”
mode by setting the following:
set verification_passing_mode Consistency
Tessent Shell may insert lockup elements at the end of the scan chains during scan insertion.
These are marked as stop points in the scanDEF file and are not reordered. After scan chain
reordering, you may see mismatches on these lockup latches during layout.
For example:
GPIO_2/\p2out_reg[1] ( IN SI ) ( OUT Q )
+ STOP GPIO_2/ts_1_lockup_latchn_clkc6_intno266_i D\
When this occurs, and you perform formal verification on the pre- versus post-layout, the tool
returns warnings that these lockup latches are no longer connected to the same functional flop as
previously.
This is not an issue with the other scan flops because you can disable the scan path by setting the
scan enable to 0. However, the lockup latch is a flop/latch without scan-in.
If you encounter this situation, use the following workaround: Specify set_dont_verify_point
for the lockup latches in both the reference and implemented designs to see if formal
verification passes. To find the lockup latches, introspect the design in Tessent Shell using the
following:
get_instances ts_1_lockup*
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Formal Verification
Embedded Boundary Scan at the Physical Block Level
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Formal Verification
Embedded Boundary Scan at the Physical Block Level
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix E
Solutions for Genus Synthesis Issues
You may encounter some issues when using Cadence Genus to synthesize mixed Verilog/
VHDL designs. This section describes some common issues and proposed solutions.
• Problem: There is a mismatch between the port list of the VHDL component
definition for a memory and the port list of an auto-created blackbox for the
memory. — Solution:
o Use the Synopsys translate_off/translate_on pragmas to effectively comment out
everything in the memory module definition after the port list. This avoids
performance issues during synthesis.
o In the Genus synthesis script for synthesizing a design that instantiates one or more
memories, do the following:
• Load the file containing the memory module definition with the internals
surrounded by pragmas, as mentioned in the previous solution. This avoids
creating a blackbox with a mismatch between the port list in the VHDL
component definition of the memory and the port list of the blackbox.
• Immediately after elaborating the design, add the following lines to prevent the
memory definition from being written to the netlist:
set mem_mod [vfind . -module "<name of the memory module>"]
set_db $mem_mod .write_vlog_skip_subdesign true
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Solutions for Genus Synthesis Issues
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix F
Transitioning from the Classic Point Tools
This appendix provides information to help you make the optional transition from the classic
Tessent point tools to Tessent Shell. The point tool application commands are forward-
compatible, so your dofiles work properly in Tessent Shell with only minor modifications. The
main differences involved in using Tessent Shell is that you have to set the context before doing
anything else, and then you must load the netlist and library.
The classic Tessent point tools are available in the current release, so all of your existing dofiles
and startup scripts continue to work as before. However, Siemens Digital Industries Software
recommends that you start planning your transition now because each release of Tessent Shell
contains additional features not available in the classic point tools, and future releases of
Tessent Shell continues to add new features that are not available in the classic point tools.
For information about specific point tools refer to the following sections:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Transitioning from the Classic Point Tools
Transitioning from the Classic TestKompress Point Tool
If you are already familiar with classic FastScan, the main differences involved in using Tessent
Shell is that you have to set the context before doing anything else, and then you must load the
Verilog netlist and library:
Another difference with using Tessent Shell is that several system modes used with classic
FastScan (atpg, good, fault) have been replaced with a single system mode (called analysis).
This means that “set_system_mode atpg” invocations (as well as transitions to good or fault
modes) are replaced by “set_system_mode analysis.” To facilitate your transition to Tessent
Shell, the set_system_mode command continues to accept the atpg/good/fault arguments, but
the tool actually switches to analysis mode.
Also, it is highly recommended for any simulation to replace the old “set_pattern_source
external” and “run” commands with the new read_patterns and simulate_patterns commands.
Unlike the “run” command, which has slightly different behavior in the good/fault/atpg system
modes, the simulate_patterns command enables you to explicitly control which pattern set to
simulate and which patterns (if any) to store in the internal pattern set.
The following list describes how Tessent Shell is different from the classic TestKompress tool
for creating EDT IP:
Once you have set the context, all commands in setup mode of classic TestKompress are
available in the setup mode of Tessent Shell. All commands available in atpg mode of
classic TestKompress (IP creation phase) are available in analysis mode of Tessent
Shell.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Transitioning from the Classic Point Tools
Transitioning from the Classic DFTAdvisor Tool
• Use the existing write_edt_files command to generate all EDT files, including RTL,
dofiles, the test procedure file, and synthesis and timing verification scripts. You can
issue this command only when in analysis mode. The write_edt_files command does not
write out the EDT IP netlist, so you must do this with the write_design command.
• For internal IP location flow-based EDT insertion with classic TestKompress, the tool
writes out all EDT files, inserts EDT IP into the design, and automatically changes to
insertion mode. You then have the ability to further edit the netlist, but you must
explicitly save changes with the write_design command.
Unlike classic TestKompress, Tessent Shell does not automatically exit after running a
write_edt_files command, so you must explicitly exit when ready. This is so that after IP
insertion into the design, you can perform further design editing before writing out the
design, or configure how to write out the design using the write_design command. Also,
Tessent Shell does not write out the netlist as part of the write_edt_files command, so
you must write out the netlist using the write_design command.
The following list describes how Tessent Shell is different from the classic TestKompress tool
for generating patterns:
Once you’ve set the context, all commands in the setup mode of classic TestKompress
are available in setup mode of Tessent Shell. And all commands available in the atpg
mode of classic TestKompress (Test Pattern Generation phase) are available in the
analysis mode of Tessent Shell.
The following lists the differences between the classic DFTAdvisor tool and Tessent Scan:
• You no longer need to use the “run” command. Analysis that was previously done using
the “run” command is now done automatically after DRC or as part of the
analyze_wrapper_cells and insert_test_logic commands.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Transitioning from the Classic Point Tools
Transitioning from the Classic Diagnosis Tool
• After issuing insert_test_logic in analysis mode, the tool updates the design and then
changes to insertion mode. This enables you to optionally perform further design editing
before writing out the netlist with the write_design command.
• There is no longer a system mode called Dft. Use analysis mode instead.
• Before you issue any of the classic DFTAdvisor commands, you must first set the
context:
set_context dft -scan
After invoking Tessent Shell with the “tessent -shell” command, at a minimum, you must
perform the following operations in sequence to enable scan diagnosis in Tessent Shell:
Previously, you specified the flattened design with the “tessent -diagnosis” command.
Now you must use the read_flat_model command.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix G
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1049
Global Customer Support and Success . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050
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 — You 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.
Index
TESSENT_LICENSE_ORDER, 38
Index
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.