Syi EDGRQtup ZKN NM
Syi EDGRQtup ZKN NM
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.
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: www.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.
Chapter 1
Introduction to the Hybrid TK/LBIST Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Hybrid TK/LBIST Flow Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Bottom-Up Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Step 1: Test Point Generation and Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Step 2: Scan Insertion and X-Bounding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Step 3: EDT and Tessent LogicBIST IP Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Step 4: LogicBIST Fault Simulation and Pattern Creation. . . . . . . . . . . . . . . . . . . . . . . . . 12
Step 5: Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Step 6: Top-Level ICL Network Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Step 7: ICL Extraction and Pattern Retargeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Top-Down Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Chapter 2
Test Point Generation and Insertion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Test Point Generation and Insertion Step Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Test Points. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
User-Defined Test Point Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Back-to-Back Test Generation Command Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Multi-Cycle Path and False Path Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Scannability Design Rule Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Analyzing and Inserting the Test Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Test Point Deletion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
delete_test_points Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Test Point Dofile Modification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Example of Performing Test Point Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Example of Test Point Insertion With Custom Prefix for Inserted Logic . . . . . . . . . . . . . . . 28
Test Point Generation and Insertion Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Chapter 3
Scan Insertion and X-Bounding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Scan Insertion and X-Bounding Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Requirements for Using a Third-Party Scan Insertion Tool . . . . . . . . . . . . . . . . . . . . . . . . 33
X-Bounding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Scan Insertion and X-Bounding Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Performing Scan Insertion and X-Bounding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Example of Scan Insertion and X-Bounding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Scan Insertion and X-Bounding Command Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Chapter 4
EDT and LogicBIST IP Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
EDT and LogicBIST IP Generation Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
TAP Controller and LogicBIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Clock Controller Connections to the EDT/LogicBIST IP . . . . . . . . . . . . . . . . . . . . . . . . . 44
EDT and LogicBIST IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Programmable Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Clock Control Logic and Named Capture Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Programmable Capture Procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Low-Power Shift. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
IJTAG Network in EDT/LogicBist IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
EDT and LogicBIST IP Generation Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Generating the EDT and LogicBIST IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Output Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Timing Constraints for EDT and LogicBIST IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
EDT and EDT-Bypass Timing Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Constrains for Different Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Usage Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
EDT and LogicBIST IP Generation Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Chapter 5
LogicBIST Fault Simulation and Pattern Creation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
LogicBIST Fault Simulation and Pattern Creation Overview . . . . . . . . . . . . . . . . . . . . . . . . 66
Low-Power Shift Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Fault Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Performing LogicBIST Fault Simulation and Pattern Creation. . . . . . . . . . . . . . . . . . . . . . . 68
Example of Core-Level Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Fault Simulation and Pattern Creation Command Summary. . . . . . . . . . . . . . . . . . . . . . . . . 70
Chapter 6
Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Pattern Generation Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Required Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Retargeting Dofile Template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Performing Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Example of Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Pattern Generation Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Chapter 7
Top-Level ICL Network Integration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Top-Level ICL Network Integration Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Performing Top-Level ICL Network Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Example of Top-Level ICL Network Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Top-Level ICL Network Integration Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Chapter 8
ICL Extraction and Pattern Retargeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
ICL Extraction and Pattern Retargeting Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Performing ICL Extraction and Pattern Retargeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Example 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
ICL Extraction and Pattern Retargeting Command Summary . . . . . . . . . . . . . . . . . . . . . . . 94
Chapter 9
Hybrid TK/LBIST Embedded Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
EDT/LogicBIST IP Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Hybrid EDT/LogicBIST IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Shared Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Inserted LogicBIST IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Scan Chain Masking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
New LogicBIST Control Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Clocking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Programmable Registers Inside Hybrid IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Low-Power Shift Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Appendix A
Interface Pins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Interface Pin Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
LogicBIST Controller Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Clock Controller Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
EDT/LogicBIST Wrapper Pins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Segment Insertion Bit Signals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Appendix B
File Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Synthesis Script Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Timing Script Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
ICL Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
PDL Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Appendix C
ECO Implementation in the Hybrid TK/LBIST Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Appendix D
Test Coverage Reporting During Test Point Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Test Coverage Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Incremental Relevant Test Coverage Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
False Paths and Test Coverage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Fault Classes and Fault Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
“Blocked by xbounding” Faults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Uncontrollable/Unobservable Faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Appendix E
PrimeTime Script for Preventing Test Points on Critical Paths . . . . . . . . . . . . . . . . . . . . 117
Using the PrimeTime Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Appendix F
Test Point Analysis for Target Faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Appendix G
Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Mentor Graphics Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Third-Party Information
End-User License Agreement
Using the hybrid TK/LBIST flow, you can share the EDT and the Tessent LogicBIST IP in your
design to reduce hardware overhead.
This chapter provides the high-level introduction to the hybrid TK/LBIST flow.
You can implement hybrid TK/LBIST with either the Bottom-Up Flow or Top-Down Flow.
Bottom-Up Flow
When implementing the hybrid flow with the bottom-up method, you analyze each core in
isolation. As soon as a core design is available, you can move on to the embedded insertion and
simulation processes for this core without having to wait for the other cores, including the top-
level core.
Figure 1-1 shows the 5-step flow you perform on each of your cores. Note that the same steps
(1-5) are used for the top-down method—see “Top-Down Flow.”
Design dofile
Netlist
BIST-ready dofiles
Netlist
Created
manually NCPs and Test dofiles
Setup
Upon completion, you use Tessent Shell to write out both the modified design and the scan
setup dofile, both of which you use for scan insertion and X-bounding—see “Test Point
Generation and Insertion.”
Subsequently, the tool writes out the test procedure file and a dofile, which contains the
information you use for the EDT and Tessent LogicBIST IP generation—see “Scan Insertion
and X-Bounding.”
There is no TAP controller at the core level. New core-level pins corresponding to the SIB
control signals, tck, and LBIST scan I/O are created in this step. The core-level Verilog patterns
operate these pins directly. These pins are subsequently connected to the TAP controller at the
top level of the design—see “Top-Level ICL Network Integration.”
• ICL File — Consists of ICL module description for the LBIST controller and all
EDT/Tessent LogicBIST blocks tested by this controller.
• PDL File — Contains iProcs at the core level that use the ICL modules written out.
During IP generation, the generated ICL file describes only the LogicBIST and EDT modules.
The ICL file includes the core-level pin names and connectivity found from the core-level
design netlist. The extracted ICL file is used during top-level pattern generation—see “ICL
Extraction and Pattern Retargeting.” Verilog patterns can be written out in this step and
simulated to verify the test operation at the core level.
For complete information, see “EDT and LogicBIST IP Generation.” In steps 1 through 3 of the
flow, new top-level test pins are added and/or existing top-level test pins controlled internally
by the EDT/Tessent LogicBIST IP.
Logic Synthesis
You must synthesize all the EDT/Tessent LogicBIST blocks and the common LogicBIST
controller. For this reason, the tool generates a single synthesis script. You use the synthesized
gate-level netlist output from your synthesis tool (for example, the output of the logic synthesis
step with Synopsys Design-Compiler) as input to the next step of the flow.
• PatternDB File — Contains the pattern data and the relevant LBIST register values per
pattern such as PRPG, MISR, and low-power registers.
• Tessent Core Description file (TCD) — Contains the description of the core that is
relevant for the LogicBIST mode of operation.
For subsequent diagnosis, you can use Tessent Diagnosis to perform diagnosis with the EDT
patterns.
See “LogicBIST Fault Simulation and Pattern Creation” for complete information.
After you implement TK/LBIST on each core of your design, you must perform steps 6-7 to
bring information of your embedded structures to the top level. Figure 1-2 illustrates the
complete TK/LBIST hybrid flow when using the bottom-up method.
You must provide the pattern retargeting dofile that includes all LogicBIST cores and the
desired scheduling. See “ICL Extraction and Pattern Retargeting” for complete information.
Top-Down Flow
When implementing the hybrid flow with the top-down method, the analysis is performed on the
entire pre-DFT inserted view of your chip. Each core is analyzed within the respective context
of its parents.
For the top-down method, you use the same steps as when you implement the hybrid TK/LBIST
flow on the core level except without top-level ICL network insertion and extraction or ICL
pattern generation (steps 6 and 7).
Figure 1-1 illustrates the steps when using the top-down method. See “Bottom-Up Flow” for
more information. You define blocks for insertion and run steps 1 through 5 as follows:
• Test Point Generation and Insertion and Scan Insertion and X-Bounding — These steps
are similar to those performed using the bottom-up method.
• EDT and LogicBIST IP Generation — EDT/LogicBIST hybrid IP generation is almost
the same as the step used with the bottom-up method except that the TAP controller is
present at the top level.
• LogicBIST Fault Simulation and Pattern Creation and Pattern Generation — These steps
are similar to those performed using the bottom-up method.
This chapter provides detailed information on the tasks performed during the Test Point
Generation and Insertion step of the flow.
Test Point Generation and Insertion Step Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Test Points. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Back-to-Back Test Generation Command Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Multi-Cycle Path and False Path Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Scannability Design Rule Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Analyzing and Inserting the Test Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Test Point Deletion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
delete_test_points Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Test Point Dofile Modification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Example of Performing Test Point Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Test Point Generation and Insertion Command Summary. . . . . . . . . . . . . . . . . . . . . . . 28
Note
You generate and insert the test points as a separate step from scan insertion—you cannot
perform the two operations together.
At the conclusion of test point generation and insertion, you write out both the modified design
netlist containing the test points and a dofile containing all the necessary steps for the next step
of the flow—see “Scan Insertion and X-Bounding.”
Requirements
Performing test point generation and insertion has certain requirements.
You must adhere to the following:
• Test point insertion runs on a non-scan gate-level Verilog netlist. Your design can
contain scan cells, but not scan chains.
Note
Test point insertion also supports designs with scan chains; however, the recommended
practice is to use a non-scan netlist.
• You can read in functional SDC so the tool omits adding any test points to multi-cycle
paths or false paths—see the read_sdc command.
• The tool identifies potential scan candidates for correct controllability/observability
analysis. To ensure that eventual non-scan cells are not used as the destination for
observe points or source for control points, you should declare all the non-scan instances
during test point insertion using the add_nonscan_instances command.
• You should define black boxes using the add_black_boxes command so that test point
analysis can incorporate this information.
• If you are performing test point analysis on a pre-scan netlist that has unconnected clock
gaters, you should add the “set_clock_gating on” command to your dofile.
Test Points
The inserted test points consist of control points and observe points.
Refer to the Control Points and Observe Points sections for details. During test point analysis
and insertion, the tool inserts these test points at gate outputs—see also “User-Defined Test
Point Handling.”
Control Points
You can insert two types of control points, AND Control Points or OR Control Points.
• OR Control Points
Control points do not change during capture cycles. The AND and OR control points are
mutually exclusive; specifically, the tool does not insert both an AND and an OR control point
on the same net.
This allows you to use the control points beyond just LogicBIST mode.
Once the target clock is identified, the tool again processes the fan-out cone and taps the target
clock from the clock port of the scan flop that is logically closest to the Verilog hierarchy. Once
again, if it cannot find any scan flops in the fan-out cone, it picks the closest one in the fan-in
cone.
In the event that no scan flops are in either cone, the tool uses the test clock by tapping the
source of the test clock signal (either at the primary input pin or at the source of the clock signal
defined with the add_clock -internal command).
Note
Potentially scannable flops are also considered as “scan flops” during the clock selection
analysis. Non-scan flops are ignored during the test point clock selection processing.
Observe Points
Tessent Shell inserts observe points in the form of new scan cells at gate outputs to improve the
observability of the netlist. The tool supports both a dedicated scan cell per observation point
and a scan cell shared by multiple observation points. When sharing the new scan cell among
several observation points, the tool inserts an XOR tree.
Figure 2-4 shows an example of two cones of logic connected through an XOR gate and
observed with the same observation point.
This allows you to use the observe points beyond just LogicBIST mode.
If no scan flip-flops are in either cone, the tool uses the test clock by tapping the source of the
test clock signal (either at the primary input pin, or at the source of the clock signal defined via
the add_clock -internal command).
Note
Potentially scannable flip-flops are also considered as “scan flip-flops” during the clock
selection analysis. Non-scan flip-flops are ignored during the test point clock selection
processing.
set_design design_top
create_power_domain -name PD1 -default
create_power_domain -name PD2 -instances {b1}
create_power_domain -name PD3 -instances {b2}
Figure 2-5 shows an example of two blocks b1 and b2 which are in different power domains. In
this case, the test point at \b1\u1\z will never be merged with any of the test points in the \b2
block.
• Adding Test Points Before Test Point Generation — The following command
sequence demonstrates this:
ANALYSIS> add_control_point -location OY4 -type and // Adds a user-defined control point
ANALYSIS> analyze_test_points // Performs the analysis and inserts test points
ANALYSIS> insert_test_logic
...
When you issue the analyze_test_points command, then the tool takes the user-defined
test points in account.
• Adding Test Points After Test Point Generation — The following command
sequence demonstrates this:
ANALYSIS> analyze_test_points // Performs the analysis and inserts test points
ANALYSIS> add_control_point -location OY4 -type and // Tool can reject these test points
ANALYSIS> insert_test_logic
...
If you change any of the analysis options before issuing the analyze_test_points command a
second time, the tool will generate new test points based on the current options. For example:
You can use the delete_test_points command to delete all existing test points and generate new
test points with the analyze_test_points command.
If you issue any command between back-to-back analyze_test_points commands that does not
impact test point generation, the tool will report the same test points again.
On the other hand, if you do not have a functional SDC and would like to exclude test points
from MCP/FP, then you use the following command:
set_test_point_analysis_options -exclude_cross_domain_paths on
During DRC, the tool performs the following two main checks for each sequential element in
the design:
• S1 — Ensures that when all defined clocks (including sets and resets) are at their off-
states, and the sequential elements remain stable and inactive.
• S2 — Ensures that for each defined clock, sequential elements can capture data when all
the other defined clocks are off.
These scanability checks determine if the tool can turn off all set and reset lines and turn on and
off all clock inputs of sequential cells from the design's primary input pins. Without this
controllability, Tessent Shell does not allow a sequential element to pass scanability checks,
which is a requirement to be considered for scan identification.
For more information, refer to Scannability Rules (S Rules) in the Tessent Shell Reference
Manual.
Prerequisites
• A non-scan gate-level Verilog netlist
• Tessent Cell Library—see the Tessent Cell Library Manual for complete information.
Procedure
1. From a shell, invoke Tessent Shell using the following syntax:
% tessent -shell
After invocation, the tool is in unspecified setup mode. You must set the context before
you can invoke the test point insertion commands.
2. Set the tool context to test point generation using the set_context command as follows:
SETUP> set_context dft -test_points -no_rtl
3. Load the non-scan gate-level Verilog netlist using the read_verilog command.
SETUP> read_verilog my_netlist.v
4. Load one or more cell libraries into the tool using the read_cell_library command.
SETUP> read_cell_library atpg.lib
9. Change the tool’s system mode to analysis using the set_system_mode command.
SETUP> set_system_mode analysis
During the transition from setup to analysis modes, the tool flattens the netlist and
performs Scannability Rules (S Rules) design rules checking. You must resolve any
DRC rule violations that result in an error before you can move to analysis mode.
The tool identifies the non-SDC based potential X-sources during this step. Test point
analysis must also consider the location of the yet-to-be-inserted bounding muxes that
will prevent the identified X-sources from reaching any scan cells. The necessary
analysis is done automatically as part of the analyze_test_points command.
10. Set up the test point analysis options using the set_test_point_analysis_options
command. For example:
ANALYSIS> set_test_point_analysis_options -pattern_count_target 100000
In analysis mode, the tool retains the enabled commands that you set to characterize the
generation of test points.
11. Perform the test point analysis using the analyze_test_points command:
ANALYSIS> analyze_test_points
You have now generated the test points. To insert the test points, proceed to the next
step.
12. If required, report the test points for your design using the report_test_points command.
ANALYSIS> report_test_points
13. Add test points to your design, and then transition to insertion mode using the
insert_test_logic command.
ANALYSIS> insert_test_logic
14. Write out the modified design netlist containing the test points using the write_design
command as in the following example:
INSERTION> write_design -output_file my_modified_design.v
15. Write out the dofile containing all the necessary steps for scan insertion using the
write_scan_setup command as in the following example:
INSERTION> write_scan_setup -prefix lbist_scan_setup
16. You use this dofile as input for the next step—Scan Insertion and X-Bounding.
delete_test_points Command
You can delete a subset of the tool-generated test points.
Use the delete_test_points command to specify the locations that you want to remove from the
list of identified test points.
Note
Do not re-issue the analyze_test_points command if you are using this method.
You should use this method if you only have a small number of test points to delete.
Procedure
1. Use the write_test_point_dofile command to write out the dofile that contains the test
points. For example:
ANALYSIS> write_test_point_dofile -output_file my_test_points.dofile
2. Edit this dofile and remove the test points you do not want.
3. From within Tessent Shell, delete all of the test points using the delete_test_points
command as follows:
ANALYSIS> delete_test_points -all
4. Use the dofile command to read the modified test point dofile back into the tool. For
example:
ANALYSIS> dofile my_test_points_modified.dofile
• The example starts by loading the design and the cell library.
• Next, we load an SDC file. The SDC file defines false and multi-cycle paths. This
information will be used during test point analysis (analyze_test_points) to prevent the
insertion of test points in these regions.
• Test point analysis can be performed prior to scan insertion. In this case, the tool must
first determine which flops will be converted to scan cells. The set_test_logic command
determines if cells with S-rule DRC violations are converted to scan cells or remain non-
scan.
• The set_test_point_analysis_options command allows you to specify the maximum
number of test points that should be added to the design. The
set_test_point_insertion_options command determines the name of the new primary
input pin that will enable the test points.
• The next set of commands transitions into analysis mode, performing a variety of design
rule checks during the transition, and performs test point analysis to identify test points
that improve random pattern testability to achieve the target fault coverage.
• The final set of commands transitions to insertion mode. The internal representation of
the netlist is updated to include the target test points. The updated netlist is written out
along with a dofile and test procedure file that can be used to reload this design in the dft
-scan context.
• Typically, the test points will be connected to newly inserted non-scan flops. These flops
must be stitched into scan chains by transitioning into the dft -scan context and
following the Tessent Shell scan insertion flow.
Note
If you do not have a non-scan flop in your library, you can instruct the tool to insert a scan
flop with the scan_enable and scan_in signals tied low such that they will be targeted for
scan chain stitching in a subsequent run. You must specify the scan cell using the
“add_cell_models -type scan_cell” command.
This chapter provides detailed information on the tasks performed during Scan Insertion and X-
Bounding.
Scan Insertion and X-Bounding Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Requirements for Using a Third-Party Scan Insertion Tool . . . . . . . . . . . . . . . . . . . . . . . . 33
X-Bounding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Performing Scan Insertion and X-Bounding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Example of Scan Insertion and X-Bounding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Scan Insertion and X-Bounding Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . 39
BIST-ready dofiles
Netlist
Note
The recommended flow is to always insert the X-bounding logic after you perform scan
insertion.
You insert scan chains into the modified netlist that contains the test points and then perform
X-bounding using Tessent Shell (or a third-party tool). You should adhere to the following
during this step:
• Inputs — The modified design netlist with test points and the dofile you have generated
using the Tessent Shell write_scan_setup command.
• MCPs and Failing Paths — You read in SDC to identify MCP/FP and add DFT for
preventing capture of any transition on such paths.
• Cross-Domain Paths — The tool X-bounds cross-domain paths.
• X-Bounding — You must perform X-bounding. Perform this step after scan insertion.
• Outputs — A LogicBIST-ready netlist, test procedure file, and the dofile for the
existing scan chains.
After you complete the scan insertion and X-bounding, you use Tessent Shell to write out the
test procedure file and dofile for the existing design with scan chains that you use as input to the
next step of the flow, “EDT and LogicBIST IP Generation.”
You might need to read the design into Tessent Shell and go through DRC. You can
subsequently post DRC use the report_sequential_instances command to report the exact status
for each flop in the design.
X-Bounding
After scan insertion, you must perform the X-bounding to prohibit all X generators (that is, non-
scan cells, black boxes, and primary inputs) from reaching a scan cell. The source of the x-
bounding mux could either be existing scan cells in the design or newly-inserted scan cells.
Tessent Shell performs the following operations during X-bounding:
You also can choose to drive the test mode input of the new multiplexers from new scan cells
using the -connect_to new_scan_cell switch of the set_xbounding_options command. The clock
signal that drives the new scan cell is selected using the same algorithm that applies when using
existing scan cells. The new scan cells are merged into existing chains whenever possible. The
output of the flip-flops directly drives the data input of the new flip-flops.
Clock Selection
The tool analyzes the location of each X-bounding multiplexer to identify the clocks if a new
flip-flop is chosen to drive the multiplexer. The tool looks at clocks for the controlling flip-flops
that feed into this location and also the clocks for the flip-flops that are fed from this signal.
When only a single clock domain is involved, that clock is used to drive the test points.
However, when multiple clock domains are involved, the behavior depends on the definition of
the false or multi-cycle paths. X-bounding could potentially introduce a new false path that
would not be bounded because the false path did not exist in the original netlist. Therefore,
when an SDC file is loaded, the tool uses static bounding (forcing a constant 0 or 1 via an AND
or OR gate) to avoid creating a new false path. When no false or multi-cycle paths are defined,
the tool chooses the clock domain that is most frequently used by the memory elements in the
fanout of the X-source.
set_xbounding_options -exclude_cross_clock_domain_paths on
modify the tool’s behavior such that paths that meet the following criteria are not X-bounded:
1. Identifies all the clock domains that feed into the test point location.
2. Identifies all the clock domains that observe the signal from the test point.
3. If there is no overlap between the clocks identified in (1) and (2), then this is considered
a cross clock domain path that cannot be activated by pulsing only a single clock, and it
is excluded from X-bounding.
Re-circulating muxes with an inverter in the feedback path are inserted on the D input of the
destination scan cells of false and multi-cycle paths. The inversion ensures that the destination
scan cell output has a transition during broadside test to achieve higher coverage.
In addition, the tool checks the set and reset ports of each flop and disables any set/reset ports
that are also marked as false or multi-cycle paths. In this case, however, a combinational gate
(either an AND gate or an OR gate) is used to force the set/reset port into the off state.
• If low power is used in the hybrid TK/LBIST flow, the scan chain length must be equal
to or greater than the decompressor size. The minimum decompressor size in the hybrid
flow is 31. Therefore, the scan chain length cannot be less than 31. The reason for this
requirement is that the size of the low-power register and the size of the decompressor
are the same; to initialize the low-power register, the shift length must be equal to or
greater than the decompressor size. If the tool generates a larger decompressor, say a
size of 62 bits, the required minimum shift length is 62.
• X-bounding analysis does not take into account wrapper cells identified with the
analyze_wrapper_cells command and will insert X-bounding multiplexers at the
primary input pins that feed the wrapper cells. The workaround is to perform wrapper
chain identification and insertion in a separate pass, prior to X-bounding. In addition,
you must constrain the scan enable signal for the input wrapper chains to keep these
chains in “shift mode” during the capture cycles. This pin constraint prevents insertion
of extra X-bounding multiplexers at the primary input pins that drive the wrapper cells
in functional mode.
Prerequisites
• Design netlist with test points and dofile outputted by Tessent Shell during the “Test
Point Generation and Insertion.”
Procedure
1. From a shell, invoke Tessent Shell using the following syntax:
% tessent -shell
After invocation, the tool is in unspecified setup mode. You must set the context before
you can use the X-bounding and scan insertion commands.
2. Set the tool context to scan insertion using the set_context command as follows:
SETUP> set_context dft -scan
3. Load the non-scan gate-level Verilog netlist containing the test points using the
read_verilog command.
SETUP> read_verilog my_modified_netlist.v
4. Load one or more cell libraries into the tool using the read_cell_library command.
SETUP> read_cell_library atpg.lib
5. Using the dofile command, load the Tessent Shell tool-produced dofile you generated
during test point analysis and insertion. For example:
SETUP> dofile lbist_scan_setup.dofile
6. If required in your design flow, load the SDC file using the read_sdc command.
The SDC file should describe false and multi-cycle paths that should be blocked during
LogicBIST.
7. Set the scan insertion options using the set_scan_insertion command.
SETUP> set_scan_insertion -ten t_enable
9. Change the tool’s system mode to analysis using the set_system_mode command.
SETUP> set_system_mode analysis
During the transition from setup to analysis mode, the tool performs design rule
checking and inserts the scan chains.
10. Perform the X-bounding analysis using the analyze_xbounding command.
ANALYSIS> analyze_xbounding
11. Optionally report the results of the X-bounding analysis using the report_xbounding
command.
ANALYSIS> report_xbounding
12. Perform scan insertion and X-bounding logic insertion using the insert_test_logic
command.
ANALYSIS> insert_test_logic
14. Write out the test procedure file and dofile using the write_atpg_setup command as
follows:
INSERTION> write_atpg_setup my_scan_setup
In this example, the tool produces the following two files that are to be used as input for the next
step of the flow:
• my_scan_setup.dofile
• my_scan_setup.testproc
Now you are ready to perform “EDT and LogicBIST IP Generation.”
• scan_setup.dofile was generated using the write_scan_setup command during the test
point analysis and insertion step.
• This dofile loads the netlist and the Tessent cell library. It also includes the necessary
commands to set up the circuit for DRC.
• The set_system_mode analysis command triggers design rule checking and transitions
into the analysis system mode.
• The set_xbounding_options command is used to specify the name of the top-level pin
that will enable the X-bounding signals.
• The analyze_xbounding command triggers the analysis and reports a summary of how
many bounding muxes were added.
• Next, the insert_test_logic command modifies the internal representation of the netlist to
include the X-bounding muxes, as well as performing scan cell replacement and
stitching. This command triggers a transition from analysis to insertion mode.
• Finally, the write_design and write_atpg_setup commands are used to write out the
modified netlist, and also to generate a setup file that should be used in subsequent steps.
Table 3-1 lists the Tessent Shell scan insertion and X-bounding commands.
This chapter provides detailed information on the tasks performed during EDT and LogicBIST
IP Generation, and contains the following sections.
EDT and LogicBIST IP Generation Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Generating the EDT and LogicBIST IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Timing Constraints for EDT and LogicBIST IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Usage Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
EDT and LogicBIST IP Generation Command Summary . . . . . . . . . . . . . . . . . . . . . . . 64
BIST-ready dofiles
Netlist
EDT/LBIST
ICL & PDL Step 3: EDT and LogicBIST IP Generation
Netlist with
EDT/LBIST IP dofiles
You use Tessent Shell to generate the shared EDT/LogicBIST RTL. Modular EDT is supported
in this step, where both shared EDT/LogicBIST IP per block and LogicBIST controller are
inserted at the same time.
When using the bottom-up method, there is no TAP controller at the core level. The new core-
level pins corresponding to the SIB control signals and TCK, and LogicBIST scan I/O are
created at this step. The core-level Verilog patterns operate these pins directly. These pins will
later be connected to the TAP controller at the top level of the design—see “Top-Level ICL
Network Integration.”
• The ICL file consists of ICL module description for the LogicBIST controller and all
EDT blocks tested by this controller.
• The PDL file contains iProcs at the core level that use the ICL modules written out.
During the IP generation step, the generated ICL file describes only the LogicBIST and EDT
modules. This extracted ICL includes the core-level pin names and connectivity found from the
core-level design netlist. The extracted ICL is used during top-level pattern generation—see
“ICL Extraction and Pattern Retargeting.” Verilog patterns can be written out in this step and
simulated to verify the test operation at the core level.
• During this step of the flow, you specify the LogicBIST pins for these TAP signals using
the set_lbist_pins command before you create the hybrid LogicBIST controller.
• You must supply the ICL/PDL for the TAP—see “Pattern Generation.”
• The tool automatically inserts a pipeline stage after the last SIB in the tool-produced ICL
network for the LogicBIST controller to account for designs where the TAP already has
a retiming flop on the TDO output pin. Consequently, you do not need to modify the ICL
to account for the retiming flops at the output.
Figure 4-3 shows the Clock Controller before the EDT/LogicBIST IP has been generated.
Figure 4-4 shows the clock controller connections to the BIST controller after EDT/LogicBIST
IP generation.
For detailed description of Hybrid EDT/LogicBIST IP, refer to the following sections:
• “Shared Logic”
• “Inserted LogicBIST IP”
• “Scan Chain Masking”
During EDT mode of operation, all EDT control signals except EDT clock, meaning, update,
bypass, and low power enable are directly connected to the EDT logic without passing through
the LogicBIST controller. The scan cells are shifted using a top-level shift clock. The Shift
Clock controller chooses the EDT clock to be delivered to the EDT blocks.
During LogicBIST mode of operation, the scan cells are shifted using the shift clock output
from the LogicBIST controller. The shift clock controller chooses a gated version of the
LogicBIST clock to be delivered to the LogicBIST blocks. This gating ensures that the PRPG
and MISR are not pulsed during capture as well as the transition between shift and capture
modes.
The core scan cells receive the capture clock pulses from the clock controller logic. The
LogicBIST clock input to the PRPG and MISR is turned off during capture.
Figure 4-7 shows the clock and EDT control signals in the LogicBIST IP.
Programmable Registers
Programming of the BIST registers is the same for both TAP and non-TAP cases. The BIST
controller and EDT blocks use the same control interface.
When using a TAP, these signals are generated by the TAP controller. When not using a TAP,
these signals are presented as top-level pins which will then be operated similar to the TAP
controller output signals. This is done automatically in the next step of the flow—see “Pattern
Generation” and “Programmable Registers Inside Hybrid IP.”
EDT Mode
In the EDT context, you must ensure the generation of proper shift and capture clocks. For
example, the clock pin could be a design top-level pin controlled by the tester. When using a
PLL, clock control register values for functional clocks can be shifted in during scan shift. The
number of capture cycles can be controlled on a per pattern basis, either through named capture
procedure or clock_control definition. All existing EDT capabilities for controlling capture
mode clocking can be used in the shared EDT/LogicBIST architecture.
LogicBIST Mode
For LogicBIST mode, the controller generates the shift clock and capture enable signals, which
are connected to the clock control logic. The scan enable output from the LogicBIST controller
is de-asserted during capture.
Note
NCPs are always required for LogicBIST operation. Other clock control techniques like
external clocks and clock_control definition are not compatible with BIST application.
You can describe specific capture clock sequences to be applied using NCPs using the
following commands:
• add_bist_capture_range
• set_clock_controller_pins, specifically, the -capture_procedure_index switch
• set_lbist_controller_options, specifically, the -capture_procedures switch
In general, you associate the percentage of patterns for which each NCP is applied. This should
reflect the number of faults that can be detected with the specified NCP. The number of cycles
in capture should be uniform across all NCPs. You can specify the number of BIST clock cycles
for capture. When not specified, the maximum value possible for the capture counter register in
the hardware is used.
The LogicBIST controller consecutively applies the NCPs for the specified percentage of
patterns, with the cycle repeating after 256 patterns. An additional output that identifies the
index of the currently targeted NCP is available as a counter calculating the total number of
NCPs. The NCP index is generated by decoding from the least significant bits of the pattern
counter.
Again, you must ensure your design generates the correct clock sequence corresponding to the
NCP based on this index signal bits.
If you define only a single NCP, then the NCP index output is not generated. You should do this
in cases where the clock controller is initialized during test_setup to generate a particular
capture procedure. All patterns in this session will use the same capture procedure.
Note
If integer percentage values are not specified for IP generation, they must be specified for
fault simulation or an error is issued.
The NCP names and order specified during IP generation are carried forward to fault
simulation. The names specified during fault simulation are validated against those specified in
IP generation. An error is generated if there is a mismatch between the two. If the NCPs
specified during fault simulation are listed in a different order than those added during IP
generation, the order is automatically changed to match the IP generation order. If an NCP
specified during IP generation is not used during fault simulation, the NCP must be specified
with “0” as the percentage.
To illustrate, suppose that four NCPs (clkseq1, clkseq2, clkseq3, and clkseq4) are declared
without a percentage value in the IP generation dofile. When running LogicBIST fault
simulation, you decide that clkseq4 should be active 50% and the other three NCPs should be
equally distributed for the remaining 50% of the time. Your dofile would have the following:
source .../<prefix>_lbist.dofile
...
set_lbist_controller_options -capture_procedures {clkseq 17 clkseq2 17
clkseq3 16 clkseq4 50}
These NCP counts are then stored in the Tessent Core Description (TCD) file for pattern
generation.
During pattern generation, the NCP counts stored in the TCD file are loaded into their
respective ICL registers.
Low-Power Shift
During EDT/LogicBIST IP generation, you can configure the low-power scheme to control the
switching activity during “shift” to reduce power consumption.
For a detailed description of the embedded structure inserted for this purpose, see “Low-Power
Shift Controller.”
The following Tessent Shell command sequence demonstrates creating the low-power shift
controller for LogicBIST:
For each specified NCP, an 8-bit register is created and inserted on the ICL network. Figure 4-8
shows where the NCP count register is inserted. These registers are loaded at runtime so that the
number of patterns applied for NCP is programmable. When an integer percentage is provided
during IP generation, the NCP registers will reset to those values when sib_reset is asserted.
Otherwise, these registers are reset to equal percentages across all NCPs. For more information,
see the “Programmable Capture Procedures” section in the “EDT and LogicBIST IP
Generation” chapter.
Prerequisites
• You need the scan insertion dofile and BIST-ready netlist you created during Scan
Insertion and X-Bounding.
Procedure
1. From a shell, invoke Tessent Shell using the following syntax:
% tessent -shell
After invocation, the tool is in unspecified setup mode. You must set the context before
you use the IP generation commands.
2. Set the tool context to EDT/LogicBIST generation using the set_context command as
follows:
SETUP> set_context dft -edt -logic_bist
3. Load the LogicBIST-ready design netlist using the read_verilog command. For
example:
SETUP> read_verilog my_modified_design.v
4. Load one or more cell libraries into the tool using the read_cell_library command:
SETUP> read_cell_library atpg.lib
5. Set the top design using the set_current_design command. For example:
SETUP> set_current_design top_module
6. Read in the dofile you generated with Tessent Shell that contains the scan insertion and
X-bounding information using the dofile command—see “Scan Insertion and X-
Bounding”. For example:
SETUP> dofile my_setup.dofile
• set_lbist_power_controller_options
See also “Low-Power Shift.”
8. Change the tool’s system mode to analysis using the set_system_mode command as
follows:
SETUP> set_system_mode analysis
During the transition from setup to analysis mode, the tool performs design rule
checking.
9. You can optionally report the clock controller pins, global LogicBIST controller
configuration parameters, and/or specified pins results using the following commands:
• report_clock_controller_pins
• report_lbist_configuration
• report_lbist_pins
10. Use the write_edt_files command to create the files that implement the EDT logic and
the -timing_constraints switch to write out the timing constraints. For example:
ANALYSIS> write_edt_files my_edt_logic -timing_constraints
The tool also transitions to insertion mode and inserts the EDT/LogicBIST hardware.
See “Timing Constraints for EDT and LogicBIST IP” for additional information.
You use these files as input to LogicBIST Fault Simulation and Pattern Creation.
11. Write out the modified netlist using the write_design command. For example:
INSERTION> write_design -output my_edt_logic_edt_top_rtl.v
Output Files
The following table lists files that are generated in during this step.
The SDC file contains timing constraints and exceptions for all modes of operation of the IP.
SDC is generated for the following modes:
• Operate Hybrid IP in EDT Mode — EDT shift, slow and fast capture. The capture
mode constraints are the same for EDT and EDT-bypass.
• Operate Hybrid IP in EDT-Bypass Mode — Bypass shift, slow and fast capture. The
capture mode constraints are the same for EDT and EDT-bypass.
• Operate Hybrid IP in LogicBIST Mode — LogicBIST setup, shift, capture and
diagnostic modes. The diagnostic mode constraints are generated only when single
chain mode logic is synthesized in the IP.
proc create_lbist_clock {} …
proc set_lbist_IO_pin_delays {} …
proc set_lbist_setup_mode_constraints {} …
proc lbist_setup_mode {} { #Top level proc that includes the above sub procs corresponding
for this mode }
This SDC only describes constraints and exceptions related to the IP. This should be used
together with the constraints and exceptions for the core design that is generated during pattern
generation or fault simulation as applicable for the given mode. Sourcing the SDC files only
defines the TCL procs. The user should use a top-level PrimeTime script that reads and links the
design and execute the desired TCL procedure.
The following constraints/exceptions are specified for the LogicBIST Setup mode:
• Set LogicBIST enable TDR bit to 1. Set the BIST setup registers to “001” corresponding
to the LongSetup mode of operation for the BIST controller.
• Set false paths from EDT control signals that are not used like EDT reset and EDT
update.
• Set false paths from EDT channel input pins and to EDT channel output pins.
• Set false paths through TAP controller's LogicBIST instruction enable and test logic
reset outputs. The TAP controller paths for shift, capture and update are enabled.
• EDT chain mask registers are active in this mode. The paths from these registers to the
design scan cells, specifically the hold paths, where the source and destination are on
different clock domains are not explicitly disabled. This works correctly because the
destination design scan cells are not clocked in this mode.
• Set variables for sequentially propagating case analysis constraints through the user
clock controller.
• Disable clock gating checks on the shift controller clock muxes. This is because only the
tck path is selected in this mode.
• Set LogicBIST enable TDR bit to 1. Set the BIST setup registers to 100 corresponding
to the SingleChain mode of operation for the BIST controller.
• Constrain or exclude EDT pins like EDT clock, update, reset and other control signals.
• Set false paths from EDT channel input pins and to EDT channel output pins.
• Set false paths through TAP controller's LogicBIST instruction enable and test logic
reset outputs. The TAP controller paths for shift, capture and update are enabled.
• EDT chain mask registers are static throughout test, so declare all paths from these
registers as false.
• Set the single chain mode TDR bit to 1.
• Set variables for sequentially propagating case analysis constraints through the user
clock controller.
• Disable clock gating checks on the shift controller clock muxes. This is because only the
tck path is selected in this mode.
Usage Examples
The following are examples for usage.
Example 1
This example shows a single EDT/LogicBIST block. The design has X-bounding, control, and
observe points controlled by the same design pin named lbist_en. This design does not use low-
power hybrid IP.
// Set context for generating hybrid EDT/LogicBIST IP
set_context dft -edt -logic_bist
// Read design and DFT library
read_verilog my_core_scan_xbound.v
read_cell_library atpg.lib
set_current_design
// Define clocks and pin constraints
add_clock 0 occ/occNX1/U7/Z -internal -pin_name NX1 // Internally generated capture
//clock
add_clock 0 occ/occNX2/U7/Z -internal -pin_name NX2 // Internally generated capture
//clock
add_clock 0 shift_clock
add_clock 0 refclk -free_running
add_input_constraint shift_clock -c0
add_input_constraint scan_en -c0
// Scan chains and test procedure file from scan insertion
add_scan_groups grp1 scan_setup.testproc
for {set i 1} {$i <= 16} {incr i} {
add_scan_chains chain$i grp1 scan_in$i scan_out$i
}
// Configure EDT logic
set_edt_options -location internal
set_edt_options -channel 2 -reset async
// Configure LogicBIST controller
set_edt_options -lbist_misr_input_ratio 4
set_lbist_controller -max_shift 400 -max_capture 3 -max_pattern 10000 \
-capture {clk_once 100}
// Specify LogicBIST pins
set_lbist_pins clock refclk
set_lbist_pins scan_en scan_en
set_lbist_pins xbounding_en lbist_en
set_lbist_pins control_point_en lbist_en
set_lbist_pins observe_point_en lbist_en
// Specify clock controller pins
set_clock_controller_pins shift_clock occ/shift_clock
set_clock_controller_pins scan_en occ/scan_en
set system mode atpg
// Report user settings
report_edt_configuration
report_lbist_configuration
report_lbist_pins
report_clock_controller_pins
// Generate EDT files
write edt files created -replace
Example 2
This is a modular IP generation example. The scan chains are defined at internal pins at the
block boundary. The design has a TAP controller to which the LogicBIST controller is
connected during IP generation. Separate control registers are synthesized in the LogicBIST
controller for independently controlling x-bounding, control and observe points. There are
multiple clock controllers in the design. The design has multiple NCPs that are used in
LogicBIST test in the proportion specified.
// Set context for generating hybrid EDT/LogicBIST IP
set_context dft -edt -logic_bist
// Read BIST-ready block designs and TOP level
read_verilog TOP.v my_core_scan_xbound.v piccpu_scan_xbound.v
read_cell_library atpg.lib
set_current_design TOP
// Define clocks and RAM control signals
This chapter provides detailed information on the tasks performed during LogicBIST Fault
Simulation and Pattern Creation.
LogicBIST Fault Simulation and Pattern Creation Overview . . . . . . . . . . . . . . . . . . . . 66
Low-Power Shift Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Fault Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Performing LogicBIST Fault Simulation and Pattern Creation. . . . . . . . . . . . . . . . . . . 68
Example of Core-Level Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Fault Simulation and Pattern Creation Command Summary . . . . . . . . . . . . . . . . . . . . 70
Created
NCPs and dofiles
manually Test Setup
Fault Simulation
During fault simulation with Tessent Shell, the tool generates the dofile for pattern re-targeting,
as well as PatternDB and TCD files.
Tessent Shell performs fault simulation at the core level, generates the signatures, and computes
test coverage. The tool also writes out a parallel test bench.
The core level fault simulation run computes the test coverage for the core, MISR signature, and
power consumption. Two files are generated as the output of this step:
• PatternDB — Contains the relevant LogicBIST register values per pattern like PRPG,
MISR, and low-power registers.
• Tessent Core Description (TCD) — Contains the description of the core in the
LogicBIST mode of operation.
Prerequisites
• Use the following files that you have generated during EDT and LogicBIST IP
Generation using the write_edt_files command and during Logic Synthesis:
o my_edt_logic_edt_top_gate.v
o my_edt_logic_lbist.dofile
o my_design_edt_top_gate.v
Procedure
Use this Tessent Shell procedure to perform fault simulation:
After invocation, the tool is in unspecified setup mode. You must set the context before
you use the fault simulation commands.
2. Set the tool context to fault simulation using the set_context command as follows:
SETUP> set_context patterns -scan
3. Load the prefix_lbist.v design netlist using the read_verilog command. For example:
SETUP> read_verilog my_edt_logic_edt_top_gate.v
4. Load one or more cell libraries into the tool using the read_cell_library command.
SETUP> read_cell_library atpg.lib
8. Change the tool’s system mode to fault using the set_system_mode command as
follows:
SETUP> set_system_mode analysis
During the transition from setup to analysis mode, the tool performs design rule
checking.
9. Add faults using the add_faults command as follows:
ANALYSIS> add_faults -all
10. Specify the number of random patterns the tool will simulate using the
set_random_patterns command as follows:
ANALYSIS> set_random_patterns 100
11. Set the pattern source to LogicBIST and execute fault simulation using the
simulate_patterns command as follows:
ANALYSIS> simulate_patterns -source bist -store_patterns all
12. Save the TCD files containing information about your core needed for the next step
Pattern Generation and ICL Extraction and Pattern Retargeting using the
write_core_description command as follows:
ANALYSIS> write_core_description core_name.tcd -replace
13. Save the PatternDB files containing information about your core needed for the next
step Pattern Generation and ICL Extraction and Pattern Retargeting using the
write_patterns command as follows:
ANALYSIS> write_patterns core_name.patdb -patdb -replace
14. Write out the parallel testbench using the write_patterns command as follows:
ANALYSIS> write_patterns lbist_patt_parallel.v -verilog -parallel \
-mode_internal -param ../data/paramfile
read_verilog alu_edt_top_gate.v
read_cell_library atpg.lib
set_current_design
dofile alu_lbist.dofile
set_lbist_controller_options -capture_procedures {clkseq1 clkseq2 clkseq3 clkseq4}
set_system_mode analysis
add_faults -all
set_random_patterns 100
simulate_patterns -source bist
write_core_description alu.tcd -replace
write_patterns alu.patdb -patdb -replace
This chapter provides detailed information on the tasks performed during Pattern Generation.
Pattern Generation Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Required Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Retargeting Dofile Template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Performing Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Example of Pattern Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Pattern Generation Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Required Input
To program the LogicBIST controller, you use Tessent Shell to retarget the patterns and create
hardware default mode testbench/vectors and pattern_range specific vectors.
This information is contained in the ICL and PDL files created during EDT and LogicBIST IP
Generation:
• ICL — The ICL file consists of ICL module description for the LogicBIST controller
and all EDT blocks tested by this controller.
• PDL — The PDL file contains iProcs at the core level that use the ICL modules written
out.
#
#Read library and design
read_cell_library atpg.lib
read_verilog created_edt_top_gate.v ;#Synthesized gate level netlist with hybrid
EDT/LBIST IP
#
#Read fault simulation data
read_config_data lbist.tcd ;#Fault simulation configuration data written out
during fault simulation
#
#Read ICL files
read_icl created_ltest.icl ;#ICL description of hybrid IP written out during IP
creation
#
#Define top-level clocks
add_clocks refclk -free_running ;#Free running clock input to PLL
add_clocks 0 tck
#
#Define pin constraints
add_input_constraints RST -c0
add_input_constraints edt_reset -c0
#
#Change to analysis mode to generate patterns
set_system_mode analysis
write_icl -o my_design.icl -replace ;#Write top-level ICL after ICL extraction
#
#Read pattern data from fault simulation
open_patdb lbist.patdb ;#Pattern data written out during fault simulation
report_open_patdb
#
#Read PDL files
source created_ltest.pdl ;#PDL for operating the hybrid IP written out during
IP creation
#
#Write regular LBIST patterns
open_pattern_set lbist_normal
iCall edt_lbist_user_iproc ;#Optional, for additional user provided initialization
iCall run_lbist_normal lbist_clock 0 31 lbist
close_pattern_set
#
#Write hardware default LBIST patterns
open_pattern_set lbist_hw_default
iCall edt_lbist_user_iproc ;#Optional, for additional user provided initialization
iCall run_lbist_hw_default lbist
close_pattern_set
write_patterns lbist_hw_default_pat.v -pattern_set lbist_hw_default -verilog -replace
#
#Write diagnostic LBIST patterns
open_pattern_set lbist_diag
iCall edt_lbist_user_iproc ;#Optional, for additional user provided initialization
iCall scan_unload_register lbist_clock 0 1 lbist
close_pattern_set
write_patterns lbist_diag_pat.v -pattern_set lbist_diag -verilog -replace
This dofile is a template with Tcl-style comments that you must modify with the information
specific to your design before using the dofile in Tessent Shell.
Prerequisites
The required inputs for this step of the flow that you specify in the pattern retargeting dofile are
as follows:
Procedure
1. From a shell, invoke Tessent Shell using the following syntax:
% tessent -shell
After invocation, the tool is in unspecified setup mode. You must set the context before
you can invoke the pattern retargeting commands.
2. Set the tool context to IJTAG mode using the set_context command as follows:
SETUP> set_context dft patterns -ijtag
Upon completion, Tessent Shell outputs the testbench/vectors for the entire pattern set,
range specific vectors, or Hardware default mode as specified in the dofile.
Results
• If you are using the Top-Down Flow, you finished all necessary steps in this flow.
• If you are using the Bottom-Up Flow, you are ready to perform the Top-Level ICL
Network Integration.
This chapter provides detailed information on the tasks performed Top-Level ICL Network
Integration.
Note
You perform this step only when using the Bottom-Up Flow.
Top-Level
Core 1 ... Core N Interconnect
Netlist Netlist between Cores
Top-Level
Netlist
You use the top-level netlist that instantiates all the LogicBIST implemented cores. You insert
IJTAG compliant SIBs to provide access to each of the LogicBIST cores as well as connect
these SIBs and cores to the top-level TAP controller. It is recommended to shadow each core by
a separate SIB to provide maximum flexibility for test scheduling. You can connect EDT
control signals from the core to the top level as well at this time. You also can create a
DftSpecification and use the Tessent Shell process_dft_specification functionality to automate
this task.
Prerequisites
The following input is required for this step of the flow:
• The netlists for all your cores created in EDT and LogicBIST IP Generation.
• Top-level netlist with instantiation of cores and interconnect between them.
Procedure
1. From a shell, invoke Tessent Shell using the following syntax:
% tessent -shell
After invocation, the tool is in unspecified setup mode. You must set the context before
you can invoke the top-level SIB network Insertion commands.
2. Set the tool context to dft mode using the set_context command as follows:
SETUP> set_context dft -no_rtl
3. Load the LogicBIST-ready design netlists using the read_verilog command. For
example:
SETUP> read_verilog top.v <core_name_1>_edt_top_gate.v \
<core_name_N>_edt_top_gate.v
4. Load the ICL description for all of the cores. The core-level ICL files were generated as
part of core-level pattern generation. Alternatively, core-level ICL can be generated
using ICL extraction from a core-level EDT/LBIST ICL description. For example:
SETUP> read_icl {core_name_1_ltest.icl core_name_N_ltest.icl}
5. Load one or more cell libraries into the tool using the read_cell_library command. For
example:
SETUP> read_cell_library atpg.lib
6. Set the top design using the set_current_design command. For example:
SETUP> set_current_design top
8. Load the top-level IJTAG network description in DftSpecification format. For example:
SETUP> read_config_data top.dft_spec
Now you are ready to perform ICL Extraction and Pattern Retargeting.
Figure 7-3 shows the DftSpecification that is referenced in the dofile in Figure 7-2. The
HostScanInterface/Interface wrapper specifies the top-level TAP controller design pins for the
IJTAG interface signals. Three SIBs are to be inserted, each of which controls a core whose
instance path name is specified in the DesignInstance wrapper. The SIBs are inserted one level
above the core instance as specified in the parent_instance property for SIBs w2_A and w2_B.
The SIB for core cpu (/c1) is inserted at the top level. The naming of the SIB instances is
controlled using the leaf_instance_name property. The enable, control signal, and scan IO pin
names (the IJTAG network interface at the core boundary) are taken from the ICL description of
the cores in the alu.icl and cpu.icl files.
DftSpecification(top, 3sibs_tap) {
IjtagNetwork {
HostScanInterface(3sibs_tap) {
Interface {
reset_polarity: active_high;
tck: tck;
reset: jtag/tlr;
select: jtag/lbist_inst;
capture_en: jtag/capture_dr;
shift_en: jtag/shift_dr;
update_en: jtag/update_dr;
scan_in: tdi;
scan_out: jtag/lbist_reg_out;
}
Sib(c1) {
leaf_instance_name: piccpu_access_sib;
DesignInstance(/c1) {}
}
Sib(w2_B) {
parent_instance: /w2;
leaf_instance_name: m8051_B_access_sib;
DesignInstance(/w2/B) {}
}
Sib(w2_A) {
parent_instance: /w2;
leaf_instance_name: m8051_A_access_sib;
DesignInstance(/w2/A) {}
}
}
}
}
The RTL and ICL description of the generated IJTAG instruments is written out in the
tessent_outdir/instruments/top_3sibs_tap_ijtag.instrument directory. The top-level IJTAG
network inserted design is written out as
tessent_outdir/dft_inserted_designs/top_3sibs_tap.dft_inserted_design/top.vg. The final top-
level netlist can be obtained by combining the top.vg file along with the gate-level synthesized
netlists of the IJTAG instruments. The ICL files generated in the Figure 7-3 example can be
used for downstream steps that use IJTAG, such as top-level LBIST pattern retargeting.
Note
For more information about ICL insertion using the DftSpecification, refer to the “ICL
Network Insertion” chapter of the Tessent IJTAG User’s Manual.
This chapter provides detailed information on the tasks performed during ICL Extraction and
Pattern Retargeting.
Note
You perform this step only when using the Bottom-Up Flow.
Core 1
TCD, patDB Top-Level
Netlist Top-Level
Core 1 ICL/PDL
ICL/PDL
(TAP, SIBs)
.
. Step 7: ICL Extraction and Pattern Retargeting
(only for Bottom-Up Method)
. Pattern
Core N Retargeting
TCD, patDB dofile
Core N
ICL/PDL
In this step of the flow, you use the fully integrated top-level netlist, top-level ICL/PDL files for
your IJTAG instruments, such as the TAP controller and clock controller and the per-core
LogicBIST files generated at the core level. ICL extraction can again be used here instead of
manually creating the top-level ICL describing the SIB access network and connectivity
between your instruments and the LogicBIST cores. The final tester patterns can be written out
in any of the supported formats.
You must provide the pattern retarget dofile which includes all LogicBIST cores and the desired
scheduling.
Prerequisites
The required inputs for this step of the flow are as follows:
• PDL and ICL files for each core in your design created during EDT and LogicBIST IP
Generation.
• PatternDB and TCD files for each core in your design generated during Pattern
Generation.
• Top-level PDL and ICL files that include information about the TAP and SIBs.
• Pattern Retargeting dofile. Refer to Example 1.
Procedure
1. From a shell, invoke Tessent Shell using the following syntax:
% tessent -shell
After invocation, the tool is in unspecified setup mode. You must set the context before
you can invoke the pattern retargeting commands.
2. Set the tool context to IJTAG mode using the set_context command as follows:
SETUP> set_context patterns -ijtag
3. Execute the pattern retargeting dofile that reads all the ICL and PDL files and specifies
test scheduling. For example:
SETUP> dofile ./test_retarget.dofile
4. Write a current pattern set to a file in a specified format using the write_patterns
command as follows:
SETUP> write_patterns my_patterns -verilog -parallel -mode_internal -replace
Example 1
This example merges all the core patterns to be run in parallel.
// Set context for pattern retargeting
set_context patterns -ijtag
// Read output design from top-level ICL network integration step
read_verilog top_lbist_integrated.v
read_cell_library atpg.lib
// Read TCD for the cores
read_config_data piccpu.tcd
read_config_data my_core.tcd
// Read ICL for cores extracted during block level LogicBIST pattern generation
read_icl {alu.icl cpu.icl}
// Read user provided ICL for top-level components
read_icl {top_sib.icl jtag_controller.icl}
// Set current design and report ICL matched modules
set_current_design top
report_module_matching -icl
// Read core level PDL generated during IP creation
source cpu_ltest.pdl
source alu_ltest.pdl
// Define top-level clocks and pin constraints
add_clocks 0 refclk -free_running
add_clocks 0 tck
add_input_constraints RST -c0
add_input_constraints edt_reset -c0
// Change to analysis mode and perform ICL extraction
set_system_mode analysis
write_icl -o top_extracted.icl -replace
// Open pattern-DB for cores
open_patdb my_core.patdb
open_patdb piccpu.patdb
// Report user settings
report_clocks
report_input_constraints
report_open_patdb
// Merge all core patterns to be run in parallel
open_pattern_set top_lbist_patt
iMerge -begin
iCall cpu.run_lbist_normal lbist_clock 0 99
iCall alu1.run_lbist_normal lbist_clock 0 99
iCall alu2.run_lbist_normal lbist_clock 0 99
iMerge -end
close_pattern_set
// Save patterns in verilog simulation and tester formats
write_patterns top_lbist_patt.v -verilog -pattern_set top_lbist_patt -replace
write_patterns top_lbist_patt.stil -stil -pattern_set top_lbist_patt -replace
Example 2
This example shows the pattern merging commands required for running 100 patterns of all
cores sequentially. The initial setup is the same as the previous full example.
open_pattern_set sequential
iCall cpu.run_lbist_normal lbist_clock 0 99
iCall alu1.run_lbist_normal lbist_clock 0 99
iCall alu2.run_lbist_normal lbist_clock 0 99
close_pattern_set
write_patterns cseq_patt.v -pattern_set sequential -verilog -replace
Example 3
This example shows the pattern merging commands required for running 100 patterns of cpu in
parallel with 50 patterns of both alu cores in series.
iProcsForModule top
iProc alu_wrap2_sequential {} {
iTake alu2
iCall alu1.run_lbist_normal lbist_clock 0 49
iRelease alu2
iCall alu2.run_lbist_normal lbist_clock 0 49
}
open_pattern_set complex
iMerge -begin
iCall cpu.run_lbist_normal lbist_clock 0 99
iCall alu_wrap2_sequential
iMerge -end
close_pattern_set
write_patterns complex_patt.v -pattern_set complex -verilog -replace
This chapter discusses the embedded structures in the hybrid TK/LBIST flow.
EDT/LogicBIST IP Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Hybrid EDT/LogicBIST IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Shared Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Inserted LogicBIST IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Scan Chain Masking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
New LogicBIST Control Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Clocking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Programmable Registers Inside Hybrid IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Low-Power Shift Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
EDT/LogicBIST IP Overview
The hybrid TK/LBIST flow utilizes the following during generating and embedding the
EDT/LogicBIST IP into your design.
• EDT and LogicBIST blocks (blocks and ELT cores)
• A decompressor
• Low-Power Shift controller
• LogicBIST controller
• EDT controller
• EDT compactor
• MISR
• Bypass logic
Hybrid EDT/LogicBIST IP
The EDT/LogicBIST hybrid IP reduces the area overhead compared to a separate
implementation of EDT and LogicBIST IP. This is done by re-using parts of the IP for both
EDT and LogicBIST modes. This hybrid logic controls input stimuli generation and output
response comparison, and is implemented separately for each EDT block. The top-level
controller including the LogicBIST FSM is then connected to these hybrid IP inserted EDT
blocks.
Shared Logic
The EDT/LogicBIST hybrid IP is shared as follows:
• The EDT decompressor is re-configured as the PRPG by blocking the channel inputs
during LogicBIST mode.
• Lockup cells (those placed in between the decompressor and the phase shifter) are re-
used as hold cells when low-power LogicBIST is implemented.
• Biasing gates used when synthesizing EDT low-power hardware is shared with chain
masking.
• The phase shifter network is used as is for driving scan chains from the PRPG.
• The spatial compactor XOR network is re-used for compacting scan chain outputs into
MISR inputs.
• Lockup cells required between the EDT/LogicBIST IP and the design scan cells are
shared between both modes.
Inserted LogicBIST IP
The following LogicBIST IP is inserted during the IP generation step:
• The MISR is instantiated inside the EDT logic.
• All the LogicBIST seeding registers are concatenated into scan chains.
• Segment Insertion Bit (SIB) bits are inserted to control independent access to the
following:
o Chain masking register.
o MISR.
o PRPG with optional low-power LogicBIST control registers.
Clocking
The following figure presents a timing diagram for EDT/LogicBIST IP.
The input clock to the LogicBIST controller is a free-running clock, which could be a fast PLL
output clock. To allow for the control signals to change between shift and capture, 8 empty
(pause) cycles are introduced in between transitions, which helps with timing closure of the test
logic.
• SE is a scan enable signal that goes to all the scan flops in the design. It transitions half-
way through the pause states.
• shift_clock_en is a gating signal that could be gated with the free-running input clock to
generate the shift-clock for the scan cells. This gating logic can either be implemented
by the tool (when using set_clock_controller_pins shift_clock), or you can generate it as
part of your clocking logic (when using set_clock_controller_pins shift_clock_en).
• The capture enable signal indicates the start of the capture cycle. This is intended as a
trigger for the logic that generates programmable capture sequences. This signal is
connected to the scan enable pin of your clock controller.
• The capture clock signal is shown here for illustration purposes only; this signal is
generated inside your clock controller.
• The BIST clock signal is supplied to all hybrid EDT/LogicBIST blocks as well as used
internally by the BIST controller. This clock is pulsed during shift and OFF during
capture. It also has a pulse during capture pause state to operate the low-power BIST
logic in the hybrid IP as well as to reset certain registers for each pattern in the BIST
controller.
You specify the clock controller signals using the set_clock_controller_pins command.
As stated previously, the LogicBIST clock is typically a free-running clock, but the EDT clock
should be controllable during test as it is pulsed during load_unload but held at off-state during
capture. When the test clock is a top-level clock, it can be shared for both EDT and LogicBIST
modes. When an internal clock, such as a free-running output of a PLL, is to be used for
LogicBIST, then separate clock sources are required for EDT and LogicBIST modes, where the
EDT mode clock is still controllable during test. An example of such a configuration is when
shifting during LogicBIST is to be done at a higher speed than during EDT mode. TCK is used
for seeding of specific values in the LogicBIST registers.
When internally generated functional clocks are used in the design, a top-level shift clock is
required for shifting in EDT mode. Typically, a clock controller is used to generate the exact
sequence of capture clocks and also to switch between shift-mode and capture-mode clocks.
The clock controller takes a free-running clock, shift clock, and scan enable as inputs.
The performance of the Low-Power BIST controller depends on the following factors:
The SC, HV, and TV values are automatically calculated by the tool based on the switching
threshold you set using the set_power_control command during fault simulation.
The 4-bit switching code might assume one of 15 different binary values ranging from 0001 up
to 1111. The last value can be alternatively used to disable the control register and enter the
poorly pseudo-random test pattern generation (unless you activate the Hold mode). All codes
are used to enable certain combinations of AND gates forming biasing logic, and, hence, to
produce 1s with probabilities 0.5 (0001), 0.25 (0010), 0.125 (0100), 0.0625 (1000), plus their
combinations obtained due to an additional OR gate. The resultant 0s and 1s are shifted into the
mask shift register, and, subsequently, they are reloaded to the mask hold register at the
beginning of a test pattern to enable/disable the hold latches placed between the ring generator
and its phase shifter.
The duration of how long the entire generator remains in the Hold mode with all latches
temporarily disabled regardless of the hold register content.
In the Toggle mode (its duration is determined by TV), the latches enabled through the control
register can pass test data moving from the ring generator to the scan chains. In order to switch
between these two modes, a weighted pseudo-random signal is produced by a module Encoder
H/T based on the content of different stages of the ring generator.
This appendix discusses the interface pins in the hybrid TK/LBIST flow.
Interface Pin Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
LogicBIST Controller Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Clock Controller Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
EDT/LogicBIST Wrapper Pins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Segment Insertion Bit Signals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
This appendix provides various examples for the hybrid Tk/LBIST flow.
Synthesis Script Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Timing Script Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
ICL Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
PDL Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
# Synthesize EDT IP
current_design my_core_edt
# Timing specification
create_clock -period 10 -waveform {0 5} edt_clock
# Compile design
uniquify
compile -map_effort medium
ICL Example
The following example shows an ICL output written by the tool.
//***********************************************************************
// ICL script for module my_core
//
// Tessent TestKompress version: 2013.1-snapshot_2013.01.29_06.01
// Tue Jan 29 06:11:31 GMT 2013
// Date: 01/29/13 11:21:40
//***********************************************************************
ScanInterface host {
Port lbist_scan_in;
Port lbist_scan_out;
}
ScanInterface client {
Port from_edt_scan_out;
Port lbist_scan_out;
Port edt_sib_en;
}
//
// Bist registers
//
ScanRegister capture_phase_size[1:0] {
ScanInSource my_core_lbist_edt_sib_i.scan_out;
}
ScanRegister shift_clock_select[1:0] {
ScanInSource capture_phase_size[0];
ResetValue 2'b01;
}
...
PDL Example
The following example shows an PDL output written by the tool.
#************************************************************************
# PDL script for LogicBIST IP module my_core
#
# Tessent TestKompress version: 2013.1-snapshot_2013.01.29_06.01
# Tue Jan 29 06:11:31 GMT 2013
# Date: 01/29/13 11:21:40
#************************************************************************
iProcsForModule my_core
# Define some TCL variables for the values we want to load on the setup
chain
set chain_mask(my_core)
$lbist_data(edt_decompressor_chain_mask,init_value)
set chain_mask_load_en(my_core)
$lbist_data(edt_decompressor_chain_mask,load_en)
set prpg_seed(my_core) $lbist_data(edt_decompressor,seed)
set misr_seed(my_core_misr) $lbist_data(misr,seed)
set misr_sig(my_core_misr) $lbist_data(misr,expected)
# shift Init
shiftAndCapturePause capturePhase lastPattern
# / \ / \ /
\ / \ / \
set run_cycles [ expr ($pattern_length * $pattern_cnt) + 5 + 8 + 3 + (8
* 2 * $pattern_cnt) + ($capture_phase_size_eq * $pattern_cnt) + 8 + 3 ]
#########
# Setup #
#########
When implementing an ECO in the hybrid TK/LBIST flow, certain considerations should be
taken into account.
Consider the following:
• As part of the IP creation step, the tool makes sure that every scan chain starts with a
leading edge (LE) flip-flop and ends with a trailing edge (TE) flip-flop. The retiming
flip-flops are exposed as part of the scan chains. You must make sure that the clocking
of the boundary flip-flops never changes; if you need to add a flip-flop into the design,
you must add it in the middle of the chain, not at the beginning or end.
The same is true for deleting a flip-flop. Only remove a scan cell that is in the middle of
a chain. Do not remove a scan cell that is at the boundary because it controls the
retiming latches that have been added.
• During IP creation, the tool generates a shift counter that is used during LogicBIST
mode. By default, the tool adds seven more clock cycles to the number of shift cycles.
This allows additional flip-flops to be added later through an ECO. Note that this is
across all scan chains, so many flip-flops can be added in ECO mode if you wish.
However, you should not exceed seven per chain.
• You should specify the size of the pattern counter. Although not directly related to the
ECO process, you should specify the hardware in such a way that you can double the
number of LogicTest patterns that you think will be necessary during IP generation.
• Handle timing violations after placement and routing as follows:
Note
Make sure you declare only the paths giving timing violations that are discovered late. Do
not provide the entire SDC or the tool will insert muxes for FP/MCPs that are already
bounded.
This appendix provides information about test coverage during test point analysis.
Test point analysis uses a fault population of all possible collapsed stuck-at faults. The test
coverage is calculated by assessing, for each fault, the probability that the fault will be detected
by a set of random patterns as specified by the -pattern_count_target option of the
set_test_point_analysis_options command.
Uncontrollable/Unobservable Faults
Logic gates that are constant due to constraints do not toggle during Logic BIST. Therefore,
many faults on these gates cannot be detected because the gate cannot be controlled to the
opposite value. These constant gates may also block fault propagation. Faults that cannot be
observed because they are blocked by gates that are constant are reported as
“Uncontrollable/Unobservable.”
The script “tessent_write_no_tpi_paths.tcl” is a tcl script that reads a list of critical paths
extracted by PrimeTime and marks them as not valid test point locations.
One way to minimize problems during timing closure is to identify critical paths prior to test
point analysis and insertion. This approach depends on accurately identifying the critical paths,
and this typically requires placement and global routing information. The provided PrimeTime
script can be used to extract a list of critical paths based on the current PrimeTime environment
(preferably with placement information) and generate Tessent Shell commands that mark these
paths with the appropriate attributes to avoid inserting test points on them.
Usage
tessent_write_no_tpi_paths $paths filename
Arguments
• $paths
Environmental variable that points to the critical paths extracted by PrimeTime.
• filename
Specifies the file name for the Tessent Shell dofile generated by the script.
Location
The script is located at
<Tessent_Tree_Path>/share/TestPoints/tessent_write_no_tpi_paths.tcl
Example
Below is an example of how to use this script.
First, use the PrimeTime “get_timing_path” command to extract the critical paths. This
command requires a number of important parameters described below which should be tuned
for your design.
Next, invoke the “tessent_write_no_tpi_paths” script to read in the critical paths extracted by
PrimeTime and write out a Tessent Shell dofile.
Step 2: From Tessent Shell:
dofile critical_paths.dofile
The dofile adds appropriate attributes to all the pins on the critical paths to prevent test points
from being placed there.
This appendix describes how to perform test point analysis for a set of target faults for atpg.
An example of a set of target faults is the faults that are left undetected (AU) after performing
atpg. When atpg has completed you can write out the faults with the “write_faults” command.
Next, in the dft -testpoints context you read this fault set with the “read_faults” command and
perform test point analysis (“analyze_test_points”). Test point analysis will only consider the
undetected faults in the fault population and generate test points specifically for those faults.
After inserting the test points in the netlist you run atpg again. Because of the test points the
atpg will likely be able to generate patterns for many of the previously undetected faults.
By default, test point analysis uses a fault population of all possible stuck-at faults. In analysis
mode you can create a set of target faults with the commands “add_faults”, “delete_faults”
and/or “read_faults”. When you set up a fault set for use by the analyze_test_points command,
then that fault set is used to report the test coverage. Specifically, only the set of undetected
faults with fault class AU, UC, UO, PT or PU are used to calculate the test coverage. The test
coverage is calculated by assessing, for each fault, the probability that the fault will be detected
by a set of random patterns as specified by the -pattern_count_target option of the
“set_test_point_analysis_options” command. A high test coverage is an indication that atpg will
more likely be able to find a test pattern for most of the faults. But since the test coverage is
based on the probabilities that faults will be detected by a set of random patterns, there is no
direct correlation between the test coverage and the number of faults for which atpg will be able
to find a test pattern.
Only stuck-at fault sets will be supported for test point analysis. Faults in a fault list that is read
with the “read_faults” command will be interpreted as stuck-at faults, if possible. When the
fault set contains faults that cannot be interpreted as stuck-at faults (such as bridging faults or
UDFM faults) then an error will be given. The “set_fault_type” command is not supported in
the “dft -testpoints” context. The default fault type in this context is “stuck”.
The fault set that you create in the analysis system mode of the “dft -test_points” context will
not be modified by the “analyze_test_points” command. Specifically, this command will not
modify the class of any of the faults in the fault set. The fault set will be cleared when you
transition out of the analysis system mode. That is, when the “insert_test_logic” command is
executed then the system mode is transitioned to insertion mode and the fault set is cleared.
Also, if you transition back to the setup system mode from the analysis mode the fault set is
cleared. The commands “report_faults” and “write_faults” can be used to print out the target
fault set before transitioning out of analysis mode.
Example
In the following example, the faults in the fault file “targetFault.list” are read in and the fault
class for each of these faults is retained. The command analyze_test_points identifies test points
for improving the testability of the undetected faults in the fault set and tries to achieve 100%
coverage of these faults with a maximum of 700 test points.
set_system_mode analysis
read_faults targetFault.list -retain
set_test_point_analysis_options -total 700 -test_coverage_target 100
analyze_test_points
Note that because the fault class of each fault in the file is retained, only undetected faults will
be targeted by test point analysis. Faults that have been detected already are ignored by test
point analysis.
The following is a snippet from the log file of a run with targeted faults:
Note
The number of “Uncontrollable/Unobservable” faults (422) in the report after test point
analysis is lower than the number of these faults before test point analysis (687). This is
due to the “6 observe points for unobserved gates”. These 6 observe points are not
counted in the total of 700 test points, but are over and above the 353 observe points that
together with 347 control points make up the total of 700 test points.
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.
Documentation
The Tessent software tree includes a complete set of documentation and help files in PDF
format. Although you can view this documentation with any PDF reader, if you are viewing
documentation on a Linux file server, you must use only Adobe® Reader® versions 8 or 9, and
you must set one of these versions as the default using the MGC_PDF_READER variable in
your mgc_doc_options.ini file.
For more information, refer to “Specifying Documentation System Defaults” in the Managing
Mentor Graphics Tessent Software manual.
You can download a free copy of the latest Adobe Reader from this location:
http://get.adobe.com/reader
• Shell Command — On Linux platforms, enter mgcdocs at the shell prompt or invoke a
Tessent tool with the -Manual invocation switch. This option is available only with
Tessent Shell and the following classic point tools: Tessent FastScan, Tessent
TestKompress, Tessent Diagnosis, and DFTAdvisor.
• File System — Access the Tessent bookcase directly from your file system, without
invoking a Tessent tool. From your product installation, invoke Adobe Reader on the
following file:
$MGC_DFT/doc/pdfdocs/_bk_tessent.pdf
• Application Online Help — You can get contextual online help within most Tessent
tools by using the “help -manual” tool command:
> help dofile -manual
This command opens the appropriate reference manual at the “dofile” command
description.
http://supportnet.mentor.com/about
If you have questions about a software release, you can log in to SupportNet and search
thousands of technical solutions, view documentation, or open a Service Request online:
http://supportnet.mentor.com
If your site is under current support and you do not have a SupportNet login, you can register for
SupportNet by filling out a short form here:
http://supportnet.mentor.com/user/register.cfm
http://supportnet.mentor.com/contacts/supportcenters/index.cfm
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.
2. GRANT OF LICENSE. The software installed, downloaded, or otherwise acquired by Customer under this Agreement, including any
updates, modifications, revisions, copies, documentation 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. 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 5.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. ESC SOFTWARE. If Customer purchases a license to use development or prototyping tools of Mentor Graphics’ Embedded Software
Channel (“ESC”), Mentor Graphics grants to Customer a nontransferable, nonexclusive license to reproduce and distribute executable
files created using ESC compilers, including the ESC run-time libraries distributed with ESC C and C++ compiler Software that are
linked into a composite program as an integral part of Customer’s compiled computer program, provided that Customer distributes
these files only in conjunction with Customer’s compiled computer program. Mentor Graphics does NOT grant Customer any right to
duplicate, incorporate or embed copies of Mentor Graphics’ real-time operating systems or other embedded software products into
Customer’s products or applications without first signing or otherwise agreeing to a separate agreement with Mentor Graphics for such
purpose.
4. BETA CODE.
4.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.
4.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.
4.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 4.3 shall survive termination of this Agreement.
5. RESTRICTIONS ON USE.
5.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. 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. Except as otherwise permitted for purposes of interoperability as specified by applicable and mandatory local
law, Customer shall not reverse-assemble, reverse-compile, reverse-engineer or in any way derive any source code from Software.
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.
5.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. 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.
5.3. 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.
5.4. The provisions of this Section 5 shall survive the termination of this Agreement.
6. 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.
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. EXCEPT WHERE THIS EXCLUSION OR RESTRICTION OF LIABILITY WOULD BE VOID
OR INEFFECTIVE 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.
10. INDEMNIFICATION. CUSTOMER AGREES TO INDEMNIFY AND HOLD HARMLESS MENTOR GRAPHICS AND ITS
LICENSORS FROM ANY CLAIMS, LOSS, COST, DAMAGE, EXPENSE OR LIABILITY, INCLUDING ATTORNEYS’ FEES,
ARISING OUT OF OR IN CONNECTION WITH THE USE OF MENTOR GRAPHICS PRODUCTS IN OR FOR HAZARDOUS
APPLICATIONS. THE PROVISIONS OF THIS SECTION 10 SHALL SURVIVE THE TERMINATION OF THIS AGREEMENT.
11. INFRINGEMENT.
11.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.
11.2. If a claim is made under Subsection 11.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.
11.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; or (h) infringement by Customer that is
deemed willful. In the case of (h), Customer shall reimburse Mentor Graphics for its reasonable attorney fees and other costs
related to the action.
11.4. THIS SECTION 11 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.
13. EXPORT. The Products provided hereunder are subject to regulation by local laws 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 and U.S. government agencies. If Customer wishes to disclose any information
to Mentor Graphics that is subject to any 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.
14. 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.
15. 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.
16. 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 16 shall survive the termination of this Agreement.
17. 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. 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. Notwithstanding the foregoing,
all disputes in Asia 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.
18. 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.
19. MISCELLANEOUS. This Agreement contains the parties’ entire understanding relating to its subject matter and supersedes all prior
or contemporaneous agreements. Some Software may contain code distributed under a third party license agreement that may provide
additional rights to Customer. Please see the applicable Software documentation for details. 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.