Tshell User
Tshell User
Tshell User
Document Revision 7
This document contains information that is proprietary to Mentor Graphics Corporation. The original recipient of this
document may duplicate this document in whole or in part for internal business purposes only, provided that this entire
notice appears in all copies. In duplicating any part of this document, the recipient agrees to make every reasonable
effort to prevent the unauthorized use and distribution of the proprietary information.
Note - Viewing PDF files within a web browser causes some links not to function (see MG595892).
Use HTML for full navigation.
This document is for information and instruction purposes. Mentor Graphics reserves the right to make
changes in specifications and other information contained in this publication without prior notice, and the
reader should, in all cases, consult Mentor Graphics to determine whether any changes have been
made.
The terms and conditions governing the sale and licensing of Mentor Graphics products are set forth in
written agreements between Mentor Graphics and its customers. No representation or other affirmation
of fact contained in this publication shall be deemed to be a warranty or give rise to any liability of Mentor
Graphics whatsoever.
MENTOR GRAPHICS MAKES NO WARRANTY OF ANY KIND WITH REGARD TO THIS MATERIAL
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE.
MENTOR GRAPHICS SHALL NOT BE LIABLE FOR ANY INCIDENTAL, INDIRECT, SPECIAL, OR
CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING BUT NOT LIMITED TO LOST PROFITS)
ARISING OUT OF OR RELATED TO THIS PUBLICATION OR THE INFORMATION CONTAINED IN IT,
EVEN IF MENTOR GRAPHICS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
U.S. GOVERNMENT LICENSE RIGHTS: The software and documentation were developed entirely at
private expense and are commercial computer software and commercial computer software
documentation within the meaning of the applicable acquisition regulations. Accordingly, pursuant to
FAR 48 CFR 12.212 and DFARS 48 CFR 227.7202, use, duplication and disclosure by or for the U.S.
Government or a U.S. Government subcontractor is subject solely to the terms and conditions set forth in
the license agreement provided with the software, except for provisions which are contrary to applicable
mandatory federal laws.
TRADEMARKS: The trademarks, logos and service marks ("Marks") used herein are the property of
Mentor Graphics Corporation or other parties. No one is permitted to use these Marks without the prior
written consent of Mentor Graphics or the owner of the Mark, as applicable. The use herein of a third-
party Mark is not an attempt to indicate Mentor Graphics as a source of a product, but is intended to
indicate a product from, or associated with, a particular third party. A current list of Mentor Graphics’
trademarks may be viewed at: mentor.com/trademarks.
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.
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 Mentor Graphics
Technical Publication’s source. For specific topic authors, contact Mentor Graphics Technical
Publication department.
Revision History: Released documents maintain a revision history of up to four revisions. For
earlier revision history, refer to earlier releases of documentation which are available at the
following URL:
http://support.mentor.com
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, v2017.4
December 2017
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Table of Contents
Revision History
Chapter 1
Tessent Shell Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
What Is Tessent Shell?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
What Can You Do With Tessent Shell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Tessent Shell Tcl Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Command Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Command Completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Dofile Transcription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Tcl Command Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Chapter 2
Tool Invocation and Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Tool Invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Tessent Startup File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Tessent Shell Environment Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Contexts and System Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
System Modes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Context and System Mode Combinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Design Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Design Data Models. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Flat Design Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Hierarchical Design Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
ICL Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Object Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Chapter 3
Design Introspection and Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Design Introspection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Object Specification Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Introspection Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Design Introspection Command Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Design Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Design Editing Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Design Editing Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Simulation Contexts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Simulation Context Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Introspection and Analysis Using Simulation Contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Chapter 4
Tessent Shell Work Flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Tessent Shell Flow for Flat Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Overview of the RTL and Scan DFT Insertion Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
First DFT Insertion Pass: MemoryBIST and Boundary Scan . . . . . . . . . . . . . . . . . . . . . . 63
Second DFT Insertion Pass: EDT and OCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Load the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Specify and Verify the DFT Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Create the DFT Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Generate the EDT and OCC Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Extract the ICL Module Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Generate IJTAG Patterns and Run Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Perform Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Perform Scan Chain Insertion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Perform ATPG Pattern Generation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Considerations for Using Gate-Level Verilog Netlists. . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Tessent Shell Flow for Hierarchical Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Hierarchical DFT Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
How the DFT Insertion Flow Applies to Hierarchical Designs . . . . . . . . . . . . . . . . . . . . . 88
RTL and Scan DFT Insertion Flow for Physical Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . 89
First DFT Insertion Pass: Performing Block-Level MemoryBIST . . . . . . . . . . . . . . . . . 89
Second DFT Insertion Pass: Block-Level EDT and OCC . . . . . . . . . . . . . . . . . . . . . . . . 92
Specify and Verify the DFT Requirements: DFT Signals for Wrapped Cores . . . . . . . . 95
Perform Scan Chain Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Perform ATPG Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Run Recommended Validation Step for Pre-Layout Design Sign Off. . . . . . . . . . . . . . . 104
RTL and Scan DFT Insertion Flow for the Top Chip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Top-Level DFT Insertion Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
First DFT Insertion Pass: Performing Top-Level MemoryBIST and Boundary Scan. . . 109
Second DFT Insertion Pass: Top-Level EDT and OCC. . . . . . . . . . . . . . . . . . . . . . . . . . 112
Scan Chain Insertion Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
ATPG Pattern Generation Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Performing Top-Level ATPG Pattern Retargeting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
RTL and Scan DFT Insertion Flow for Sub-Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
DFT Insertion Flow for the Sub-Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
DFT Insertion Flow for the Next Parent Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Tessent Shell Post-Layout Validation Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Overview of the Post-Layout Validation Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Soft Link TSDB and Post-Layout Netlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Verify MemoryBIST, Boundary Scan and IJTAG Patterns . . . . . . . . . . . . . . . . . . . . . . . . 127
Verify the Scan-Inserted ATPG Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Post-Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic . . . . . . . . 129
Running Multi-Load ATPG on Memories for Wrapped Cores with Built-In Self Repair . . 134
Overview of Multi-Load ATPG on Memories for Wrapped Cores with Built-in Self Repair
134
Performing Multi-Load ATPG Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Performing Multi-Load Top-Level ATPG Pattern Retargeting . . . . . . . . . . . . . . . . . . . . . 137
Chapter 5
TSDB Data Flow for the Tessent Shell Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Core-Level or Flat TSDB Data Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Top-Level TSDB Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Chapter 6
Tessent Examples and Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
How to Handle Clocks Sourced by Embedded PLLs During Logic Test . . . . . . . . . . . . . . . 153
How to Design Capture Windows for Hybrid TK/LBIST. . . . . . . . . . . . . . . . . . . . . . . . . . . 159
How to Use Boundary Scan in a Wrapped Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TAP Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Stand-alone TAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
TAP with IJTAG Host Scan Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Compliance Enable TAP with IJTAG Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Daisychained TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Master TAP Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Slave TAP Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Connecting to a Third-Party TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
How to Set Up Third-Party Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
How to Set Up Support for Third-Party OCCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
How to Configure Files for Third-Party OCCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Test Logic Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Scan Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Pattern Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Chapter 7
DFTVisualizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
DFTVisualizer Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
DFTVisualizer Invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
DFTVisualizer Window Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
DFTVisualizer Quality Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Performing Basic Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Saving and Restoring Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Searching for an Instance, Net, or Pin in the Active Window . . . . . . . . . . . . . . . . . . . . . . 190
Searching for an Instance, Net, or Pin in the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Interruption of Operations from DFTVisualizer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Undocking and Docking Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Resizing Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Repositioning Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Accessing Popup Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Object Name Copied from a Popup Menu to the System Clipboard . . . . . . . . . . . . . . . . . 194
Adding Instances to the Current Display Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Selecting Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Cross-Selecting Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Selecting Multiple Objects in the Flat and Hierarchical Schematic Windows. . . . . . . . . . 196
Unselecting Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Customizing Marking Colors in the Schematic Windows . . . . . . . . . . . . . . . . . . . . . . . . . 197
Chapter 8
Test Procedure File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Test Procedure File Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Test Procedure File Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Test Procedure File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
#include Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Set Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Alias Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Timing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Timeplate Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Multiple-Pulse Clocks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
The pulse_clock Statement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Inferred Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Differences Between Default add_clock and 1x Multiplier Clock . . . . . . . . . . . . . . . . . 310
Always Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Procedure Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Clock Control Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
The Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Test_Setup (Optional). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Shift (Required) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Alternate Shift Procedure (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Load_Unload (Required) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Shadow_Control (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Master_Observe (Sometimes Required) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Shadow_Observe (Optional). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Seq_Transparent (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Clock (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Skew_Load (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Clock_run (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Capture Procedures (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Rules for Creating and Editing a Default Capture Procedure . . . . . . . . . . . . . . . . . . . . . 350
Rules for Creating and Editing Named Capture Procedures . . . . . . . . . . . . . . . . . . . . . . 350
Slow and Load Types in the Cycle Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
launch_capture_pair Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Viewing Optimized Named Capture Procedures (NCPs) . . . . . . . . . . . . . . . . . . . . . . . . 354
Clock_po (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Ram_sequential (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Ram_passthru (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Clock_sequential (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Init_force (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Test_end (Optional, all ATPG tools) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Sub_procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Additional Support for Test Procedure Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Creating Test Procedure Files for End Measure Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Serial Register Load and Unload for LogicBIST and ATPG . . . . . . . . . . . . . . . . . . . . . . . . 367
Register Load and Unload Use Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Chapter 9
Timing Constraints (SDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Generating and Using SDC for Tessent Shell Embedded Test IP . . . . . . . . . . . . . . . . . . . . . 384
SDC File Generation with Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
SDC Design Synthesis with Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Preparation Step 1: Sourcing SDC File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Preparation Step 2: Setting and Redefining Tessent Tcl Variables . . . . . . . . . . . . . . . . . . 386
Preparation Step 3: Verifying the Declaration of Functional Clocks . . . . . . . . . . . . . . . . . 387
Preparation Step 4: Redefining Other Tessent Tcl Variables . . . . . . . . . . . . . . . . . . . . . . . 388
Synthesis Step 1: Loading the Design Into Your Synthesis Tool. . . . . . . . . . . . . . . . . . . . 389
Synthesis Step 2: Applying the SDC Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Synthesis Step 3: Preparing the DFT Logic for Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . 389
Synthesis Step 4: Synthesizing Your Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Synthesis Step 5: Writing Out Your Final SDC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Synthesis Step 6: Writing Out Your Final Netlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
SDC for Modal Static Timing Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Checking Your Functional Logic Alone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Checking Your Embedded Test Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
VHDL and Mixed Language Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
VHDL Generate Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
SDC File Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
tessent_set_default_variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
tessent_create_functional_clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
tessent_<design_name>_set_dft_signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
tessent_constrain_<design_name>_non_modal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
IJTAG Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
LOGICTEST Instruments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
MemoryBIST Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
BoundaryScan Instrument. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Cell and Pin Mapping Procs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Synthesis Helper Procs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Appendix A
Example Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Example Design Compiler Synthesis Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Appendix B
The Tessent Tcl Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
General Tcl Guidelines in Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Guidelines for Modifying Existing Dofiles for Use with Tcl . . . . . . . . . . . . . . . . . . . . . . . . 420
Special Tcl Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
Custom Tcl Packages in Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Tcl Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Appendix C
Transitioning from the Classic Point Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Transitioning from the Classic FastScan Point Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Transitioning from the Classic TestKompress Point Tool. . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Transitioning from the Classic DFTAdvisor Tool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Transitioning from the Classic Diagnosis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Appendix D
Formal Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Constraints for Formality Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Appendix E
Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
The Tessent Documentation System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Mentor Support Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Index
Third-Party Information
End-User License Agreement
151
Figure 6-1. Example Chip with PLL Embedded Inside Lower Core . . . . . . . . . . . . . . . . . . 155
Figure 6-2. Active OCCs During Internal Test Modes of corec and coreb . . . . . . . . . . . . . . 156
Figure 6-3. Active OCCs During Internal Test Modes of corea and coreb . . . . . . . . . . . . . . 157
Figure 6-4. Active OCCs During Test Modes of Top Level . . . . . . . . . . . . . . . . . . . . . . . . . 158
Figure 6-5. Wrapped Core Boundary Scan Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Figure 7-1. DFTVisualizer Quality Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Figure 7-2. Trace Symbols. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Figure 7-3. Tracing Down One Hierarchical Level from a Selected Pin. . . . . . . . . . . . . . . . 208
Figure 7-4. Tracing Up One Hierarchical Level from a Selected Pin . . . . . . . . . . . . . . . . . . 209
Figure 7-5. Hierarchical Schematic Window Display with Net Bundling Off . . . . . . . . . . . 211
Figure 7-6. Same Display with Net Bundling On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Figure 7-7. Attributes in DFTVisualizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Figure 7-8. Configuration Data Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Figure 7-9. Design Browser Tabbed Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Figure 7-10. Design Browser Window with Library Tab Active . . . . . . . . . . . . . . . . . . . . . 257
Figure 7-11. DRC Violation Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Figure 7-12. Data Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Figure 7-13. Flat Schematic Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Figure 7-14. Hierarchical Schematic Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Figure 7-15. Configuration Data Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Figure 7-16. Global Search Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Figure 7-17. Test Structures Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Figure 7-18. Text Editor Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Figure 7-19. Console Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Figure 7-20. Wave Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Figure 8-1. 200ns Timing Waveform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Figure 8-2. Shift Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Figure 8-3. Timing Diagram for Shift Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Figure 8-4. Load_Unload Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Figure 8-5. Timing Diagram for Load_Unload Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Figure 8-6. Shadow_Control Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Figure 8-7. Master_Observe Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Figure 8-8. Shadow_Observe Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Figure 8-9. Sequential Transparent Circuitry Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Figure 8-10. Skew_Load Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Figure 8-11. Skew_load applied within Pattern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Figure 8-12. Full Ram Sequential Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Figure 8-13. Full Clock Sequential Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Figure 8-14. Init_force Procedure Usage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Figure 9-1. tessent_test_clock and tessent_shift_capture_clock Creation. . . . . . . . . . . . . . . 399
Figure 9-2. Generated Clock Muxed Multi-Clock Memories . . . . . . . . . . . . . . . . . . . . . . . . 404
Tessent Shell is a platform from which you can run all the Tessent tools. The platform includes
a shared design data, a common database, and powerful scripting utilities that provides a fully
automated DFT flow as well as the ability to customize the flow to fit specific requirements.
What Is Tessent Shell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
What Can You Do With Tessent Shell?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Tessent Shell Tcl Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Command Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Command Completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Dofile Transcription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Tcl Command Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
• Shared data model: Tessent Shell uses data models to store your design data. These
models are shared across all tools and functions, and you can access the data stored
within them for purposes of customizing your own design flow.
For standard automated flows, you do not need to be aware of this infrastructure. For
those that need to customize design flow steps that are not supported by the native tool
commands, you 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.”
• Attributes: Attributes are characteristics associated with design objects, such as library
cell, pins and modules, that are stored within data models. Some are pre-defined, and
you can also create your own attributes. Using attributes increases visibility into your
design, allowing you to manipulate and query attributes on 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: Examine the design objects and attributes stored within the data
models. Introspection allows you to retrieve the design data you need so that you can
using Tcl scripting techniques to automate your own custom designs flows.
For more information about design introspection, refer to “Design Introspection.”
• Tcl: Use this common scripting language across all Tessent tools and functions.
Through scripting, you can jump into and out of the Tessent Shell out-of-the-box flows
as needed for your design requirements.
For more information about Tcl usage, refer to “Tessent Shell Tcl Interface.”
• 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 any Tessent tool 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.”
• IJTAG automation: By default, the DFT instruments you create and insert with Tessent
Shell are controlled through an IJTAG network and protocol (IEEE 1687). Tessent Shell
automatically inserts the IJTAG infrastructure, which simplifies test setup and control of
all the instruments.
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, which includes
compression technology.
• Defect diagnosis and yield analysis — Perform test failure diagnosis to determine a
defect’s most probable failure mechanism and statistical analysis of diagnostic failures
to find systemic defects.
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?
In addition, 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 used the DFTVisualizer graphical interface.
If you are getting started with Tessent Shell, refer to “Tessent Shell Work Flows” for
information about the Tessent Shell work flow 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Command Completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Dofile Transcription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Tcl Command Registration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
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).
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
Dofile Transcription
Dofile Entries
Although you can use minimum typing of commands in Tessent Shell dofiles, it is best to
always use the full command name in all cases. There is no fixed minimum typing for any
command or option, and current minimum typing could change in a future release due to the
addition of new commands or options.
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 the Tcl evaluation, 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, if/else constructs.
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
• The tool writes all commands embedded in Tcl constructs to the transcript as executed
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 again as subcommands.
• The tool indents nested dofiles when they are written to the logfile.
• The tool can read a Tcl routine similar to a dofile. If you issue the source command
(>source my_report_env), then all the Tcl commands in the routine are not transcripted.
Control the Tessent Shell transcription behavior using the set_transcript_style command.
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 execute 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 and Basic Concepts
In the Tessent Shell environment, setting the context and system mode orients the tool as to
which task you will be performing. The tool uses design data models to store the relevant data
about your design.
Tool Invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Contexts and System Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Design Data Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation and Basic Concepts
Tool Invocation
Tool Invocation
When you invoke Tessent Shell, the tool starts up in setup mode.
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, which you
can do with the read_cell_library command.
Refer to the tessent shell command description in the Tessent Shell Reference Manual for
additional invocation options.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation and Basic Concepts
Tessent Shell Environment Variables
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation and Basic Concepts
Contexts and System Modes
In addition, you must specify the design level at which Tessent Shell will be executing tasks.
Contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
System Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Context and System Mode Combinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Design Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
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 System Verilog, 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 and Basic Concepts
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 and Basic Concepts
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.
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 Mentor Grahpics 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.
Change the Tessent Shell system mode using the set_system_mode command. For example:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation and Basic Concepts
Design Levels
The tool provides a set of commands that allow 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 subcontexts, such as whether
patterns -scan is configured to perform LogicBIST or ATPG.
set_context Sets the current context and its options.
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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation and Basic Concepts
Design Levels
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 and Basic Concepts
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 and Basic Concepts
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 and Basic Concepts
ICL Data Model
The ICL data model defines objects as one of the following four data types: icl_module,
icl_instance, icl_port, and icl_pin.
Each icl_module object has its list of icl_port objects. 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.
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.
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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tool Invocation and Basic Concepts
Object Attributes
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.
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,
DFTVisualizer, that allows you to edit and introspect designs, and adjust object attributes. For
details, refer to “DFTVisualizer” on page 183.
Design Introspection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Design Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Simulation Contexts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
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 allow 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.
Note
Some restrictions apply to design introspection. You can introspect only simple or vector
port, pin, or net object types. You cannot introspect ports, pins, or nets of complex System
Verilog or VHDL modules. Examples for such complex objects are multi-dimensional ports or
record ports.
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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Collections
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.
Introspection commands issued 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, names are not displayed in non-interactive mode such as when executing 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 which 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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Collections
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.
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
Introspection Examples
Introspection Examples
Design introspection allows you to create procedures to show design data of interest, create and
set attributes, create and manipulate collections, create custom reports, and other tasks.
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
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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Introspection Examples
register_attribute -name color -value_type string -default "blue" -enum "red green blue"
-object_types instance
# Set the “color” attribute of each instance to match Figure 3-1
set_attribute_value {/u4/u4 /u4/u5/u3 /u5/u2} -name color -value "green"
{u4/u4 u4/u5/u3 u5/u2}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Design Introspection and Editing
Introspection Examples
As an alternate way to register the attribute in the previous example, you can use the
register_attribute command as shown here:
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 allows you to use Boolean values for filtering and tracing. For example:
> sizeof_collection $t
3
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
Design Editing
Design Editing
Tessent Shell design editing commands allows 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 allow 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-4 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.”
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 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
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 Command Summary
# Next, add the JTAG IO pins and their respective PAD cell. Connecting #
them up.
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
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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Introspection and Analysis Using Simulation Contexts . . . . . . . . . . . . . . . . . . . . . . . . . . 56
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
For more information on displaying simulation data, see “Flat Schematic Window.” For
information on setting the number of simulation characters displayed, see the “Schematics
Preferences Dialog Box.”
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
stable_shift, and stable_capture. After setting a simulation context, you can introspect gate_pins
for simulation values based on that specific simulation context. For example, the
trace_flat_model command can do design tracing based on values specified for the current
simulation context.
In order to use any of the following techniques in this chapter, you must be doing the following:
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
DFTVisualizer Flat Schematic as shown in Figure 3-4.
In this case, no values are forced except for sen (scan enable), which is set to 1. Note that the
four possible simulation values are 0, 1, X, and Z.
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
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:
• Use the get_simulation_value_list command and specify the desired gate_pin object(s):
ANALYSIS> set_current_simulation_context stable_shift
ANALYSIS> get_simulation_value_list sc2_f1/D
X
• 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 and/or clock pulses.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 4
Tessent Shell Work Flows
This chapter introduces you to the basic building blocks for understanding the pre-layout DFT
insertion work flow when using Tessent Shell, for both flat and hierarchical designs. In
addition, it described the post-layout validation flow for netlists that have gone through place
and routing.
Tessent Shell Flow for Flat Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Tessent Shell Flow for Hierarchical Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Tessent Shell Post-Layout Validation Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Running Multi-Load ATPG on Memories for Wrapped Cores with Built-In Self Repair
134
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Tessent Shell Flow for Flat Designs
Refer to the following test case for a detailed usage example of the flow described in this
chapter:
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 Work Flows
Overview of the RTL and Scan DFT Insertion Flow
During the first pass, Tessent also inserts the IJTAG network. In addition, it inserts any IJTAG
instruments you may have present in the design as long as they have ICL descriptions. Refer to
the create_dft_specification command for details about this process.
Optionally, you can perform scan chain insertion at the same time as synthesis. This does not
effect how you perform DFT insertion, but you will 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 Work Flows
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 and OCC hardware. You clock the
MemoryBIST logic using the same functional clock that feeds the memories, as shown in
yellow in Figure 4-3. The IJTAG network (blue) will be scan tested using the IJTAG clock,
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
First DFT Insertion Pass: MemoryBIST and Boundary Scan
which is the TCK clock. The TAP network (red) is not scan tested or is made non-scan during
ATPG.
Note
The line numbers used in this procedure refer to the command flow dofile in Example 4-1
on page 65.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
First DFT Insertion Pass: MemoryBIST and Boundary Scan
Prerequisites
• To insert boundary scan, you must have an RTL design with instantiated IO 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 IO pads.
For more information, refer to the Tessent Cell Library Manual.
Procedure
1. Load the RTL design data. (See lines 1-6.) The following step is important for the first
DFT insertion pass:
a. Set the set_context -design_id switch to “rtl1.”
For a specified design, the -design_id switch stores all the data associated with a
particular DFT insertion pass in the TSDB. For information about how Tessent
interacts with the TSDB during the DFT insertion flow, refer to “TSDB Data Flow
for the Tessent Shell Flow”. 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, as desired. Refer to “Load 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 Work Flows
First DFT Insertion Pass: 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.
7. Create the DFT hardware, IJTAG network connectivity, and input test patterns. (See
lines 44-51.)
8. Run simulations to verify the design. (See lines 53-60.)
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 as detailed in the Getting Started
discussions listed above.
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 Work Flows
First DFT Insertion Pass: MemoryBIST and Boundary Scan
12
13 # Identify TAP pins
14 set_attribute_value tck_p -name function -value tck
15 set_attribute_value tdi_p -name function -value tdi
16 set_attribute_value tms_p -name function -value tms
17 set_attribute_value trst_p -name function -value trst
18 set_attribute_value tdo_p -name function -value tdo
19 set_boundary_scan_port_options ramclk_p -cell_options clock
20 set_boundary_scan_port_options reset_p -cell_options sample
21
22 # Some pins cannot add any boundary scan cells
23 set_boundary_scan_port_options test_clock_p -cell_options dont_touch
24 set_boundary_scan_port_options edt_update -cell_options dont_touch
25 set_boundary_scan_port_options scan_en_p -cell_options dont_touch
26
27 # Specify the clocks feeding the memories
28 add_clocks 0 ramclk_p -Period 5ns
29
30 check_design_rules
31
32 # Create DFT specification
33 set spec [create_dft_specification]
34 report_config_data $spec
35 set_config_value $spec/BoundaryScan/max_segment_length_for_logictest 150
36 read_config_data -in ${spec}/BoundaryScan -from_string {
37 AuxiliaryInputOutputPorts {
38 auxiliary_input_ports : portain_p[0], portain_p[1], portain_p[2] ;
39 auxiliary_output_ports : portbout_p[0], portbout_p[1],
40 portbout_p[2];
41 }
42 }
43 report_config_data $spec
44
45 # Create the hardware for the DFT inserted with the DFT specification
46 process_dft_specification
47
48 # Extract the IJTAG network connectivity and create ICL for the design
49 extract_icl
50
51 # Create patterns specification for validating the inserted hardware
52 create_patterns_specification
53
54 # Process the patterns specification and create simulation test benches
55 process_patterns_specification
56
57 # Run and check testbench simulations
58 set_simulation_library_sources -v ../library/verilog/adk.v \
59 -v ../library/pad_cells.v -v ../library/memory/ram.v
60 run_testbench_simulations
61 check_testbench_simulations -report_status
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Second DFT Insertion Pass: EDT 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 “Specify and Verify 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
For the second DFT insertion pass, use the same process for generating ATPG patterns and
performing simulation that you used during 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 Work Flows
Second DFT Insertion Pass: EDT and OCC
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 “Specify and Verify 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.
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 set_context
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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Second DFT Insertion Pass: EDT and OCC
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” will store the EDT 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 and OCC. The “rtl2” designation captures the fact
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_rtlread_verilog ../RTL/cpu_top.v
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 IO macros. The following command reads the Tessent cell library file for
the standard cells and pad IO macros:
read_cell_library ../library/adk_complete.tcelllib
If the pad IO library and standard cell library are separate, use the following commands
to read in the atpg.lib files and the library for the pad IO 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
and/or read_vhdl commands. This command also loads supporting files such as the
TCD, ICL, and PDL, if present in the TSDB.
For example, the following command reads in the design using the design ID from the
first DFT insertion. In this case, this is “rtl1”
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Second DFT Insertion Pass: EDT and OCC
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_box
-module command.
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
Since you already specified that you were working at the chip level in the first DFT
insertion pass, you do not need to re-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 Work Flows
Second DFT Insertion Pass: EDT and OCC
DFT signals are used to determine the various modes of operation, control values and
signal behaviors that are necessary for each test mode. The DFT signals capability in
Tessent Shell automates the following tasks:
• Adding DFT signals.
• Configuring DFT signals for various modes of operation.
• Transferring information about DFT signals from one step to the next.
Based on the desired mode of operation, Tessent creates the necessary setup procedures
to control DFT signals through an IJTAG network.
3. Specify the check_design_rules command to run pre-DFT design rule checking.
When DRC passes, Tessent Shell shifts from setup mode to analysis mode. Pre-DFT
DRC verifies that clocks are defined for all of the scannable sequential elements that
will be scan tested and identifies the async sets and resets so that they can be turned off
during shift operations. In addition, if you have specified the add_dft_clock_enable
command, Tessent checks clock-gating logic and module-type clocks.
Tessent Shell generates DFT_C violations when error conditions are detected. For
details, refer to “Pre-DFT Clock Rules (DFT_C Rules)” in the Tessent Shell Reference
Manual.
Examples
DFT Signals
You can add static DFT signals and dynamic DFT signals. Static DFT signals include global
DFT control, logic test control and scan mode signals. As described in the add_dft_signals
command description, these DFT signals are typically controlled by a Test Data Register that is
part of the IJTAG network.
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 both EDT and OCC.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Second DFT Insertion Pass: EDT 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 Work Flows
Second DFT Insertion Pass: EDT and OCC
Procedure
1. Specify the create_dft_specification command as follows:
create_dft_specification -sri_sib_list {occ edt}
For EDT and OCC, you must first generate a skeleton DFT specification that contains
two empty SRI SIBs that will specify the EDT and OCC sections of the IJTAG network.
Creating the DFT specification for EDT and OCC differs from the process you use for
MemoryBIST and boundary scan in the first DFT insertion pass.
2. Apply commands to customize the DFT specification using one of the following
interfaces:
o GUI — To fill in the EDT and OCC wrapper details for the DFT specification, you
can either use the Tessent GUI, known as DFTVisualizer (see Customizing the DFT
Specification for EDT), or the Tessent Shell command line.
o Command-Line — To customize the DFT specification on the command line, type
the EDT 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 74 for an example.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Second DFT Insertion Pass: EDT and OCC
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
This step should be done before generating the EDT and OCC hardware.
Examples
DFT Customization Example
The following example modifies a DFT specification to add 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 Work Flows
Second DFT Insertion Pass: EDT and OCC
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Second DFT Insertion Pass: EDT and OCC
Procedure
1. Specify the process_dft_specification command to insert EDT and OCC in the second
pass.
process_dft_specification
2. 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 Work Flows
Second DFT Insertion Pass: EDT and OCC
Procedure
1. Specify the extract_icl command to find all modules (both Tessent instruments and non-
Mentor Graphics 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
DFTVisualizer 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 DFTVisualizer, refer to “DFTVisualizer” on page 183.
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 Work Flows
Perform Synthesis
Procedure
1. Generate the test patterns for the design:
create_patterns_specification
run_testbench_simulations
check_testbench_simulations -report_status
Perform Synthesis
Synthesize the original RTL as well as the DFT-inserted RTL for MemoryBIST, boundary scan,
EDT and OCC. For RTL designs, perform synthesis once after performing the first and second
DFT insertion passes.
Prerequisites
• Tessent Shell supports synthesis using Synopsys Design Compiler. For details, 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 Work Flows
Perform Scan Chain Insertion
Procedure
Specify the write_design_import_script command to create a dc_shell design load script that
you can use to load the RTL design as it exists after the two DFT insertion passes.
Note
If you are not using Synopsys Design Compiler as your third-party synthesis tool,
you can still use the command to create a dc_shell script and adjust it to match your
synthesis tool’s command set.
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
Once again, when setting the context, ensure that you specify the design ID with a
unique name. The recommended name is “gate” for a flat design, although you can
choose a name as desired. As described in “Load the Design,” for a gate-level netlist the
recommended name is “gate3”.
2. Load the synthesized netlist. For example:
read_verilog ../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:
set_tsdb_output_directory ../tsdb_rtl
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Perform ATPG Pattern Generation
4. Load the rtl2 design data for the DFT hardware you previously inserted. For example:
read_design 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 pre-registered 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 Work Flows
Perform ATPG Pattern Generation
Procedure
1. Do one of the following:
• If you used Tessent Scan to insert the scan chains, specify the import_scan_mode
edt_mode command for ATPG pattern generation.
• If you did not use Tessent Scan for scan insertion, use the TCD IP mapping flow as
described in “Running ATPG Patterns without Tessent Scan” in the Tessent Scan
and ATPG User’s Manual.
When you specify the import_scan_mode command, Tessent Shell passes through the
scan-insert design data for the EDT and OCC logic. This data includes the scan
structures (scan chains and scan channels) that are stored in the TSDB under the “gate”
design ID. The gate design ID was created during scan insertion when you specified the
insert_test_logic command.
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 create ATPG patterns for any mode that you need, such as stuck-at and
transition. These patterns are stored in the TSDB database under the logic_test_cores
directory. The import_scan_mode command uses the same scan configuration—that is,
the DFT signals—that were used for the add_scan_mode command during scan
insertion.
2. Specify the set_current_mode command to indicate the type of pattern you are
generating (see “Stuck-at ATPG patterns” on page 81 and “Transition at-speed ATPG
patterns” on page 82).
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).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Perform ATPG Pattern Generation
# 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_static_dft_signal_value tck_occ_en 1
set_system_mode analysis
create_patterns
write_tsdb_data –replace
write_patterns patterns/cpu_top_stuck_parallel.v -verilog -parallel -
replace \
-scan -parameter_list {SIM_KEEP_PATH 1}
write_patterns patterns/cpu_top_stuck_serial.v -verilog -serial -replace \
-parameter_list {SIM_KEEP_PATH 1}
exit
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 -parameter_list {SIM_KEEP_PATH 1}
write_patterns patterns/cpu_top_transition_serial.v -verilog -serial \
-replace -parameter_list {SIM_KEEP_PATH 1}
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
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: 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 IO pad cells.
• Load the design. 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, the recommended naming conventions for the design IDs
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 IO 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 Work Flows
Tessent Shell Flow for Hierarchical Designs
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 testcase for a detailed usage example of the flow described in this
chapter:
tessent_example_hierarchical_flow_<software_version>.tgz
<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 Work Flows
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 description below.)
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 IO 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 a 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 below.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
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 you use sub-blocks
within the Tessent Shell flow, refer to “RTL and Scan DFT Insertion Flow for Sub-
Blocks.”
• 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 re-generate 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 description
below), 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
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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Hierarchical DFT Terminology
• 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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
How the DFT Insertion Flow Applies to Hierarchical Designs
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 IO macros. If this is the case, 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, ideally, should have its own TSDB.
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.
• Perform ATPG pattern retargeting of core-level patterns when you process the parent
physical block of the wrapper cores, as shown in section “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 Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
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 4-2
on page 91
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 will be
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, as desired. Refer to “Load the
Design” for more information about setting the design ID.
b. Specify the read_verilog command with a list of the RTL file names 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 line 29)
4. Create the DFT specification. (See lines 31-41.)
a. (Optional) To configure the functional pins so that they are shared as EDT channel
input and output pins, add the required logic using the AuxiliaryInput ports and
AuxiliaryOutput ports wrappers, respectively.
Tessent Shell allows for functional pins to be shared as EDT channel pins. You must
insert auxiliary input and output logic at the same time as you insert boundary scan
to avoid cascading two multiplexers along the functional output paths. For additional
information, refer to the AuxiliaryInputOutputPorts wrapper 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 Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
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.
5. Create the input test patterns and simulation test benches. (See lines 38-41 of
Example 4-2.)
6. Run simulations to verify the design. (See lines 43-48 of Example 4-2.)
Examples
The following dofile example shows a typical command flow as detailed in the procedure listed
above.
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
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
39 create_pattern_specification
40 process_pattern_specification
41 set_simulation_library_sources -v ../../../library/verilog/adk.v
42
43 # Run simulations
44 run_testbench_simulations
45
46 # If simulation fails use the following command
47 //check_testbench_simulations
48 exit
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 4-3.
Procedure
1. Load the Design. (See lines 1-10.)
2. Specify and Verify the DFT Requirements: DFT Signals for Wrapped Cores. (See lines
12-32.)
Note
Wrapped cores have their own DFT requirements for the clock signals
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
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 Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
43 OCC {
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
## Modify the following to your design requirements
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
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 Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
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 allows Tessent to stitch the scan chains into internal chains and
external chains as described in “Perform Scan Chain Insertion.”
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_enable command. Tessent checks for proper clock and asynchronous set/
reset control-ability.
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.
Examples
To define the DFT signals, the following example shows the required DFT signals for wrapped
cores in the second DFT insertion pass:
# Required for hierarchical DFT and will be used during scan insertion
# Specifying both the internal mode and the external mode
add_dft_signals int_ltest_en ext_ltest_en int_mode ext_mode
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
Using shared wrapper cells reduces the number of flops required for isolating the internal test
modes from the primary input ports of the wrapper core. It also reduces the number of flops
required for isolating the external test modes from the internal logic. Tessent automatically
generates shared wrapper cells.
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
The line numbers used in this procedure refer to the command flow dofile in Example 4-4
on page 98.
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
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
4. Load the rtl2 design data for the DFT hardware you previously inserted. For example:
read_design processor_core -design_id rtl2 -no_hdl
6. After running DRC, set up the wrapper cells as follows (see lines 25-35):
a. Specify the options for analyzing the wrapper cells.
b. Add dedicated wrappers, as necessary.
c. Analyze the wrapper cells with the analyze_wrapper_cells command.
d. Ensure that you exclude the EDT channel IO ports from wrapper analysis.
For details, refer to “Scan Insertion for Wrapped Core” in the Tessent Scan and ATPG
User’s Manual
7. Specify the add_scan_mode command to connect the scan chains to the EDT signals and
EDT hardware that you inserted during the second insertion pass. Scan insertion for
wrapper cells requires using multi-mode scan insertion as described in the Tessent Scan
and ATPG User’s Manual. Do the following (see lines 41-46):
a. Create one scan mode for the entire population of scan cells:
The entire population of scan cells are stitched into the first scan mode using the
add_scan_mode 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. Likewise, you had previously generated a DFT signal named “ext_mode”
that enables this scan mode.
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 “Perform Scan Chain Insertion” 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 Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
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 4-5 on page 102 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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
When working at the parent level, using the same design ID for the graybox model
as you used for scan insertion allows 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.
b. 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.
c. 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.
d. After running DRC and generating the ATPG patterns, use the write_tsdb_data
command to store the TCD, flat model, fault list and PatDB files in the TSDB.
e. Use the write_patterns command to write out the testbench required to simulate the
generated ATPG patterns.
See Example 4-6 on page 102.
3. Run ATPG on the internal mode of the wrapped core. This results in the ATPG pattern
that you will 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. 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.
c. If you used Tessent Scan for scan insertion, specify import_scan_mode to import the
internal mode.
d. After running DRC and generating the ATPG patterns, store the TCD, flat model,
fault list and PatDB files in the TSDB using the write_tsdb_data command.
e. 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 4-7 on page 103.
4. Run Verilog simulation of the core-level ATPG patterns.
Performing this task ensures that the patterns will function as desired when they are
retargeted at the parent level. For parallel load patterns as specified by the write_patterns
-parallel command, simulate all the patterns. For serial load patterns, a handful of
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
patterns are sufficient; the runtime 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
# Use add_scan_mode to specify a different name than what was used during
scan insertion
set_current_mode edt_multi_SAF -type external
report_dft_signals
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
# 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 -parameter_list {SIM_KEEP_PATH 1}
set_pattern_filtering -sample_per_type 2
write_patterns patterns/processor_core_ext_stuck_serial.v \
-verilog -serial -replace -parameter_list {SIM_KEEP_PATH 1}
exit
# Use add_scan_mode to specify a different name than what was used during
scan insertion
set_current_mode int_mode_sa -type internal
report_dft_signals
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
# 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 -parameter_list {SIM_KEEP_PATH 1}
set_pattern_filtering -sample_per_type 2
write_patterns patterns/processor_core_stuck_serial.v \
-verilog -serial -replace -parameter_list {SIM_KEEP_PATH 1}
exit
# To view the coverage of the faults testable by internal mode, you must
# eliminate the undetected faults, which would be those generated in
# external mode. Do this by merging in the fault list generated from
# running 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 Work Flows
RTL and Scan DFT Insertion Flow for Physical Blocks
create_patterns_specification
process_patterns_specification
set_simulation_library_sources -v ../../../library/memory/
SYNC_1RW_8Kx16.v -v ../../../library/verilog/adk.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 Work Flows
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 will 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 will 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. It schedules
the tests for the wrapped cores at the top level, and it allows access to the chip level so that you
can run these tests.
During insertion and pattern generation, you will be opening the TSDBs that store the wrapped
core design data and reading 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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for the Top Chip
• 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 use read_design to load its view.
Top-Level DFT Insertion Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
First DFT Insertion Pass: Performing Top-Level MemoryBIST and Boundary Scan . 109
Second DFT Insertion Pass: Top-Level EDT and OCC. . . . . . . . . . . . . . . . . . . . . . . . . . 112
Scan Chain Insertion Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
ATPG Pattern Generation Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Performing Top-Level ATPG Pattern Retargeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for the Top Chip
After performing the RTL and scan DFT insertion process for the wrapped cores, the
architecture looks as follows. Each of the cores has an EDT controller and a child OCC. The
processor core has the memories with MemoryBIST already inserted.
Figure 4-19. Top-Level Example, After DFT Insertion for Wrapped Cores
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 simple TAM for purposes of retargeting
the wrapped cores (not shown in the picture below).
In this top-level example test case, the hierarchical core starts with RTL insertion, and in
addition, at the top level we would like 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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for the Top Chip
Figure 4-20. Top-Level Example, After DFT Insertion at the Top Level
Refer to “First DFT Insertion Pass: 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.
Note
This procedure is similar for flat designs as documented in “First DFT Insertion Pass:
MemoryBIST and Boundary Scan” on page 63.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for the Top Chip
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 will
read 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 MemoryBIST hardware and extract the ICL.
6. Create the input test patterns and simulation test benches.
7. Run simulations to verify the design.
Examples
The following dofile example shows a typical command flow for inserting boundary scan. The
flow is the same as you would use for a flat design with the exception of the commands
highlighted in bold. Notice that 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 Work Flows
RTL and Scan DFT Insertion Flow for the Top Chip
# Read in PLL as a blackbox so that excluded in design list that you write
out for synthesis
read_verilog ../rtl/noncore_blocks/pll.v -blackbox
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for the Top Chip
GPIO1_1 ;
}
}
report_config_data $spec
process_dft_specification
extract_icl
run_synthesis
create_patterns_specification
process_pattern_specification
set_simulation_library_sources \
-v ../../library/verilog/*.v \
-v ../rtl/noncore_blocks/pll.v \
-v ../rtl/noncore_blocks/iopad.v \
-v ../../library/memory/SYNC_1RW_8Kx16.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 allows Tessent to perform DRC on the wrapper chains in addition to the rest of the
top-level logic that will be logic tested.
3. Define a retargeting mode for each group of wrapped cores whose ATPG patterns you
will be retargeting 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
retargetingX_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.
Example 4-8 on page 113 shows demonstrates retargeting of two wrapped cores,
processor_core and gps_baseband.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for the Top Chip
read_cell_library ../../library/tessent/adk.tcelllib
read_verilog ../rtl/noncore_blocks/pll.v -blackbox
set_design_sources -format verilog -v ../rtl/noncore_blocks/iopad_sel.v \
-v ../rtl/noncore_blocks/iopad.v
read_design chip_top -design_id rtl1 -verbose
read_design processor_core -design_id gate -view graybox -verbose
read_design gps_baseband -design_id gate -view graybox -verbose
set_current_design chip_top
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
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 Work Flows
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
# Create DFT specification
set spec [create_dft_specification -sri_sib_list {occ edt} ]
report_config_data $spec
read_config_data -in $spec -from_string {
OCC {
ijtag_host_interface : Sib(occ);
}
}
set id_clk_list [list \
pll_clock_0 PLL_1/pll_clock_0 \
INCLK INCLK \
]
foreach {id clk} $id_clk_list {
set occ [add_config_element OCC/Controller($id) -in $spec]
set_config_value clock_intercept_node -in $occ $clk
}
report_config_data $spec
read_config_data -in $spec -from_string {
EDT {
ijtag_host_interface : Sib(edt);
...
}
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_pattern_specificationset_simulation_library_sources -v ../../
library/verilog/*.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 Work Flows
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 “Perform Scan Chain Insertion” (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.
read_cell_library ../../library/tessent/adk.tcelllib
read_verilog ../rtl/noncore_blocks/pll.v -blackbox
set_design_sources -format verilog -v ../rtl/noncore_blocks/iopad_sel.v -v ../rtl/
noncore_blocks/iopad.v
read_verilog ../Synthesis/chip_top_synthesized.vg
read_design chip_top -design_id rtl2 –no_hdl -verbose
read_design processor_core -design_id gate -view graybox -verbose
read_design gps_baseband -design_id gate -view graybox -verbose
set_current_design chip_top
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 Work Flows
RTL and Scan DFT Insertion Flow for the Top Chip
Refer to “Perform ATPG Pattern Generation” (for flat designs) for information about generating
the ATPG patterns. The flow for the top level of a chip builds onto the process by adding in the
grayboxes and blackboxes. As with flat designs, you have a choice between using the boundary
scan chains for capture or using the primary pins of the chips (using the pads).
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 Work Flows
RTL and Scan DFT Insertion Flow for the Top Chip
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 will be retargeting.
6. Apply the read_patterns command to read in the stuck-at ATPG patterns that you will be
retargeting.
Examples
The following dofile example shows how you would retarget the stuck-at ATPG patterns for the
wrapped core, processor_core.
read_cell_library ../../library/tessent/adk.tcelllib
read_verilog ../rtl/noncore_blocks/pll.v -blackbox
set_design_sources -format verilog -v ../rtl/noncore_blocks/iopad.v \
-v ../rtl/noncore_blocks/iopad_sel.v
read_design chip_top -design_id gate
read_design processor_core -design_id gate -view graybox -verbose
read_design gps_baseband -design_id gate -view graybox -verbose
set_current_design chip_top
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
RTL and Scan DFT Insertion Flow for the Top Chip
report_core_descriptions
import_clocks –verbose
report_clocks
set_system_mode analysis
write_tsdb_data -replace
# Write out the STIL file that will used on the tester
write_patterns patterns/processor_core_edt_stuck_retargeted.stil \
-stil -replace
exit
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 shown
above for processor_core.
Example 4-10. 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 Work Flows
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]
# Write out the STIL file that will used on the tester
write_patterns patterns/gps_edt_transition_retargeted.stil -stil -replace
exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
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 will include 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
DFT Insertion Flow for the Next Parent Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
• Do not perform synthesis or scan insertion at the sub-block level because the sub-block
netlist may not exist after synthesis.
• During the second DFT insertion pass, you will only be inserting pre-DFT DRCs.
Typically, you do not insert EDT controllers at the sub-block level because the logic
inside of the sub-block is too small and the sub-block module itself may not exist after
synthesis. You can insert an EDT controller at the next parent level that you dedicate to
testing the logic inside of a sub-block. In most cases, this EDT controller is active at the
same time as other EDT controllers that are present at the next parent level.
Note
The sub-block flow for inserting MemoryBIST and pre-DFT DRCs follows the same steps
as discussed in the “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 Work Flows
RTL and Scan DFT Insertion Flow for Sub-Blocks
Procedure
1. First DFT Insertion Pass: Performing Block-Level MemoryBIST. 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: Block-Level EDT and OCC” procedure, excluding generating the
EDT and OCC hardware.
Since 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 required fixing.
• 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 Work Flows
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
The following procedure follows 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, follow the steps described in “RTL and Scan DFT Insertion Flow for Physical
Blocks,” ensuring that you load the sub-block design as described below.
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. See the example below.
2. Second DFT Insertion Pass: 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. See the example below.
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 Work Flows
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 Work Flows
Tessent Shell Post-Layout Validation Flow
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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Soft Link TSDB and Post-Layout Netlist
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
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 Work Flows
Verify the Scan-Inserted ATPG Patterns
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_pattern_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 Work Flows
Post-Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic
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 “Perform ATPG Pattern Generation” for specifics related to
wrapped cores and “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 Work Flows
Post-Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic
become part of the next higher instance. Ungrouped test logic during layout can cause some of
the automated setup for pattern generation to no longer operate seamlessly.
The automated flow relies on preservation of Tessent test logic’s hierarchical names. Use the
following post-layout validation flow to update the TSDB with the post-layout netlist and set up
the design for ATPG. The flow assumes knowledge of the ATPG pattern generation flow for
physical blocks as described in “Perform ATPG Pattern Generation”.
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. To use the add_core_instances command during
ATPG or other post-layout steps, the hierarchy of the OCC and EDT logic must be preserved.
The IJTAG logic nodes only need to be preserved if you plan to rerun ICL extraction on the
post-layout netlist, but in most cases there is no need to do this.
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 needed 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 132.)
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”.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Post-Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic
Using the same design ID for the graybox model that you used for the post-layout
netlist allows 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). Since 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 will 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 132.)
a. Specify a unique ATPG mode name with the set_current_mode command (line 9).
Append the name with “_post_layout” or “_final” to clarify which mode to use for
silicon diagnosis. Set the current mode type to “internal”.
b. Add the core instances using the design ID and mode from the pre-layout step (line
14). This loads the TCD file that contains the information for the design’s core
instances without the need to match them to test logic instances that may have been
ungrouped during layout.
c. You can 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 36).
When you run ATPG in internal mode for transition patterns, note 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
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Post-Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic
• 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 Work Flows
Post-Layout Validation When You Have Ungrouped IJTAG/OCC/EDT Logic
11 # Use the -design_id and -mode from pre-layout to read in the TCD of that
12 # mode
13
14 add_core_instance -current_design -design_id gate -mode edt_int_stuck
15 set_system_mode analysis
16 add_fault -all
17 report_statistics -detail
18 create_patterns
19 report_statistics -detail
20 # Store TCD, flat_model, fault list and patDB format files in the TSDB
21 # directory
22
23 write_tsdb_data -replace
24
25 # Write Verilog patterns for simulation
26 write_patterns patterns/processor_core_stuck_parallel.v -verilog -
parallel -replace -parameter_list {SIM_KEEP_PATH 1}
27 set_pattern_filtering -sample_per_type 2
28 write_patterns patterns/processor_core_stuck_serial.v -verilog -serial -
replace -parameter_list {SIM_KEEP_PATH 1}
29 # Optional Step - Can run in external mode and calculate the fault
30 # coverage of the core(both Internal and External) as described below.
31 # In order to understand the coverage of the faults testable by Internal
32 # mode it is necessary to eliminate the undetected faults that would
33 # otherwise be detected in External mode. This is done by merging the
34 # fault list from running the graybox in External mode with read_faults:
35
36 #read_faults -mode ext_multi_stuck -fault_type stuck -merge -verbose
37
38 # Final coverage of the core that includes both Internal and External
39 # modes
40 # report_statistics -detail
41 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Running Multi-Load ATPG on Memories for Wrapped Cores with Built-In Self Repair
This discussion assumes that you are familiar with the two-pass pre-scan DFT insertion flow as
described in “RTL and Scan DFT Insertion Flow for Physical Blocks” on page 89, especially as
related to performing ATPG pattern generation. Figure 4-25 shows this flow.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Performing Multi-Load ATPG Pattern Generation
Note that 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 will initiate a FuseBox controller power-up emulation.
The power-up emulation will clear the BISR registers if the fuse box has not been programmed,
or will initialize 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
The line numbers used in this procedure refer to the command flow dofile in Example 4-11
on page 136.
Prerequisites
• You have performed the “Two-Pass Insertion Flow for RTL, Wrapped Cores” on
page 89 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.)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Performing Multi-Load ATPG Pattern Generation
Note
Note that 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; and at the chip-level,
the iProc will initiate a FuseBox controller power-up emulation.
Example 4-11. Multi-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 Work Flows
Performing Multi-Load Top-Level ATPG Pattern Retargeting
23
24 # Memory is used during ATPG, by setting the DFTSignal memory_bypass
25 # to "0"
26 set_static_dft_signal_values memory_bypass_en 0
27
28 # Read in the PDL for the memory BISR
29 source \
30 ../tsdb_outdir/instruments/processor_rtl1_mbisr.instrument/\
31 processor_rtl1_tessent_mbisr.pdl
32
33 # Specify the iProc init_bisr_chains for the memory BISR as
34 # non_retargetable
35 set_test_setup_icall init_bisr_chains -non_retargetable
36
37 report_statistics -detail
38 # Generate patterns
39 create_patterns
40 report_statistics -detail
41
42 # Store TCD, flat_model, fault list and patDB format files in the TSDB
43 # directory
44 write_tsdb_data -replace
45
46 # Write test benches for Verilog simulation
47 write_patterns patterns/processor_multi_load_parallel.v \
48 -verilog -parallel -replace -parameter_list {SIM_KEEP_PATH 1}
49 write_patterns patterns/processor_multi_load_serial.v
50 -verilog -serial -replace -parameter_list {SIM_KEEP_PATH 1}
51 exit
At the wrapped core level, you inject a fault in the repairable memory, then run the multi-load
ATPG Pattern and it should fail. This check shows that if a repairable memory has defect and it
is not repaired then when you retarget the multi-load ATPG patterns from the top-level then it
will fail.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Performing Multi-Load Top-Level ATPG Pattern Retargeting
For retargeting multi-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 fuse box controller and initiates a PowerUpEmulation. When the
iProc is called and no fuse box 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 4-12
on page 139.
Prerequisites
• You have performed the “RTL and Scan DFT Insertion Flow for the Top Chip” on
page 106 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.)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Performing Multi-Load Top-Level ATPG Pattern Retargeting
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_multi_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_multi_load_atpg
25
26 report_core_descriptions
27 import_clocks -verbose
28 report_clocks
29
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
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Shell Work Flows
Performing Multi-Load Top-Level ATPG Pattern Retargeting
45
46 # Write Verilog patterns for simulation
47 write_patterns patterns/processor_edt_multi_load_retargeted.v -verilog \
48 -parallel -replace -begin 0 -end 7 -scan -parameter_list {SIM_KEEP_PATH 1}
49 write_patterns patterns/processor_edt_multi_load_retargeted_serial.v \
50 -verilog -serial -replace -Begin 0 -End 2 \
51 -parameter_list {SIM_KEEP_PATH 1}
52 exit
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 5
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.
This chapter builds on the material discussed in the sections “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.
With the addition of boundary scan in the first DFT insertion pass and the exclusion of graybox
modeling, this data flow also applies to flat and DFT-inserted designs unless the core includes
embedded pad IO macros that need boundary scan to be inserted as well. Refer to “Tessent
Shell Flow for Flat Designs” for details.
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
During the first DFT insertion pass, provide the required files for your DFT implementation at
this stage. This 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 the first-pass instrument hardware
needs to be inserted. 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 Figure 5-1, the design-level files and modified RTL are stored within
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
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, 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.
Figure 5-1. TSDB Data Flow, Core Level, First Insertion Pass
Figure 5-2 shows the data flow for the second DFT insertion pass. Tessent uses the design data
that was saved as rtl1 in the first pass as input for the second pass.
The relevant design RTL, TCD, ICL and PDL files from the first DFT insertion pass are
automatically read in when you specify the read_design command as described in “Load 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 5-2. TSDB Data Flow, Core Level, Second Insertion Pass
Figure 5-3 shows the data flow for scan chain insertion. After synthesis, which you perform
using a third-party tool, you have a synthesized gate-level netlist. This netlist 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 5-4 shows that the input to ATPG is 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”). Tessent creates the logic_test_cores directory, which stores 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.
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 “Perform ATPG Pattern Generation” 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
At the chip level, Tessent uses as inputs the core-level design data that was stored in the core-
level TSDBs for purposes of ATPG pattern retargeting. Refer to “RTL and Scan DFT Insertion
Flow for the Top Chip” for details.
Table 5-2. Top-Level TSDB Data Flow Inputs and Outputs
Task Input Output
DFT Insertion: • RTL netlist • Modified RTL + new RTL
First Pass • Libraries • ICL for IJTAG network
• Required DFT signals • TCD: clocks, DFT signals
Design ID for
output: rtl1 • Boundary scan requirements • ICL for boundary scan + PDL
• TSDBs, lower core design data
DFT Insertion: • rtl1 design data • Modified RTL + new RTL
Second Pass • Libraries • ICL for IJTAG network
• Required DFT signals • TCD: clocks, DFT signals
Design ID for
output: rtl2 • EDT and OCC requirements • ICL for OCC and EDT + PDL
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 5-5 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, Tessent uses as inputs the gate scan-inserted design data and
interface view from the wrapped cores. This is done by opening the core TSDB directories and
using the read_design command to read in the graybox model and 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, 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. The following discussion assumes that you have one TSDB per design.
Figure 5-5. TSDB Data Flow, Top Level, First Insertion Pass
Figure 5-6 shows the data flow for the second DFT insertion pass. In addition to the other input
requirements that you provide as shown in Table 5-2, Tessent uses the design data that was
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
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.
Figure 5-6. TSDB Data Flow, Top Level, Second Insertion Pass
Figure 5-7 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 5-8 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 5-8. TSDB Data Flow, Top Level, ATPG Pattern Generation
As the final step for the top level in a hierarchical design, perform ATPG pattern retargeting of
the core ATPG patterns as shown in “ATPG Pattern Generation Example.” Figure 5-9 shows
that you read in the ATPG patterns from the logic_test_cores directory from each of the core
TSDB directories in addition to 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 5-9. 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 6
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.
The solutions are organized in the following sections:
How to Handle Clocks Sourced by Embedded PLLs During Logic Test . . . . . . . . . . . . 153
How to Design Capture Windows for Hybrid TK/LBIST . . . . . . . . . . . . . . . . . . . . . . . . 159
How to Use Boundary Scan in a Wrapped Core. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TAP Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Stand-alone TAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
TAP with IJTAG Host Scan Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Compliance Enable TAP with IJTAG Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Daisychained TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Master TAP Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Slave TAP Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Connecting to a Third-Party TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
How to Set Up Third-Party Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
How to Set Up Support for Third-Party OCCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
How to Configure Files for Third-Party OCCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Test Logic Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Scan Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Pattern Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Problem
For embedded PLLs, such as the one shown inside “corec” in Figure 6-1, the OCC inserted on
the VCO output of the PLL is used during the internal logic test modes of the core. It is also
reused during the internal test modes of its parent physical regions.
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
When the PLL is inside a wrapped core that is itself the child of another wrapped core, you must
take special steps to 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 you do not need to take any special steps. The standard flow handles this scenario
automatically, as described in “Tessent Shell Flow for Hierarchical Designs” on page 84.
1. Add an extra DFT signal when you process the wrapped core that embeds the PLL in
“Second DFT Insertion Pass: Top-Level EDT and OCC” on page 112 (for example,
when processing “corec” in Figure 6-1) as follows:
add_dft_signal promoted_cells_mode
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” in Figure 6-1) 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”
in Figure 6-1).
set_attribute_value corea_i1 -name active_child_scan_mode \
-value 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
Modifying the external scan mode definition allows 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” in Figure 6-1), 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” in Figure 6-1), you
need to again create 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 would then apply again to that parent wrapped core as
follows:
set_attribute_value corea_i1 -name active_child_scan_mode \
-value promoted_cells_modeadd_scan_mode promoted_cells_mode \
-include_elements [get_scan_elements \
-child_modes promoted_cells_mode]
Discussion
The example chip shown in the following figure illustrates functional clocking when a PLL is
embedded inside a child physical region.
Figure 6-1. Example Chip with PLL Embedded Inside Lower Core
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
Figure 6-2 shows the location of the OCCs inserted inside “corec” and “coreb”. The two OCCs
inside “corec” are active during its internal test modes in order 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 for the same reasons.
Figure 6-2. Active OCCs During Internal Test Modes of corec and coreb
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 as shown in Figure 6-2, 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.
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 DFT process with the add_dft_control_points command. See “Example 1” of the
register_static_dft_signal_names command description section for an example.
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 6-3.
Figure 6-3. Active OCCs During Internal Test Modes of corea and coreb
The OCC on the blue domain inside “corec” is kept inactive, as it is during the functional mode,
such that 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” in order 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 allows it 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 84, 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 154 to enable the
embedded OCC inside “corec” to be under ATPG control at the top level.
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
level. For that reason, step 1 of the solution above shows how to add a new DFT signal called
“promoted_scan_mode” to use as the enable for that scan chain configuration.
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 again need a special scan
mode to collect the embedded OCC chains such that they can again be included in the wrapper
chains of the parent wrapped core. Additionally, you again follow step 3 on the parent wrapped
core to include the promoted scan mode of “corea” within its wrapper chain.
The purple line in Figure 6-4 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.
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
Related Topics
On-Chip Clock Controller Design Description [Tessent Scan and ATPG User's Manual]
occ [Tessent Shell Reference Manual]
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 desired 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:
• How to design capture windows (which clocks and how many pulses from each clock).
• 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, then defining
the capture windows is a straight-forward process. To define capture windows for this flow,
follow 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, you can identify that 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%
---------------------------------------------------------------
In the following example, to achieve the best coverage with the lowest number of patterns, a
two cycle capture window should be used for 20% of the patterns and more than 80% of
patterns should be used by a single CLK2_OCC/CLK1_OCC clock pulse capture window
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
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 6-5 on page 162:
• 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 Boundary Scan in a Wrapped Core
Note
The order specified is the order in which the boundary scan cells are inserted.
• Specify not to add any dedicated wrapper cells on embedded pad IO 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_*]
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
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.
Stand-alone TAP
Insert a simple stand-alone TAP in a design.
Solution
1. Set the design level to “chip”.
2. Use the following dofile example:
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
Stand-alone TAP
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. Note that
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 TAP generated in this example can be further enhanced with additional IR opcodes, IJTAG
host scan interfaces, and decoded outputs to enable downstream logic, such as another TAP.
Related Topics
TAP with IJTAG Host Scan Interface
Compliance Enable TAP with IJTAG Interface
Daisychained TAP
Master TAP Insertion
Slave TAP Insertion
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
TAP with IJTAG Host Scan Interface
Solution
1. Set the design level to “chip”.
2. Use the following dofile example:
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 above 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
Compliance Enable TAP with IJTAG Interface
Related Topics
Stand-alone TAP
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:
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
Compliance Enable TAP with 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).
Do not mix-up the CE decoding module input port names with expected CE values! For
instance, in the above 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. Potentially very confusing – so be aware.
The general rule is that if n CE inputs are specified, the CE decoding logic will be created with
input ports ranging from ce<n-1> down to ce0.
If internal CE nodes have to be used (i.e. 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
Stand-alone TAP
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent Examples and Solutions
Daisychained TAP
Daisychained TAP
This example inserts a second TAP in series with an existing one. The TRST, TCK, and TMS
signals are shared between both TAPs, which implies that the complete JTAG chain (for
example, top-level TDI to TDO) always shifts through both TAPs.
Solution
1. Set the design level to “chip”.
2. Use the following dofile example:
set DFT [create_dft_specification]
read_config_data -in $DFT -from_string {
IjtagNetwork {
HostScanInterface(tap) {
Interface {
tck : tck;
daisy_chain_with_existing_client : on;
}
Tap(2) {
HostIjtag(2) {
}
}
}
}
}
process_dft_specification
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
Master TAP Insertion
Related Topics
Stand-alone TAP
Solution
1. Set the design level to “chip”
2. Create one or several DataOut ports on the master TAP, such that a slave TAP is enabled
when the corresponding DataOut port is asserted.
3. Use the following dofile example:
set DFT [create_dft_specification]
read_config_data -in $DFT -from_string {
IjtagNetwork {
HostScanInterface(tap) {
Interface {
tck : tck;
}
Tap(master) {
HostIjtag(1) {
}
DataOutPorts {
count : 1;
}
}
}
}
}
process_dft_specification
Discussion
Other than the new user_ir_bits[0] output port that was created using the DataOutPorts wrapper,
this TAP is functionally identical to the stand-alone TAP with a host scan interface.
Note that the added DataOutPort ports are considered as 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
Slave TAP Insertion
Related Topics
Stand-alone TAP
Slave TAP Insertion
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
Slave TAP Insertion
Discussion
To trace through TAP slave implementations, it is easier to start from the TDO output and
gradually 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 mux_select input comes from the master TAP’s user_ir_bits[0] output. When this output
transitions to 1, the slave TAP is muxed in, such that the complete JTAG scan path goes through
both TAPs.
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
Stand-alone TAP
Master TAP Insertion
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
Stand-alone TAP
Problem
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.
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
Solution
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 409 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
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]
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.
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
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 the Clock and ScanEn
wrappers in order to define the polarity of each port.
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 321.
Solution
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 same clock
source to be used for the OCC and EDT logic. The post-insertion script is executed after the
process_dft_specification command creates all other logic defined in the 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
Test Logic Insertion
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.
# Read the design and OCC module. The ICL and PDL files with the
# same base name will be 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
Scan Insertion
Scan Insertion
You must configure the tool to read the OCC files before running scan insertion.
See “How to Configure Files for Third-Party OCCs” on page 176 for instructions on setting up
the OCC files.
Solution
When inserting scan into the post-synthesis netlist, 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.
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
# 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
Pattern Generation
You must configure the tool to read the OCC files before generating patterns.
See “How to Configure Files for Third-Party OCCs” on page 176 for instructions on setting up
the OCC files.
Solution
For stuck-at ATPG, much of the setup is automatically imported using the import_scan_mode
command. Additional clock definitions and settings for the OCC should be provided for the
OCC’s asynchronous source clocks as well as the clocks on the output of the OCC instances.
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
# 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 -parameter_list {SIM_KEEP_PATH 1}
set_pattern_filtering -sample_per_type 2
write_patterns patterns/RDS_process_stuck_serial.v -verilog -serial \
–replace -parameter_list {SIM_KEEP_PATH 1}
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).
Additionally, specify any parameters to the OCC’s iCalls that must be set to configure the OCC
for transition/fast-capture test.
Finally, you must constrain the design’s I/O which are not used for 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 Simulation
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 -parameter_list {SIM_KEEP_PATH 1}
set_pattern_filtering -sample_per_type 2
write_patterns patterns/RDS_process_transition_serial.v -verilog \
-serial –replace -parameter_list {SIM_KEEP_PATH 1}
Pattern Simulation
You must run a Verilog simulation of the generated patterns to ensure no mismatches are
reported and that the patterns function as expected during the tester application.
Solution
For parallel load patterns specified by the “write_patterns -parallel” command, simulate all the
patterns.
For serial load patterns, a handful of patterns are sufficient since 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.
Chapter 7
DFTVisualizer
DFTVisualizer is the tool you use for viewing and debugging design and simulation data in
Tessent Shell.
DFTVisualizer Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
DFTVisualizer Invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
DFTVisualizer Window Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
DFTVisualizer Quality Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Performing Basic Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Saving and Restoring Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Searching for an Instance, Net, or Pin in the Active Window . . . . . . . . . . . . . . . . . . . . . . 190
Searching for an Instance, Net, or Pin in the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Interruption of Operations from DFTVisualizer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Undocking and Docking Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Resizing Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Repositioning Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Accessing Popup Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Object Name Copied from a Popup Menu to the System Clipboard . . . . . . . . . . . . . . . . . 194
Adding Instances to the Current Display Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Selecting Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Cross-Selecting Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Selecting Multiple Objects in the Flat and Hierarchical Schematic Windows. . . . . . . . . . 196
Unselecting Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Customizing Marking Colors in the Schematic Windows . . . . . . . . . . . . . . . . . . . . . . . . . 197
Marking and Unmarking Objects in the Schematic Windows . . . . . . . . . . . . . . . . . . . . . . 197
Viewing Instances in Other Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Copying and Pasting Object Names in the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Trace Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Compaction of Buffers and Inverters in Traced Circuitry . . . . . . . . . . . . . . . . . . . . . . . . . 202
Tracing Signal Paths on a Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Tracing a Specific Signal Value to the Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Signal Path Tracing in the Hierarchical Schematic Window . . . . . . . . . . . . . . . . . . . . . . . 206
Tracing Up and Down the Design Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Annotation of Schematic Data in the Schematic Windows . . . . . . . . . . . . . . . . . . . . . . . . 212
Adding User-Defined Annotations to Schematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Viewing K19 and K22 Simulation Data in the Schematic Windows . . . . . . . . . . . . . . . . . 215
Reporting Gates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Expansion of Library Instances in the Flat Schematic Window. . . . . . . . . . . . . . . . . . . . . 217
Display of Multiple Data Sets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Overview
DFTVisualizer Overview
DFTVisualizer provides a visual means of browsing and troubleshooting designs in several
Tessent Shell contexts and subcontexts.
• dft -scan (Tessent Scan)
• dft -edt (Tessent TestKompress IP Creation)
• patterns -scan (Tessent FastScan, TestKompress Test Pattern Generation)
• patterns -scan_diagnosis (Tessent Diagnosis™®)
• patterns -scan_retargeting
• patterns -failure_mapping
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Invocation
For more information on Tessent Shell contexts and subcontexts, see Contexts and System
Modes in the Tessent Shell User’s Manual.
DFTVisualizer Invocation
There are several ways to invoke DFTVisualizer, depending on the task you want to perform.
Procedure
1. Set a context using the set_context command.
2. Load a design using the read_verilog command.
3. Read a library using the read_cell_library command.
4. Set the current design using the set_current_design command.
Note
You can invoke DFTVisualizer without issuing these commands, but most of the
user interface will be disabled until you load a design, any required libraries and
specify the top level. You can also issue these commands from the DFT Visualizer
Console window after you have invoked the tool.
5. You can invoke DFTVisualizer using one of the following methods depending on the
task you want to perform.
• Invoke DFTVisualizer explicitly by issuing any command that provides a -Display
argument. For example:
open_visualizer -display flat_schematic hierarchical_schematic data
Note
DFT Visualizer will open the Design Browser and Console windows by default
if the -Display argument is not specified.
• Issue a command that requests information from the tool. In this case, the tool
invokes DFTVisualizer to analyze and then display the requested data. For example:
analyze_drc_violation c3-3
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Window Overview
Note
Currently, the Clock Browser does not support the UDFM fault type.
• Data Window — Displays pins and signals for the instance selected in any tab of the
Design Browser window.
• Flat Schematic Window — Displays a flattened schematic representation of the design
as described in the input netlist. The schematic can be at the design or primitive level.
• Hierarchical Schematic Window — Displays a hierarchical schematic of the design as
described in the input netlist. Includes net names and hierarchical ports down to library-
level instances.
• Configuration Data Window — Provides you with a graphical interface to view
specifications and to modify the configuration tree elements and their options.
• Global Search Window — Allows you to search for any instance, net, or pin in the
active design.
• Test Structures Window — Displays graphical representation of the EDT logic inserted
by Tessent TestKompress.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Quality Agent
• Text Editor Window — Displays text files within DFTVisualizer and provides standard
text editor functions for viewing and editing them. You can create new test procedure
files and dofiles, or modify existing netlists, test procedure files, dofiles, and current
design files.
• Console Window — Displays notes, warnings, and errors applicable to the session.
• Wave Window — Provides a waveform representation of test_setup data and named
capture procedures (related to Data window).
Note
Please be aware that when you send feedback, absolutely NO DESIGN DATA is
communicated to Mentor Graphics. To ensure your privacy, the transcripted error
information is sent as an email in a text format; it is also sent to any email address you
specify.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Quality Agent
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Performing Basic Tasks
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Saving and Restoring Displays
Note
You can also click the icon in this step. This opens the Global Search window and
the search is applied to the entire design. Refer to “Searching for an Instance, Net, or
Pin in the Design” for more information on using this window.
Results
The objects matching the specified string are selected in the active window.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Searching for an Instance, Net, or Pin in the Design
2. Enter a string in the Global Search text entry field to search on. The tool implicitly
applies wildcards to the search string and returns all of the design objects whose
pathnames include that string. You can click the Exact Search checkbox to search for the
exact string without applying wildcard characters.
3. Optionally, click Options in the Global Search window to specify a search depth, search
area, and an object type.
4. Click Search.
Results
The objects matching the specified string are listed in the Global Search window, or the tool
reports that no matching netlist instances are found.
• Data generation for faults, DRCs, gates and primitives in the Instance and DRC
Violations windows of the Design Browser
• Searching in the Global Search window
• Tracing forward/backward to endpoints for instances and pins in the Hierarchical
Schematic Window
• Tracing down in the Hierarchical Schematic Window
• Pattern creation
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Resizing Windows
Prerequisites
• DFTVisualizer is invoked. For more information, see the “DFTVisualizer Invocation”
section in this chapter.
• At least one window is open.
Procedure
1. To undock a window, click the dock/undock button at the right of the window’s
header bar.
2. To dock a window, click the dock/undock button at the right of the window’s header
bar. The window will return to the location it occupied when it was undocked.
Resizing Windows
Each special purpose window can be modified to varying sizes within the DFTVisualizer
window. Each special purpose window, when undocked, can also be maximized using the
maximize button to completely occupy the operating system window.
Tip
You can maximize an undocked window by clicking the middle window control button at
the upper left-hand corner of the detached window. Click the button again to return the
window to its former position and size within the operating system window.
Prerequisites
• DFTVisualizer is invoked. For more information, see the “DFTVisualizer Invocation”
section in this chapter.
• At least two windows are open.
Procedure
1. To resize an undocked window, position the cursor over any window separator bar. The
cursor can be at any point along the separator bar and will change to a double arrow
when it is located within an active region.
2. Press the left mouse button and simultaneously drag the separator bar to create the
desired window size. Release the left mouse button to set the window size.
Repositioning Windows
You can reposition windows in the DFTVisualizer session.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Accessing Popup Menus
Prerequisites
• DFTVisualizer is invoked. For more information, see the “DFTVisualizer Invocation”
section in this chapter.
• At least two windows are open.
Procedure
1. Press the left mouse button over the icon in the center of the window's header bar
and simultaneously drag it to the new location. A dynamic outline of the window in the
new location appears when you have moved the mouse sufficiently for the tool to
successfully determine the desired location.
2. Release the mouse button.
Results
The window is anchored in the new location.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Object Name Copied from a Popup Menu to the System Clipboard
Selecting Objects
You can select objects displayed in a window using several different methods.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Cross-Selecting Objects
Prerequisites
• DFTVisualizer is invoked and objects are displayed in one or more windows. For more
information, see Adding Instances to the Current Display Window.
Procedure
Select objects using one of the following methods:
Cross-Selecting Objects
Cross-selection occurs when you select objects in one window and they are simultaneously
selected in all windows in which they are already displayed. Cross-selection is useful for
flagging an instance so you can identify it easily when viewing information about it in multiple
windows.
Prerequisites
• DFTVisualizer is invoked and objects are displayed in one or more windows. For more
information, see “Adding Instances to the Current Display Window.”
Procedure
1. Select the object(s) in the active window that you want to cross-select.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Selecting Multiple Objects in the Flat and Hierarchical Schematic Windows
2. Press the right mouse button anywhere in the window’s display area, and choose the
Cross Select option from the popup menu.
Tip
If you prefer to have cross-selection automatically occur by default whenever you
select an object, without requiring a menu pick, enable the Automatically Cross
Select In All Windows option in the Global Preferences Dialog Box. You can access the
dialog box by using the Edit > Preferences menu item.
Results
The selected object(s) is simultaneously selected in all windows in which it is already displayed.
Prerequisites
• DFTVisualizer is invoked and objects are displayed in one or more windows. For more
information, see Adding Instances to the Current Display Window.
Procedure
1. Press the left mouse button and drag the cursor so the bounding box contains all the
objects you want selected.
2. Release the left mouse button.
Results
This action selects all objects on the schematic within the area of the bounding box.
Unselecting Objects
You can unselect currently selected objects using either the mouse or the tool menu.
Prerequisites
• DFTVisualizer is invoked and objects are displayed in one or more windows. For more
information, see Adding Instances to the Current Display Window.
• At least one object is selected in the active window.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Customizing Marking Colors in the Schematic Windows
Procedure
Click in a blank part of the display area of the window, or select the Edit > Undo menu item if
it is available for the window.
Results
All selected objects are unselected.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Viewing Instances in Other Windows
Prerequisites
• DFTVisualizer is invoked, the Flat Schematic, Hierarchical Schematic, or Test
Structures window is active, and at least one object is displayed in the active window.
For more information, see Adding Instances to the Current Display Window.
Procedure
1. Select the objects you want to mark.
2. Press and hold down the Ctrl key; press M. A colored rectangle shows the active mark
color in the upper left-hand corner of the window. Repeatedly press M until the
rectangle shows the color you want to mark the selected objects with or shows gray to
unmark the instance; release the Ctrl key.
Note
You can also mark or unmark objects using the following methods: (1) by selecting
Display > Marking (Ctrl + M) from the pulldown menu or Marking (Ctrl + M)
from the popup (RMB) menu, and (2) by using the mark_display_instances and
unmark_display_instances commands.
3. Click the cursor in the active window to deselect the selected objects and display the
objects as marked.
Tip
You can select Display > Zoom > Marked to reposition the schematic view to show
marked objects.
Results
The selected objects display in the marked color.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Viewing Instances in Other Windows
Table 7-1. Windows Between Which You Can View Instances (cont.)
Source Window Destination Windows
Design Browser, Hierarchy Data/Wave, Flat/Hierarchical Schematic, Design
tab, see the “Usage Notes for Browser Library tab, Text Editor (Definition), and Text
the Instance Browser” section Editor (Instantiation)
in Design Browser Window
Design Browser, Library tab, Data/Wave, Flat/Hierarchical Schematic, Design
see the “Usage Notes for the Browser Instance tab, Text Editor (Definition), and
Library Browser” section in Text Editor (Instantiation)
Design Browser Window
Design Browser, Clock tab, see Data/Wave, Flat/Hierarchical Schematic, Text Editor
the “Usage Notes for the Clock (Instantiation)
Browser” in Design Browser
Window
Design Browser Window Data/Wave, Flat/Hierarchical Schematic,
Data Window Flat/Hierarchical Schematic, Text Editor (Definition),
and Text Editor (Instantiation)
Wave Window Flat/Hierarchical Schematic, Text Editor (Definition),
and Text Editor (Instantiation)
Global Search Window Data/Wave, Flat/Hierarchical Schematic, Design
Browser Instance and Library tabs, Text Editor
(Definition), and Text Editor (Instantiation)
Prerequisites
• Instances you wish to view in another window must display in the source window.
Procedure
Use one of the following methods to view an instance that is in one window (source) in another
window (destination).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Copying and Pasting Object Names in the Design
Results
The selected objects are visible in the destination window.
Related Topics
Adding Instances to the Current Display Window
Prerequisites
• DFTVisualizer is invoked and at least one window is open. For more information, see
the “DFTVisualizer Invocation” section in this chapter.
• Object(s) whose name you wish to copy must display in the source window.
Procedure
1. Select the objects whose names you want to copy. Note, you can use the Shift key to
select more than one object.
Tip
If you are copying only one object name, you can position your cursor over the
object, without selecting it, and click the right mouse button.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Trace Options
2. Click the right mouse button in the display area of the window and select the
“<object_name(s)> (click to copy)” item at the top of the popup menu.
3. To paste the object(s) in DFTVisualizer, click the right mouse button in the location you
want to paste and select Edit > Paste from the popup menu or type Ctrl-V.
Trace Options
The following table summarizes the trace options available in the Flat Schematic Window (or
within the same hierarchical level in the Hierarchical Schematic Window).
When you click the diamond on a pin, rather than using the right mouse popup menu, you get
the default trace behavior. You can change the forward trace default in the Preferences dialog
box.
Table 7-2. Trace Options
Option Selected Trace Behavior
Trace Backward (default) Pin Trace backward one instance.
Instance Trace backward one instance from each input pin.
Trace Backward Endpoint Pin Trace backward to endpoints, showing all
circuitry in between.1
Instance Trace from each input pin backward to endpoints
and show all circuitry in between.1
Trace Forward One (default) Pin Trace forward one instance.
Instance Trace forward one instance from each output pin.
Trace Forward Fanout Pin Trace forward one instance on each fanout.
Instance Trace forward from each output pin one instance
on each fanout.
Trace Forward Endpoint Pin Trace forward to endpoints, showing all circuitry
in between.1
Instance Trace from each output pin forward to endpoints
and show all circuitry in between.1
Trace Backward Value Pin Traces the value on a selected pin back to its
source. The trace continues back from the
selected pin until either the origin cannot be
distinguished due to a complex path, or the origin
is found.
1. An endpoint is defined as a primary input, primary output, scan cell, tie gate, or black box. RAMs and
ROMs are also endpoints.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Compaction of Buffers and Inverters in Traced Circuitry
Note
Be aware that compaction behavior may change if you trace additional parts of the net. For
example, if you add a branch between two inverters that were compacted, those inverters
may no longer be compacted after the branch is added, which results in the compaction markers
disappearing from that net.
When global compaction is enabled, compaction symbols have the following meaning on
individual nets:
• Compacted symbol (plus sign symbol) — indicates the existence of collapsed buffers
and/or inverters on the net. Clicking on the symbol expands the buffers and/or inverters
and toggles the symbol. Positioning your cursor over the symbol, displays the number of
inverters/buffers collapsed on the net.
• Uncompacted symbol (minus sign symbol) — indicates that buffers and/or inverters are
expanded on that net. Clicking on the symbol collapses the buffers and/or inverters and
toggles the symbol.
• No Compacted or Uncompacted symbol — indicates that no buffers or inverters exist on
the net.
When global compaction is enabled, the following is true:
• Buffers are not displayed. When you trace from an instance connected to a buffer, you
trace to the next non-buffer instance. You can click the Compacted symbol to turn off
compaction for the individual net and view the expanded objects.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Tracing Signal Paths on a Schematic
• If an even number of inverters exists, zero inverters are displayed. If an odd number of
inverters is compacted, a single inverter displays. When you trace from one instance
connected to an inverter, you trace to the next non-inverter instance.
Note
If you explicitly add a buffer or an inverter using the add_display_instances
command, the buffer/inverter displays on the net to which it is added, irrespective of
whether compaction is enabled or disabled.
The maximum number of gates that can be inserted before requiring a confirmation
includes the inverter buffer count. If you are displaying a large portion of circuitry with
a lot of compaction, you might see the warning that the threshold has been exceeded
even though what ends up being displayed is less than the maximum number of gates.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Tracing Signal Paths on a Schematic
• In the Flat Schematic Window, buffers and certain inverters are not displayed by default
in order to reduce screen clutter. See Compaction of Buffers and Inverters in Traced
Circuitry for more information.
• In the schematic windows, you can include annotated data. This is controlled by the
set_gate_report command. See Annotation of Schematic Data in the Schematic
Windows for more information.
• Instances added by the most recent trace are highlighted. You can control the highlight
color using the Colors tab of the Preferences dialog box available from the Edit >
Preferences menu.
Prerequisites
• DFTVisualizer is invoked and the Flat or Hierarchical Schematic Window is open. For
more information, see the “DFTVisualizer Invocation” section in this chapter.
• One or more instances must be visible in the Flat or Hierarchical Schematic Window. To
add instances to a window, see Adding Instances to the Current Display Window.
Procedure
Use one of the following methods to trace forward or backward:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Tracing a Specific Signal Value to the Source
Results
In the Hierarchical Schematic Window, the tool attempts to trace the path in one direction
beginning at start_gate; the tool returns an error if end_gate is not found.
In the Flat Schematic Window, the tool first attempts to trace the path in the direction specified
by the user. If that path is not found, the tool then attempts to trace the path in the opposite
direction. If that path in not found, the tool returns an error message.
Related Topics
Signal Path Tracing in the Hierarchical Schematic Window
Trace Options
Compaction of Buffers and Inverters in Traced Circuitry
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Signal Path Tracing in the Hierarchical Schematic Window
• Pin data is displayed. If needed, select an option from the Data menu to display pin data.
Procedure
1. Right click on the pin displaying the value you want to trace. A popup menu displays.
2. Select Trace Backward Value. A pop menu displays all the values on the pin. The left-
most value on the pin displays at the top of the menu.
3. Select a value to trace.
Results
The value is automatically traced back from the selected pin either until a point is reached where
the origin cannot be distinguished due to a complex path, or the origin is found.
• Add the top level instance (/) by using any of the methods described in “Adding
Instances to the Current Display Window” on page 194.
• When you add an instance, it is shown with all pins. Hierarchical modules added as a
result of tracing, however, are shown with only the pins that are connected to other
displayed instances. This allows you to trace up and down the hierarchy, displaying only
pins from or through which you are tracing.
To show all pins, move the cursor onto the instance, then press the right mouse button
and choose Show Hidden (#) Pins from the popup menu. (The number in parentheses is
the number of pins that are currently hidden.)
To hide pins for which there are no connections currently displayed, choose Hide
Unconnected Pins from the popup menu.
• Double-click on a hierarchical instance to display all instances inside it. The number of
instances inside is shown in parentheses next to the name of the submodule.
To hide all instances currently displayed inside a hierarchical instance, select it, then
press the right mouse button and choose Collapse from the popup menu.
• To clean up the schematic, select an instance and choose the Remove Other Instances
item from the right mouse button menu. Everything is deleted except the selected
instance. If the selected instance is a submodule displaying instances inside it, they are
kept.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Tracing Up and Down the Design Hierarchy
Examples
The following example shows the result of selecting a pin and tracing down one hierarchical
level and then up a level.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Tracing Up and Down the Design Hierarchy
Figure 7-3. Tracing Down One Hierarchical Level from a Selected Pin
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Tracing Up and Down the Design Hierarchy
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Tracing Up and Down the Design Hierarchy
Bundling Nets
In some cases, you may not want to see all the nets that are connected between instances. For
instances at higher levels of the hierarchy, where you typically have fewer instances with a large
number of pins, you may be more interested in seeing between which blocks there are
connections, than in seeing all the connections themselves.
To gather signals between instances into bundles represented by single thick lines, select the
Display > Net Bundle > On menu item. The effect of net bundling is seen in the difference
between Figure 7-5 and Figure 7-6.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Tracing Up and Down the Design Hierarchy
Figure 7-5. Hierarchical Schematic Window Display with Net Bundling Off
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Annotation of Schematic Data in the Schematic Windows
You can clean up the schematic by selecting an instance and choosing the Remove Other
Instances item from the right mouse button menu. Everything is deleted except the selected
instance. If the selected instance is a submodule displaying instances inside it, they are kept.
Note
If you select the right mouse button Remove Other Primitives menu item on a primitive
gate inside an already expanded instance, all other primitives inside that instance are
removed from the display but all design level instances remain.
Callout boxes containing user-defined text can be used to easily identify a particular object, or
even a collection of objects using the introspection (get_*) commands, as shown in this
procedure.You can also add callout box annotation definitions to a dofile so that the desired text
is displayed when the tool invokes.
The add_display_callout command is used to add callout boxes, and the delete_display_callout
command is used to remove them. For more information on how to manage the display
characteristics of the callout boxes, refer to “Working with Attributes” on page 219. This
procedure will provide several methods to add and remove callout boxes containing user-
defined text.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Adding User-Defined Annotations to Schematics
Prerequisites
• Tessent Shell is invoked and a design netlist is loaded. Running add_display_callout
will automatically invoke DFTVisualizer if it is not already open.
For more information, see the “DFTVisualizer Invocation” section in this chapter.
Procedure
1. To add a user-defined callout box on a single design object, the add_display_callout
command is used as shown below:
add_display_callout core_inst1/blockA_clka_i2/mem4 \
-string “power domain v1p8” -display hierarchical_schematic
The instance and callout will be displayed in the Hierarchical Schematic window:
If a callout box already exists on this instance, the user-defined callout would be
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Adding User-Defined Annotations to Schematics
2. To remove the user-defined callout box that was added in the prior step, the
delete_display_callout command would be used:
delete_display_callout core_inst1/blockA_clka_i2/mem4 -display
hierarchical_schematic
The user-defined text in the callout box will be removed and the callout box will be
removed if no other attributes are displayed. The design object will not be removed from
the schematic.
3. To add user-defined callout boxes on multiple design objects, Tcl lists and wildcards can
be used to define a collection. The example below will add the callout box to the mem1
instance in blockA_clka_i1, and to all mem2 instances found in this block and all sibling
blocks with the same name prefix:
add_display_callout {core_inst1/blockA_clka_i1/mem1
core_inst1/blockA_clka_i*/mem2} \
-string “power domain v1p8” -display hierarchical_schematic
4. To add user-defined callout boxes on multiple design objects, a Tcl object returned by
an introspection command (get_*) can be implemented. The example below shows how
the get_instances command can be used to add callout boxes and display all instances
that use the library module “SYNC_2R2W_12x8” in the design:
add_display_callout [get_instances -of_modules SYNC_2R2W_12x8] \
-string “v1p8” -display hierarchical_schematic
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Viewing K19 and K22 Simulation Data in the Schematic Windows
5. To remove the user-defined text within blockA_clka_i2 added in the prior step, but
leaving the other callout boxes, introspection commands can be used with
delete_display_callout:
delete_display_callout [get_instances -below_instances core_inst1/blockA_clka_i2
-of_modules SYNC_2R2W_12x8] \
-string “v1p8” -display hierarchical_schematic
The user-defined text in the callout boxes of these specific instances will be removed
and the callout boxes will be removed if no other attributes are displayed. The design
objects will not be removed from the schematic.
For complete information on monitor points, see “Resolving DRC Issues” in the Tessent
TestKompress User’s Manual.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Viewing K19 and K22 Simulation Data in the Schematic Windows
Prerequisites
• DFTVisualizer is invoked and a schematic window contains the design you are
debugging. For more information, see DFTVisualizer Invocation.
Procedure
1. Optionally, specify the number of characters of simulation data that you want to be
displayed by selecting the Edit > Preferences menu, selecting the Schematics tab,
clicking the Flat or Hierarchical option, and entering a number in the “Show the First #
Characters of Simulation Data” field; by default, the tool displays up to 32 characters of
simulation data.
2. Issue the set_gate_report command or select the Data > K22 menu item to instruct the
tool to display the simulation data you want to see. For example, the following
command instructs the tool to show five cycles of shift data for each gate. As a result of
issuing this command, the following data is displayed in the schematic window:
set_gate_report k22 shift 1 5
3. Display the full simulation results for a gate by selecting the gate and entering Ctrl-R.
The simulation data is displayed in the Console window as seen in this example:
SETUP> set_gate_report k22 shift 1 5
SETUP> // command: report_gates /tiny1_3/edt_i/edt_compactor_i/
decoder1/ix5
// /tiny1_3/edt_i/edt_compactor_i/decoder1/ix5 and02
// A0 I /tiny1_3/edt_i/edt_compactor_i/ix111/Q
// A1 I /tiny1_3/edt_i/edt_compactor_i/ix91/Q
// Y O /tiny1_3/edt_i/edt_compactor_i/ix3/A0
//
// Proc: shi 1 sh 2 sh 3 sh 4 sh 5 cap
// ----- ----- ---- ---- ---- ---- ---
// Time: i 123 123 123 123 123 o o
// n0000 0000 0000 0000 0000 fXf
// ----- ----- ---- ---- ---- ---- ---
// Sim: 00000 0000 0000 0000 0000 000
// Emu: --1-- -1-- -1-- -1-- -1-- ---
// Mism: * * * * *
// Monitor: Block "tiny_1_of_3_cells" EDT decoded masking signal 2.
//
// Inputs:
// A0 11111 1111 1111 1111 1111 111
// A1 00000 0000 0000 0000 0000 000
//
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Reporting Gates
4. Examine the simulation data that displays in the schematic window and trace back to
find the origins of the simulation failures.
Related Topics
Trace Options
Reporting Gates
Reporting Gates
You can report gate information (netlist and simulation data) for selected objects from the
Design Browser, Hierarchical Schematic, Flat Schematic, Test Structures, Data, Wave, and
Global Search windows.
Prerequisites
• DFTVisualizer is invoked and at least one window is open. For more information, see
DFTVisualizer Invocation.
Procedure
1. Select the object(s) to be reported on. You can use the Shift key together with the left
mouse button to select multiple objects. For more information, see “Selecting Objects.”
2. Press Ctrl + R, click the Report Gates icon, or press the right mouse button and
select Commands > Report_Gates (Ctrl + R).
Results
The report_gates command executes and outputs data to the Console window. For more specific
information on using the report_gates command to troubleshoot violations, see
“How to Report Gate Data” and report_gates.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Display of Multiple Data Sets
command line where you can report only the data corresponding to the current setting of the
set_gate_report command.
For example, you can display simulation data for the load_unload and shift procedures for a
particular pattern. The options are available through the Data menu and the buttons on the tool
bar.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Working with Attributes
Figure 7-7 shows a callout box. Note, in order to view attributes on the schematic, callout boxes
must be showing.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Attributes in the Hierarchical and Flat Schematic Windows
Note
For information on how to add user-defined annotations to schematic callouts boxes, see
“Adding User-Defined Annotations to Schematics.”
Table 7-3 lists the icons you can use in the Hierarchical and Flat Schematic Windows to manage
attributes.
Table 7-3. Icons for Managing Attributes and Callouts
Icon Description
Toggles between collapsing and expanding all callout boxes on the schematic.
Callout markers indicate the location of collapsed callout boxes.
Hides all callout markers in the Design and Flat Schematic Windows.
Displays the DFTVisualizer Preferences dialog box, Attributes tab.
DFTVisualizer displays attributes in the Hierarchical and Flat Schematic Windows as follows:
• Only attributes with a value different than their default value display — regardless of
whether you have globally set the attribute to display.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Setting Global Attribute Display Options
Prerequisites
• DFTVisualizer is invoked. For more information, see “DFTVisualizer Invocation”.
Procedure
1. Display the Attributes tab of the DFTVisualizer Preferences dialog box by doing one of
the following:
• Select Edit > Preferences and click the Attributes tab.
• Activate either the Hierarchical or Flat Schematic Window, and click the icon.
2. Select an attribute in the left-hand column of the DFTVisualizer Preferences dialog box.
3. Click the button to move the selected attribute into the Displayed Attributes column.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Setting Attribute Background Display Colors
Note
By default, the attribute inherits the background color currently showing on the
Color Index button. See “Setting Attribute Background Display Colors” to change
this color.
4. Click OK.
• Activate either the Hierarchical or Flat Schematic Window, and click the icon.
2. Select the attribute in the Displayed Attributes (right-hand) column whose background
color you want to modify.
3. Click the Color Index button to display the color map and select the desired color.
4. Click OK.
Results
The background color of the specified attribute is set.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Controlling the Display of Callouts in the Flat and Hierarchical Schematic Windows
Procedure
Use one of the following icons to control the display of callout boxes and markers.
Click To...
Toggle between collapsing and expanding all callout boxes on the schematic.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Attribute Preferences Dialog Box
Usage Notes
• Add and remove attributes from the Displayed Attributes column by clicking the
and arrow buttons or by double-clicking on the column entry.
• Select multiple entries from a list using the Ctrl or Shift key together with the select
mouse button.
Related Topics
Setting Attribute Background Display Colors
Setting Global Attribute Display Options
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Working With Specifications in the Configuration Data Window
2. Select an element from the Configuration Tree, click the right mouse button, and select
one of the Add > menu items to add.
The Add > menu displays a context-sensitive list of elements that shows the type of
elements you can add based on the type of element you selected.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Adding a Test Data Register to a SIB Example
3. Specify the parameters of the newly added element in the Configuration Options panel:
• Enter the values of the element’s listed properties; you can use the icon to select
from pre-defined values for that object.
• Click to define parameters of the element’s interface.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Adding a Multiplexer to a SIB Example
3. Click the right mouse button and select Add > Tdr.
You can change its position using the Move Up and Move Down menu items.
4. In the Configuration Options panel, enter a name in the id field. You can specify the
desired value of any of the other displayed fields.
5. Click and and modify the value of the “count” property in
each to change the number of ports on the TDR.
6. Click Apply to update the specification.
Results
You have added a TDR to a SIB and defined the number of ports on the TDR.
Related Topics
Configuration Data Window
Modifying the Contents of the Configuration Data Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Customizing the DFT Specification for EDT
a. Select the new input port and enter a number in the int field of the Configuration
Options panel.
b. Click Apply to update.
c. Add a TDR that will be accessed when this mux input port is selected by positioning
the cursor on the Input port, clicking the right mouse button, and selecting Add >
Tdr.
i. Name the TDR by selecting the TDR and entering a name in the id field of the
Configuration Options panel.
ii. Connect the TDR to the design by:
a. Clicking the left mouse button on the button, clicking
, and then clicking the plus sign . Enter the range that
matches the design instance data bus size into the range field (for example
“7:0”), and enter the pathname to the design instance in the pin_name field.
b. Clicking the left mouse button on the button, clicking
, and then clicking the plus sign . Enter the range that
matches the design instance data bus size into the range field, and enter the
pathname to the design instance in the pin_name field.
4. Define the connections for the second input port of the ScanMux using the instructions
in Step 3.
Results
You have created a ScanMux and defined the select signal. You have added two Input wrappers
to the ScanMux, each of which have a TDR defined.
Related Topics
Configuration Data Window
Modifying the Contents of the Configuration Data Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Customizing the DFT Specification for EDT
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Customizing the DFT Specification for EDT
DftSpecification(cpu_top,rtl2) +{
IjtagNetwork +{
HostScanInterface(sri) +{
Interface {
design_instance : cpu_top_rtl_tessent_sib_sti_inst;
scan_interface : client;
}
Sib(sri) +{
Attributes {
tessent_dft_function : scan_resource_instrument_host;
}
Tdr(sri_ctrl) {
Attributes {
tessent_dft_function : scan_resource_instrument_dft_control;
}
}
Sib(occ) {
}
Sib(edt) {
}
}
}
}
EDT +{
ijtag_host_interface : Sib(edt);
Controller(c1) +{
longest_chain_range : 65, 100;
scan_chain_count : 85;
input_channel_count : 3;
output_channel_count : 3;
Connections +{
EdtChannelsIn(1) {
port_pin_name : edt_channels_in[0];
}
EdtChannelsIn(2) {
port_pin_name : edt_channels_in[1];
}
EdtChannelsOut(1) {
port_pin_name : edt_channels_out[0];
}
EdtChannelsIn(3) {
port_pin_name : edt_channels_in[2];
}
EdtChannelsOut(2) {
port_pin_name : edt_channels_out[1];
}
EdtChannelsOut(3) {
port_pin_name : edt_channels_out[2];
}
}
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Customizing the DFT Specification for EDT
Examples
Use the read_config_data command to save the modifications to the DFT specification into a
dofile for re-use.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences
DFTVisualizer Preferences
DFTVisualizer allows you to customize your display and editing preferences.
Setting DFTVisualizer Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Saving/Loading Session Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
DFTVisualizer Preferences Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Saving/Loading Session Preferences
7. Click the Text Editor window tab. The Text Editor Window Preferences Dialog Box
displays. Specify the desired attributes for the Text Editor window.
8. When you have set the desired preferences, click OK.
Results
The specified settings take effect and remain persistent for the current DFT tool session only.
Related Topics
Saving/Loading Session Preferences
Click... To...
Write Preferences Save the current settings as default.
Save Preference File Save the current settings to a specified file in the current
working directory. In the dialog box, specify a filename and
click OK.
Reset to System Defaults Change all preferences back to the systems defaults.
Related Topics
Setting DFTVisualizer Preferences
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Fields
Field Description
Save Current Window Determines if window size and location are saved on exit and
Positioning (after writing used for the next DFTVisualizer session.
preferences)
Word Wrap Transcript Text Determines if words wrap to the next line approximately every
70 characters.
Automatically Cross Select Determines if objects you select are automatically cross selected
In All Windows in all windows in which they are already displayed. See Cross-
Selecting Objects for more information.
Toolbar Options Specifies which tool icons are available from the toolbar on the
top of the display.
Show Full Names Displays complete hierarchical pathname for each instance
when the instance is clicked with the right mouse button. Default
setting.
Show Partial Names By Specifies how many design levels display as part of instance
Only Showing The names. You can specify how many of the first or last design
(Levels): levels are omitted. By default, full names display.
Show Partial Names By Specifies how many characters display in instance names when
Only Showing The the instance is clicked with the right mouse button. By default,
(Characters): full names display.
Zoom Factor Specifies by what percentage a window magnifies when the
zoom option is used.
Load Preference File Loads settings from a specified preference file into the current
session.
Save Preference File Saves the current preference settings to a specified file.
Write Preferences Saves the current preference settings to a file named
.DftVisualizerrc in your home directory. Preferences for
subsequent tool sessions are read from this file by default.
Reset to System Defaults Resets all preference settings to the factory default settings.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Fields
Field Description
Windows List Determines the window to which the Options List applies.
Options List Displays a list of graphical window elements that you can select
and specify a color for.
Color Palette Palette that indicates the current color selection for the object
type selected in the Windows List and Options List.
No. of Colors Specifies the number of colors that can be used to mark objects
in schematic windows (Flat and Hierarchical). This item is only
available when Marked is selected in the Options List.
Color Index Specifies a color to be used when marking objects. You can set
as many colors as are specified by the No. of Colors field. By
default, the following colors are used for marking:
• Mark color 1: Green
• Mark color 2: Blue
• Mark color 3: Orange
• Mark color 4: Yellow
• Mark color 5: Red
This item is only available when Marked is selected in the
Options List. For more information, see “Customizing Marking
Colors in the Schematic Windows” and “Marking and
Unmarking Objects in the Schematic Windows.”
Preview Area Displays the current display color settings for instances,
primitives (solid fill), marked objects, highlighted objects, and
selected objects.
Copy Colors To All Applies the colors currently defined for the selected window to
Windows all other windows.
Reset Colors To System Resets the color preferences for the currently selected window
Defaults to system defaults.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Objects
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Fields
Field Description
Object Type Specifies the object type for which the registered attributes
are shown in the left list box. Object types available are:
• Module
• Instance
• Pin
• Net
• Gate_pin
• Port
Moves the selected attribute in the left list box to the
Displayed Attributes list box on the right. The attributes
listed in the Displayed Attributes list box will be displayed if
they are enabled globally. For more information, see
Working with Attributes.
Removes the selected attribute in the Displayed Attributes
list box on the right and places it back into the right list box.
The removed attribute will no longer be displayed.
Color Index Specifies the background color that will be used to highlight
the attribute currently selected in the Displayed Attributes
list box. The attributes shown in the Displayed Attributes list
box are displayed with the default or selected background
colors. Ten different background colors are available and
displayed with the Color Index value.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Objects
Field Description
Show Primitives Determines if primitives can be displayed.
Show Hierarchical Data For Determines if the Library, Hierarchy, and Clock tabs of
Library Models the Browser window display the fault data beneath library
instances. When the fault data is shown as “Hidden” in the
Browser window, you can show the fault data by clicking
the right mouse button on the library instance and selecting
Show Hierarchical Data from the popup menu. Note that
the additional data may impact performance on large
designs. Similarly, you can use the right mouse button
option Hide Hierarchical Data to reduce the displayed data
and improve performance.
Display Unlisted Faults Specifies to include or exclude faults statistics for graybox
instances that are not in the netlist (unlisted faults) from the
statistical display of Browser data. Excluding unlisted faults
from fault statistic calculations updates coverage
calculations for both the graybox and all higher levels in the
hierarchy whose statistics would normally include the
graybox’s statistics.
Color The Cell When The Determines whether the part of the selection indicator in a
Right Mouse Button Is Pressed data column cell displays highlighted when selected with a
right mouse button press.
Display Coverage Data Determines whether test/fault coverage data displays as a
bar graph (graphically) or as text number.
Show Coverage Data above Determines the display color for test coverage, fault
nn % in Green coverage, and ATPG effectiveness columns. Values above
the specified percentage display in green, and values equal
to or below the specified percentage display in red. Note,
this setting does not affect the display of the Test Coverage
Loss column which always displays in red.
Display Faults Determines whether fault data displays as a bar graph
(graphically) and a text number or text number only.
Align Instance Names Determines whether the instance names display left or right
justified.
Align Data Determines whether data associated with instance names
display left or right justified in the columns.
Data Column Width Specifies the number of characters visible in the data
columns. By default 50 characters display.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Objects
Field Description
Align Names Determines whether the names display left or right justified.
Align Data Determines whether data associated with names display left or
right justified in their columns.
Data Column Width Specifies the number of characters visible in the data columns.
By default 50 characters display.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Preferences Dialog Box
Objects
Field Description
Key Stroke Mode Determines whether key strokes are interpreted to be Vi,
Emacs, or Design Pad commands.
Font Size Specifies the font size used to display the contents of the
window:
• Small — 10
• Medium — 13
• Large — 16
• X-Large — 19
Window State Specifies how windows display in the DFTVisualizer main
window:
• Tabbed — Windows align side by side and are accessed
using a Tab at the bottom of the window. This is the
default.
• Cascaded — Windows stack with the top portion of each
window visible.
Maximum Number of Design Specifies the maximum number of files that will be opened in
Files to Open at a Time the Text Editor window when File > Open > Current Design
Files is selected.
Write Preferences Saves the current preference settings to a file named
.DftVisualizerrc in your home directory. Preferences for
subsequent tool sessions are read from this file by default.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Windows
DFTVisualizer Windows
DFTVisualizer consists of many windows that you use for specific tasks, such as browsing the
design or performing global searches.
DFTVisualizer remembers the current window configuration when you exit the tool. The last
view of the tool is remembered and restored when the tool is re-invoked. Changes to the
configuration such as the addition of a new window are automatically added to the
configuration and remembered when the tool is next invoked.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Objects Added to DFTVisualizer Windows
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Design Browser Window
Description
These windows provide the following capabilities:
• Instance tab— Enables you to navigate through the design hierarchy and view coverage
and fault statistics.
• Library tab — Displays statistics for the ATPG library models used in a design.
• Clock tab — Displays all of the clocks in the design and their attributes in a descending
order of test coverage. Clocks and their attributes are displayed from all modes. The
Clock Browser allows you to navigate the design hierarchy and view the faults for each
individual clock and analyze the distribution of faults between clock domains.
• DRC Violations tab — Displays DRC Violations in a tree format, separating DRC
violations by severity, ID and instance. Double clicking the instance level of the DRC
violation invokes analyze_drc_violation and displays the instance in the Flat Schematic
window for further investigation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Design Browser Window
• Signals pane — Displays ports and fault data for instances selected in the Instance,
Library or Clock Browsers.
Objects
The table below lists the icons used in the Browser window to represent different instance types:
Table 7-6. Design Browser Window Instance Type Icons
Symbol Means the Instance is a...
Clock
Submodule (instance of a Verilog module)
Netlist/Verilog primitive
Library level instance
Library model (Library tab only)
Graybox, parent
Graybox, instances in netlist
Graybox, instances not in netlist
Library level instance containing one or more RAMs/ROMs
Blackboxed instance
Primitive
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Design Browser Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Design Browser Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Design Browser Window
o The Instance, Library and Clock tabs of the Design Browser work together with the
Signal Browser, allowing you to browse, select ports and examine fault data for the
instance selected in the Design Browser.
o Copy an object’s hierarchical pathname into a buffer which you can then paste into
another location by selecting the object(s) and choosing “<object_name(s)> (click to
copy)” from the popup menu. For more information, see “Copying and Pasting
Object Names in the Design.”
Usage Notes for the Instance Browser
• From the DFTVisualizer Design Brower, click the Instance tab. By default, the Instance
Browser displays the following columns:
o Instance — The name of the instance in the netlist. Instances of primitives include
their gate ID. Instance types are shown with the icons listed in Table 4-7.
o Module — The name of the Verilog module, ATPG library model, or primitive type
that the instance is instantiated from.
o Child Instances — Number of instances at this level of hierarchy. Does not include
the number of instances within each submodule.
• In the Instance Browser:
o Click the plus sign (+) next to an instance to display the gates and primitives for that
individual instance.
o Double-click on any instance to automatically expand/collapse it.
o Click the right mouse button and use the View In popup menu option to add an
object to another window.
o Click the right mouse button over an object in hierarchy and use the View in Text
Editor popup menu option to view the Verilog definition or instantiation for the
instance in a Text Editor.
o Use File > Save As or click to save a text, comma separated value (CSV), or
graphical version (screen capture) of the Instance Browser contents to a file.
Usage Notes for the Library Browser
• From the DFTVisualizer Design Brower, click the Library tab. By default, the Library
Browser displays the following columns:
o Library Model — Cell library models used in the design.
o Number of Instances — Number of instances in the design that use this library
model.
• In the Library Browser:
o Click on the (+) next to a library model to display statistics for the individual
instances of the model in the design.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Design Browser Window
o Click the right mouse button over an object and use the View In popup menu option
to add an object to another window.
o Click the right mouse button over an object and use the View in > Text Editor
(Definition) popup menu option to view the Verilog definition for the instance in a
Text Editor.
o Use File > Save As or click to save a text, comma separated value (CSV), or
graphical version (screen capture) of the displayed contents of the Library Browser
to a file.
Figure 7-10. Design Browser Window with Library Tab Active
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Design Browser Window
clicking the icon. Specific fault types can be displayed by selecting them from the
Data > Faults menu.
o Faults — The total of all fault types, expressed as a number and a percentage of the
design total, for each clock domain in the design. The Faults column can be
displayed by selecting Data > Total Faults from the menu, or by clicking the
icon.
Note
If a fault is in multiple clock domains, the fault is attributed to each clock
domain. Because of this, it is possible that the sum of all fault percentages (faults
in a clock domain as a percent of the total faults in the design) can exceed 100%.
o Test Coverage — Percentage of all testable faults detected by a pattern set for a
particular clock domain. The Test Coverage column is displayed by selecting Data >
Coverage_Data > Test Coverage from the menu, or by clicking the icon.
o TC Loss — Test coverage loss is the undetected faults for a clock domain displayed
as a percentage of the testable faults in the entire design. The TC Loss column is
displayed by selecting Data > Coverage_Data > TC_Loss from the menu, or by
clicking the icon.
o Fault Coverage — Percentage of fault coverage for each clock domain. The Fault
Coverage column is displayed by selecting Data > Coverage_Data > Fault
Coverage from the menu, or by clicking the icon.
o ATPG Eff — ATPG effectiveness for each clock domain instance. The ATPG Eff
column is displayed by selecting Data > Coverage_Data > ATPG_ Eff. from the
menu, or by clicking the icon.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Design Browser Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Design Browser Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Data Window
Data Window
To access: Choose the Windows > Data menu item or click the icon.
The Data window provides a tabular presentation of the report_gates command output that
allows you to see data for multiple instances and multiple data sets at the same time.
Figure 7-12. Data Window
Characteristics
• Add any type of instance (submodule, library level instance, primitive) or signal (submodule
port, instance port, wire) to the Data window using any of the following methods:
o Select an instance from another window and use the View In option on the right
mouse button menu.
o Use a command that adds named instances to the display (add_display_instances for
example).
o Click the Add Instances icon on the tool bar. The Make Additions to the Display
dialog box displays. You can use any number of asterisks (*) or question marks(?) as
wildcard characters to specify the string enabling you to match many pathnames in
the design.
• Delete instances or signals from the Data window by first selecting them and then using any
of the following methods:
o Select the Display > Delete menu item.
o Select Delete from the right mouse button popup menu in the window’s display area.
o Click the Delete Selected icon or the Delete All icon.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Data Window
Tip
To maintain the usefulness of the displayed data, the tool intentionally displays a
maximum of 10 cycles in the Data window regardless of the number of cycles
entered into the From/To fields. If you need to see more than 10 cycles, you should
view the data in the Wave window.
o Display scan test patterns or chain test patterns by using the Data > Pattern Index
menu item to display the Display Pattern Index Data dialog box. Note, the Chain
Test option is only available after you have saved the scan test patterns.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Data Window
o Open the Test_end procedure in a text editor by selecting Data > Test-End to
display the drc test_end column; then, click the left mouse button on the column
header.
o Display stable value data by selecting one of the Data > Stable menu items. This
action executes the set_gate_report command with one of the STABLE_After_setup
| STABLE_Capture | STABLE_Load_unload | STABLE_Shift options enabled or
disabled. You can also access stable value data by clicking the following toolbar
icons: Stable After Test_Setup , Stable During Capture , Stable During
Load_Unload , and Stable During Shift .
o Copy an object’s hierarchical pathname into a buffer which you can then paste into
another location by selecting the object(s) and choosing “<object_name(s)> (click to
copy)” from the popup menu. For more information, see “Copying and Pasting
Object Names in the Design.”
o If the Data window is detached from and hidden behind the main window, click the
icon to bring the window back to the front.
o Use File > Save As or click to save a text, comma separated value (CSV), or
graphical version (screen capture) of the displayed contents of the Data window to a
file. If you specify Text format, the contents of the Data window including the
column headers are output to a .txt file.
Related Topics
Flat Schematic Window
Hierarchical Schematic Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Flat Schematic Window
Objects
The Flat Schematic window contains the following objects:
Objects Location Description
Progress Bar Status bar Shows the percentage of the design that has been
loaded.
Selected Instance Status bar Shows the type of the selected instance (submodule or
design level gate) and its path and name.
Number of Status bar Shows the number of instances in the display and, of
Instances those, the number selected.
Displayed
(Selected)
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Flat Schematic Window
Usage Notes
• Add instances to the Flat Schematic Window using any of the methods described in
“Adding Instances to the Current Display Window.”
• Select objects in the Flat Schematic Window using any of the methods described in
“Selecting Multiple Objects in the Flat and Hierarchical Schematic Windows.”
• View the library primitives of a specific instance in the Flat Schematic Window from
design level by double-clicking on the instance. The instance expands to show the
library primitives and is surrounded by a bounding box. Note, the progress bar in the
lower-left of the Flat Schematic Window indicates the progress of the expand operation.
Double-click on the bounding box, to return to the instance view. Selecting Display >
Gate Level > Primitive displays the primitives of the whole schematic sheet.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Flat Schematic Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Flat Schematic Window
o Display scan test patterns or chain test patterns, by selecting Data > Pattern Index
to display the Display Pattern Index Data dialog box. Note, the Chain Test option is
only available after you have saved the scan test patterns.
o Display additional types of available data by selecting the Data pulldown menu, the
corresponding buttons on the tool bar, or the set_gate_report command.
• Copy an object’s hierarchical pathname into a buffer which you can then paste into
another location by selecting the object(s) and choosing “<object_name(s)> (click to
copy)” from the popup menu. For more information, see “Copying and Pasting Object
Names in the Design.”
• Access information about navigating schematics in the Flat Schematic Window by
referring to Tracing Signal Paths on a Schematic. In addition to tracing methods, this
section also covers:
o Compaction of Buffers and Inverters in Traced Circuitry
o Annotation of Schematic Data in the Schematic Windows
• To help improve performance, the schematic is automatically divided into multiple
sheets when too many instances are visible. To navigate to a specific sheet enter its
number in the sheet number entry box. To continue a trace to another sheet, double-click
the marker on the net at the very right or very left of the schematic.
• In Tessent Diagnosis, use the Tools > Diagnosis Report menu item to display diagnosis
suspects on a schematic. Refer to “Displaying Suspects in the Schematic View” in the
Tessent Diagnosis User’s Manual for complete information.
• If the Flat Schematic Window is detached from and hidden behind the main window,
click the icon to bring the window back to the front.
Related Topics
Data Window
Hierarchical Schematic Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Hierarchical Schematic Window
Objects
The status bar below the Hierarchical Schematic Window contains the following contents:
Window Area Description
Selected Instance Shows the type of a selected instance (submodule or design level
gate) and its name.
Number of Instances Shows the number of instances being displayed (and how many
Displayed (Selected) of that number are currently selected).
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Hierarchical Schematic Window
Usage Notes
• Add instances to the Hierarchical Schematic Window using any of the methods
described in Adding Instances to the Current Display Window.
Note
From the Design Browser, you can add all top-level instances to the Hierarchical
Schematic Window using the popup View In > Hierarchical Schematic menu item
on the design’s top hierarchy. This issues the “add_display_instances / -display
hierarchical_schematic -down” command which displays all top-level instances of the
design and their interconnecting nets; the top-level ports are represented by port
symbols. If you want to only see the top-level port symbols instead of the expanded top-
level design, you can do this by using the “add_display_instances / -display
hierarchical_schematic” command.
• Select objects in the Hierarchical Schematic Window using any of the methods
described in Selecting Multiple Objects in the Flat and Hierarchical Schematic
Windows.
• Expand an instance in the Hierarchical Schematic Window by double-clicking on the
instance. The instance expands to show the lower-level instances and is surrounded by a
bounding box. Double-click on the bounding box, to return to the instance view.
• Copy an object’s hierarchical pathname into a buffer which you can then paste into
another location by selecting the object(s) and choosing “<object_name(s)> (click to
copy)” from the popup menu. For more information, see “Copying and Pasting Object
Names in the Design.”
• Access information about navigating a schematic in the Hierarchical Schematic Window
by referring to:
o Tracing Signal Paths on a Schematic
o Signal Path Tracing in the Hierarchical Schematic Window
• To help improve performance, the schematic is automatically divided into multiple
sheets when too many instances are visible. To navigate to a specific sheet enter its
number in the sheet number entry box. To continue a trace to another sheet, double-click
the marker on the net at the very right or very left of the schematic.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Hierarchical Schematic Window
• If the Hierarchical Schematic Window is detached from and hidden behind the main
window, click the icon to bring the window back to the front.
Related Topics
Data Window
Flat Schematic Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Configuration Data Window
• From the command line within a tool session, enter the following command:
• open_visualizer -display configuration_data
• To automatically load existing configuration data from the command line within a tool
session, enter the following command:
• read_config_data <configuration_file_name>
display_configuration
The Configuration Data window provides you with a graphical interface to view specifications
and to modify the configuration tree elements and their options.
Figure 7-15. Configuration Data Window
Objects
• The Configuration Data window provides the following capabilities:
o Configuration Tree — Enables navigation and modification of the entire
specification hierarchy. Displays a tab for each defined specification. You perform
most operations in this panel by clicking the right mouse button and selecting from
the available menu options as described in Table 7-8.
o Configuration Options — Displays options for the element selected in the
Configuration Tree panel. The content of the Configuration Options tab is specific to
the element selected in the Configuration Tree panel. The options displayed in this
panel are defined for the element type in the DftSpecification. For example, the
options displayed in this panel for the Sib are defined in the Sib wrapper of the
DftSpecification; the options available for the interface of the Sib are defined in
the Sib/Interface wrapper of the DftSpecification.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Configuration Data Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Configuration Data Window
• Specify the parameters of the newly added element in the Configuration Options panel as
follows:
o When entering the values of the element’s listed options, use the icon to select
from pre-defined values for that element.
o Click to define parameters of the element’s interface.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Global Search Window
Characteristics
• The following features are available:
o Enter a string in the Global Search text entry box to search for any occurrence of that
string. No wildcards are needed. The tool returns every instance of that string in any
pathname of the active design as shown in Figure 7-16. Alternatively, you can
enable the Exact Search field to disable the use of implicit wildcards and only search
for the exact string.
o Click the icon next to the search field to display a search history.
o Click the Options button to toggle the display of additional search parameters as
shown on the right of Figure 7-16.
o Click on a result to copy it to the copy/paste buffer.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Global Search Window
Note
You can cancel the search operation by clicking Cancel in the Global Search
dialog box. The Cancel button displays when the search operation starts to
display results; you may not see the button unless the Limit Displayed Matches To:
field is set to a large number.
o Select an object(s) and choose the View In > menu item from the popup menu to
view objects in one or more other windows. You can select multiple objects by
holding down the Shift key while clicking on the objects you want to select; when
you release the Shift key, the set of objects you clicked on remains selected and
available to View in another window.
o If the Global Search window is detached from and hidden behind the main window,
click the icon to bring the window back to the front.
o Use File > Save As or click to save a text, comma separated value (CSV), or
graphical version (screen capture) of the Global Search window contents to a file.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Test Structures Window
• From the command line within a tool session, enter the following command:
• open_visualizer -display test_structures
The Test Structures window allows you to visualize and debug EDT logic.
Characteristics
• You can use the Test Structures window to do the following:
o Browse a virtual graphical representation of the EDT logic as shown in Figure 7-17.
To display actual net and pin mapping information graphically, you must add the
EDT component to the Flat or Hierarchical Schematic Window.
o Display textual information about components within the EDT logic.
o Debug DRC violations related to the EDT logic.
Note
You must first run set_edt_finder on a design to gather EDT logic information
before you can view it in the Test Structures window. You can then view EDT
logic in the Test Structures window at any time prior to test pattern generation; EDT
Finder data is not preserved during ATPG.
Usage Notes
• Double-click graphic blocks to descend down and display internal components.
• Click on graphic objects to display information about the object in the text pane.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Test Structures Window
• Click callout boxes on graphic objects to toggle the display of DRC analysis
information. Press the Shift key and use the right mouse button to move the callout box
markers.
• Click on the plus sign preceding a device in the text pane to expand text to include
device pin information.
• Double-click on a device in the text pane to display it in the Hierarchical Schematic
Window.
• Search/Filter the contents of the text pane as follows: Click in the top of a text pane
column, type a term to search/filter on, and click on the binoculars. The contents of the
column is filtered so the specified term displays at the top. Click the magnifying glass at
the top of the first column to clear all filter entries.
• Copy an object’s hierarchical pathname into a buffer which you can then paste into
another location, by selecting the object(s) and choosing “<object_name(s)> (click to
copy)” from the popup menu. For more information, see “Copying and Pasting Object
Names in the Design.”
• If the Test Structures window is detached from and hidden behind the main window,
click the icon to bring the window back to the front.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Text Editor Window
• Click the right mouse button (RMB) on an instance in any of the following
DFTVisualizer windows: Flat/Hierarchical Schematic, Data, Wave, Browser, or Global
Search. Choose one of the View in Text Editor > Defining Text | Instantiating Text
menu items.
• Click on a hyperlink (pink underlined text) in the Console window.
The Text Editor window allows you to view and edit text files.
Objects
• Use the Text Editor window to do the following:
o View currently loaded design files: netlists, ATPG library, test procedure files,
startup files, and dofiles.
o View the definition and instantiation of instances in a Verilog netlist or ATPG
library.
o Create, edit, and save test procedure files, dofiles, and startup files.
o Troubleshoot test procedure files.
o Locate and debug test procedure file errors during DRC.
o Use built-in Verilog, VHDL, and test procedure file templates for making on-the-fly
changes.
Note
DFTVisualizer supports all of these operations for compressed netlist and ATPG
library files with any of the following file extensions: “.Z”, “.gz”, “.gzip”, and
“.zip”.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Text Editor Window
Usage Notes
The Text Editor contains standard text editor functions. You access these functions from the
File and Edit menus and by clicking the right mouse button (RMB) to display the popup menu.
You can specify the type of syntax highlighting to be applied to the contents of the Text Editor
by selecting the Display > Syntax Highlighting menu and choosing from the following
syntaxes: Verilog, VHDL, ATPG Library, Test Procedure, or Dofile. By default, the Text Editor
highlights text using Verilog syntax.
• Access to any design files currently loaded in DFTVisualizer. To view currently loaded
Verilog netlist files, dofiles (including startup files), the ATPG library, and the test
procedure file, choose File > Open > Current Design Files or click the icon and
select the file you want to open.
o To open all currently loaded design files, choose All. Be aware that if the tool is
invoked on a flat model, the netlist, ATPG library, and test procedure file are not
opened. If a dofile or startup file is specified, it is opened using this option.
o To open any subset of the currently loaded design files, choose from the individual
files listed under the submenus: Netlist | ATPG Library | Dofiles.
• Display options such as window positioning options, font sizes, and line numbers. To set
display options, choose the Display > Windows | Font | Line Number menu items.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Text Editor Window
• Search and replace operations using ASCII text or regular expressions. To search and/or
replace, choose Edit > Search | Replace. To use regular expressions, click More and
enable the Regular Expression option.
• Support for vi and emacs text editor key bindings. To access, choose Display > Key
Stroke Mode.
• Support for viewing and modifying compressed netlist and ATPG library files. To open
a ZIP file, choose File > Open > Other or click the icon, select the compressed file
to open from the Open File dialog box, and click OK. Each compressed file you open
displays as a tab in the Text Editor.
Note
DFTVisualizer supports all of these operations for compressed netlist and ATPG
library files with any of the following file extensions: “.Z”, “.gz”, “.gzip”, and
“.zip”.
Note
Some designs contain multiple definitions of library models or Verilog modules in
the ATPG library and netlist files. The Text Editor will only display the definition
that is in use by the tool; this is determined by the priority used when the library and
Verilog files are parsed at tool invocation.
• Templates for DFT-specific operations. To access the templates, choose Display >
Show Template and click a specific template item to insert the template into the
currently-opened file.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Console Window
Console Window
When DFTVisualizer is invoked, the Console window will be displayed and restored to the last
view when you exited the tool. The Console window allows you to enter commands and interact
with tool output and can be used as an alternative to the shell window.
Figure 7-19. Console Window
Objects
• Use the Console window to do the following:
o Enter and execute tool commands.
o View color-coded log file information.
o View notes, warnings, and errors applicable to the current session.
Usage Notes
• All tool commands can be executed in the Console window. Tool responses are
displayed in the Console window as well as in the shell window. Tool responses are
color-coded for better readability and easy identification of important messages.
• A dofile of commands executed in the Console window can be created. To write a dofile
of the commands shown in the Console window, choose the File > Create Dofile menu
item. Specify the name of the dofile to create in the Selection field of the Create Dofile
dialog box. All of the commands output by the Display > Filter > Command menu
item are saved to the dofile with the exception of comment characters “// command:”
which are omitted.
Note
The dofile is saved to the path specified in the Selection field. If you do not specify
an absolute path, the dofile is saved in the current directory.
• The contents of the Console window can be filtered. To filter the contents of the Console
window, choose one of the Display > Filter menu items described in Table 7-9.
Table 7-9. Console Window Contents
Filter Description
Error Only errors are displayed in the Console window. Errors display
in red font.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Console Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
Wave Window
Wave Window
To access: Choose the Windows > Wave menu item or click the icon.
The Wave window displays a waveform representation of the simulation results for the
test_setup procedure, test_end, VCD, and named capture procedures.
Figure 7-20. Wave Window
Objects
The Wave window contains the following contents:
Window Area Description
Instance Pane Shows the same instances as the Data window.
Waveform Pane Shows a waveform representation of the same test_setup
procedure data shown in the Data window.
Usage Notes
• To use the Wave window, first add instances and the test_setup column to the Data
window using the Data > Test-Setup menu item; then, open the Wave window.
• To specify to display a specific time range in the Wave window, activate the Wave
window and select Data > VCD from the pulldown menu.
• To view Test_end data in the Wave window, select the Data > Test-End menu item.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Command Quick Reference
• To view Named Capture Procedure (NCP) data in the Wave window, select the Data >
Named Capture menu item which executes the report_procedures command for the
specified NCP.
• To copy an object’s hierarchical pathname into a buffer which you can then paste into
another location, select the object(s) and choose “<object_name(s)> (click to copy)”
from the popup menu. For more information, see “Copying and Pasting Object Names in
the Design.”
• If the Wave window is detached from and hidden behind the main window, click the
icon to bring the window back to the front.
Note
Tip: The Wave window works together with Data window, automatically showing
the same instances and test_setup data as the Data window, but showing the data as a
waveform with timing information.
Related Topics
Data Window
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Command Quick Reference
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
DFTVisualizer
DFTVisualizer Command Quick Reference
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Chapter 8
Test Procedure File
Test procedure files specify how the scan circuitry within a design operates. The scan circuitry
operation is specified using previously-defined scan clocks and other control signals. To operate
the scan circuitry in your design, you must define the scan circuitry and provide a test procedure
file to describe its operation. The design rules checking (DRC) process, which occurs when you
exit setup mode, performs extensive checking to ensure the scan circuitry operates correctly.
Test Procedure File Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Test Procedure File Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Test Procedure File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
#include Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Set Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Alias Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Timing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Timeplate Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Multiple-Pulse Clocks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Always Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Procedure Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Clock Control Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
The Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Test_Setup (Optional). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Shift (Required) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Alternate Shift Procedure (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Load_Unload (Required) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Shadow_Control (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Master_Observe (Sometimes Required) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Shadow_Observe (Optional). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Seq_Transparent (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Clock (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Skew_Load (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Clock_run (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Capture Procedures (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Clock_po (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Ram_sequential (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Ram_passthru (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Clock_sequential (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Init_force (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Test_end (Optional, all ATPG tools) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Sub_procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
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
You can also have the stil2mgc tool translate a STIL Procedure File (SPF) into a dofile and test
procedure file. 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
stil2mgc, refer to “Notes About Using the stil2mgc Tool” on page 380.
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.
Syntax Conventions
The following syntax conventions are used in this chapter:
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
• Italic — Indicates lexical elements such as identifiers, strings, or numbers. Replace the
italicized word with the appropriate name or integer.
• | — A vertical bar or pipe character indicates a logical “OR” as in “select foo OR
foo_not”.
• [ ] — Square brackets indicate optional elements. Do not include the brackets.
• … — An ellipsis indicates a repeatable item or set.
Reserved Characters
If you have a pin or pathname that uses a reserved punctuation character, you must enclose that
name in double quotes. See Table 8-1 for a list of reserved punctuation characters.
For example, the following statement is illegal because it uses the exclamation point outside of
double quotes.
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 double quotes. 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 417.
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 file name to be included must be enclosed in double quotes, 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 will be added for that
pin.
When you include the “set autoforce off” statement, the tool will 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 will be 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
• 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 allow 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
allows 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
will be expressed in the time scale which 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 are simple mathematical equations which can use either timing
values or previously defined variables or timing variables as operands.
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 will be written using the equations and variables, and the variables will be
defined in the appropriate definition blocks which exist in each format. When saving patterns in
formats that don’t support equation-based timing, the equations will be computed and the
timing information will be specified as the resulting numeric values in the pattern file. Setting
the ALL_FLATTEN_TIMING parameter file keyword to 1 will cause Verilog, WGL, and STIL
outputs to compute the timing equations and use only the resulting numeric values in the output
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Timing Variables
files. Any equation that does not compute to an integer value will be 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 allowed. 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 timing example above 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 timeplate
definition has the following format:
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.
Note that 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 299.
• timeplate_name
A string that specifies the name of the timeplate.
• offstate pin_name off_state
A literal and double string that specifies the inactive, off-state value (0 or 1) for a
specific named primary input pin that will be pulsed within this timeplate but is not
defined as a clock pin by the add_clocks command. The complex timeplates are most
useful in the shift procedure where a non-clock pin must be pulsed while still
maintaining a single cycle in the shift procedure.
This statement must occur before all other timeplate_statement statements. This
statement is required for any pin that is not defined as a clock pin by the add_clocks
command but will be pulsed within this timeplate.
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 allows the bi-directional pins to be forced after applying the tri-state control
signal, so the system avoids bus contention. This statement overrides “force_pi” and
“measure_po”.
• measure_po time
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Timeplate Definition
A literal and integer pair that specifies the time at which the tool measures (or strobes)
the primary outputs.
• 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
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.
For example (1x pulse_clock):
timing_variables =
tester_period = 10;
strobe_1 = (0.96 * tester_period);
t_time = (0.25 * tester_period);
t_width = (0.5 * tester_period);
end;
timeplate tessent_ijtag =
force_pi 0 ;
measure_po strobe_1;
force tck 0;
pulse_clock t_time t_width;
period tester_period;
end;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Timeplate Definition
• 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.
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, in
the shift procedure, the user needs the pin to be pulsed twice with an offstate of 0.
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 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Inferred Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Differences Between Default add_clock and 1x Multiplier Clock. . . . . . . . . . . . . . . . . . 310
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 will use 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 will be 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 will be subject to rules checks that apply to each
procedure. In other words, the events in the always block will be 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 will be placed in the
cycles of each procedure. The always block will not be 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 • clock_po • test_end
• load_unload • ram_sequential • clock
• shadow_control • ram_passthru • sequential
• master_observe • clock_sequential • skew_load
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 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 302.
• annotate “ quoted string ”;
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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
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;
• label “ quoted_string” ;
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 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.
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
A literal and integer pair that specifies the loop count and is followed by a block of
statements. The loop procedure statement takes the loop count and causes all cycles
within the loop block to be repeated by the number of times specified by the count. For
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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Procedure Definition
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
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.
• 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.
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 363), measure_sco
is also used in the load_unload procedure.
o restore_pi
A literal that returns primary inputs to their original states (prior to this procedure’s
execution). You use the restore_pi statement at the end of a seq_transparent
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
o restore_bidi
A literal that returns bidirectional pins to their original states (prior to this
procedure’s execution). You 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.
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
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 double string 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 double string 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 double string 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 string pair that initializes the named memory element to the value
given. This statement is particularly useful for initializing the finite state machine in
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 desired 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 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.
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
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;
ATPG Restrictions
The following restrictions apply to ATPG when clock control definitions are enabled:
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
If none of these statements are present a warning displays during ATPG about clock
controls that cannot be applied due to 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.
• 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
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 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
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 will be 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.
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 seem correct that the condition in ATPG_CYCLE 0 will override 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 desired 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.
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
already forced later in the load_unload procedure will not be forced to a Z. Any bidi forced to a
specific value in the test_setup procedure will 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.
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)
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 will ensure 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 will
automatically generate 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 will
retain 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 360.
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;
Example 2
The following example shows a way to apply initialization cycles to a memory. The RST signal
is active for the first 128 cycles, then it is deactivated in the next cycle (cycle 129).
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 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. Please note
that “expect” statements do 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 8-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 allow proper operation of the load_unload procedure. The
measure_sco will occur at the measure_po time specified in the timeplate. The force_sci will
occur 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_mclk;
// pulse slave clock
pulse scan_sclk;
end;
end;
Figure 8-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 allows for 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.
Offstate for clock pins, constrained pin values, and other pins that have values forced in the
test_setup procedure are automatically added as force statements to the beginning of the
load_unload procedure (if not present); this helps reduce DRC failures.
Figure 8-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 execute 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 50ns. However, the
load_unload procedure includes an apply statement that executes one shift procedure. The shift
procedure requires an additional 50ns. Thus, the load_unload procedure actually requires a total
time of 100ns, as shown in Figure 8-5.
Within the load_unload procedure, after the completion of the cycle block, the shift procedure
starts at 50ns, executes for 50ns, and ends at 100ns. Thus, the load_unload procedure also ends
at 100ns.
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 executes, 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.
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 8-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_Observe (Optional)
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 this procedure does not disturb 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 the circuitry of the scan cell allows the transfer of data in this way. Once the data is at
the scan cell output, you can observe it by applying the unload command. This procedure allows
the shadow to be used as an observation point in the design.
Figure 8-8 shows the data flow of the shadow_observe procedure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Seq_Transparent (Optional)
Seq_Transparent (Optional)
The seq_transparent procedure (optional for “patterns -scan” context) identifies how to make
non-scan cells and RAM read ports functionally behave transparently. This procedure activates
the clock inputs of non-scan cell inputs, thus pulsing data through the cells “transparently.”
All clocks must be at their off-states and constrained pins at their constrained states before
applying the seq_transparent procedure. The procedure must immediately follow a force of all
the primary inputs. For more information on the sequential transparent operation, refer to
“Sequential Transparent Patterns” in the Tessent Scan and ATPG User’s Manual.
You can use multiple clock cycles to create the sequential transparent conditions. You may
define up to 32 different seq_transparent procedures within a procedure file. When simulation
mode is set to RAM_sequential, each force_all statement in the pattern file can use any of the
possible seq_transparent procedure choices. In “patterns -scan” context, the tool treats non-scan
state elements that cannot use the sequential transparent procedures as tie-X gates.
There may be occasions when you would want to use seq_transparent procedures when the
design contains no scan chains. In this case, you would use the add_scan_groups command,
specifying the name “dummy” for the group name; the tool would expect the specified test
procedure file to contain only the timeplate and seq_transparent procedure. For more
information, refer to the add_scan_groups command reference page in the Tessent Shell
Reference Manual. Figure 8-9 shows some circuitry that could benefit from a seq_transparent
procedure.
The following example shows the seq_transparent procedure for Figure 8-9.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock (Optional)
timeplate tp1=
force_pi 0;
measure_po 0;
pulse clock1 30 10;
pulse clock2 30 10;
period 50;
end;
The basic stimuli necessary to create transparent behavior for the non-scan flip-flop shown in
Figure 8-9 are:
You can use the report_seq_transparent_procedures command to display data defined by the
seq_transparent procedures. For more information, refer to the
report_seq_transparent_procedures description in the Tessent Shell Reference Manual.
Clock (Optional)
The clock procedure (optional in “patterns -scan” context) provides flexible clock handling
during the test procedures. Using clock procedures, instead of pulsing a single clock during a
capture cycle, you can serially exercise multiple clocks and force non-clock pins that do not
affect captured data.
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)
The following example shows a clock procedure used to operate two clocks in sequence:
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.
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 8-11 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.
Example
In this example, consider a PLL model that has two clocks: a reference clock and an internal
clock. Based on the PLL control signal:
• The internal clock is 2X faster than the reference clock when PLL control is 0.
• The internal clock is 4X faster than the reference clock when PLL control is 1.
If you wanted a PLL internal clock to drive the BIST controller clock, use the following
MBISTArchitect commands in your BIST insertion dofile to define the clocks and make the
proper connection.
procedure test_setup =
timeplate soc_timeplate;
cycle =
force PLL_Control 0 ;
pulse topPLLclk;
end;
end;
The following snippet has a clock_run procedure that describes the PLL model behavior
assuming that the PLL_Control is set to 0 as described in the previous test_setup procedure.
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)
timeplate timeplate_internal =
force_pi 0 ;
measure_po 90 ;
pulse PLL/int_clk 5 50 ; // speed is 2X
period 100 ;
end ;
timeplate timeplate_external =
force_pi 0 ;
measure_po 180 ;
pulse topPLLclk 5 100 ;
period 200 ;
end ;
procedure clock_run pll_clk=
mode internal =
timeplate timeplate_internal ;
cycle =
pulse PLL/int_clk ;
end ;
cycle =
pulse PLL/int_clk ;
end ;
end ;
mode external =
timeplate timeplate_external ;
cycle =
pulse topPLLclk ; // connected to reference clock
end ;
end ;
end ;
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 will not 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 allows 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 in order 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 will launch
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
Capture Procedures (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.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Test Procedure File
Clock_po (Optional)
Clock_po (Optional)
The clock_po procedure (optional in “patterns -scan” context), which can contain only force_pi,
measure_po, bidi_force_pi, and bidi_force_off event statements, represents the non-scan
activity for a clock PO pattern. Use this procedure instead of the capture procedure.
Note that with this procedure, you must use a timeplate that does not pulse the clocks.
The following shows the pattern for the clock_po procedure pattern.
Ram_sequential (Optional)
The ram_sequential procedure (optional for “patterns -scan” context), which may only contain
force_pi, pulse_write_clock, pulse_read_clock, bidi_force_pi, and bidi_force_off event
statements, represents the RAM sequential events in a RAM sequential pattern. Use this
procedure with the capture procedure.
The following illustrates the basic ram_sequential procedure pattern format.
Figure 8-12 shows an entire RAM sequential pattern, which illustrates where the
ram_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
Ram_passthru (Optional)
Ram_passthru (Optional)
The ram_passthru procedure (optional in “patterns -scan” context), which may only contain
force_pi, measure_po, pulse_write_clock, pulse_capture_clock, bidi_force_pi, bidi_force_off,
and bidi_measure_po event statements, represents the non-scan activity for a RAM passthrough
pattern. Use this procedure instead of the capture procedure.
The following shows the ram_passthru procedure pattern.
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)
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 8-13 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 8-14 shows the pattern which uses the init_force procedure.
The following shows the general pattern for the test_end procedure pattern.
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)
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 will 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 example, in cases where there are ram_sequential patterns that need to be saved
and no ram_sequential procedure was supplied, the tool automatically creates a default
procedure.
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 allow 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
• Logic BIST — 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Static Versus Dynamic Register Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Test Procedure File Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Dofile Modifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Serial Load and Unload DRC Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
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 can
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 and/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 which 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 in
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
order to express pre-shifts and post-shifts for loading the register. This event statement has the
following syntax:
The apply statement which is currently used to call shift and sub_procedure procedures and also
calls the load_unload_registers procedure. When calling these procedures, however, the number
of times argument in the apply statement is replaced with one or more value assignments to the
data in and/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 allows
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 will be 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 will be
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 will be 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 will be issued. If the load_unload_registers procedure contains more
than one shift block, this rule will be 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 will be 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 will be 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 will be the total length of the
value string divided by three, and then minus one for the post shift. Each shift will consumes
three bits, and the final cycle adds a post shift which will assign 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 setup a user-defined register value
that will be 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 stil2mgc 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.
Chapter 9
Timing Constraints (SDC)
This chapter describes the Synopsys Design Constraints (SDC) generated by the Tessent Shell
tool, 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. . . . . . . . . . . . . . . . . . 384
SDC File Generation with Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
SDC Design Synthesis with Tessent Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Preparation Step 1: Sourcing SDC File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Preparation Step 2: Setting and Redefining Tessent Tcl Variables . . . . . . . . . . . . . . . . . . 386
Preparation Step 3: Verifying the Declaration of Functional Clocks . . . . . . . . . . . . . . . . . 387
Preparation Step 4: Redefining Other Tessent Tcl Variables . . . . . . . . . . . . . . . . . . . . . . . 388
Synthesis Step 1: Loading the Design Into Your Synthesis Tool. . . . . . . . . . . . . . . . . . . . 389
Synthesis Step 2: Applying the SDC Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Synthesis Step 3: Preparing the DFT Logic for Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . 389
Synthesis Step 4: Synthesizing Your Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Synthesis Step 5: Writing Out Your Final SDC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Synthesis Step 6: Writing Out Your Final Netlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
SDC for Modal Static Timing Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Checking Your Functional Logic Alone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Checking Your Embedded Test Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
VHDL and Mixed Language Designs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
VHDL Generate Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
SDC File Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
tessent_set_default_variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
tessent_create_functional_clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
tessent_<design_name>_set_dft_signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
tessent_constrain_<design_name>_non_modal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
IJTAG Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
LOGICTEST Instruments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
MemoryBIST Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
BoundaryScan Instrument. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Cell and Pin Mapping Procs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Synthesis Helper Procs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
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.
The appendices show full examples of using and adjusting Tessent SDC files in the Synopsys
Design Compiler and Cadence Encounter synthesis environments, respectively. Also a
complete example for using Tessent SDC files for STA is given in “Example PrimeTime STA
Script” on page 413.
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, OCC) of the current design and all sub-
blocks that provide SDC constraints are represented by a separate proc in the SDC file.
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 re-generate 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 desired design’s full view and
executing 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 wish 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 3: Verifying the Declaration of Functional Clocks
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.
It is important to understand that you do not need to edit the Tessent Shell-generated SDC file,
but simply 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 409 and “Example Encounter Synthesis Script” on page 411 for a full
synthesis script examples.
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 388.
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 will not be necessary if you have used the “-label”
option of the add_clocks command in Tessent Shell to match the “-name” value in the SDC.
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
If you need to update one of the tessent_clock_mapping() array values, please do so in your
main synthesis script, right below the call to the tessent_set_default_variables proc. For
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:
The new definition of tessent_clock_mapping(CK25) will override the default one contained in
tessent_set_default_variables.
It is important to understand that you do not need to edit the Tessent-generated SDC file, but
simply 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 will not be used in the timing constraints.
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: Loading the Design Into Your Synthesis Tool
source ${design_name}.dc_shell_import_script
elaborate [...]
To apply the Tessent Shell-generated SDC constraints, run the merged non_modal proc:
tessent_constrain_${design_name}_non_modal
This Tessent SDC proc will in turn call 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 will do scan
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Synthesis Step 4: Synthesizing Your Design
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:
Then, since boundary optimization applies hierarchically, you re-enable boundary optimization
of the child instances of DFT objects using tessent_get_optimize_instances:
Cells from your provided Tessent Cell Library instantiated in Tessent Shell must also be
preserved but can be resized to allow critical data path timing optimization during synthesis.
You can get them using tessent_get_size_only_instances:
Tool Limitation: set_size_only does not have the desired effect in Cadence tools. See “Example
Encounter Synthesis Script” on page 411 for an example of the suggested procedure.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Synthesis Step 6: Writing Out Your Final Netlist
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
This will allow disabling 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
-------------------------------------------------------------------------
• Loads the generated SDC file and initializes some Tcl variables used by Tessent Shell
SDC constraints.
• Sets some Primetime control variables to their required value.
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 will restore VHDL generate loop naming to follow Verilog style: blk(0)/jblk(0)/i0
For this reason, we recommend using the provided procs tessent_get_pins and tessent_get_cells,
they will be 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 “Cell and Pin Mapping Procs” on
page 406 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
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.
This proc must always be the first proc to be run.
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 PLL's).If your
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
tessent_<design_name>_set_dft_signals
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
tessent_constrain_<design_name>_non_modal
This proc contains calls to the non_modal procs of all constrained instruments. They are
documented below. For synthesis, this is the only constraint proc you need to call.
IJTAG Instrument
Tessent IJTAG provides a single proc:
• tessent_constrain_<design_name>_mentor_ijtag_non_modal
o This proc would typically not be called directly in your synthesis script, it is called
as part of tessent_constrain_<design_name>_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 and/or Tessent OCC
hardware. This is managed via the “tessent_tck_clock_list” global variable. This variable is
built from different procs (ijtag & jtag_bscan) and used to create an asynchronous clock group.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
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.
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 muticycle_path
constraint.
LOGICTEST Instruments
The logictest-based procs are as follows:
• tessent_constrain_<design_name>_mentor_ltest_create_clocks
Called by many ltest procs below.
• tessent_constrain_<design_name>_mentor_ltest_modal_bypass_shift for STA
This proc must be called in your STA to constrain the EDT in bypass shift mode.
• tessent_constrain_<design_name>_mentor_ltest_modal_edt_fast_capture for STA
This proc must be called in your STA to constrain the EDT in fast capture mode.
• tessent_constrain_<design_name>_mentor_ltest_modal_edt_shift for STA
This proc must be called in your STA to constrain the EDT in shift mode.
• tessent_constrain_<design_name>_mentor_ltest_modal_single_bypass_chain_shift for
STA
This proc must be called in your STA to constrain the EDT in single chain bypass shift
mode.
• tessent_constrain_<design_name>_mentor_ltest_modal_edt_slow_capture for STA
This proc must be called in your STA to constrain the EDT in slow capture mode.
• tessent_constrain_<design_name>_mentor_ltest_non_modal
For chip synthesis and non-modal layout constraints. Merges the following old procs:
o tessent_constrain_<design_name>_mentor_edt_non_modal
o tessent_constrain_<design_name>_mentor_occ_non_modal
• tessent_constrain_<design_name>_mentor_ltest_set_pin_delays
Called by many ltest procs below.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
constrain_<design_name>_mentor_ltest_create_clocks
Tessent OCC provides the following proc:
• tessent_edt_clock — This clock is generated from the test_clock and is used to time the
shift paths of the EDT logic.
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 and/or shift clocks,
specifically:
• tessent_constrain_<design_name>_mentor_ltest_non_modal
• tessent_constrain_<design_name>_ltest_modal_edt_shift
• tessent_constrain_<design_name>_ltest_modal_bypass_shift
• tessent_constrain_<design_name>_ltest_modal_single_bypass_chain_shift
• tessent_constrain_<design_name>_ltest_modal_slow_capture
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
proc tessent_constrain_myDesign_mentor_ltest_create_clocks {} {
#
# Constraints for instrument mentor::ltest
#
# test_clock:
create_clock [get_ports test_clock] \
-add -period [expr $tessent_slow_clock_period] \
-name tessent_test_clock \
-waveform $tessent_slow_clock_waveform
# edt clock:
create_clock [get_ports edt_clock] \
-period [expr $tessent_slow_clock_period] -add \
-name tessent_edt_clock
tessent_constrain_<design_name>_mentor_ltest_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 and/or shift clocks, that is:
• tessent_constrain_<design_name>_mentor_ltest_non_modal
• tessent_constrain_<design_name>_ltest_modal_edt_shift
• tessent_constrain_<design_name>_ltest_modal_bypass_shift
• tessent_constrain_<design_name>_ltest_modal_single_bypass_chain_shift
• tessent_constrain_<design_name>_ltest_modal_slow_capture
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
LOGICTEST Instruments
# 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]
The same procs will leave all other logictest-related dft signals toggling, and will add a
false_path constraint if they come from a primary port. For example:
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
MemoryBIST Instrument
Those are the signals that optionally enable some capture paths. Users may choose to leave
these signals toggle, or force them enabled or disabled. For example:
# Define each variable below to match your final ATPG settings in fast
# capture mode.
# By default, all possible capture paths are covered.
global observe_test_point_en_value
if {[info exists observe_test_point_en_value]} {
set_case_analysis $observe_test_point_en_value [get_ports \
observe_test_point_en]
}
global mcp_bounding_enable_value
if {[info exists mcp_bounding_enable_value]} {
set_case_analysis $mcp_bounding_enable_value [get_ports \
my_mcp_bounding_enable]
}
tessent_constrain_<design_name>_mentor_ltest_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.
• constrain_<design_name>_mentor_ltest_create_clocks
• tessent_constrain_<design_name>_mentor_ltest_set_pin_delays
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' 'edt_mode'.
• Provides constraints to prevent “tck” and your functional clocks to propagate to
unwanted paths inside your mentor OCCs, as well as constraints that prevent false
timing violations on the select pin of clock muxes inside that OCC.
• Adds an optional set_multicycle_path constraint from your primary 'scan_en' port.
MemoryBIST Instrument
Tessent MemoryBIST provides the following procs:
• tessent_constrain_<design_name>_mentor_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_constrain_<design_name>_non_modal.
• tessent_constrain_<design_name>_mentor_memory_bist_modal for STA
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
MemoryBIST Instrument
o This proc must be called in your STA script if you want to constrain the MemoryBist
mode.
• tessent_aes_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.
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 allow 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 which must be described correctly in the SDC file.
Note
If you wish to skip the memoryBIST constraints of clock muxing (creating the generated
clock and false paths) for multi-clock memories, set the variable
tessent_apply_mbist_mux_constraints 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 will be inserted and will
run on CLKA. CLKA will be multiplexed onto the CLKB branch of the memory during tests.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
MemoryBIST Instrument
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) allows 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
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
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
BoundaryScan Instrument
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 will make physical design tools
aware of the mux on the clock port of the memory and they will place the mux in a location
where it does not affect timing.
BoundaryScan Instrument
Tessent BoundaryScan provides the following proc:
• tessent_constrain_<design_name>_mentor_jtag_bscan_non_modal
o This proc would typically not be called directly in your synthesis script, it is called
as part of tessent_constrain_<design_name>_non_modal.
It creates generated clocks from each BoundaryScan interface and relaxes the timing between
them.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Timing Constraints (SDC)
Cell and Pin Mapping Procs
• tessent_get_pins
• tessent_get_cells
• tessent_get_flops
• tessent_map_to_verilog
• tessent_remap_vhdl_path_list
tessent_get_pins and tessent_get_cells are wrapper procs of the original SDC commands
get_pins and get_cells, they are used throughout the Tessent SDC. They both use
tessent_map_to_verilog and tessent_remap_vhdl_path_list procs as needed. You can and should
use the tessent_get_pins and tessent_get_cells procs (as opposed to 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 on the RTL. See “Dealing with Unrolled VHDL
Generate for Loops” on page 394 for more information.
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 394 for more information. This proc is called by
tessent_get_cells and tessent_get_pins if needed. You should not need to call this proc directly.
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 which need to be boundary preserved,
shall be optimized or must be entirely 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 if you intend on using your post-synthesis netlist with our tools. Here are the
allowed values of the “select” argument, they are 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. This selection is
required if you intend to use Tessent Shell to do scan insertion on your design.
• 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 intent 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.
The tessent_get_optimize_instances proc returns a collection of child instances within Tessent
instruments whose boundaries are allowed to be optimized. This should be used when your
synthesis tools propagates boundary optimization attributes downward hierarchically.
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
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix A
Example Scripts
This section provides example scripts for use when using Tessent Shell tool-generated SDC.
Example Design Compiler Synthesis Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Example Encounter Synthesis Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Example PrimeTime STA Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Example Scripts
Example Design Compiler Synthesis Script
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.
Example Scripts
Example Encounter Synthesis Script
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Example Scripts
Example Encounter Synthesis Script
# Preparation Step 1
set design_name top
set tsdb ../tsdb_outdir
source
source ${tsdb}/dft_inserted_designs/${design_name}_rtl.dft_inserted_design/ \
${design_name}.sdc
# Preparation Step 2
tessent_set_default_variables
set tessent_tck_period 80.0
# Preparation Step 3
# Define functional clocks
create_clock [get_ports pCLK25] –name pCLK25 –period 25.0
create_clock [get_ports pCLK100] –name pCLK100 –period 100.0
# Set clock names in mapping array
array set tessent_clock_mapping {
CLK25 pCLK25
CLK_PLL_REF pCLK100
}
# Preparation Step 4
# set tessent_input_delay [expr 0.3 * $tessent_tck_period]
# Synthesis Step 1
source ${design_name}.encounter_import_script
elaborate
cd designs/${design_name}
# Synthesis Step 2
tessent_constrain_${design_name}_non_modal
# Synthesis Step 3
proc do_set_boundary_optimization { instance_collection state } {
set C {}
# Find sub-instances because 'boundary_opto' attribute is not inherited
# downward (unlike 'dc_shell')
set instancesCollection {}
foreach_in_collection inst $instance_collection {
if { [sizeof_collection [set subInstancesCollection [find . -instance \
[vname $inst]]]]> 0 } {
append_to_collection instancesCollection $subInstancesCollection
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Example Scripts
Example PrimeTime STA Script
# Synthesis Step 4
synthesize -to_mapped
# Synthesis Step 5
redirect ${design_name}.merged_sdc { write_sdc $design_name }
# Synthesis Step 6
redirect ${design_name}.vg { write_hdl $design_name }
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Example Scripts
Example PrimeTime STA Script
#########################################################################
#
# REQUIRED USER EDITS
#
#########################################################################
# You need to edit some of the lines below before you can run this script.
# Once you’re done, you can source the script directly
# from Primetime.
#========================= Start Edits Here =============================
#------------------------------------------------------------------------
# Edit #1- set a few variables:
# Update the "tsdb" variable below to reflect the path between the
# design’s latest TSDB directory and the directory where you perform the
# analysis.
set tsdb ./tsdb_outdir
# Update the "design_name" variable below to provide your top level design
# name.
set design_name top
# Update the "design_id" variable below to specify the latest
set design_id rtl
# Update the "netlist" variable below to point to your gate level
# netlist file.
# If your netlist requires more than a simple read_verilog command, create
# a file load_design.pt and it will be sourced further in this script
set netlist ${design_name}.vg
#------------------------------------------------------------------------
# Edit #2- Provide a back-annotation procedure to the script.
# If you run STA on a post-layout netlist, you must provide the proper
# back-annotation command(s) inside the procedure below.
# If you don't want back-annotation, leave that procedure empty.
proc LoadBackAnnotationData {} {
echo "Loading back-annotation file"
}
##################################################################
# Initialization
##################################################################
# "Creating a clock on internal pin ..."
suppress_message UITE-130
# "Creating a clock on a hierarchical pin ..."
suppress_message UITE-137
# "Creating a generated clock on a hierarchical pin ..."
suppress_message UITE-136
# "Creating a clock source on inout port ..."
suppress_message UITE-123
# "Some timing arcs have been disabled for ..."
suppress_message PTE-003
#------------------------------------------------------------------------
# RunAndReport
#
# You can modify the RunAndReport procedure to your taste by defining it
# inside your user_timing_data.tcl file. See below for more details.
#
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Example Scripts
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
# 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 simple "read_verilog" below. Leave
# that file in the current directly and the lines below will pick it up
# automatically. That will save you from having to edit this script every
# time after you ran rulea-timinggen.
if {[file exists load_design.pt]} {
source load_design.pt
} else {
read_verilog $netlist
}
current_design $design_name
link_design
########################################################################
#
# EmbeddedTest Mode
#
########################################################################
echo "\n\n\nAnalysis in EmbeddedTest Mode ************************ \n" ;
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Example Scripts
Example PrimeTime STA Script
reset_design
LoadBackAnnotationData
RunAndReport ETMODE
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix B
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 - 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
If you want the output of any tool command returned as a Tcl result, you must use the
return_output command. The following example uses return_output in a dofile:
set resultA [return_output {report_gate /gate3} -tee ]
// /gate3 nor02
// A0 I /gate2/Y
// A1 I /ff2/Q
// Y O /ff5/D ff4/D ff3/D /gate6b/E
puts $resultA
// /gate3 nor02
// A0 I /gate2/Y
// A1 I /ff2/Q
// Y O /ff5/D ff4/D ff3/D /gate6b/E
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.
• If a variable can contain a command string or be empty, attempting to execute by
referencing $variable results in an error if the variable is empty.
• 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 execute a file of tool commands. The Tcl
“source” command also executes a file of commands, but you should only use it to load Tcl
procs, set Tcl variables, or do other strictly Tcl commands.
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
You should use the dofile command to execute a command file containing tool commands for
the following reasons:
• The dofile command is affected by the set_dofile_abort command which provides you
with the ability to specify whether the tool aborts when an error condition is detected.
The Tcl “source” command is not affected by the set_dofile_abort command.
• The dofile command transcripts the commands to the shell and logfile. The Tcl “source”
command always stops execution if any command in the file encounters an error.
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 executes a separate add_scan_chains command
for each value. The transcript and logfile will contain all 256 add_scan_chains commands
(preceded with “// subcommand: ”).
Example 2
The following example controls the flow of creating test patterns and uses a variable to execute
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
This example places the output from a report command in a variable for subsequent processing:
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 B-2 on page 422, which provides a list of
typically-used Tcl special characters.
Table B-1. Common Dofile Issues and Solutions
Dofile Issue Solution
Stopping dofile execution at a Use the native Tcl “error” command to stop execution of a
specific 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:
• Double quotes (" ") group tokens but allow $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
Special Tcl Characters
# if (some condition) {
if { new text condition } {
...
}
• Tricky Point 2: The apparent beginning of a line is not always the beginning
of a command:
# This is a comment
In the following code snippet, the line beginning with “# -type” is not a comment,
because the line right 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.
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:
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
• 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. Note that 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 C
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.
Note that 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, Mentor Graphics
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 will continue 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 allows 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. Note that 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 executing 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
note that 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 classic TestKompress command write_edt_files has a switch named
“-insertion tk.” In Tessent Shell, this switch is renamed “-insertion ts.”
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.
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
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.
• After issuing insert_test_logic in analysis mode, the tool updates the design and then
changes to insertion mode. This allows 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 D
Formal Verification
Tessent Shell-based products currently do not generate scripts for use with Synopsys Formality.
You can, however, set constraints in your design that are used with Formality.
Constraints for Formality Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
• Set the circuit in functional mode. This is basically holding the IJTAG network and/or
TAP in reset.
• If you are at the chip level, set a constant 0 on TRST. If you are at the sub_block/
physical_block level, set a constant 1 on the ijtag_reset port(s).
• In both design levels, if your design has DftSignals coming from ports, they need to be
set constant to their reset values. DftSignals from the TDR will automatically be handled
by the reset.
• If you are at the sub_block or physical_block level, prevent the verification of ports
created by Tessent Shell or they will report violations.
• Find all the instruments and SIBs that the Tessent tools inserted and assert the ijtag_reset
pins to their active value.
• Since the ICL network may already be present our SIBs could result in mismatches on
the ICL network scan path. The SIB scan in/outs would probably have to be set as “don't
verify points”.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Formal Verification
Constraints for Formality Scripts
EDT
Constraining scan_en to 0 (the same as requirement for scan insertion) is sufficient to proceed
with equivalence checking. The formal verification tool will report some unmatched nodes like
the newly-added EDT pins (clock/update/bypass/low_power/channel) and registers inside the
EDT logic.
OCC
If the OCC has an IjtagInterface, or if the test_mode pin of the OCC is connected to an
IjtagNetwork, then keeping the ijtag network in reset state is sufficient for OCC. Otherwise (that
is, the test_mode port is connected to a top-level port), this port needs to be constrained to 0.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Appendix E
Getting Help
There are several ways to get help when setting up and using Tessent software tools. Depending
on your need, help is available from documentation, online command help, and Mentor
Graphics Support.
The Tessent Documentation System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Mentor Support Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
• 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 $MGC_DFT/docs/infohubs/index.html
PDF
acroread $MGC_DFT/docs/pdfdocs/_bk_tessent.pdf
• Application Online Help — ou can get contextual online help within most Tessent
tools by using the “help -manual” tool command. For example:
> help dofile -manual
This command opens the appropriate reference manual at the “dofile” command
description.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Getting Help
Mentor Support Services
• Software Updates — Get the latest releases and product enhancements to keep your
environment current.
• Mentor Graphics Support Center — Access our online knowledge base, personalized
to your Mentor products.
• Support Forums — Learn, share, and connect with other Mentor users.
• Mentor Ideas — Share ideas and vote for your favorites to shape future products.
More information is available here:
https://support.mentor.com
If your site is under a current support contract, but you do not have a Support Center login,
register today:
https://support.mentor.com/register
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Index
For information about third-party software included with this release of Tessent products, refer to the Third-Party Software for
Tessent Products.
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.
End-User License Agreement
The latest version of the End-User License Agreement is available on-line at:
www.mentor.com/eula
IMPORTANT INFORMATION
USE OF ALL SOFTWARE IS SUBJECT TO LICENSE RESTRICTIONS. CAREFULLY READ THIS LICENSE
AGREEMENT BEFORE USING THE PRODUCTS. USE OF SOFTWARE INDICATES CUSTOMER’S COMPLETE
AND UNCONDITIONAL ACCEPTANCE OF THE TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT.
ANY ADDITIONAL OR DIFFERENT PURCHASE ORDER TERMS AND CONDITIONS SHALL NOT APPLY.
This is a legal agreement concerning the use of Software (as defined in Section 2) and hardware (collectively “Products”)
between the company acquiring the Products (“Customer”), and the Mentor Graphics entity that issued the corresponding
quotation or, if no quotation was issued, the applicable local Mentor Graphics entity (“Mentor Graphics”). Except for license
agreements related to the subject matter of this license agreement which are physically signed by Customer and an authorized
representative of Mentor Graphics, this Agreement and the applicable quotation contain the parties’ entire understanding
relating to the subject matter and supersede all prior or contemporaneous agreements. If Customer does not agree to these
terms and conditions, promptly return or, in the case of Software received electronically, certify destruction of Software and all
accompanying items within five days after receipt of Software and receive a full refund of any license fee paid.
1.1. To the extent Customer (or if agreed by Mentor Graphics, Customer’s appointed third party buying agent) places and Mentor
Graphics accepts purchase orders pursuant to this Agreement (each an “Order”), each Order will constitute a contract between
Customer and Mentor Graphics, which shall be governed solely and exclusively by the terms and conditions of this Agreement,
any applicable addenda and the applicable quotation, whether or not those documents are referenced on the Order. Any
additional or conflicting terms and conditions appearing on an Order or presented in any electronic portal or automated order
management system, whether or not required to be electronically accepted, will not be effective unless agreed in writing and
physically signed by an authorized representative of Customer and Mentor Graphics.
1.2. Amounts invoiced will be paid, in the currency specified on the applicable invoice, within 30 days from the date of such invoice.
Any past due invoices will be subject to the imposition of interest charges in the amount of one and one-half percent per month
or the applicable legal rate currently in effect, whichever is lower. Prices do not include freight, insurance, customs duties, taxes
or other similar charges, which Mentor Graphics will state separately in the applicable invoice. Unless timely provided with a
valid certificate of exemption or other evidence that items are not taxable, Mentor Graphics will invoice Customer for all
applicable taxes including, but not limited to, VAT, GST, sales tax, consumption tax and service tax. Customer will make all
payments free and clear of, and without reduction for, any withholding or other taxes; any such taxes imposed on payments by
Customer hereunder will be Customer’s sole responsibility. If Customer appoints a third party to place purchase orders and/or
make payments on Customer’s behalf, Customer shall be liable for payment under Orders placed by such third party in the event
of default.
1.3. All Products are delivered FCA factory (Incoterms 2010), freight prepaid and invoiced to Customer, except Software delivered
electronically, which shall be deemed delivered when made available to Customer for download. Mentor Graphics retains a
security interest in all Products delivered under this Agreement, to secure payment of the purchase price of such Products, and
Customer agrees to sign any documents that Mentor Graphics determines to be necessary or convenient for use in filing or
perfecting such security interest. Mentor Graphics’ delivery of Software by electronic means is subject to Customer’s provision
of both a primary and an alternate e-mail address.
2. GRANT OF LICENSE. The software installed, downloaded, or otherwise acquired by Customer under this Agreement, including any
updates, modifications, revisions, copies, documentation, setup files and design data (“Software”) are copyrighted, trade secret and
confidential information of Mentor Graphics or its licensors, who maintain exclusive title to all Software and retain all rights not
expressly granted by this Agreement. Except for Software that is embeddable (“Embedded Software”), which is licensed pursuant to
separate embedded software terms or an embedded software supplement, Mentor Graphics grants to Customer, subject to payment of
applicable license fees, a nontransferable, nonexclusive license to use Software solely: (a) in machine-readable, object-code form
(except as provided in Subsection 4.2); (b) for Customer’s internal business purposes; (c) for the term of the license; and (d) on the
computer hardware and at the site authorized by Mentor Graphics. A site is restricted to a one-half mile (800 meter) radius. Customer
may have Software temporarily used by an employee for telecommuting purposes from locations other than a Customer office, such as
the employee’s residence, an airport or hotel, provided that such employee’s primary place of employment is the site where the
Software is authorized for use. Mentor Graphics’ standard policies and programs, which vary depending on Software, license fees paid
or services purchased, apply to the following: (a) relocation of Software; (b) use of Software, which may be limited, for example, to
execution of a single session by a single user on the authorized hardware or for a restricted period of time (such limitations may be
technically implemented through the use of authorization codes or similar devices); and (c) support services provided, including
eligibility to receive telephone support, updates, modifications, and revisions. For the avoidance of doubt, if Customer provides any
feedback or requests any change or enhancement to Products, whether in the course of receiving support or consulting services,
evaluating Products, performing beta testing or otherwise, any inventions, product improvements, modifications or developments made
by Mentor Graphics (at Mentor Graphics’ sole discretion) will be the exclusive property of Mentor Graphics.
3. BETA CODE.
3.1. Portions or all of certain Software may contain code for experimental testing and evaluation (which may be either alpha or beta,
collectively “Beta Code”), which may not be used without Mentor Graphics’ explicit authorization. Upon Mentor Graphics’
authorization, Mentor Graphics grants to Customer a temporary, nontransferable, nonexclusive license for experimental use to
test and evaluate the Beta Code without charge for a limited period of time specified by Mentor Graphics. Mentor Graphics may
choose, at its sole discretion, not to release Beta Code commercially in any form.
3.2. If Mentor Graphics authorizes Customer to use the Beta Code, Customer agrees to evaluate and test the Beta Code under normal
conditions as directed by Mentor Graphics. Customer will contact Mentor Graphics periodically during Customer’s use of the
Beta Code to discuss any malfunctions or suggested improvements. Upon completion of Customer’s evaluation and testing,
Customer will send to Mentor Graphics a written evaluation of the Beta Code, including its strengths, weaknesses and
recommended improvements.
3.3. Customer agrees to maintain Beta Code in confidence and shall restrict access to the Beta Code, including the methods and
concepts utilized therein, solely to those employees and Customer location(s) authorized by Mentor Graphics to perform beta
testing. Customer agrees that any written evaluations and all inventions, product improvements, modifications or developments
that Mentor Graphics conceived or made during or subsequent to this Agreement, including those based partly or wholly on
Customer’s feedback, will be the exclusive property of Mentor Graphics. Mentor Graphics will have exclusive rights, title and
interest in all such property. The provisions of this Subsection 3.3 shall survive termination of this Agreement.
4. RESTRICTIONS ON USE.
4.1. Customer may copy Software only as reasonably necessary to support the authorized use. Each copy must include all notices
and legends embedded in Software and affixed to its medium and container as received from Mentor Graphics. All copies shall
remain the property of Mentor Graphics or its licensors. Except for Embedded Software that has been embedded in executable
code form in Customer’s product(s), Customer shall maintain a record of the number and primary location of all copies of
Software, including copies merged with other software, and shall make those records available to Mentor Graphics upon
request. Customer shall not make Products available in any form to any person other than Customer’s employees and on-site
contractors, excluding Mentor Graphics competitors, whose job performance requires access and who are under obligations of
confidentiality. Customer shall take appropriate action to protect the confidentiality of Products and ensure that any person
permitted access does not disclose or use Products except as permitted by this Agreement. Customer shall give Mentor Graphics
written notice of any unauthorized disclosure or use of the Products as soon as Customer becomes aware of such unauthorized
disclosure or use. Customer acknowledges that Software provided hereunder may contain source code which is proprietary and
its confidentiality is of the highest importance and value to Mentor Graphics. Customer acknowledges that Mentor Graphics
may be seriously harmed if such source code is disclosed in violation of this Agreement. Except as otherwise permitted for
purposes of interoperability as specified by applicable and mandatory local law, Customer shall not reverse-assemble,
disassemble, reverse-compile, or reverse-engineer any Product, or in any way derive any source code from Software that is not
provided to Customer in source code form. Log files, data files, rule files and script files generated by or for the Software
(collectively “Files”), including without limitation files containing Standard Verification Rule Format (“SVRF”) and Tcl
Verification Format (“TVF”) which are Mentor Graphics’ trade secret and proprietary syntaxes for expressing process rules,
constitute or include confidential information of Mentor Graphics. Customer may share Files with third parties, excluding
Mentor Graphics competitors, provided that the confidentiality of such Files is protected by written agreement at least as well as
Customer protects other information of a similar nature or importance, but in any case with at least reasonable care. Customer
may use Files containing SVRF or TVF only with Mentor Graphics products. Under no circumstances shall Customer use
Products or Files or allow their use for the purpose of developing, enhancing or marketing any product that is in any way
competitive with Products, or disclose to any third party the results of, or information pertaining to, any benchmark.
4.2. If any Software or portions thereof are provided in source code form, Customer will use the source code only to correct software
errors and enhance or modify the Software for the authorized use, or as permitted for Embedded Software under separate
embedded software terms or an embedded software supplement. Customer shall not disclose or permit disclosure of source
code, in whole or in part, including any of its methods or concepts, to anyone except Customer’s employees or on-site
contractors, excluding Mentor Graphics competitors, with a need to know. Customer shall not copy or compile source code in
any manner except to support this authorized use.
4.3. Customer agrees that it will not subject any Product to any open source software (“OSS”) license that conflicts with this
Agreement or that does not otherwise apply to such Product.
4.4. Customer may not assign this Agreement or the rights and duties under it, or relocate, sublicense, or otherwise transfer the
Products, whether by operation of law or otherwise (“Attempted Transfer”), without Mentor Graphics’ prior written consent and
payment of Mentor Graphics’ then-current applicable relocation and/or transfer fees. Any Attempted Transfer without Mentor
Graphics’ prior written consent shall be a material breach of this Agreement and may, at Mentor Graphics’ option, result in the
immediate termination of the Agreement and/or the licenses granted under this Agreement. The terms of this Agreement,
including without limitation the licensing and assignment provisions, shall be binding upon Customer’s permitted successors in
interest and assigns.
4.5. The provisions of this Section 4 shall survive the termination of this Agreement.
5. SUPPORT SERVICES. To the extent Customer purchases support services, Mentor Graphics will provide Customer with updates and
technical support for the Products, at the Customer site(s) for which support is purchased, in accordance with Mentor Graphics’ then
current End-User Support Terms located at http://supportnet.mentor.com/supportterms.
6. OPEN SOURCE SOFTWARE. Products may contain OSS or code distributed under a proprietary third party license agreement, to
which additional rights or obligations (“Third Party Terms”) may apply. Please see the applicable Product documentation (including
license files, header files, read-me files or source code) for details. In the event of conflict between the terms of this Agreement
(including any addenda) and the Third Party Terms, the Third Party Terms will control solely with respect to the OSS or third party
code. The provisions of this Section 6 shall survive the termination of this Agreement.
7. LIMITED WARRANTY.
7.1. Mentor Graphics warrants that during the warranty period its standard, generally supported Products, when properly installed,
will substantially conform to the functional specifications set forth in the applicable user manual. Mentor Graphics does not
warrant that Products will meet Customer’s requirements or that operation of Products will be uninterrupted or error free. The
warranty period is 90 days starting on the 15th day after delivery or upon installation, whichever first occurs. Customer must
notify Mentor Graphics in writing of any nonconformity within the warranty period. For the avoidance of doubt, this warranty
applies only to the initial shipment of Software under an Order and does not renew or reset, for example, with the delivery of (a)
Software updates or (b) authorization codes or alternate Software under a transaction involving Software re-mix. This warranty
shall not be valid if Products have been subject to misuse, unauthorized modification, improper installation or Customer is not in
compliance with this Agreement. MENTOR GRAPHICS’ ENTIRE LIABILITY AND CUSTOMER’S EXCLUSIVE
REMEDY SHALL BE, AT MENTOR GRAPHICS’ OPTION, EITHER (A) REFUND OF THE PRICE PAID UPON
RETURN OF THE PRODUCTS TO MENTOR GRAPHICS OR (B) MODIFICATION OR REPLACEMENT OF THE
PRODUCTS THAT DO NOT MEET THIS LIMITED WARRANTY. MENTOR GRAPHICS MAKES NO WARRANTIES
WITH RESPECT TO: (A) SERVICES; (B) PRODUCTS PROVIDED AT NO CHARGE; OR (C) BETA CODE; ALL OF
WHICH ARE PROVIDED “AS IS.”
7.2. THE WARRANTIES SET FORTH IN THIS SECTION 7 ARE EXCLUSIVE. NEITHER MENTOR GRAPHICS NOR ITS
LICENSORS MAKE ANY OTHER WARRANTIES EXPRESS, IMPLIED OR STATUTORY, WITH RESPECT TO
PRODUCTS PROVIDED UNDER THIS AGREEMENT. MENTOR GRAPHICS AND ITS LICENSORS SPECIFICALLY
DISCLAIM ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NON-INFRINGEMENT OF INTELLECTUAL PROPERTY.
8. LIMITATION OF LIABILITY. TO THE EXTENT PERMITTED UNDER APPLICABLE LAW, IN NO EVENT SHALL
MENTOR GRAPHICS OR ITS LICENSORS BE LIABLE FOR INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES (INCLUDING LOST PROFITS OR SAVINGS) WHETHER BASED ON CONTRACT, TORT OR ANY OTHER
LEGAL THEORY, EVEN IF MENTOR GRAPHICS OR ITS LICENSORS HAVE BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES. IN NO EVENT SHALL MENTOR GRAPHICS’ OR ITS LICENSORS’ LIABILITY UNDER THIS
AGREEMENT EXCEED THE AMOUNT RECEIVED FROM CUSTOMER FOR THE HARDWARE, SOFTWARE LICENSE OR
SERVICE GIVING RISE TO THE CLAIM. IN THE CASE WHERE NO AMOUNT WAS PAID, MENTOR GRAPHICS AND ITS
LICENSORS SHALL HAVE NO LIABILITY FOR ANY DAMAGES WHATSOEVER. THE PROVISIONS OF THIS SECTION 8
SHALL SURVIVE THE TERMINATION OF THIS AGREEMENT.
9.1. Customer acknowledges that Mentor Graphics has no control over the testing of Customer’s products, or the specific
applications and use of Products. Mentor Graphics and its licensors shall not be liable for any claim or demand made against
Customer by any third party, except to the extent such claim is covered under Section 10.
9.2. In the event that a third party makes a claim against Mentor Graphics arising out of the use of Customer’s products, Mentor
Graphics will give Customer prompt notice of such claim. At Customer’s option and expense, Customer may take sole control
of the defense and any settlement of such claim. Customer WILL reimburse and hold harmless Mentor Graphics for any
LIABILITY, damages, settlement amounts, costs and expenses, including reasonable attorney’s fees, incurred by or awarded
against Mentor Graphics or its licensors in connection with such claims.
9.3. The provisions of this Section 9 shall survive any expiration or termination of this Agreement.
10. INFRINGEMENT.
10.1. Mentor Graphics will defend or settle, at its option and expense, any action brought against Customer in the United States,
Canada, Japan, or member state of the European Union which alleges that any standard, generally supported Product acquired
by Customer hereunder infringes a patent or copyright or misappropriates a trade secret in such jurisdiction. Mentor Graphics
will pay costs and damages finally awarded against Customer that are attributable to such action. Customer understands and
agrees that as conditions to Mentor Graphics’ obligations under this section Customer must: (a) notify Mentor Graphics
promptly in writing of the action; (b) provide Mentor Graphics all reasonable information and assistance to settle or defend the
action; and (c) grant Mentor Graphics sole authority and control of the defense or settlement of the action.
10.2. If a claim is made under Subsection 10.1 Mentor Graphics may, at its option and expense: (a) replace or modify the Product so
that it becomes noninfringing; (b) procure for Customer the right to continue using the Product; or (c) require the return of the
Product and refund to Customer any purchase price or license fee paid, less a reasonable allowance for use.
10.3. Mentor Graphics has no liability to Customer if the action is based upon: (a) the combination of Software or hardware with any
product not furnished by Mentor Graphics; (b) the modification of the Product other than by Mentor Graphics; (c) the use of
other than a current unaltered release of Software; (d) the use of the Product as part of an infringing process; (e) a product that
Customer makes, uses, or sells; (f) any Beta Code or Product provided at no charge; (g) any software provided by Mentor
Graphics’ licensors who do not provide such indemnification to Mentor Graphics’ customers; (h) OSS, except to the extent that
the infringement is directly caused by Mentor Graphics’ modifications to such OSS; or (i) infringement by Customer that is
deemed willful. In the case of (i), Customer shall reimburse Mentor Graphics for its reasonable attorney fees and other costs
related to the action.
10.4. THIS SECTION 10 IS SUBJECT TO SECTION 8 ABOVE AND STATES THE ENTIRE LIABILITY OF MENTOR
GRAPHICS AND ITS LICENSORS, AND CUSTOMER’S SOLE AND EXCLUSIVE REMEDY, FOR DEFENSE,
SETTLEMENT AND DAMAGES, WITH RESPECT TO ANY ALLEGED PATENT OR COPYRIGHT INFRINGEMENT
OR TRADE SECRET MISAPPROPRIATION BY ANY PRODUCT PROVIDED UNDER THIS AGREEMENT.
11.1. If a Software license was provided for limited term use, such license will automatically terminate at the end of the authorized
term. Mentor Graphics may terminate this Agreement and/or any license granted under this Agreement immediately upon
written notice if Customer: (a) exceeds the scope of the license or otherwise fails to comply with the licensing or confidentiality
provisions of this Agreement, or (b) becomes insolvent, files a bankruptcy petition, institutes proceedings for liquidation or
winding up or enters into an agreement to assign its assets for the benefit of creditors. For any other material breach of any
provision of this Agreement, Mentor Graphics may terminate this Agreement and/or any license granted under this Agreement
upon 30 days written notice if Customer fails to cure the breach within the 30 day notice period. Termination of this Agreement
or any license granted hereunder will not affect Customer’s obligation to pay for Products shipped or licenses granted prior to
the termination, which amounts shall be payable immediately upon the date of termination.
11.2. Upon termination of this Agreement, the rights and obligations of the parties shall cease except as expressly set forth in this
Agreement. Upon termination of this Agreement and/or any license granted under this Agreement, Customer shall ensure that
all use of the affected Products ceases, and shall return hardware and either return to Mentor Graphics or destroy Software in
Customer’s possession, including all copies and documentation, and certify in writing to Mentor Graphics within ten business
days of the termination date that Customer no longer possesses any of the affected Products or copies of Software in any form.
12. EXPORT. The Products provided hereunder are subject to regulation by local laws and European Union (“E.U.”) and United States
(“U.S.”) government agencies, which prohibit export, re-export or diversion of certain products, information about the products, and
direct or indirect products thereof, to certain countries and certain persons. Customer agrees that it will not export or re-export Products
in any manner without first obtaining all necessary approval from appropriate local, E.U. and U.S. government agencies. If Customer
wishes to disclose any information to Mentor Graphics that is subject to any E.U., U.S. or other applicable export restrictions, including
without limitation the U.S. International Traffic in Arms Regulations (ITAR) or special controls under the Export Administration
Regulations (EAR), Customer will notify Mentor Graphics personnel, in advance of each instance of disclosure, that such information
is subject to such export restrictions.
13. U.S. GOVERNMENT LICENSE RIGHTS. Software was developed entirely at private expense. The parties agree that all Software is
commercial computer software within the meaning of the applicable acquisition regulations. Accordingly, pursuant to U.S. FAR 48
CFR 12.212 and DFAR 48 CFR 227.7202, use, duplication and disclosure of the Software by or for the U.S. government or a U.S.
government subcontractor is subject solely to the terms and conditions set forth in this Agreement, which shall supersede any
conflicting terms or conditions in any government order document, except for provisions which are contrary to applicable mandatory
federal laws.
14. THIRD PARTY BENEFICIARY. Mentor Graphics Corporation, Mentor Graphics (Ireland) Limited, Microsoft Corporation and
other licensors may be third party beneficiaries of this Agreement with the right to enforce the obligations set forth herein.
15. REVIEW OF LICENSE USAGE. Customer will monitor the access to and use of Software. With prior written notice and during
Customer’s normal business hours, Mentor Graphics may engage an internationally recognized accounting firm to review Customer’s
software monitoring system and records deemed relevant by the internationally recognized accounting firm to confirm Customer’s
compliance with the terms of this Agreement or U.S. or other local export laws. Such review may include FlexNet (or successor
product) report log files that Customer shall capture and provide at Mentor Graphics’ request. Customer shall make records available in
electronic format and shall fully cooperate with data gathering to support the license review. Mentor Graphics shall bear the expense of
any such review unless a material non-compliance is revealed. Mentor Graphics shall treat as confidential information all information
gained as a result of any request or review and shall only use or disclose such information as required by law or to enforce its rights
under this Agreement. The provisions of this Section 15 shall survive the termination of this Agreement.
16. CONTROLLING LAW, JURISDICTION AND DISPUTE RESOLUTION. The owners of certain Mentor Graphics intellectual
property licensed under this Agreement are located in Ireland and the U.S. To promote consistency around the world, disputes shall be
resolved as follows: excluding conflict of laws rules, this Agreement shall be governed by and construed under the laws of the State of
Oregon, U.S., if Customer is located in North or South America, and the laws of Ireland if Customer is located outside of North or
South America or Japan, and the laws of Japan if Customer is located in Japan. All disputes arising out of or in relation to this
Agreement shall be submitted to the exclusive jurisdiction of the courts of Portland, Oregon when the laws of Oregon apply, or Dublin,
Ireland when the laws of Ireland apply, or the Tokyo District Court when the laws of Japan apply. Notwithstanding the foregoing, all
disputes in Asia (excluding Japan) arising out of or in relation to this Agreement shall be resolved by arbitration in Singapore before a
single arbitrator to be appointed by the chairman of the Singapore International Arbitration Centre (“SIAC”) to be conducted in the
English language, in accordance with the Arbitration Rules of the SIAC in effect at the time of the dispute, which rules are deemed to be
incorporated by reference in this section. Nothing in this section shall restrict Mentor Graphics’ right to bring an action (including for
example a motion for injunctive relief) against Customer in the jurisdiction where Customer’s place of business is located. The United
Nations Convention on Contracts for the International Sale of Goods does not apply to this Agreement.
17. SEVERABILITY. If any provision of this Agreement is held by a court of competent jurisdiction to be void, invalid, unenforceable or
illegal, such provision shall be severed from this Agreement and the remaining provisions will remain in full force and effect.
18. MISCELLANEOUS. This Agreement contains the parties’ entire understanding relating to its subject matter and supersedes all prior
or contemporaneous agreements. Any translation of this Agreement is provided to comply with local legal requirements only. In the
event of a dispute between the English and any non-English versions, the English version of this Agreement shall govern to the extent
not prohibited by local law in the applicable jurisdiction. This Agreement may only be modified in writing, signed by an authorized
representative of each party. Waiver of terms or excuse of breach must be in writing and shall not constitute subsequent consent, waiver
or excuse.