dft4
dft4
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.
ii
Contents
Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Related Publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Customer Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
1. Design-for-Test Methodologies
Getting the Best Results With Scan Design. . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Scan Insertion Methodologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Bottom-Up Scan Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Top-Down Scan Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
iii
Invoking Constraint-Optimized Scan Insertion . . . . . . . . . . . . . . . . . . . . . . . . . 25
Scan Replacement and Assembly in a Single Step . . . . . . . . . . . . . . . . . 25
Scan Replacement Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Specifying Scan Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
iv
4. Default Scan Synthesis
Scan Replacement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Scan Element Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Test Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Pad Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Area and Timing Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
v
7. More DFT Methodologies
What is Test Data Volume Reduction for Scan? . . . . . . . . . . . . . . . . . . . . . . . 81
Analyzing Observe Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Bottom-Up Observe Test Point Analysis and Insertion . . . . . . . . . . . . . . 82
AutoFix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Shadow LogicDFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Hierarchical Scan Synthesis (HSS) Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Introduction to Test Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Creating Test Models for Subdesigns . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Linking Test Models to Library Cells. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Checking if a Library Contains CTL Models. . . . . . . . . . . . . . . . . . . . . . . 92
Scan Assembly Using Test Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Using Netlist Information Instead of the Test Model. . . . . . . . . . . . . . . . . 93
Saving Test Models for Subdesigns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Using Test Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Reading Designs Into TetraMAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Managing Test Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Top Level Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Index
vi
About This Manual
The DFT Compiler DFT Planning User Guide describes the planning phase for
your DFT project 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
Design-for-Test Methodologies1
1
Design-for-Test Methodologies
Getting the Best Results With Scan Design
- Be careful when you use gated clocks. If the clock signal at a flip-flop or
latch is gated, a primary clock input might not be able to control its state.
If your design has extensive clock gating, use AutoFix or provide
another way to disable the gating logic in test mode.
Note:
DFT Compiler supports gated-clock structures inserted by Power
Compiler.
- Generate clock signals off-chip. If clock signals are generated on-chip
(as in frequency dividers), you cannot control the state of the sequential
cells driven by these signals. If your design includes internally
generated clock signals, use AutoFix or provide another way to bypass
these signals during testing.
- Minimize combinational feedback loops. Combinational feedback loops
are difficult to test because they are hard to place in a known state.
- Use scan-compatible sequential elements. Be sure that the library you
select has scannable equivalents for the sequential cells in your design.
- Avoid uncontrollable asynchronous behavior. If you have asynchronous
functions in your design (for example, flip-flop preset and clear), use
AutoFix so that you can control the asynchronous pins, or make sure
you can hold the asynchronous inputs inactive during testing.
- Control bidirectional signals from primary inputs.
The scan design technique does not work well with certain circuit structures,
such as:
• Large, nonscan macro functions (for example, microprocessor cores)
• Compiled cells (for example, RAM and arithmetic logic units)
• Analog circuitry
For these structures, you must provide a test method that you can integrate
with the overall scan-test scheme.
2
Design-for-Test Methodologies
Scan Insertion Methodologies
3
Design-for-Test Methodologies
Scan Insertion Methodologies
Define test
protocol
Check scan
design rules
Assemble scan
chains
Check scan
design rules
Write test
protocol
ATPG
To use the bottom-up scan insertion flow, perform the following steps:
4
Design-for-Test Methodologies
Scan Insertion Methodologies
The test protocol provides information about your design to the test design
rule checker.
4. Check design rules at the top level.
Evaluate the scan conformance of your design and determine if any
sequential cells violate the test design rules. Test design rule checking also
highlights design issues that can lower your fault coverage results.
If the results of your analysis show that the design does not meet your
requirements, you can often improve the results by modifying the test
protocol. However, in some cases you might have to modify the HDL
description.
5. Assemble the scan chains.
After inserting scan cells in all modules, assemble the scan chains at the top
level of the design. Use the same procedure for assembling scan chains at
the top level that you used at the module level, then run dft_drc to make
sure the resulting scan chains operate properly.
6. Finally, write out the verilog netlist and the test protocol to export to
TetraMAX (if you use TetraMAX as your ATPG tool).
Complete Design
Synthesize and
replace scan
Assemble scan
chains
Write test
protocol
ATPG
5
Design-for-Test Methodologies
Scan Insertion Methodologies
To use the top-down scan insertion flow, perform the following steps:
1. Synthesize your design, performing scan replacement.
2. Build scan chains at the top level of the design.
3. Write out the verilog netlist and the test protocol to export to TetraMAX (if
you use TetraMAX as your ATPG tool).
6
2
Design-for-Test Flows in the Logical Domain2
Term Definition
7
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
Term Definition
test_default_scan_style Defines the scan style used if you do not specify the
-style option of the set_scan_configuration
command. Possible scan styles are
multiplexed_flip_flop, clocked_scan,
lssd, and aux_clock_lssd.
For more information about these variables, see your Design Compiler
documentation.
8
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
9
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
HDL
Not met
Check constraints
Met
Check design rules Correct problems
Not
Check constraints Adjust constraints or
met try incremental compile
Met
TetraMAX ATPG
Compacted high fault coverage
test vectors
10
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
1. Select the target technology library and the link technology library.
dc_shell-t> set target_library asic_vendor.db
dc_shell-t> set link_library [ list * asic_vendor.db ]
If Design Compiler is unable to resolve any references, you must provide the
missing designs before proceeding. See your Design Compiler
documentation for details.
5. Select the design constraints. In this example, the design is constrained to
be no larger than 1,000 vendor units in area, and it runs with a 20-ns clock
period. Enter the following commands:
dc_shell-t> set max_area 1000
dc_shell-t> create_clock clock_port -period 20 \
-waveform {10,15}
6. Set the test timing variables to the values required by your ASIC vendor. If
you are using TetraMAX to generate test patterns and your vendor does not
have specific requirements, the following settings produce the best results:
dc_shell-t> set test_default_delay 0
dc_shell-t> set test_default_bidir_delay 0
dc_shell-t> set test_default_strobe 40
dc_shell-t> set test_default_period 100
11
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
7. Select the scan style if you did not previously set the
test_default_scan_style variable in the .synopsys_dc.setup file. In
this example, the scan style is multiplexed flip-flop.
Enter the following command:
dc_shell-t> set test_default_scan_style \
multiplexed_flip_flop
9. Check test design rules in the RTL source file using RTL TestDRC.
dc_shell-t> dft_drc
10. Synthesize a design that meets the constraints you set, and map your circuit
description to cells from the target technology library.
dc_shell-t> compile -scan
1. Check that you have satisfied the constraints you specified in Step 5 of the
previous procedure. Enter the command:
dc_shell-t> report_constraint -all_violators
2. This step is optional. You can save a copy of the design at this point. Enter
the command:
dc_shell-t> write -format db -out design_test_ready.db
12
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
Note:
Do not save a copy as ASCII text (Verilog, VHDL, or EDIF formats) and
then attempt to start a new session. DFT Compiler marks the test-ready
logic with attributes. These attributes are lost if you save the design as
ASCII text.
3. Generate a new test protocol for the synthesized design.
4. Check the test design rules, according to the scan style you chose in Step 7
of the previous procedure.
dc_shell-t> dft_drc
At this stage, DFT Compiler checks for and describes potential problems
with the testability of your design. After you correct all the problems that
cause warning messages, you can proceed with the next step. Failure to
correct the problems that cause warning messages typically results in lower
fault coverage.
If you do not follow this procedure, DFT Compiler creates a scan-enable port
and assumes an infinite drive strength on the port, and no buffering is
inserted.
2. Because you ran a test-ready compile, you do not want DFT Compiler to
perform a scan replacement on the design. To prevent DFT Compiler from
issuing a warning when you build scan chains, enter the command
dc_shell-t> set_scan_configuration \
-replace false
When you build scan chains using the insert_dft command, you
implicitly instruct DFT Compiler to perform scan replacement. If you do not
enter the set_scan_configuration -replace false command, DFT
13
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
Compiler recognizes that the design is already scan replaced and issues a
warning stating that DFT Compiler is overriding your implicit instruction to
perform scan replacement.
Note:
Do not use the set_scan_configuration -existing_scan true
command to prevent scan replacement. Use this command only when
scan chains exist in the design.
The set_scan_configuration command determines most of the
aspects of how DFT Compiler makes designs scannable. In this example,
all of the default settings are used except for the -replace false option.
3. Build the scan chains in your design. Enter the command:
dc_shell-t> insert_dft
When you add scan-test circuitry to a design, its area and performance
change. DFT Compiler minimizes the effect of adding scan-test circuitry on
compile design rules and performance by using synthesis routines. For
details of synthesis concepts such as compile design rules, see the Design
Compiler Reference Manual: Optimization and Timing Analysis. For details
about how DFT Compiler fixes compile design rule violations and
performance constraint violations, refer to the DFT Compiler Pre-Scan Test
Design Rule Checking User Guide.
4. Check that you have satisfied the constraints you specified in Step 5 of the
preceding section, “Synthesizing the Design”. Enter the command:
dc_shell-t> report_constraint \
-all_violators
5. Recheck the test design rules, according to the scan style you chose in
Step 7 of the preceding section, “Synthesizing the Design”.
dc_shell-t> dft_drc
At this stage, DFT Compiler checks for and describes potential problems
with the testability of your design. The checks run are more comprehensive
than those in Step 10 of the “Synthesizing the Design”” section and also
include checks for the correct operation of the scan chain. After you correct
all the problems that cause warning messages, you can proceed with the
next step. Failure to correct the problems that cause warning messages
typically results in lower fault coverage.
14
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
Note:
Rerun the dft_drc command before running report_test only if
you have modified your circuit since you last ran dft_drc.
7. Write out the complete design in Synopsys database format. Enter the
command
dc_shell-t> write -format db -hierarchy -out design.db
15
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
Mapped netlist
Set constraints
HDL Compiler,
Design Compiler,
Set scan style
DFT Compiler
Met
Not
Check constraints Adjust constraints or
met try incremental compile
Met
16
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
If Design Compiler is unable to resolve any references, you must provide the
missing designs before proceeding. See your Design Compiler
documentation for details.
4. Select the target technology library and the design constraints. In this
example, the design is constrained to be no larger than 1,000 vendor units
in area, and it runs with a 20-ns clock period. Enter the following commands:
dc_shell-t> max_area 1000
dc_shell-t> create_clock clock_port -period 20 \
-waveform {10,15}
Note:
If the file you read is a .db file, the target technology library and the
design constraints might already be set.
5. Set the test timing variables to the values required by your ASIC vendor. If
you are using TetraMAX to generate test patterns and your vendor does not
have specific requirements, the following settings produce the best results:
dc_shell-t> set test_default_delay = 0
dc_shell-t> set test_default_bidir_delay = 0
dc_shell-t> set test_default_strobe = 40
dc_shell-t> set test_default_period = 100
17
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
6. Select the scan style if you did not previously set the
test_default_scan_style variable in the .synopsys_dc.setup file. In
this example, the scan style is multiplexed flip-flop.
Enter the command:
dc_shell-t> set test_default_scan_style = \
multiplexed_flip_flop
8. Check the test design rules, according to the scan style you chose in Step 6.
dc_shell-t> dft_drc
At this stage, DFT Compiler checks for and describes potential problems
with the testability of your design. After you correct all the problems that
cause warning messages, you can proceed with the next step. Failure to
correct the problems that cause warning messages typically results in lower
fault coverage. Refer to the DFT Compiler Pre-ScanTest Design Rule
Checking User Guide for more information on design rule checking.
Because this design did not go through a test-ready flow, the dft_drc
command checks the library for equivalent scan cells to all the flip-flops in
your design.
18
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
If you do not follow this procedure, DFT Compiler creates a scan-enable port
and assumes an infinite drive strength on the port, and no buffering is
inserted.
2. Specify the scan architecture. In this example, direct DFT Compiler to build
two scan chains. Use the following command:
dc_shell-t> set_scan_configuration -chain_count 2
Because your design has no scan cells, DFT Compiler replaces the flip-flops
in your design with scannable equivalents before it builds scan chains.
When you add scan-test circuitry to a design, its area and performance
change. DFT Compiler minimizes the effect of adding scan-test circuitry on
compile design rules and performance by using synthesis routines. For
details of synthesis concepts such as compile design rules, see the Design
Compiler Reference Manual: Optimization and Timing Analysis. For details
about how DFT Compiler fixes compile design rule violations and
performance constraint violations, refer to the DFT Compiler Pre-Scan Test
Design Rule Checking User Guide.
4. Check that you have satisfied the constraints you specified in Step 4 of the
preceding section, “Reading in the Design”. Enter the command:
dc_shell-t> report_constraint -all_violators
5. Recheck the test design rules, according to the scan style you chose in
Step 4 of the preceding section, “Reading in the Design”.
dc_shell-t> dft_drc
At this stage, DFT Compiler checks for and describes potential problems
with the testability of your design. The checks run are more comprehensive
than those in Step 8 of the “Reading in the Design” section and also include
checks for the correct operation of the scan chain. After you correct all the
19
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
problems that cause warning messages, you can proceed with the next
step. Failure to correct the problems that cause warning messages typically
results in lower fault coverage.
The dft_drc command is an essential preprocess step to guarantee that
the reports generated by the report_test command are correct. You
must run the dft_drc command if you want to generate reports with the
report_test command.
Refer to the DFT Compiler Pre-ScanTest Design Rule Checking User Guide
for more information on design rule checking.
6. You can now use the report_test command to generate test reports. For
example, to view details of the scan chain, use the command:
dc_shell-t> report_test -scan_path
Note:
Rerun the dft_drc command before running report_test only if
you have modified your circuit since you last ran dft_drc .
7. Write out the complete design in Synopsys database format. Enter the
command:
dc_shell-t> write -format db -hierarchy -out design.db
20
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
Figure 5 shows a typical flow for using DFT Compiler on a design with existing
scan chains. At the end of the design flow, TetraMAX ATPG produces a set of
high fault coverage test vectors that you can readily adapt to your target tester.
Figure 5 Typical Flat Design Flow With Existing Scan Chains
Existing netlist
21
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
If Design Compiler is unable to resolve any references, you must provide the
missing designs before proceeding. See your Design Compiler
documentation for details.
4. Select the target technology library and the design constraints. In this
example, the design is constrained to be no larger than 1,000 vendor units
in area, and it runs with a 20-ns clock period. Enter the following commands:
dc_shell-t> max_area 1000
dc_shell-t> create_clock clock_port -period 20 \
-waveform {10,15}
Note:
If the file you read is a .db file, the target technology library and the
design constraints might already be set.
5. Set the test timing variables to the values required by your ASIC vendor. If
you are using TetraMAX to generate test patterns and your vendor does not
have specific requirements, the following settings produce the best results:
dc_shell-t> set test_default_delay = 0
dc_shell-t> set test_default_bidir_delay = 0
dc_shell-t> set test_default_strobe = 40
dc_shell-t> set test_default_period = 100
22
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
6. Select the scan style if you did not previously set the
test_default_scan_style variable in the .synopsys_dc.setup file. In
this example, the scan style is multiplexed flip-flop.
Enter the following command:
dc_shell-t> set test_default_scan_style = \
multiplexed_flip_flop
1. Because your design already has scan chains, you need to specify this to
DFT Compiler.
Enter the command:
dc_shell-t> set_scan_configuration -existing_scan true
Note:
If you read in the design from a .db file, this attribute might already be
set. You can check this with the report_test -configuration
command.
2. Identify the test ports to DFT Compiler. This example has a single scan
chain. Enter the commands:
dc_shell-t> set_signal_type test_scan_in \
test_scan_in_port
dc_shell-t> set_signal_type test_scan_out \
test_scan_out_port
dc_shell-t> set_signal_type test_scan_enable \
test_scan_enable_port
23
Design-for-Test Flows in the Logical Domain
Overview of Design-for-Test Flows
Note:
If you read in the design from a .db file, this attribute might already be
set. You can check this with the report_test -port command.
3. Check the test design rules, according to the scan style you chose in Step 6
of the preceding section, “Reading in the Design”, and using the test
attributes set in Step 1 and Step 2 of this section.
dc_shell-t> dft_drc
At this stage, DFT Compiler checks for and describes potential problems
with the testability of your design. The checks run include checks for the
correct operation of the scan chain. After you correct all the problems that
cause warning messages, you can proceed with the next step. Failure to
correct the problems that cause warning messages typically results in lower
fault coverage.
Running the dft_drc command is an essential preprocess to guarantee
that the reports generated by the report_test command are correct. You
must run the dft_drc command if you want to generate reports with the
report_test command.
Refer to the DFT Compiler Pre-ScanTest Design Rule Checking User Guide
for more information on design rule checking.
4. You can now use the report_test command to generate test reports. For
example, to view details of the scan chain, use the following command:
dc_shell-t> report_test -scan_path
Note:
Rerun the dft_drc command before running report_test only if
you have modified your circuit since you last ran dft_drc.
5. Write out the complete design in Synopsys database format. Enter the
following command:
dc_shell-t> write -format db -hierarchy -out design.db
24
Design-for-Test Flows in the Logical Domain
Designing Block by Block
25
Design-for-Test Flows in the Logical Domain
Invoking Constraint-Optimized Scan Insertion
Nonscan Design
See the DFT Compiler DFT Architecture User Guide for information about the
specification, preview and synthesis steps.
The following command sequence performs constraint-optimized scan
insertion (both scan replacement and scan assembly) on the optimized gate-
level design shown in Figure 7:
dc_shell-t> set_scan_configuration \
-style multiplexed_flip_flop
dc_shell-t> insert_dft
d1
q1
FD1
d3 q2
clk
FD1S
d2
sel
26
Design-for-Test Flows in the Logical Domain
Invoking Constraint-Optimized Scan Insertion
d3
d2 q2
sel
FD1S
d1
FD1S
test_si q1
clk
test_se
27
Design-for-Test Flows in the Logical Domain
Invoking Constraint-Optimized Scan Insertion
d3
d2
q2
sel
d1
q1
clk
28
3
Design-for-Test Flows in the Physical Domain3
29
Design-for-Test Flows in the Physical Domain
Overview of Placement-Based Design-for-Test Flows
preview_dft -physical
30
Design-for-Test Flows in the Physical Domain
Overview of Placement-Based Design-for-Test Flows
RTL check
Physical synthesis
Check DFT,
Check QOR
31
Design-for-Test Flows in the Physical Domain
Overview of Placement-Based Design-for-Test Flows
RTL-to-Placed-Gates Flow
In the RTL-to-Placed-Gates Flow, commonly referred to as the RTL2PG flow,
you start with an RTL design, set your design constraints, and compile your
design in the physical domain, rather than in the logical domain. This flow is
depicted in Figure 11.
Figure 11 RTL to Placed Gates Flow
Command Summary
create_test_protocol
RTL check dft_drc
set_dft_configuration
set_scan_configuration
DFT specification
set_dft_signal
create_test_protocol
DFT check dft_drc
32
Design-for-Test Flows in the Physical Domain
Overview of Placement-Based Design-for-Test Flows
Gates-to-Placed-Gates Flow
In the Gates-to-Placed-Gates Flow, commonly referred to as the G2PG flow,
you set your design constraints and compile your design in the logical domain,
rather than in the physical domain. Then you perform physical optimization and
insert placement-based scan chains. This flow is shown in Figure 12.
Figure 12 Gates-to-Placed-Gates Flow
Command Summary
set_dft_configuration
DFT specification set_scan_configuration
set_dft_signal
Placement/Optimization
read_pdef locations.pdef
physopt
create_test_protocol
DFT check dft_drc
33
Design-for-Test Flows in the Physical Domain
Overview of Placement-Based Design-for-Test Flows
dft_drc
Check DFT,
Check QOR report_timing
34
Design-for-Test Flows in the Physical Domain
Scan Chain Ordering and Partitioning Techniques
Figure 15 shows a wiring diagram in which the scan cells are ordered and
routed with physical information.
35
Design-for-Test Flows in the Physical Domain
Scan Chain Ordering and Partitioning Techniques
36
Design-for-Test Flows in the Physical Domain
Scan Chain Ordering and Partitioning Techniques
SI Q SO
SI SI Q SI Q U4
U1 U2
SI Q
U3
In Figure 16, a hold time violation is discovered between U1 and U2. To direct
Physical Compiler to fix the hold time violation, add the following statement to
your scan chain specification:
set_scan_configuration -minimize_hold_time true
37
Design-for-Test Flows in the Physical Domain
Scan Chain Ordering and Partitioning Techniques
SI Q SO
SI SI Q SI Q U4
U1 U2
SI Q
U3
Note that timing-based scan cell ordering could increase the total scan wire
length compared to placement-based scan cell ordering. To limit the amount
the wire length increases as a result of scan cell reordering, add the following
statement to your scan architecture specification:
set_scan_configuration -max_additional_wirelength int
where int is an integer expressed as a percentage of the placement-based
wire length.
An analysis is done to ensure that no new hold time violations are introduced
as a result of the new scan cell ordering.
38
Design-for-Test Flows in the Physical Domain
Scan Chain Ordering and Partitioning Techniques
39
Design-for-Test Flows in the Physical Domain
Hierarchical Scan Synthesis in the Physical Domain
Physical scan synthesis slices the X axis into thin layers and performs
partitioning on each layer.
This alternate form of partitioning can be beneficial if routing resources are
scarce in a particular direction.
40
Design-for-Test Flows in the Physical Domain
Hierarchical Scan Synthesis in the Physical Domain
Figure 19 shows that the logic between the input port and the first shift register
is preserved, as is the logic between the last shift register and the output port.
Clock connections to the preserved shift registers are kept as well. If no shift
registers are present on a net, the entire net is preserved. When you create
41
Design-for-Test Flows in the Physical Domain
Hierarchical Scan Synthesis in the Physical Domain
ILMs for hierarchical scan synthesis, the information about the scan chains in
the blocks is also preserved.
The interface logic contains all the circuitry from:
• Input ports to output ports.
• Transparent latches. They are treated as combinational logic.
• Input ports to edge-triggered registers.
• Edge-triggered registers to output ports.
• Clock trees that drive interface registers.
• Clock-gating circuitry that is driven by external ports.
42
Design-for-Test Flows in the Physical Domain
Hierarchical Scan Synthesis in the Physical Domain
43
Design-for-Test Flows in the Physical Domain
Hierarchical Scan Synthesis in the Physical Domain
44
Design-for-Test Flows in the Physical Domain
Hierarchical Scan Synthesis in the Physical Domain
Note:
The use of the propagate_ilm commands is required for the Physical
Compiler flow and is not unique to the physical scan flow.
45
Design-for-Test Flows in the Physical Domain
Hierarchical Scan Synthesis in the Physical Domain
Note:
The use of the propagate_ilm commands is required for the Physical
Compiler flow and is not unique to the physical scan flow.
46
Design-for-Test Flows in the Physical Domain
Hierarchical Scan Synthesis in the Physical Domain
47
Design-for-Test Flows in the Physical Domain
Troubleshooting
Troubleshooting
The following sections discuss what you can do to solve possible problems you
might encounter using DFT Compiler in the Physical Compiler environment.
Some common problems include:
• Unknown design state
• Missing port and cell locations
• Existing scan settings incorrect
• Timing problems
• Leaving scan enables unrouted
48
Design-for-Test Flows in the Physical Domain
Troubleshooting
Timing Problems
The insert_dft -physical command performs local optimizations only on
the portions of the design that have changed. You can use the
report_timing command to determine if your timing needs have been met.
If timing needs are not met, you can perform a global optimization by using the
physopt -incremental command.
49
Design-for-Test Flows in the Physical Domain
Troubleshooting
50
4
Default Scan Synthesis4
Scan Replacement
DFT Compiler performs the following scan replacement tasks:
• Unscans scan-replaced elements from compile -scan or a previous scan
insertion if test design rule violations prevent their inclusion in a scan chain.
• Scan-replaces sequential elements if you did not previously perform a scan
replacement on sequential elements.
51
Default Scan Synthesis
Test Signals
the number of clock domains. The resulting design contains one scan chain
for each set of sequential elements clocked by the same edge of the same
test clock.
• Automatically infers existing scan chains both in the current design and in
subdesigns. This is only true if the design has the proper attributes.
• Does not reroute existing scan chains built by the insert_dft command
or subdesign scan chains built by the insert_dft command, even if the
existing routing does not conform to default behavior.
• Orders scan elements in scan chains alphanumerically. By default, the
insert_dft command alphanumerically orders scan elements within
scan chains across the full hierarchical path specification of the scan
element name.
Test Signals
DFT Compiler inserts and routes test signals in the following manner:
• Automatically inserts and routes global test signals to support the specified
scan style. These test signals include clocks and enable signals.
• Allocates ports to carry test signals. Where possible, the insert_dft
command uses mission (normal function) ports to carry scan-out ports and
inserts multiplexing logic, if required. The insert_dft command performs
limited checking for existing multiplexing logic to prevent redundant
insertion.
• Inserts three-state and bidirectional disabling logic during default scan
synthesis. The insert_dft command checks for existing disabling logic to
prevent redundant insertion.
Pad Cells
If the current design includes pad cells, the insert_dft command identifies
the pad cells and correctly inserts test structures next to them by:
• Ensuring correct core-side hookup to all pad cells and three-state drivers
• Inserting required logic to force bidirectional pads carrying scan-out signals
into output mode during scan shift
• Inserting required logic to force bidirectional pads carrying scan-in, control,
and clock signals into input mode during scan shift
52
Default Scan Synthesis
Area and Timing Optimization
53
Default Scan Synthesis
Area and Timing Optimization
54
5
Using Constraint-Optimized Scan Insertion5
55
Using Constraint-Optimized Scan Insertion
Constraint-Optimized Scan Insertion
Because the focus of this chapter is the scan replacement process, this
discussion assumes:
• The input to constraint-optimized scan insertion is an optimized nonscan
gate-level design
• The output from constraint-optimized scan insertion is an optimized design
that contains unrouted scan cells (constraint-optimized scan insertion
performs scan replacement only)
Note:
When you do not route the scan chains, the optimization performed during
constraint-optimized scan insertion accounts for the timing impact of the
scan cell, but not of the additional loading due to the scan chain routing.
56
Using Constraint-Optimized Scan Insertion
Constraint-Optimized Scan Insertion
Change in Change in
input load drive resistance
d q d
scan_in q
scan_enable
clk
Increase in Change in intrinsics
setup and
hold times clk
Figure 21 shows the flow used to insert scan cells using constraint-optimized
scan insertion and the commands required to complete this flow.
Figure 21 Constraint-Optimized Scan Insertion Flow (Scan Replacement
Only)
57
Using Constraint-Optimized Scan Insertion
Scan Insertion
Scan Insertion
To alter a default scan design, you must specify changes to the scan
configuration. You can make specifications at any point before scan synthesis.
This section describes the specification commands you can use.
With the DFT Compiler scan insertion capability, you can:
• Implement automatically balanced scan chains
• Specify complete scan chains
• Generate scan chains that enter and exit a design module multiple times
• Automatically fix certain scan rule violations
• Automatically insert shadow logic
• Reuse existing modules that already contain scan chains
• Control the routing order of scan chains in hierarchy
• Perform scan insertion from the top or the bottom of the design
58
Using Constraint-Optimized Scan Insertion
Scan Insertion
Specification Synthesis
Reporting Preview
"what-is" report
59
Using Constraint-Optimized Scan Insertion
Scan Insertion
Specification
During the specification phase, you use the scan and dft specification
commands to describe how the insert_dft command should configure the
scan chains and the design. You can apply the commands interactively from
the dc_shell or use them within design scripts. The specification commands
annotate the database but do not otherwise change the design. They do not
cause any logic to be created or any scan routing to be inserted.
The specification commands apply only to the current design (as determined
by the current_design command) and to lower-level subdesigns within the
60
Using Constraint-Optimized Scan Insertion
Scan Insertion
Scan Specification
Using the scan specification commands, you can specify as little or as much
scan detail as you want. If you choose not to specify any scan detail, the
insert_dft command implements the default full-scan methodology. If you
choose to completely specify the scan design that you require, you explicitly
assign every scan element to a specific position in a specific scan chain. You
can also explicitly define the pins to use as scan control and data pins.
Alternatively, you can create a partial specification, where you define some
elements but do not issue a complete specification. If you issue a partial
specification, the preview_dft command creates a complete specification
during the preview process.
The scan specification commands are as follows:
• set_scan_configuration
• set_scan_path
• set_scan_signal
• set_scan_element
• set_scan_segment
61
Using Constraint-Optimized Scan Insertion
Scan Insertion
• set_scan_link
• remove_scan_specification
These commands are described in detail later in this chapter.
DFT Configuration
The DFT configuration commands are as follows:
• remove_dft_configuration
• remove_port_configuration
• set_autofix_clock
• set_autofix_async
• set_autofix_configuration
• set_autofix_element
• set_dft_configuration
• set_dft_signal
• set_port_configuration
• set_wrapper_element
Preview
The preview_dft command produces a scan chain design that satisfies scan
specifications on the current design and displays the scan chain design for you
to preview. If you do not like the proposed implementation, you can iteratively
adjust the specification and rerun preview until you are satisfied with the
proposed design.
The scan preview process (the preview_dft command) performs two tasks:
• It checks the specification for consistency. For example, you cannot assign
the same scan element to two different chains.
• It creates a complete specification if you have specified only a partial
specification.
The dft preview process (the preview_dft command) performs the above
two tasks plus two more:
• It runs the specified utilities (AutoFix, Shadow LogicDFT).
62
Using Constraint-Optimized Scan Insertion
Scan Insertion
• It produces a list of test points that are to be inserted into the design based
on currently enabled utilities.
When you use either of the preview commands, you create a dc_shell script
that completely specifies the proposed implementation. You can edit this script
and use the edited script as an alternative means of iterating to a scan design
that meets your requirements.
Limitation:
Neither preview command annotates the database. If you want to annotate
the database with the completed specification, use the -script option to
create a specification dc_shell script, then run this script. The specification
commands in this script add attributes to the database.
Synthesis
You invoke the synthesis process using the insert_dft command, which
implements the scan design determined by the preview process. If you issue
this command without explicitly invoking the preview process, the insert_dft
command transparently runs preview_dft.
Execute the dft_drc command at least once before executing insert_dft.
Executing dft_drc provides information on circuit testability before inserting
scan into your design.
63
Using Constraint-Optimized Scan Insertion
Scan Insertion
64
6
Power Compiler and DFT Compiler Interoperability6
65
Power Compiler and DFT Compiler Interoperability
Improving Testability in Clock Gating
CLK
Clock Gating
You can place the control point OR gate in front of or behind the latch. Latch-
based clock gating requires that the enable signal always arrives after the
trailing edge (rising edge for falling-edge signal) of the clock. If the control point
is inserted before the latch, it is impossible for the control point to violate this
requirement. If it is inserted behind the latch, it behefits the circuit by adding
extra hold time margin for the clock glitch hold check. It does this by delaying
the data signal, which helps the clock pulse arrive ahead of the data.
Inserting the control point after the latch causes performance degradation
because a gate is added between the latch and the register. In addition, the
test_control signal must then transition after the trailing edge (rising edge
for falling-edge signal) of the clock signal during test because it does not go
through the latch; otherwise glitches in the resulting signal corrupt the clock
signal.
You can choose to make the test_control port either a scan_enable
signal or a test_mode signal. The scan_enable signal is active only during
scan shifting. The test_mode signal is active during the entire test.
66
Power Compiler and DFT Compiler Interoperability
Improving Testability in Clock Gating
67
Power Compiler and DFT Compiler Interoperability
Improving Testability in Clock Gating
= fully tested
In some situations you must use a test_mode. The control logic preceding
the clock-gating circuitry is not tested, as shown in Figure 25. In addition, the
clock gating logic can only be tested for "stuck-at-one" faults. During test, the
test_mode signal is always a logic "1", forcing the clock at the register bank to
switch at all times. One way to test the clock-gating logic circuitry is to add
observability logic to the design.
68
Power Compiler and DFT Compiler Interoperability
Improving Testability in Clock Gating
Levels of
“1” Design
Hierarchy
test_mode
Data In Data out
Latch
D Q
Register
Control LD LQ
Bank
D
Flip Q Logic EN
Flop LG clk
Enclk
clk
69
Power Compiler and DFT Compiler Interoperability
Improving Testability in Clock Gating
Register
D D Q Q
test_mode
Latch
I EN
FSM D Q
ENL
G
CLK
Control Point
Clock Gating
During test, observability circuitry allows observation of the ENL and ENL1
signals. In normal operation of the circuit, the XOR tree does not consume
power, because the NAND gates block all signal transitions of the ENL and
ENL1 signals.
The insertion of observation test points has high testability and is power-
efficient, because the XOR tree consumes power only during test and the clock
of the observation register is also gated.
The set_clock_gating_style command has two options for increasing
observability when you use the -control_signal test_mode option:
• The –observation_point option can be true or false. The default is
false. When you set this option to true, the
set_clock_gating_style command adds a cell that contains at least
one observation register and an appropriate number of XOR trees. The
scan chain includes the observation register. The output of the observation
register is not functionally connected to the circuit.
• The –observation_logic_depth option allows a depth_value
specification. The default depth_value is 5. The value determines the
depth of the XOR tree.
70
Power Compiler and DFT Compiler Interoperability
Improving Testability in Clock Gating
71
Power Compiler and DFT Compiler Interoperability
Improving Testability in Clock Gating
72
Power Compiler and DFT Compiler Interoperability
Improving Testability in Clock Gating
73
Power Compiler and DFT Compiler Interoperability
Power Compiler / DFT Compiler Interoperability Flows
74
Power Compiler and DFT Compiler Interoperability
Power Compiler / DFT Compiler Interoperability Flows
signal_type Register
D D Q Q
scan_enable
Latch
I X/X/X X/X/X
EN D Q 0/X/0
FSM
G
0/1/0
CLK
0/1/0
75
Power Compiler and DFT Compiler Interoperability
Power Compiler / DFT Compiler Interoperability Flows
Table 2 describes the configurations that can be used in the Power Compiler —
DFT Compiler flow. Two special cases (marked by ** in Table 2) require you to
modify the test protocol.
Consider the case of high latch-based clock gating controlled by a test_mode
and driven by a return-to-1 clock. If the control point is inserted before the latch,
then when the clock port is off (time = 0), the latch is blocked and the clock pin
is not controllable. This violation also occurs in the case of a low latch-based
clock gating controlled by a test_mode and driven by return-to-0.
To achieve a known state in the latch, add a clock pulse to the test_setup
section of the test protocol. Use the variable
76
Power Compiler and DFT Compiler Interoperability
Power Compiler / DFT Compiler Interoperability Flows
77
Power Compiler and DFT Compiler Interoperability
Power Compiler / DFT Compiler Interoperability Flows
Register
D D Q Q
time = 0
scan_enable
I X/X/X X/1/X
EN
FSM
CLK 0/1/0
Clock pin is not controlled (Violation 1)
time = 0
Clock CLK not able to capture (Violation 6)
Do not use the scan_enable to control clock gating. This is similar to the
situation discussed for the high latch-free clock gating driven by a return-to-0
clock. Test DRC prevents the clock-gated register from being scan-inserted.
This also happens for low latch-free clock gating controlled by a scan_enable
and driven by a return-to-0 clock.
Note:
Never use AutoFix to fix the clock pins of clock-gated registers if a control
point has been inserted during clock gating and if the clock-gating’s clock
signal is a primary input. In this case, AutoFix becomes glue logic; the clock-
gating control point and the AutoFix test point are redundant. The control
point of the clock gating should by itself control the clock pin since it was
inserted for this purpose.
78
Power Compiler and DFT Compiler Interoperability
Power Compiler / DFT Compiler Interoperability Flows
The dft_drc command checks if the clock off state is consistent with the build
optimizations. Both methods of defining clocks (through command or STIL
procedure files) are checked. If the intended clock off state is inconsistent with
build optimizations, an error is reported immediately and no further test design
rule checking is performed.
Error: invalid state offstate (Offstate of "CLK" is incompatible
with build optimizations). (TEST-570)
To address this issue, you need to modify the clock off state.
79
Power Compiler and DFT Compiler Interoperability
Power Compiler / DFT Compiler Interoperability Flows
80
7
More DFT Methodologies7
81
More DFT Methodologies
What is Test Data Volume Reduction for Scan?
pattern memory, without compromising test coverage, you could reduce the
cost of test. This is possible with test data volume reduction for scan (TDVR-
Scan).
TDVR-Scan allows you to insert observe test points into a design to reduce the
test data volume while maintaining the test coverage in the design.
82
More DFT Methodologies
AutoFix
AutoFix
Each scan flip-flop in a design must be clocked by a signal that can be
controlled by a primary input port. Otherwise, clocking of data into the flip-flop
cannot be controlled during test. In addition, the asynchronous preset and clear
inputs of each flip-flop must be inactive during test. Otherwise, the data in the
flip-flop can be set or cleared at any time, leaving unknown data in the flip-flop.
If a flip-flop is clocked by an uncontrollable signal, the command flags the
condition as a design rule violation. For example, Figure 29 shows a portion of
a schematic containing a flip-flop whose clock input cannot be controlled from a
primary input. The dft_drc command reports this as a design rule violation. If
you do not fix this violation, the flip-flop will not be included in a scan chain, and
faults downstream from the flip-flop output might not be detectable.
Figure 29 Uncontrollable Clock Input
D Q
D Q Combinational
logic
Uncontrollable
CLK clock input
83
More DFT Methodologies
AutoFix
D Q
D Q Combinational 0
logic 1
CLK
TM
The same TM signal can be used to enable and disable all multiplexers
inserted by AutoFix (and by Shadow LogicDFT as well). Note that the TM
signal is different from the scan-enable signal used to control shift and capture
using scan chains. The test mode signal is always active during test, including
during capture time.
AutoFix can automatically fix uncontrollable asynchronous preset and clear
inputs in a similar manner. For example, consider the subcircuit in Figure 31.
The asynchronous clear input of the upper-right flip-flop is connected directly to
the Q output of the lower-left flip-flop, causing the upper-right flip-flop to be
cleared at unpredictable times.
Figure 31 Uncontrollable Asynchronous Clear Input
Pre
D Q
Clr
D Q
CLK
Clr Uncontrollable
Asynchronous
RSTN Clear Input
84
More DFT Methodologies
Shadow LogicDFT
When asked to fix this type of violation, AutoFix inserts a multiplexer with one
input connected to logic 1, as shown in Figure 32. This is functionally the same
as an OR gate. For mission-mode operation, the TM signal is inactive, and the
circuit operates the same as without the inserted logic. During test, the TM
signal is asserted, which holds the clear input inactive.
Figure 32 Uncontrollable Asynchronous Clear Input Fixed by AutoFix
Pre
Pre
D D QQ
ClrClr
D Q
D Q 00
CLK
Clr 1 11
RSTNCLK
TM
TM
Shadow LogicDFT
The Shadow LogicDFT utility inserts test points on the inputs and outputs of a
designated element such as a RAM block. A RAM block is not controllable or
observable during test, so any combinational logic feeding a RAM input is not
observable, and any combinational logic at a RAM output is not controllable.
For test purposes, the RAM block is a “shadow” that interferes with the
testability of the surrounding logic, as illustrated in Figure 33.
85
More DFT Methodologies
Shadow LogicDFT
RAM
Combinational block
logic Combinational
logic
Unobservable Uncontrollable
address or data input data output
The Shadow LogicDFT utility inserts a “wrapper” around the block to make the
surrounding logic testable, as shown in Figure 34. Note that the two figures
show only the logic for one input and one output. Shadow LogicDFT works
similarly for each input and output of the RAM block.
86
More DFT Methodologies
Shadow LogicDFT
RAM
Combinational 0
logic block Combinational
1 logic
Sink Source
D Q D Q
TPCLK
TM
scan_in scan_out
On each address and data input to the block, Shadow LogicDFT adds a “sink”
to record the signal values during test. A sink is a scan flip-flop clocked by a
“test point clock” signal, shown as TPCLK in the figure. During test, the sink
captures the output of the combinational logic that ordinarily feeds the RAM
block input.
On each data output of the block, Shadow LogicDFT adds a “source” to provide
a signal value during test. A source is a scan flip-flop whose output is
multiplexed with the RAM block output. A test mode signal, shown as TM in the
figure, allows the flip-flop to provide a controllable output value during test. This
is typically the same test mode signal used by AutoFix.
Shadow LogicDFT adds somewhat different logic for the RAM chip select and
output enable inputs. During test, TM is asserted, causing the added logic to
87
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
deselect the chip and disable its outputs, thus isolating the RAM block from the
rest of the circuit during test.
If the RAM block has three-state outputs, Shadow LogicDFT connects another
three-state driver to each output signal line. During test, assertion of the TM
signal disables the RAM chip outputs and enables the added three-state
drivers, thus allowing the added circuitry to drive each output line with
controllable data stored in a scan flip-flop.
88
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
CLK
MINS
U1 U2 U3 U4
TEST_SI
TEST_SE HOURS
RESETN
HOURS_BUTTON
MINUTES_BUTTON
ALARM_BUTTON
89
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
Scan structure
Clock
HOURS_BUTTON
Inputs
MINUTES_BUTTON
ALARM_BUTTON
90
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
DFT Compiler cannot insert lock-up latches inside the test models. At the
subdesign level, you might want to insert a lock-up latch at the end of each
scan chain in the module. You can specify the insertion of lock-up latches
inside the module using the -insert_end_of_chain_lockup_latch
option of the set_scan_configuration command. See the DFT Compiler
DFT Architecture User Guide for more information about this option.
91
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
Scan out
Module 3 Module 3
Test model Test model
Module 2 Module 2
Test model Test model
92
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
The following sections contain more detail about creating and using test
models.
93
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
94
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
or VHDL top-level netlist. The following commands write out a protocol file and
a Verilog netlist for a top-level design called top:
dc_shell-t> write_test_protocol -format stil -out top.spf
dc_shell-t> write -format verilog -output top.v
If your top-level design contains test models for a subdesign, DFT Compiler
does not write out a gate-level netlist for that subdesign, even if you use the
-hierarchy option. The netlist written contains an empty module for the test
model subdesign. You must write a gate-level netlist for each subdesign
separately.
Example 15 shows how test models can be used at the top level of a design.
Example 15 Test Model Usage
Example 15 shows a typical script for the HSS flow. Note that dft_drc is run
right after insert_dft to verify that scan insertion is correct, without errors. If
dft_drc reports any serious violations, such as scan chain blockages, you
95
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
must fix these and rerun the script. Once dft_drc is successful, you can run
report_test -scan to get more information about scan chains.
Note:
When you use HSS flow, you must run dft_drc after scan insertion and
check the results. The results from the report_test command can be
considered only after dft_drc is error-free.
96
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
insert_dft
Test model
write -format db External .db file
Gates (.db)
Test model
write_test_model
Module interface
As shown in Figure 39, you can read test models into DFT Compiler using the
read or read_test_model command.
97
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
Gates read_test_model
Gates (.db)
Module interface
read_test_model Module interface
The different commands that you can use to write and to read test models allow
you to tailor the flow you use to meet your needs. There are several possible
flows:
• Use write_test_model to save a test model, and use read or
read_test_model to read it into DFT Compiler.
In this case, the file created by write_test_model contains only the test
model and module interface information, so this flow uses less memory and
improves execution time.
This flow is recommended for the greatest improvement in runtime and
memory usage, but you have the flexibility of using either of the following
flows.
• Use write to save a design with a test model, and use read_test_model
to read it into DFT Compiler.
98
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
The file created by the write command contains both a test model and
gate information. But the read_test_model command reads in only the
test model portion of the file, and notifies you DFT Compiler has removed all
implementation information. This flow uses less memory and improves
execution time.
• Use write to save a design with a test model, and use read to read it into
DFT Compiler.
The write command creates a file containing both the test model and the
gate information. The read command reads in both the test model and the
gate information, but DFT Compiler uses the test model by default. Because
of the test model usage, the execution time is improved, but you do not save
as much memory as with the other flows. This flow does not use commands
specific to test models, so it might fit in your existing flow with minimal
changes.
If you use the read command to read in both test model and gate
information, any optimization will be timing blind when the
test_use_test_models variable is set to true. If you want to perform top-
level optimization after scan insertion, first perform scan insertion with
test_use_test_models set to true, then perform subsequent
optimization steps with test_use_test_models set to false.
The test_use_test_models variable affects only test-related
commands such as dft_drc, and insert_dft. It does not affect
commands that perform timing or area optimization such as compile.
After such optimization, you might receive the OPT-463 warning message,
which states that scan chain information will be deleted from your design.
Note, however, that the test model will remain intact. To avoid receiving this
warning message, you can execute set_dont_touch on the instances
concerned.
99
More DFT Methodologies
Hierarchical Scan Synthesis (HSS) Flow
Verilog DB STIL
100
Index
A C
analog circuitry 2 cells
asynchronous behavior 2 obtaining lists of 49
attributes checking design rules in DFT Compiler design flow
clock_gate_test_pin 71 13, 18
AutoFix 78 chip level ILMs
running with preview_dft 62 gates to placed gates command flow 45
summary of 83 gates to placed gates flow 44
Automatic 65 RTL to placed gates command flow 46
RTL to placed gates flow 45
circuit description
B HDL-level 20
benefits reading an HDL-level 11, 17, 22
interface logic models 41 circuitry
benefits to using ILMs 41 in interface logic models 42
block level ILMs circuitry included in ILMs 42
gates to placed gates command flow 43 clock gating
gates to placed gates flow 43 improving testability 65
RTL to placed gates command flow 44 inserting control points 66
RTL to placed gates flow 44 inserting observation points 69
block-by-block design strategy 25 latch-based configurations 76
bottom up flow latch-free configurations 77
extracted in interface logic models 42 observability
bottom up flow for ILMs 42 logic depth, choosing 71
bottom-up design flow observability logic 71
overview 3 scan mode versus test mode 67
support for mixed scan states 55 clock signals, internally generated 2
clock_gate_test_pin attribute 71
combinational feedback loops, effect on scan
design 2
101
commands constraint-optimized scan insertion
create_ilm 47 degeneration support 56
extract_ilm 42 process 55
hookup_testports 71 process flow, scan replacement 57
insert_dft 25 scan replacement 55
default scan design 51 support for mixed scan states 55
invoking synthesis process 63 constraints, design 11, 17, 22
pad cells 52 control point 66
list_test_models 94 controllability 1
preview_dft 62 create_ilm command 47
creating a specification dc_shell script 63
default scan design 51
propagate_annotated_delay_up 42 D
propagate_ilm -delay 47 definitions
propagate_ilm -placement 47 nonscan design 55
propagate_placement_up 42 scan design 55
read_test_model 94, 97 scan insertion 25
remove_dft_configuration 62 test protocol 5
remove_port_configuration 62 unrouted scan design 55
remove_scan_specification 62 depth_value 70
report_cell -physical 49 description of interfaced logic models 40
report_port -physical 49 design constraints 11, 17, 22
set_attribute 71 design environment 7
set_autofix_clock 62 design flows
set_autofix_configuration 62 physical scan synthesis 30
set_autofix_element 62 design state
set_clock_gating_style 67, 70, 74 unknown 48
set_dft_configuration 62 design-for-test flows 7, 29
set_dft_signal 62, 67 DFT Compiler
set_port_configuration 62 interoperability issues 74
set_scan_configuration 27, 61 dft_drc command
set_scan_element 61 fixing violations with AutoFix 83
set_scan_link 62
set_scan_path 61 E
set_scan_register_type 28
set_scan_segment 61 extract_ilm command 42
set_scan_signal 61, 67
set_signal_type 71 F
set_Test_hold 71 fault coverage
set_test_model 93 and controllability 1
set_wrapper_element 62 maximizing 1
write_test_model 93, 96 fixing timing problems 49
compile command, test-ready 12 flows
compile -scan command, specifying scan cells 28 bottom-up scan insertion 4
compiled cells 2 design-for-test 7, 29
congestion top-down scan insertion 5
physical scan synthesis and 35
102
G interface logic models
benefits to using 41
gated clocks 2
bottom up flow 42
gates to placed gates
circuitry included in 42
block level ILM command flow 43
description of 40
chip level ILM command flow 45
gates to placed gates command flow at the block
chip level ILM flow 44
level 43
gates to placed gates flow gates to placed gates command flow at the chip
block level ILM 43 level 45
gates-to-placed-gates flow gates to placed gates flow at the block level 43
physical scan synthesis 33 gates to placed gates flow at the chip level 44
logic extracted for 41
H RTL to placed gates command flow at the block
HDL-level circuit description 20 level 44
RTL to placed gates command flow at the chip
hierarchical scan insertion 58 level 46
hierarchical scan synthesis, benefits of 3 RTL to placed gates flow at the block level 44
hookup_testports command 71 RTL to placed gates flow at the chip level 45
scan chain information in 40
I
ILMs L
benefits to using 41 list_test_models command 94
bottom up flow 42 logic
circuitry included in 42 extracted in interface logic models 41
described 40 logic extracted for ILMs 41
logic extracted for 41
scan chain information in 40
insert_dft M
unknown design state and 48 macro functions 2
insert_dft command 25 mapping your circuit description 12
default scan design 51 memory, reducing use of 88
invoking synthesis process 63 missing scan cells
pad cells 52 scan ordering and 49
specifying scan cells 28 missing scan ports
scan ordering and 49
O
observability logic, logic depth 71
obtaining lists of cells 49
obtaining lists of ports 49
off-chip clock signals 2
P
pad cells
insert_dft command 52
partitioning
placement based scan chain 39
103
Physical Compiler RTL to placed gates
and problems with physical scan synthesis 50 block level ILM command flow 44
physical scan block level ILM flow 44
unknown design state 48 chip level ILM command flow 46
physical scan placement chip level ILM flow 45
scan cell allocation 39 RTL-to-placed-gates flow
scan chain balancing 39 physical scan synthesis 32
scan clocks 39
physical scan problems
troubleshooting 48 S
physical scan synthesis scan cell
congestion and 35 specifying 28
design flows 30 scan cell allocation
gates-to-placed gates flow 33 physical scan placement 39
general flow 31 scan chain
partitioning 39, 40
problems with Physical Compiler and 50
with asserted scan_enable 75
reordering flow 34
scan chain balancing
RTL-to-placed-gates 32
physical scan placement 39
placement
scan chain information
scan chain partitioning based on 39
interface logic models 40
ports
obtaining lists of 49 scan chain information in ILMs 40
Power Compiler scan chain partitioning
interoperability issues 74 placement based 39
using scan enables 75 scan clocks
physical scan placement 39
using test_mode 74
scan design
preview_dft command 62
default 51
creating a specification dc_shell script 63
scan design technique 1
default scan design 51
scan enable 67
propagate_annotated_delay_up command 42
scan enables
propagate_ilm -delay command 47 leaving unrouted 50
propagate_ilm -placement command 47 scan insertion
propagate_placement_up command 42 bottom-up 3
definition 25
R hierarchical 58
preparing for 25
RAM cells 2
previewing (see also preview_dft command) 62
RAM, inserting shadow logic 85 previewing (see alsopreview_dft command) 62
read_test_model command 94, 97 specifying scan chain configuration 60
remove_dft_configuration command 62 remove_scan_specification command 62
remove_port_configuration command 62 set_scan_configuration command 61
remove_scan_specification command 62 set_scan_element command 61
reordering set_scan_link command 62
physical scan synthesis flow 34 set_scan_path command 61
report_cell -physical command 49 set_scan_segment command 61
report_port -physical command 49 set_scan_signal command 61
-route option, set_scan_configuration command 27 synthesis (see also insert_dft command) 63
top-down 5
104
scan ordering T
missing scan cells 49
target technology library 11, 17, 22
missing scan ports 49
scan replacement test mode 67
method 56 test mode signal 87
timing impact 56 inserted by AutoFix 83
using constraint-optimized scan insertion 55 test models 88
scan states creating 90
nonscan 55 managing 96
scan 55 overriding creation 93
supported by constraint-optimized scan insertion saving 93
55 scan assembly using 92
unrouted scan 55 using 94
scan style test points
selecting, in design flow 12, 18, 23 clock signal 87
scan_enable 75 inserting 63, 85
scan_enable port 71 test ports, connecting 71
scan_enable signal 66, 67 test protocol 76
scannable cell equivalents in library 2 test protocol, defined 5
set_attribute command 71 test_control port 66
set_autofix_clock command 62 test_mode port 71
set_autofix_configuration command 62 test_mode signal 66, 67, 69, 74
set_autofix_element command 62 test_setup_additional_clock_pulse variables 77
set_clock_gating_style command 67, 70, 74 test_use_test_models variable 42, 47, 90, 99
set_dft_configuration command 62 Test-ready compile 12
set_dft_signal command 62, 67 timing problems
set_port_configuration command 62 fixing 49
set_scan_configuration command 61 top-down design flow, overview 5
-route option 27 troubleshooting
physical scan 48
set_scan_element command 61
set_scan_link command 62
set_scan_path command 61 U
set_scan_register_type command 28 unknown design state 48
set_scan_segment command 61
set_scan_signal command 61, 67 V
set_signal_type command 71 variables
set_test_hold command 71 set_test_scan_partition 40
set_test_model command 93 test_setup_additional_clock_pulse 77
set_test_scan_partition variable 40 test_use_test_models 42, 47, 90, 99
set_wrapper_element command 62 violations, fixing with AutoFix 83
Shadow LogicDFT
running with preview_dft 62
understanding 85
W
sink, inserted by Shadow LogicDFT 87 write_test_model command 93, 96
source, inserted by Shadow LogicDFT 87
system variables 7
105
106