DFT 5
DFT 5
SystemC is a trademark of the Open SystemC Initiative and is used under license.
ARM and AMBA are registered trademarks of ARM Limited.
All other product or company names may be trademarks of their respective owners.
Printed in the U.S.A.
DFT Compiler Pre-Scan Test DRC User Guide (DB Mode), X-2005.09
ii
Contents
Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Related Publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Customer Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
iii
Debugging Unified Test DRC Violations in the GUI . . . . . . . . . . . . . . . . . . . . . 13
Opening the Violation Browser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Navigating Through the Violation Browser . . . . . . . . . . . . . . . . . . . . . . . . 14
Analyzing a Violation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Understanding the Violation Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Netlist Expansion in the Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Hierarchy Boundaries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Simulation Values in the Violation Schematic . . . . . . . . . . . . . . . . . . . . . . . . . 19
Changing the Annotation of Simulation Values . . . . . . . . . . . . . . . . . . . . 21
Changing the Font, Color and Size of Simulation Values. . . . . . . . . . . . . 22
Understanding the Simulation Values . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Design Rule Checking During RTL Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
iv
5. Setting Timing Attributes
Protocols for Common Design Timing Requirements . . . . . . . . . . . . . . . . . . . 39
The Strobe-Before-Clock Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
The Strobe-After-Clock Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Setting Timing Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
The test_default_period Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
The test_default_delay Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
The test_default_bidir_delay Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
The test_default_strobe Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
The test_default_strobe_width Variable . . . . . . . . . . . . . . . . . . . . . . . . . . 44
The Effect of Timing Attributes on Vector Formatting. . . . . . . . . . . . . . . . 46
6. Test Protocols
Design Characteristics for Test Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
The scan_style Attribute. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
The signal_type Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Clock Ports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Asynchronous Control Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Bidirectional Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
STIL Test Protocol File Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Defining the test_setup Macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Defining Basic Signal Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Defining the load_unload Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Defining the Shift Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Defining an Initialization Protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Scan Shift and Parallel Cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Multiplexed Flip-Flop Scan Style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Clocked-Scan Scan Style. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
LSSD Scan Style and Auxiliary-Clock LSSD Scan Style . . . . . . . . . . . . . 57
Examining a Test Protocol File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Updating a Protocol in a Scan Chain Inference Flow. . . . . . . . . . . . . . . . 60
Inferring Scan Structures in LSSD Designs . . . . . . . . . . . . . . . . . . . . . . . 60
v
Setting the Severity of DRC Violations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Resetting the Severity of DRC Violations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Reporting the Severity of DRC Violations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Index
vi
About This Manual
The DFT Compiler Pre-Scan Test Design Rule Checking User Guide describes
addressing test design rule violations prior to inserting scan chains when using
DFT Compiler.
Audience
This manual is intended for ASIC deisgn engineers who have some exposure
to testability concepts and strategies. It is also useful for test and
design-for-test engineers who want to understand how basic test automation
concepts and practices relate to DFT Compiler.
Related Publications
For additional information about DFT Compiler, see:
• Documentation on the Web, which provides HTML and PDF documents and
is available through SolvNet at:
http://solvnet.synopsys.com
• The documentation installed with the DFT Compiler software and available
through the DFT Compiler Help menu
• Synopsys Online Documentation (SOLD), which is included with the
software for CD users or is available to download through the Synopsys
Electronic Software Transfer (EST) system
vii
About This Manual
Conventions
You might also want to refer to the documentation for the following related
Synopsys products:
• Design Compiler
• BSD Compiler
• TetraMAX
Conventions
The following conventions are used in Synopsys documentation.
Convention Description
Regular bold User input that is not Synopsys syntax, such as a user
name or password you enter in a GUI.
viii
About This Manual
Customer Support
Convention Description
Edit > Copy Indicates a path to a menu command, such as opening the
Edit menu and choosing Copy.
Customer Support
Customer support is available through SolvNet online customer support and
through contacting the Synopsys Technical Support Center.
Accessing SolvNet
SolvNet includes an electronic knowledge base of technical articles and
answers to frequently asked questions about Synopsys tools. SolvNet also
gives you access to a wide range of Synopsys online services including
software downloads, documentation on the Web, and “Enter a Call to the
Support Center.”
To access SolvNet:
ix
About This Manual
Customer Support
x
1
Test Design Rule Checking1
This chapter discusses the test design rule checking flow, the
types of messages generated during the process, and the
effects of violations on scan replacement.
1
Test Design Rule Checking
Test Design Rule Checking Flow
Yes
Existing Protocol?
No
No
2
Test Design Rule Checking
Test Design Rule Checking Flow
3
Test Design Rule Checking
Test Design Rule Checking Flow
4
Test Design Rule Checking
Test Design Rule Checking Flow
****************************************
Report : test
-assertions
Design : test_af
Version: V-2004.06
Date : Tue Apr 27 13:09:28 2004
****************************************
Assertions:
test_af:
U4/Q pin assumed to be 1
d1 port held to 1
5
Test Design Rule Checking
Test Design Rule Checking Flow
For each violation it reports, the debugger can bring up the schematic that
shows you the source of the violation. The schematic contains simulation
values annotated on the cell pins and design ports.
You can locate the source of the problem by tracing the schematic back to
source of the driver. If you analyze violations at the register-transfer level, the
debugger can also bring up the source RTL code and identify the cause of the
violation.
After you have located the cause of the violation, you can either change the
design, change the test protocol, or do both. Then rerun the steps outlined
above to see if the violations have been fixed.
You can also use AutoFix to fix uncontrollable clocks and asynchronous sets
and resets.
Summary of Violations
At the completion of design rule checking, the dft_drc command displays a
violation summary. Example 2 shows the format of the violation summary.
Example 2 Violation Summary
---------------------------------------------------------------
DRC Report
Total violations: 6
---------------------------------------------------------------
6 PRE-DFT VIOLATIONS
3 Uncontrollable clock input of flip-flop violations (D1)
3 DFF set/reset line not controlled violations (D3)
---------------------------------------------------------------
Sequential Cell Report
3 out of 5 sequential cells have violations
---------------------------------------------------------------
6
Test Design Rule Checking
Test Design Rule Checking Messages
The total number of violations for the circuit appears in the header. If there are
no violations in the circuit, the dft_drc command displays only the violation
summary header. Within the summary, violations are organized by category. A
violation category appears in the summary only if there are violations in that
category. For each category, the dft_drc command displays the number (n)
of violations along with a short description of each violation and the
corresponding error message number. Using the error message number, you
can find the violation in the dft_drc run.
Unknown cell violations have message numbers in the TEST-450 to TEST-459
range. Unsupported cell violations have message numbers in the TEST-460 to
TEST-469 range. The following is an excerpt from a violation summary for
unsupported and unknown cells:
---------------------------------------------------------------
DRC Report
Total violations: 4
---------------------------------------------------------------
3 MODELING VIOLATIONS
7
Test Design Rule Checking
Effects of Violations on Scan Replacement
All warnings reported by dft_drc reduce fault coverage. Try to correct all
violations, because a cell that violates a design rule, as well as the cells in
its neighborhood, are not testable. A cell’s neighborhood can be as large as
its transitive fanin and its transitive fanout.
• Error
An error message indicates a serious problem that prevents further
processing of the design in DFT Compiler until you resolve the problem.
8
Test Design Rule Checking
Viewing the Sequential Cell Summary
For designs that are not synthesized using the compile -scan command,
violations on sequential cells cause the insert_dft command not to perform
scan replacement.
If you have previously run the dft_drc command, the insert_dft command
uses the results. In the AutoFix flow, the insert_dft command does not use
these results, and it runs dft_drc again.
The insert_dft command issues the following message:
Using test design rule information from previous dft_drc run
If you have not explicitly run the dft_drc command, the insert_dft
command runs dft_drc as a preprocessor to determine which sequential
elements can be included in scan chains. The insert_dft command issues
the following message:
Information: Starting test design rule checking. (TEST-222)
In both cases, when violations occur, the insert_dft command issues the
following message:
Warning: Violations occurred during test design rule checking.
(TEST-124)
9
Test Design Rule Checking
Viewing the Sequential Cell Summary
To get a complete listing of all cells in each category, run the dft_drc
-verbose command.
See the information about classifying sequential cells in the DFT Compiler
Scan Replacement User Guide for details about the sequential cell classes.
10
2
The Design Debugger2
The Design Vision GUI runs in both shell mode and GUI mode . The GUI can
be closed down and started as needed.
To start the Design Vision GUI from the command line, do the following:
%> gui_start
To close the Design Vision GUI in GUI mode, click on File ->Close GUI.
To close the Design Vision GUI from the command line, enter the following:
%> gui_close -all
11
The Design Debugger
Basic Structure of the Design Vision GUI
12
The Design Debugger
Debugging Unified Test DRC Violations in the GUI
• Toolbar
The toolbar has a pulldown menu to give access to different functions in
design synthesis. It also has other customizable buttons that are used in the
schematic view.
• Console
The console is used in interactive mode when entering commands
manually. It has three tabs: Log, History and Errors/Warnings.
• View Port
The design schematic is displayed in view port. The violation browser
spawned by dft_drc uses this space to display violation schematics. Note
that this is equivalent to the GSV in TetraMAX.
13
The Design Debugger
Debugging Unified Test DRC Violations in the GUI
The violations are subdivided into different classes. Figure 3 shows two classes
of violations that exist in design modeling and pre-dft. Within each class, the
violations are further subdivided into different DRC rules.
14
The Design Debugger
Debugging Unified Test DRC Violations in the GUI
particular rule. A tooltip appears with the complete text when the mouse is
placed over a test design rule violation. See Figure 4.
Figure 4 Violation Browser- A Detailed Look
Analyzing a Violation
A DRC rule violation can be investigated in the GUI schematic mode by
invoking the Violation schematic corresponding to that violation. This is done by
first selecting the violation and then bringing up the context menu with a right
click of the mouse. Select Analyze Violation to bring up the Tooltip with
complete text of the DRC violation shown in the schematic window. Note that
the “Show source” option is grayed out since the design is in a test-ready state
(after compile -scan). The “Show source” option is only enabled for design
rule checking during RTL TestDRC. See Figure 5. The option “Show help” is
15
The Design Debugger
Debugging Unified Test DRC Violations in the GUI
not currently enabled. It will be available in a future release when online help is
fully implemented.
An alternate way to bring up the violation schematic is to click on “Analyze
Violation” button, which is located on the upper right-hand corner of the
violation browser. See Figure 5 below.
Figure 5 Analyze Violation
Click
16
The Design Debugger
Debugging Unified Test DRC Violations in the GUI
17
The Design Debugger
Debugging Unified Test DRC Violations in the GUI
To use Add Logic, you must click on the cell’s pin to select it, then right-click to
bring up the menu. This is the equivalent of just clicking on the pin in the GSV.
Hierarchy Boundaries
The violation schematic can span across hierarchies. This is shown through
hierarchy crossing objects, which appear as thin elongated rectangular boxes
in the schematic, as shown in Figure 8.
18
The Design Debugger
Simulation Values in the Violation Schematic
A tooltip gives information about the hierarchy object and shows whether that
hierarchy separator represents a hierarchy crossing downwards or upwards in
the design.
19
The Design Debugger
Simulation Values in the Violation Schematic
When the mouse pointer is placed over any pin (or port) in the schematic, a
tooltip appears with the information about that pin (or port), including the
simulation value. This is a useful feature in a complex schematic with many
elements when the simulation values are not visible at the current zoom level.
This is also useful when a simulation value is truncated in the schematic if it is
too long.
Simulation values get annotated for any new netlist that is added to the original
schematic by expanding it (as shown in “Netlist Expansion in the Schematic” on
page 18).
20
The Design Debugger
Simulation Values in the Violation Schematic
Note that this is a “static schematic” which means that the simulation values
displayed are as returned by the DRC engine. You cannot change these
simulation values “on the fly” to get a new set of corresponding simulation
values on the schematic.
The following five choices are given under the Visibility menu shown in
Figure 10:
1. None: Do not annotate simulation value on any pin/port
2. In: Annotate simulation values only on input pins and ports
3. Out: Annotate simulation values only on output pins and ports
4. InOut: Annotate simulation values on the bidirectional pins/ports
5. All: Annotate simulation values on all the pins and ports in the violation
schematic.
21
The Design Debugger
Simulation Values in the Violation Schematic
The change in the visibility is a global change and will be applied to all the
violations schematics until changed again.
22
The Design Debugger
Simulation Values in the Violation Schematic
23
The Design Debugger
Design Rule Checking During RTL Stage
24
The Design Debugger
Design Rule Checking During RTL Stage
25
The Design Debugger
Design Rule Checking During RTL Stage
26
3
Classifying Sequential Cells3
---------------------------------------------------------------
Sequential Cell Report
The number of sequential cells with violations appears in the header. This
number is the sum of cells with scan shift violations, capture violations, and
27
Classifying Sequential Cells
Sequential Cells With Violations
constant values, along with cells that are black boxes. If a design has no
sequential cells, only a header with the following message appears:
There are no sequential cells in this design
Within the summary, sequential cells are divided into two groups: those with
violations and those without. Only the categories of sequential cells that are
found in the design are listed in the summary. In verbose mode, cell names are
listed within each category. More information about the sequential cell
categories is provided in the following sections.
28
Classifying Sequential Cells
Sequential Cells Without Violations
29
Classifying Sequential Cells
Sequential Cells Without Violations
30
4
Checking for Modeling Violations4
Black Boxes
A cell whose output is considered unknown is a black box cell. Black box cells
can be cells without a functional description in the technology library (cells
marked as black box in the report_lib command) or black box sequential
cells identified in the dft_drc command.
The dft_drc command requires that you have a functional model in your
library for each leaf cell in your design. If you use cells that do not have
functional models, the dft_drc command displays the following warning:
Cell %s (%s) is unknown (black box) because functionality for
output pin %s is bad or incomplete (TEST-451)
See the Library Compiler reference manuals for more information on modeling
the behavior of cells.
31
Checking for Modeling Violations
Correcting Black Box Cells
The method for correcting the violation depends on the source of the violation
and the complexity of the cell.
Unresolved Reference
Use the link command to correct unresolved references.
32
Checking for Modeling Violations
Unsupported Cells
If you have a simulation model for the black box, declare it by using the
following variable:
% test_simulation_library simulation_library_path
• If you do not have a Library Compiler license or library source code, ask your
semiconductor vendor for a library that contains a functional model of the
cell.
• If you have a Library Compiler license and the library source code, add the
functional description to the library cell model.
See the Library Compiler documentation for information about cell
modeling.
If Library Compiler syntax does not support functional modeling of the cell,
create a structural model for the cell and link the design to this structural model
instead of to the library cell model.
Unsupported Cells
Cells can have a functional description and still not be supported by the
dft_drc command. Using state table models, library developers can describe
cells that violate the current assumptions for test rule checking. The dft_drc
command detects those cells and flags them as black boxes.
DFT Compiler supports single-bit cells or multibit cells that have identical
functionality on each pin; these cells have the following characteristics:
• The functional view, which Design Compiler understands and manipulates,
is either a flip-flop, a latch, or a master-slave cell with clocked_on and
clocked_on_also attributes.
• The test view, used for scan shifting, is either a flip-flop or a master-slave
cell.
• The functional view and the test view each have a single clock per internal
state.
The multibit library cell interfaces must be either fully parallel or fully global. For
cells that do not meet these criteria, DFT Compiler uses single-bit cells.
For example, if you want to infer a four-bit banked flip-flop with an
asynchronous clear, the clear signal must be either different for each bit or
shared among all four bits. If the first and second bits share one asynchronous
reset, but the third and fourth bits share another reset, DFT Compiler does not
33
Checking for Modeling Violations
Unsupported Cells
infer a multibit flip-flop. Instead, DFT Compiler uses four single-bit flip-flops. For
more information about multibit cells and multibit components, see the Design
Compiler Reference Manual: Optimization and Timing Analysis.
DFT Compiler does not support registers or duplicate sequential logic within a
cell. The nonscan equivalent of a scan cell must have only one state. A scan
cell can have multiple states in shift mode.
If the dft_drc command detects such a cell, it issues the following warning:
Cell %s (%s) is not supported because it has too many
states (%d states). This cell is being black-boxed.(TEST-462)
If the dft_drc command detects a state with no clocks or with multiple clocks,
it issues one of the following warnings:
Cell %s (%s) is not supported because the state pin %s has no
clocks. This cell is being black-boxed,
(TEST-466)
Cell %s (%s) is not supported because the state pin %s is
multi-port. This cell is being black-boxed.(TEST-467)
In addition, the dft_drc command detects and rejects sequential cells with
three-stated outputs and issues the following warning:
Cell %s (%s) is not supported because it is a sequential
cell with three-state outputs. This cell is being
black-boxed,(TEST-468)
Black box cells have an adverse effect on fault coverage. To avoid this effect,
you must replace unsupported cells with cells that DFT Compiler can support.
34
Checking for Modeling Violations
Generic Cells
Note:
Unsupported cells can originate only from explicit instantiation. They are not
used by Design Compiler or by DFT Compiler. For more information on
modeling sequential cells, see the Library Compiler User Guide.
Generic Cells
Your design should be a mapped netlist. In RTL stage, dft_drc will map your
design into an internal representation
Some generic cells, such as unimplemented DesignWare parts and operators,
have implicit functional descriptions. The dft_drc command treats as black
box cells and displays the following message:
Warning:Cell %s (%s) is unknown (black box) because functionality
for output pin %s is bad or incomplete. (TEST-451)
If you instantiate generic cells after running compile -scan, you must
recompile your design.
Note:
Use the set_scan_element false command to prevent scan
replacement rather than the set_test_isolate command. The
set_test_isolate command is not supported in Unified Test DRC.
The cells in violation are marked as nonscan. In the full-scan methodology,
these cells are black boxes. If these cells are not valid nonscan, they are in
violation and are black boxes. You can suppress the TEST-120 warning with the
set_scan_element command. For example, to ensure that a nonscan latch
cell is not made scannable, enter the command
35
Checking for Modeling Violations
Scan Cell Equivalents and the dont_touch Attribute
If the dft_drc command cannot find scan cell equivalents in the target library,
the probable cause is that the target library does not contain test cells. In such
cases, the dft_drc command issues the following warning:
Warning: Target library for design contains no scan-cell
models. (TEST-224)
Note:
Use the dont_touch attribute carefully, because the dont_touch
attribute increases the number of nonscan cells and nonscan cells lower
fault coverage.
You can use set_scan_element false if you do not want to make a
sequential cell scannable but you do want to be able to modify the cell during
optimization.
36
Checking for Modeling Violations
Latches
Latches
DFT Compiler replaces latches with scannable latches whenever possible. If
the dft_drc command cannot find scan cell equivalents for the latches, it
marks the latches as nonscan and issues the TEST-120 warning as previously
explained.
Nonscan Latches
DFT Compiler models nonscan latches in two ways:
1. As black boxes
2. As synchronization elements
If you don't scan replace your latches, you can ignore “no-scan equivalent”
messages for latches.
A nonscan latch is treated by default as a black box. However, if the latch
satisfies the requirements for a synchronization element, the dft_drc
command treats the latch as a synchronization element.
Note:
In dft_drc, synchronous elements can be on the scan chain.
37
Checking for Modeling Violations
Latches
38
5
Setting Timing Attributes5
39
Setting Timing Attributes
Protocols for Common Design Timing Requirements
test_default_period : 100.00 ;
test_default_delay : 0.00 ;
test_default_bidir_delay : 0.00 ;
test_default_strobe : 40.00 ;
test_default_strobe_width : 1.00;
test_default_period : 100.00 ;
test_default_delay : 5.00 ;
test_default_bidir_delay : 55.00 ;
test_default_strobe : 95.00 ;
test_default_strobe_width : 0.0;
If you intend to use a strobe-after-clock protocol with TetraMAX ATPG, use the
timing attributes shown in Example 7 in the test protocol for the multiplexed flip-
flop design example.
40
Setting Timing Attributes
Setting Timing Attributes
test_default_period : 100.00 ;
test_default_delay : 0.00 ;
test_default_bidir_delay : 0.00 ;
test_default_strobe : 90.00 ;
test_default_strobe_width : 1.00;
Your semiconductor vendor’s requirements, together with the basic scan test
requirements, drive the specification of test timing parameters. If you intend to
use TetraMAX ATPG, you need to change the default variable values. You can
do this every time you create a new design or you can add these variable
values to your local .synopsys_dc.setup file.
The setting of test timing variables is discussed in the following sections.
41
Setting Timing Attributes
Setting Timing Attributes
42
Setting Timing Attributes
Setting Timing Attributes
The risks associated with incorrect specification of the bidirectional delay time
include:
• Test design rule violations
• Bus contention
• Simulation mismatches
Minimize these risks by carefully specifying the bidirectional delay time.
DFT Compiler uses the bidirectional delay time as:
• The data application time for bidirectional ports in input mode during the
parallel measure cycle (and during scan in for bidirectional ports used as
scan input or scan-enable signal)
• The data release time for bidirectional ports in input mode during cycles in
which the bidirectional port changes from input mode to output mode
DFT Compiler performs relative timing checks during test design rule checking.
The following requirements must be met:
• The bidirectional delay time must be less than the strobe time.
If you change the strobe time from the default value, confirm that the
bidirectional delay value meets this requirement.
• If the bidirectional port drives sequential logic, the bidirectional delay time
must be equal to or greater than the active edge of the clock.
The syntax for setting the variable is:
set test_default_bidir_delay bidir_delay
For example:
dc_shell-t> test_default_bidir_delay 40.0
43
Setting Timing Attributes
Setting Timing Attributes
By default, DFT Compiler compares data at all output ports 95 ns after the start
of the cycle. If your semiconductor vendor requires different strobe timing,
specify the strobe time using the test_default_strobe variable.
The syntax for setting the variable is:
set test_default_strobe strobe
For example:
dc_shell-t> set test_default_strobe 100.0
44
Setting Timing Attributes
Setting Timing Attributes
DFT Compiler determines the polarity of the first edge (rise or fall) so that the
first clock edge triggers a majority of cells on a clock. The timing arcs in the
technology library specify each cell’s trigger polarity. The polarity of the second
edge is the opposite of the polarity of the first edge (if the first edge is rising, the
second edge is falling; if the first edge is falling, the second edge is rising).
Use the create_test_clock command to specify clock waveforms if your
semiconductor vendor’s requirements differ from the default timing.
The create_test_clock command has a period associated with it. That
period has to be identical to the test_default_period value. If you change
the value of one, you must check the value of the other.
The syntax for setting the variable is:
set test_default_strobe_width strobe_width
For example:
dc_shell-t> set test_default_strobe_width 1.0
45
Setting Timing Attributes
Setting Timing Attributes
Note:
When test_default_strobe_width is 0.0 ns, the strobe width is equal
to one of two values: the difference between the strobe time and the end of
the period, or the difference between the strobe time and the first input event
after the strobe occurs, whichever occurs first.
Period
Delay = 0
Bidirectional delay = 0
Start of Strobe
Strobe width
46
6
Test Protocols6
47
Test Protocols
Design Characteristics for Test Protocols
Clock Ports
You specify clock ports (and their timing attributes) using the
create_test_clock command.
Clock ports can also be inferred by tracing back from the clock pins on all
sequential elements to the ports driving these pins. The default timing for the
clock signals is determined by the scan_style setting.
Bidirectional Ports
In all cycles except parallel measure and capture, all nondegenerated
bidirectional ports are assumed to be in output (driving) mode. They are
appropriately masked. During parallel measure and capture cycles, automatic
test-pattern generation (ATPG) data controls the bidirectional ports as normal
input or output ports, but test_default_bidir_delay controls the timing.
48
Test Protocols
STIL Test Protocol File Syntax
Both DFT Compiler and TetraMAX use the IEEE P1450.1 extensions to STIL.
For details, see Appendix E, “STIL IEEE P1450.1 Extensions” in the TetraMAX
ATPG User Guide.
49
Test Protocols
STIL Test Protocol File Syntax
STIL;
ScanStructures {
ScanChain "c1" { ScanIn SDI2; ScanOut SDO2; }
ScanChain "c2" { ScanIn SDI1; ScanOut D1; }
ScanChain "c3" { ScanIn DIN; ScanOut YABX; }
ScanChain "c4" { ScanIn "IRQ[4]"; ScanOut XYZ; }
}
Procedures {
"load_unload" {
V { CLOCK=0; RESETB=1; SCAN_ENABLE = 1; }
Shift {
V { _si=####; _so=####; CLOCK=P;}
}
}
}
MacroDefs {
test_setup {
V {TEST_MODE = 1; PLL_TEST_MODE = 1; PLL_RESET = 1; }
V {PLL_RESET = 0; }
V {PLL_RESET = 1; }
}
}
50
Test Protocols
STIL Test Protocol File Syntax
1. STIL;
2. UserKeywords PinConstraints;
3. PinConstraints { "TEST_MODE" 1; "PLL_TEST_MODE" 1; }
4. SignalGroups {
5. bidi_ports '"D[0]" + "D[1]" + "D[2]" + "D[3]" + "D[4]" +
"D[5]" + "D[6]" + "D[7]" + "D[8]" + "D[9]" + "D[10]" + "D[11]"
+ "D[12]" + "D[13]" + "D[14]" + "D[15]" ‘;
6. input_grp1 'SCAN_ENABLE + BIDI_DISABLE + TEST_MODE +
PLL_TEST_MODE' ;
7. input_grp2 'SDI1 + SDI2 + DIN + "IRQ[4]"' ;
8. in_ports 'input_grp1 + input_grp2';
9. out_ports 'SDO2 + D1 + YABX + XYZ';
10. }
11. Timing {
12. WaveformTable "BROADSIDE_TIMING" {
13. Period '1000ns';
14. Waveforms {
15. CLOCK { P { '0ns' D; '500ns' U; '600ns' D; } } // clock
16. CLOCK { 01Z { '0ns' D/U/Z; } }
17. RESETB { P { '0ns' U; '400ns' D; '800ns' U; } } // async
reset
18. RESETB { 01Z { '0ns' D/U/Z; } }
19. input_grp1 { 01Z { '0ns' D/U/Z; } }
20. input_grp2 { 01Z { '10ns' D/U/Z; } }
// outputs are to be measured at t=350
21. out_ports { HLTX { '0ns' X; '350ns' H/L/T/X; } }
// bidirectional ports as inputs are forced at t=20
22. bidi_ports { 01Z { '0ns' Z; '20ns' D/U/Z; } }
23. // bidirectional ports as outputs are measured at t=350
24. bidi_ports { X { '0ns' X; } }
25. bidi_ports { HLT { '0ns' X; '350ns' H/L/T; } }
26. }
27. } // end BROADSIDE_TIMING
28. }
29. ScanStructures {
30. ScanChain "c1" { ScanIn SDI2; ScanOut SDO2; }
31. ScanChain "c2" { ScanIn SDI1; ScanOut D1; }
32. ScanChain "c3" { ScanIn DIN; ScanOut YABX; }
33. ScanChain "c4" { ScanIn "IRQ[4]"; ScanOut XYZ; }
34. } // end scan structures
35. Procedures {
51
Test Protocols
STIL Test Protocol File Syntax
36. "load_unload" {
37. W "BROADSIDE_TIMING" ;
38. V {CLOCK=0; RESETB=1; SCAN_ENABLE=1; BIDI_DISABLE=1;
bidi_ports = \r16 Z;}
39. V {}
40. V { bidi_ports = \r4 1010 ; }
41. Shift {
42. V { _si=####; _so=####; CLOCK=P;}
43. }
44. } // end load_unload
45. } //end procedures
46. MacroDef {
47. "test_setup" {
48. W "BROADSIDE_TIMING" ;
49. V {TEST_MODE = 1; PLL_TEST_MODE = 1; PLL_RESET = 1;
50. BIDI_DISABLE = 1; bidi_ports = ZZZZZZZZZZZZZZZZ; }
51. V {PLL_RESET = 0; }
52. V {PLL_RESET = 1; }
53. } // end test_setup
54. } //end procedures
STIL;
ScanStructures {
ScanChain "c1" { ScanIn SDI2; ScanOut SDO2; }
ScanChain "c2" { ScanIn SDI1; ScanOut D1; }
ScanChain "c3" { ScanIn DIN; ScanOut YABX; }
ScanChain "c4" { ScanIn "IRQ[4]"; ScanOut XYZ; }
}
Procedures {
"load_unload" {
V { CLOCK=0; RESETB=1; SCAN_ENABLE=1; }
}
}
52
Test Protocols
Defining an Initialization Protocol
STIL;
ScanStructures {
ScanChain "c1" { ScanIn SDI2; ScanOut SDO2; }
ScanChain "c2" { ScanIn SDI1; ScanOut D1; }
ScanChain "c3" { ScanIn DIN; ScanOut YABX; }
ScanChain "c4" { ScanIn "IRQ[4]"; ScanOut XYZ; }
}
Procedures {
"load_unload" {
V { CLOCK=0; RESETB=1; SCAN_ENABLE = 1; }
Shift {
V { _si=####; _so=####; CLOCK=P;}
}
}
}
53
Test Protocols
Defining an Initialization Protocol
FF2
test_mode FF1_out
enable FF1
clk
54
Test Protocols
Defining an Initialization Protocol
In this design, the clock signal, clk, is active low. In order for the clock signal to
reach FF2, we need to initialize it by pulsing clk once, so that the enable signal
FF1_out is asserted. Since the create_test_protocol command has no
knowledge of this requirement, we need to modify the generated protocol to
include this special initialization sequence.
The initialization sequence generated by the create_test_protocol
command looks like the following:
"test_setup" {
W "_default_WFT_";
V { "CLK"=1; }
V { "CLK"=1; "test_mode"=1; }
}
If this initialization sequence has not been modified, test DRC gives the
following violations:
4 PRE-DFT VIOLATIONS
3 Uncontrollable clock input of flip-flop violations (D1)
1 Clock not able to capture violation (D8)
Test DRC requires that all clock signals must be in their inactive state at the end
of the initialization sequence. When this initialization sequence is applied, test
DRC indicates there are no test design rule violations.
However, after insert_dft, this initialization sequence is lost. You must
reapply the same initialization sequence to ensure that post-scan insertion test
DRC reports no violations.
55
Test Protocols
Scan Shift and Parallel Cycles
56
Test Protocols
Scan Shift and Parallel Cycles
57
Test Protocols
Examining a Test Protocol File
-out test_protocol_file_name
The name of the ASCII output file. The default file name is
design_name.spf, where design_name is the current design, and the
.spf extension identifies the file type as a STIL format test protocol file.
-format stil
Determines if the protocol is written in Standard Test Interface Language
(STIL) format or Synopsys test protocol format (tpf). The default format is
STIL. This book only discusses the STIL format.
Note:
Do not use the write_test_protocol command before you run
create_test_protocol. If you do, you will get an error message to the
effect that no test protocol exists.
Example 12 shows the test protocol file for a multiplexed flip-flop design. This
file was generated using the write_test_protocol command after
executing test design rule checking on the design.
Example 12 Test Protocol for Multiplexed Flip-Flop Design Example
STIL 1.0 {
Design P2000.9;
}
Header {
Title “DFT Compiler 2003.06 STIL output”;
Date “Thu Apr 10 14:30:34 2003”;
History {
}
}
Signals {
“CDN” In; “CLK” In; “DATA” In; “IN1” In; “TEST_SE” In; “TEST_SI”
In;
“OUT1” Out; “OUT2” Out;
}
58
Test Protocols
Examining a Test Protocol File
SignalGroups {
“all_inputs” = ‘”CDN” + “CLK” + “DATA” + “IN1” + “TEST_SE” +
“TEST_SI”’; // #signals=6
“all_outputs” = ‘”OUT1” + “OUT2”’; // #signals=2
“all_ports” = ‘”all_inputs” + “all_outputs”’; // #signals=8
“_pi” = ‘”all_inputs”’; // #signals=6
“_po” = ‘”all_outputs”’; // #signals=2
}
Timing {
WaveformTable “_default_WFT_” {
Period ‘100ns’;
Waveforms {
“all_inputs” { 0 { ‘5ns’ D; } }
“all_inputs” { 1 { ‘5ns’ U; } }
“all_inputs” { Z { ‘5ns’ Z; } }
“all_inputs” { N { ‘5ns’ N; } }
“all_outputs” { X { ‘0ns’ X; } }
“all_outputs” { H { ‘0ns’ X; ‘95ns’ H; } }
“all_outputs” { T { ‘0ns’ X; ‘95ns’ T; } }
“all_outputs” { L { ‘0ns’ X; ‘95ns’ L; } }
“CLK” { P { ‘0ns’ D; ‘45ns’ U; ‘55ns’ D; } }
“CDN” { P { ‘0ns’ U; ‘45ns’ D; ‘55ns’ U; } }
}
}
}
PatternBurst “__burst__” {
PatList {
“__pattern__” {
}
}
}
PatternExec {
PatternBurst “__burst__”;
}
Procedures {
“capture” {
W “_default_WFT_”;
V { “_pi”=\r6 #; “_po”=\r2 #; }
}
“capture_CLK” {
W “_default_WFT_”;
“forcePI”: V { “_pi”=\r6 #; }
“measurePO”: V { “_po”=\r2 #; }
“pulse”: V { “CLK”=P; }
}
“capture_CDN” {
W “_default_WFT_”;
“forcePI”: V { “_pi”=\r6 #; }
59
Test Protocols
Examining a Test Protocol File
“measurePO”: V { “_po”=\r2 #; }
“pulse”: V { “CDN”=P; }
}
}
MacroDefs {
“test_setup” {
W “_default_WFT_”;
V { “CLK”=0; }
V { “CDN”=1; “CLK”=0; }
}
}
60
7
Masking DRC Violations7
Overview
DFT Compiler includes three commands that are used in support of setting,
resetting, or reporting the severity of DRC violations:
• set_dft_drc_rules
• reset_dft_drc_rules
• report_dft_drc_rules
61
Masking DRC Violations
Setting the Severity of DRC Violations
62
Masking DRC Violations
Resetting the Severity of DRC Violations
You can explicitly specify the cells you want to change using the -cell option
and entering the names of the applicable cells. If you don’t specify the -cell
option, the set_dft_drc_rules command will apply to all cells in the
design.
The following set of examples changes:
• the severity of DRC violation TEST-504 for all cells to WARNING
• the severity of DRC violation TEST-505 for cells reg3 and reg4 to WARNING
• the severity of DRC violation TEST-505 for cell reg6 to IGNORE
63
Masking DRC Violations
Reporting the Severity of DRC Violations
-cell {cell_list}
Specifies the cells for which the violation severity is to be changed to their
default value. If no cells are specified, the violation severity is changed for
all the cells in the design.
The following set of examples changes the severity of DRC violation TEST-504
for all cells to default severity ERROR, and TEST-505 for cells reg3, reg4 to
default severity ERROR:
64
Masking DRC Violations
Reporting the Severity of DRC Violations
dc_shell-t> report_dft_drc_rules
65
Masking DRC Violations
Reporting the Severity of DRC Violations
66
Index
A commands
create_test_clock 45, 48
asynchronous control ports 48 dft_drc
available STIL formats 49 violation reporting 8
help 8
B link 32
set_scan_configuration
behavioral modeling 31
-style option 56
bidirectional delay
write_test_protocol 58
(see also test_default_bidir_delay variable) 42
correcting
default 42
black box library cells 32
incorrect, risks of 43
create_test_clock command 45, 48
requirements 43
specifying 42
usage 43 D
bidirectional ports default test protocol
design characteristics 48 specifying timing information 41
bidirectional timing 42 design characteristics and test protocol 47
black box cell dft_drc
causes 32 and insert_dft 9
set_test_assume 31 directing output to a file 8
structural model 33 dont_touch attribute 36
functional cell models 31
C nonscan latches 37
scan equivalent cells 35
clock timing
set_scan false command 36
default 45
set_scan_element command 35
meeting vendor requirements 44
summarizing violations 6
specifying 45
dft_drc command
messages
error (see also messages, error) 8
warning (see also messages, warning) 7
-verbose option 8, 10
violation reporting 8
67
dont_touch attribute, and dft_drc 36 multibit
supported library cells 34
E
environment variables N
test_default_scan_style 56 nonscan latch modeling 37
F O
fault coverage online help, messages 8
evaluating output
sequential cell summary 9 strobe
functional model 31 default 44
specifying 44
H
help command 8 R
requirements
bidirectional delay 43
I
identifying
black box cells 32 S
inferred test protocol scan cell equivalent check 35
bidirectional delay 42 scan replacement
default delay 42 effects of violations 8
examining 58 scan shift
scan shift and parallel cycles 56 auxiliary-clock LSSD scan style 57
information message, dft_drc 7 clocked-scan scan style 57
input LSSD scan style 57
delay multiplexed flip-flop scan style 56
default 42 scan_style attribute 47
specifying 42 sequential cell
timing 42 summary report 9
insert_dft command sequential cells
and dft_drc 9 exclusion from scan chains 9
summary
with violations 28
L without violations 29
link command 32 set_scan_configuration command 56
load_unload procedure set_scan_element command
STIL format 52 and dft_drc 36
to prevent scan replacement 36
M to suppress TEST-120 warning 35
meeting vendor requirements set_test_hold 54
test timing shift procedure
clock waveforms 44 STIL format 53
messages signal timing
information 7 STIL format 50
warning signal_type attribute 48
TEST-451 32
68
specifying test_scan_clock attribute 57
bidirectional delay 42 test_scan_clock_a attribute 57
clock timing 45 test_scan_clock_b attribute 57
input delay 42
test_setup macro 49
output strobe 44
TEST-120 35
test period 41
STIL formats TEST-121 36
available 49 TEST-124 9
load_unload procedure 52 TEST-202 36
shift procedure 53 TEST-224 36
signal timing 50 TEST-450 to TEST-459 7
test_setup macro 49 TEST-451 31, 35
strobe 44 TEST-451 message 32
structural model, example 33 TEST-460 to TEST-469 7
summarizing violations 6 TEST-462 34
TEST-463 34
T TEST-464 34
test design rules 8 TEST-465 34
test period TEST-466 34
default 41 TEST-467 34
specifying 41 TEST-468 34
test protocol timing
design characteristics 47 attributes
test variables effect on vector formatting 46
test_default_bidir_delay 42
test_default_delay 42 U
test_default_period 41
unsupported cells 35
test_default_strobe 43
test_default_strobe_width 44
test_default_bidir_delay variable 42 V
definition 42 variables
setting 42 test
test_default_delay variable 42 test_default_bidir_delay 42
definition 42 test_default_delay 42
setting 42 test_default_period 41
test_default_period variable 41 test_default_strobe 43
definition 41 test_default_strobe_width 44
setting 41 test_default_bidir_delay 42
test_default_delay 42
test_default_scan_style variable 56
test_default_period 41
test_default_strobe variable 44
test_default_scan_style 56
definition 43
test_default_strobe 44
setting 43
vector
test_default_strobe_width variable
formatting, timing attributes 46
definition 44
-verbose option, dft_drc command 8, 10
setting 44
69
violations W
modeling
black boxes 31 write_test_protocol command 58
generic cells 35
latches 37
no scan cell equivalents 35
scan cell equivalents and dont_touch attribute
36
unsupported cells 33
preventing scan insertion 62, 63, 64
summarizing 6
70