Professional Documents
Culture Documents
ILane Mainstream Flow Application Note
ILane Mainstream Flow Application Note
www.synopsys.com
Audience
This manual is intended for design engineers who are experienced in
testability concepts and test and design-for-test (DFT) engineers who want to
understand how to insert DFT IP by using the TestMAX tools.
Related Publications
For additional information about TestMAX tools, see the documentation on the
Synopsys SolvNetPlus support site at the following address:
https://solvnetplus.synopsys.com/s/
You might also want to read the documentation for the following related
Synopsys products: TestMAX DFT, Formality, Fusion Compiler, and Design
Compiler®.
Tool Configuration
Several tools are used in the iLane test cases. The tool versions must be
correct to guarantee a consistent installation configuration.
Run the setup.csh script to verify if your setup has appropriate licenses and
tool versions to run the current version of iLane.
This is the list of tools and their versions used in the iLane Mainstream flow:
TestMAX Manager (dft_shell): T-2022.03-SP1
Fusion Compiler: T-2022.03-SP1
Design Compiler: T-2022.03-SP1
TestMAX ATPG (tmax2): T-2022.03-SP1
Formality: R-2020.09-SP5
Stil2Verilog: T-2022.03-VAL-20220411
STILGen: T-2022.03-VAL-20220411
Stil2pdl: T-2022.03-SP1-VAL-20220414
TestMAX ALE: T-2022.03-SP1
Spyglass: S-2021.09-SP2
VCS: S-2021.09-SP2-1
PrimeTime: T-2022.03-SP1
TestMAX Vtran: T-2022.03-SP1
The STAR memory system (SMS) and STAR hierarchical system (SHS)
compilers and binaries are picked up from the TestMAX Manager build path.
The versions of the tools defined in the common_setup.csh file must match
the versions above.
#edit this file to match your settings, library and tool version
vi ./ common_setup.csh
run_flow
Note:
Change my_iLane_work to the directory name you prefer.
After installing the design and library files, update the following shell scripts to
configure the appropriate tools:
cd <my_iLane_work>/iLane_Mainstream_Rev7.0
#edit this file to match your settings, library and tool version
vi ./common_setup.csh
run_flow
Note:
The library and tools installed should match those indicated in the
common_setup.csh file.
Verification Steps
The Mainstream flow testcase includes static and dynamic verification.
The following validation steps are used to validate the implemented features:
RTL validations:
RTL validation for the SMS IP using the TestMAX validate_dft
command
RTL testbenches for SMS simulation using the VCS tool
RTL testbenches for codec validation
Formal Verification (RTL vs DFT-inserted RTL Formality)
DRC validations:
Connectivity checks using the TestMAX validate_dft command
TestMAX ATPG DRC
Gate-level validations:
SMS pattern testbenches simulation using the VCS tool
TestMAX ATPG using the run_sim command
Gate-level 0-delay simulation of patterns using the VCS tool
o ATPG manufacturing patterns: Serial and parallel
Static timing analysis (STA), synthesis constraint validation, and post-
processing
o Scan shift mode
Formal verification using the Formality tool
Boundary scan patterns simulation
Design Overview
The flow is implemented on a small size RTL design using a bottom-up flow.
The bottom-up flow is implemented across the following hierarchical levels:
Core
Subsystem
SoC
Each core and hierarchical level include logic (combinational and sequential)
that is included in a scan chain. A few memories are also instantiated in each
core and hierarchical level.
Clocks are generated by simple free-running clock module generators acting
as PLL. The sequential logic receives different clock sources and can be reset
asynchronously. The cores shaded in green, for example, core0, is
instantiated multiple times in subsystem and SoC levels.
At SoC level, in addition to the additional core0, some glue logic and
memories are present: A pad control logic (PCL), which includes pads and
direction control for all ports of the design, and an additional custom block,
which includes a few pads already connected with their boundary scan
register (BSR) to realize a BSR segment that is recognized and reused.
Clock Network
The clock network is controlled through automatically inserted OCC
controllers to enable high-quality at-speed testing.
Ensure that the following requirements are met:
1. Multiple external clocks are visible at SoC level
o ATE test clock,to control shift operations
o TCK test clock, to drive IEEE 1149.1 interface and logic
o Reference clock, to trigger and provide reference clock to PLL
2. Multiple clocks are generated internally by the PLL generators from a
dedicated reference input clock. The reference clock is dedicated to trigger
For hierarchical ATPG and pattern porting, the OCC is added at the core level
(for example, the OCC #2) as well at the higher level (for example, OCC #3).
This configuration (also referred to as cascaded OCC) allows you to use the
core-level OCC #2, when core level patterns are exercised (OCC #3 is
disabled), and higher-level OCC #3 when the cores are in EXTEST (wrp_of)
mode (OCC #2 is disabled). This configuration is added in the iLane
mainstream flow.
Asynchronous Reset
The asynchronous reset external pins are used as asynchronous resets for
the cores, the subsystem, and the SoC DFT logic.
The asynchronous reset signals are not used for any other purpose, for
example, WRSTN, occ_reset, or TRSTN.
Memories
Multiple memories with repair logic are included in the design to allow the
TestMAX SMS flow to be implemented. Each core instance of the design
In each core, a separate ring is implemented for the SMS (shadow subserver
configuration).
At the subsystem level, the additional processors are connected in a ring that
includes the rings pre-implemented in the cores. The SMS rings of the two
subsystems are handled differently. A shadow server is added at the
Subsystem0 level. This is a double shadow server on top of the shadow
server inside its core. A subserver is implemented in subsystem 1. The
subserver implemented in Subsystem1 drives the SMS rings.
On the other hand, subsystem0 adopts the double shadow server feature. All
the processors in subsystem0 and its cores are connected in one SMS ring.
This ring is further connected to top-level directly.
At the SoC level the following are implemented:
An SMS processor in the core is instantiated at the top-level
A top-level processor
A server to drive the subsystem1 and the SMS ring in subsystem0 and
SoC
The top-level server includes a shared fuse processor that is used to manage
the eFUSE and memory repair for the entire chip. The eFUSE is accessible
through a generic eFUSE interface.
Final Design
The following diagram shows the final design with all the major DFT features.
There are some differences between the two subsystems, which are not
shown in the diagram. Subsystem0 uses the shadow server and Subsystem1
uses the subserver.
Note:
Each step or task refers to one or more tool execution. In most cases,
tool execution in the previous step must be successful to progress to
the next step.
At each level in the design, you implement the required DFT features to test
the logic and memory in the design, optimize the manufacturing test, and
apply the scan compression methodology on DFTMAX/ DFTMAX Ultra to
reduce the test cost.
The following steps describes the features that you insert in the core.
1. Insert the TestMAX SMS IP to generate custom memory built-in self-test
(BIST) hardware with self-repair capability and BIST production patterns
with diagnostic capability. The TestMAX SMS network consists of multiple
SMS cores compliant to the IEEE 1500 standard.
For more information about enabling the TestMAX SMS hierarchical flow,
see the TestMAX SMS User Guide.
2. After implementing the SMS flow, enable the hierarchical adaptive scan
flows for DFTMAX/DFTMAX Ultra. This provides hierarchical support for
the cores and SMS IPs.
For more information about configuring, see the TestMAX Manager User
Guide.
For more information about using the Formality tool, see the Formality
User Guide.
4. Perform the synthesis and the scan-stitching operations using the Design
Compiler or Fusion Compiler tool.
For more information about the design flow in the Design Compiler Tool,
see the Design Flow in the Design Compiler User Guide.
For more information about the synthesis design flow in the Fusion
Compiler tool, see the Fusion Compiler User Guide.
For detailed instructions about core-level tasks, see Core- Level Tasks.
For more information about pattern porting and simulation see the
TestMAX ATPG and TestMAX Diagnosis User Guide.
2. Fault simulation determines the test coverage obtained by an externally
generated test pattern. To perform fault simulation, use functional test
patterns that were developed to test the design and were simulated in a
logic simulator to verify the correctness.
For more information about fault simulation, see the TestMAX ATPG and
TestMAX Diagnosis User Guide.
3. The TestMAX Diagnosis tool determines the root cause of failures
observed during the testing of a chip. The data obtained from diagnostics
identifies, cells and scan chains with defects, and any logic with defects.
Generate the reports that locate the candidate defects with match
percentage score.
For more information about inserting boundary scan cells in the SMS - SHS
design, see the SMS and SHS Designs article.
For more information about boundary-scan design and verification flow, see
the TestMAX DFT Boundary Scan User Guide.
For detailed instructions about SoC-level tasks, see SoC Level Tasks.
The scripts have detailed comments which describe the operations and scope
of the tasks.
Core: 00_testmax
Read the source RTL design (unless setenv netlist_flow yes),
generate, insert, and connect the TestMAX SMS components in the design.
The design files are read based on the user configuration file.
After reading the design, the SMS client is enabled. The script configures the
required settings to point the directory to the location of the MASIS models of
the memories, required SMS compilers, and signal settings needed to
implement memory BIST in the core.
Figure 9: SMS IP Insertion
The defined memory grouping is used by the next step. The DEF-based
memory grouping feature is implemented only in the SMS IP of core1. This
feature supports the memory group based on the proximity domain
parameter. For more information, see the TestMAX SMS User Guide.
2. generate_dft: TestMAX SMS MBIST components: such as SMS Wrappers
and SMS processors are created. The Smart BIST element and interface
in the processor are also created for the SMS self-test in function mode.
The UDS and CPF files are generated for the validate_dft command
and the connection file is generated for the connect_dft command.
3. connect_dft: The TestMAX SMS MBIST components created by the
generate_dft command, instantiated, and connected in the design.
4. validate_dft: The implementation is verified statically, (connectivity checks)
and dynamically (integrity check and simulation) checks to validate the
components, the connections, and the entire SMS core-level system.
This task uses the run_testmax.csh shell script. The TCL script used by
the dft_shell is scripts/testmax.tcl
This task generates the following output files:
ICT and WKS (Workspace) for integration at higher levels
Modified RTL Verilog
TestMAX SMS RTL components
Constraint files
UDS and CPF files for user-defined pattern generation
Core: 01_testmax
Read the RTL design created by the previous step. This task also generates,
inserts, and connects the scan compression (DFTMAX/DFTMAX Ultra) and
OCC components to the design. The list of files to be read is created by the
previous task.
DFTMAX Ultra scan compression inserted by default. To insert DFTMAX
instead of DFTMAX Ultra, change the environment variable Compr to scan in
the common_setup.csh file.
To switch to the dedicated scan wrapper (in the Design Compiler or Fusion
Compiler tool) or shared scan wrapper flow, disable RTL core wrapper
insertion in the TestMAX Manager tool.
At the end of the task, the VCS tool uses the RTL testbench to validate the
DFTMAX/DFTMAX Ultra codec, ensuring the correctness of the behavior and
connectivity of the modified RTL.
Figure 10: Core-Level DFTMAX Ultra and Wrapper RTL Insertion
Core: 10_formal
Run the Formality tool to perform the following formal verification:
RTL (original) against the SMS-inserted RTL
This task uses the run_fm.csh shell script. The Tcl script used by fm_shell:
scripts/fm.tcl
This task generates reports for each check step:
reports/*fmv_unmatched_points.rpt
Core: 20_fc
The DFT-inserted core-level RTL is synthesized using the Fusion Compiler
tool if the environment variable $syn is set to fc.
The design is synthesized from RTL to the mapped logic and optimized using
the linked technology library. The scan chains are routed and connected to
the existing codec’s inserted by the 01_testmax step.
The script includes commands of the following implemented features:
Ability to exclude logic from a specific test mode
Random resistant test points to improve the codec coverage and reduce
ATPG test patterns
Dedicated scan wrapper insertion or shared scan wrapper insertion
Flow enhancement to support the in-compile flow in the Fusion Compiler
tool
The modified design can run an optional incremental compile to fix hold
violations. The resulting netlist can then be verified and simulated using back
annotation.
The default design_setup.tcl file from the RM is replaced with the one defined
for the Mainstream flow.
This step generates the following output files:
Netlist Verilog of the design
Reports
Empty module definition
NDM
Core: 20_dc
The DFT-inserted core-level RTL is synthesized using the Design Compiler
tool if the environment variable $syn is set to dc. The compile_ultra
command is invoked to obtain better quality of results (QoR) when you
compile designs that have significantly tight timing constraints. The command
performs a bottom-up compilation.
The design is synthesized from RTL to mapped logic and optimized using the
linked technology library. The scan chains are routed and connected to the
existing codec inserted by the 01_testmax step.
The script includes commands of the following implemented features:
Ability to exclude logic from a specific test mode
Random resistant test point insertion to improve the codec coverage and
reduce ATPG test patterns
Dedicated scan wrapper or shared scan wrapper insertion
Insert power clock gating to save power
The Tcl script used by the dc_shell is scripts/dc_dftmax_mm_wrap.tcl.
This task generates the following output files:
Netlist Verilog of the design
Core: 21_formal
Run the Formality tool to verify the RTL (original) against the netlist after the
synthesis in the 20_dc or 20_fc step.
This task uses the run_fm.csh shell script. The Tcl script used by the
fm_shell is scripts/fm.tcl.
This task generates reports per each check step:
reports/*fmv_unmatched_points.rpt
Core: 30_pt
This task uses the PrimeTime tool to generate reports in all test modes.
This task uses the run_pt.csh shell script. The Tcl script used by the
pt_shell is scripts/pt_xlbist_mm_wrap.tcl.
Note:
If you are using the PrimeTime tool for enabling the PrimePower flow,
contact Synopsys customer support.
Core: 40_tmax_atpg
Core-level pattern generation for the manufacturing test uses the TestMAX
ATPG and TestMAX Diagnosis tools.
The following wrapper and OCC modes are used to generate the patterns for
the stuck-at fault model:
Compression wrp_if mode (OCC active and in bypass mode)
Scan wrp_if mode (OCC active and in bypass mode)
Scan wrp_of mode (OCC active and in bypass mode)
Scan mode bypass wrapper chain (OCC active and in bypass mode)
The following wrapper, and OCC modes are used to generate the patterns for
the transition fault model:
Compression wrp_if mode (OCC active and inactive mode)
Scan wrp_if mode (OCC active and inactive mode)
Scan wrp_of mode (OCC active and inactive mode)
Scan mode bypass wrapper chain (OCC active and inactive mode)
Core: 42_tmax_atpg_advanced_fault_model
This task generates an advanced fault model for use at the core level in
TestMAX ATPG compression mode. Low-power ATPG is also enabled. The
test sequence is:
1. Run the (pat-core-A) pattern for the slack-based transition fault model
(Fault-core-A)
2. Run the (pat-core-B) pattern incrementally for the stuck-at fault model
(Fault-core-B)
3. Fault-simulate the pat-core-A pattern against the dynamic bridge fault list
(Fault-core-C)
4. Fault-simulate pat-core-A and pat-core-B patterns against the bridge fault
list (Fault-core-D)
5. Fault-simulate the pat-core-A and pat-core-B patterns against the cell-
aware fault list (Fault- core-E)
6. Run the dynamic bridge pattern (pat-core-C) incrementally for the Fault-C
fault model (Fault-core-Ci)
7. Run the bridge pattern (pat-core-D) incrementally for the Fault-D fault
model (Fault-core-Di)
8. Run the cell-aware pattern (pat-core-E) incrementally for the Fault-E fault
model (Fault-core-Ei)
All patterns written out in each step are simulated in the TestMAX ATPG
(run_sim) and VCS tools in the following configurations:
Serial 0-delay simulation
Parallel 0-delay simulation
This task generates ATPG and VCS simulation reports. The slack data for the
slack-based transition fault is generated in the 30_pt directory. The CTM
model generation flow for cell-aware fault is in the ctm_generation_flow
directory.
Core: 50_vcs_sms
This step simulates the core-level gate-level pattern generation using the VCS
tool for SMS IP validation. Links are created to the patterns in the
00_testmax_ring directory.
The following modes are validated:
bist_all_fail_tb: Runs BIST for all SMS processors expecting no failures in
SMS memories except the TBOX_SEL instruction, which performs the
write/read operation (W(D), R(~D)).
signature_reg_check_tb: Read the processor ID register to verify the SMS
network connection.
sms_status_tb: Read the SMS status register default value.
bist_all_tb: Verifies all the MBIST Ips using the default algorithm and
checks the SMS result by reading out the SMS status register.
repair_verif_tb: Verifies the memory repair feature with error injection in
the testbench and checks the SMS result by reading out the SMS status
register.
The generated patterns are simulated using and the gate level netlist in the
VCS tool.
This task generates VCS simulation reports.
Core: 61_tmax_diagnosis
In this task, a virtual failure log is created using gate level simulation with fault
injection in DFTMAX/DFTMAX Ultra mode, to mimic a real ATE failure log.
The TestMAX Diagnosis tool is used to identify the candidate defect.
The following test modes with the stuck-at fault models are used to inject
faults:
Logic diagnosis: Forces the D pins of the sequential cell to a specific state
and runs VCS simulation to output the .diag (failure log) file.
Chain diagnosis: Force the SI pins of the scan cell to a specific state and
runs VCS simulation to output the .chain.diag (failure log) file.
After the failure logs are generated, run diagnosis on each failure log, and
generate reports that locate the candidate defects with the matching
percentage score.
Core: Summary
The flow described is executed for core0 and core1.
Subsystem0 Subsystem1
Subsystem: 00_testmax
This task reads the source RTL design of the subsystem and links to the DFT
views (CTL, ICT, WKS) required for the integration of the cores.
This task generates, inserts, and connects the TestMAX SMS components
required to test the memories that are instantiated in the current subsystem-
level design. This task also integrates and connects the core-level SMS and
IEEE 1500 rings implemented in the cores of the design.
Subsystem0 implements a ring-only shadow server configuration.
Subsystem1 implements a subserver.
The following figure shows the Subsystem0 design before the execution of
this task.
The ISH file is generated based on the setting for the SMS components
and shadow-server(subsystem0) or subserver(subsystem1) ring for the
SMS IP. This setting is used by the next step.
2. generate_dft: TestMAX SMS MBIST components such as SMS Wrappers,
SMS Processors, and the SMART BIST interface are created. The
subsystem1 subserver or subsystem0 shadow server are generated. UDS
and CPF files for the validate_dft command and the connection file for
the connect_dft command are also generated.
3. connect_dft: The TestMAX SMS MBIST components created by the
generate_dft command are instantiated in the design and connected. In
Subsystem0, the SMS rings are connected directly to the subsystem0
IEEE 1500 interface (see Figure 13). In Subsystem1, the cores SMS ring
is connected to the subsystem1 SMS subserver.
4. validate_dft: The implementation is verified statically (connectivity checks)
and dynamically (integrity check and simulation) to validate the
components, connections, and entire SMS subsystem level system. The
dynamic validation is performed using four predefined basic SMS test
patterns.
Additional patterns are created to demonstrate the pattern generation
capabilities of the TestMAX tools, targeting the SMS Ips in the cores from
the subsystem level.
This task uses the run_testmax.csh shell script.
The Tcl script used by dft_shell: scripts/testmax.tcl
The following figure shows Subsystem0 (with Subserver) after SMS and
Access IP insertion.
Subsystem: 01_testmax
Reads the modified RTL design from the previous step and generate, insert,
and connect the TestMAX DFT components (wrapper, compression, and
OCC) to the design.
This task also connects the core-level DFT compression logic and implements
the DFTMAX/DFTMAX Ultra fabric to target the test modes of the cores and
combine them with the defined test modes of the subsystem. Subsystem0 has
the SIDO feature enabled for the two identical core0 compress modes.
This task is executed as follows:
1. check_dft: The RTL of the design is analyzed to identify potential coverage
issues by applying the DFT-related checks and pointing to the potential
DFT violations that should be fixed. You can run this task in GUI mode for
interactive debugging.
2. generate_dft: TestMAX DFT components such as wrapper,
DFTMAX/DFTMAX Ultra codec, Pipeline Scan data, and OCC controller
are created.
3. connect_dft: The DFT components created by the generate_dft command
are instantiated in the design and connected.
4. validate_dft: The implementation is verified using connectivity checks to
validate the components and the connections.
This task uses the run_testmax.csh shell script.
The Tcl script used by the dft_shell is scripts/testmax.tcl.
This task generates the following output files:
Subsystem: 20_fc
The DFT-inserted subsystem-level RTL is synthesized using the Fusion
Compiler tool if the environment variable $syn is set to fc.
The cores are read as NDM and treated as hard macros, therefore
untouched.
The design is synthesized from RTL to mapped logic and optimized using the
linked technology library. The scan chains are routed and connected to the
existing codecs inserted by the 01_testmax task.
The script includes commands of that the following implemented features:
Ability to exclude logic from a specific test mode
Random resistant test point insertion to improve the codec coverage and
reduce ATPG test patterns
Enhanced in-compile flow in the Fusion Compiler tool
The default design_setup.tcl file from the RM is replaced with the one defined
for the TestMAX mainstream flow.
This task generates the following output files:
Netlist Verilog of the design
Reports
Empty module definition
NDM
SPEF
Subsystem: 20_dc
The DFT-inserted subsystem-level RTL is synthesized using the Design
Compiler tool if the environment variable $syn is set to dc. The
compile_ultra command is invoked to obtain better quality of results
(QoR) when you compile designs that have tight timing constraints. The
command performs a bottom-up compilation.
The cores are read in as NDM and treated as hard macros, therefore
untouched.
The design is synthesized from RTL to mapped logic and optimized using the
linked technology library. The scan chains are stitched and connected to the
existing codecs inserted by the 01_testmax step. In addition, the Design
Compiler tool inserts clock gates to save power.
You can run an optional incremental compile on the design to fix hold
violations.
The resulting netlist can be verified later and simulated using back annotation.
Subsystem: 21_formal
Run the Formality tool to verify the RTL (original) against the netlist after
synthesis 20_dc/20_fc.
This task uses the run_fm.csh shell script. The TCL script used by the
fm_shell is scripts/fm.tcl.
This task generates the reports/*fmv_unmatched_points.rpt report, which
contains the list of unmatched points between the compared designs.
Subsystem: 40_tmax_atpg
Subsystem-level pattern generation for the manufacturing test uses the
TestMAX ATPG tool.
The following wrapper modes, OCC modes, and fault models are used to
generate patterns and port the core-level patterns to the subsystem level:
Subsystem in compression wrp_if mode and cores in wrp_of mode (OCC
active for the transition fault model and OCC in bypass mode for the stuck-
at fault model)
Subsystem in scan wrp_if mode and cores in wrp_of mode (OCC active for
the transition fault model and OCC in bypass mode for the stuck-at fault
model)
The following figure shows subsystem-level ATPG patterns in wrp_if mode.
Figure 17: Subsystem-Level ATPG Patterns in wrp_if Mode
The following modes are exercised only for validation using ported patterns:
Core-level compression mode (OCC active for the transition fault model
and OCC in bypass mode for the stuck-at fault model)
Core-level scan wrp_if mode (OCC active for the transition fault model and
OCC in bypass mode for the stuck-at fault model)
All patterns are simulated using the TestMAX ATPG tool (run_sim).
The switching activity for average and peak power is reported
(report_power).
The generated patterns are simulated using the VCS tool in the following
configurations:
Serial 0-delay simulation
Parallel 0-delay simulation
The shell netlist generated at the core level is used to speed up the ATPG
and simulation processes.
This task generates ATPG and VCS simulation reports.
Subsystem: 42_tmax_atpg_advanced_fault_model
This task generates an advanced fault model for use at the subsystem level in
TestMAX ATPG compression mode. Low-power ATPG is also enabled. The
test sequence is:
1. Run the (pat-sub-A) pattern for the slack-based transition fault model
(Fault-core-A)
2. Run the (pat-sub-B) pattern incrementally for the stuck-at fault model
(Fault-core-B)
3. Fault-simulate the pat-core-A pattern against the dynamic bridge fault list
(Fault-core-C)
4. Fault-simulate the pat-core-A and pat-core-B patterns against the bridge
fault list (Fault-core-D)
Subsystem: 50_vcs_sms
This task performs the subsystem-level gate-level simulation of pattern
generation for SMS validation. The patterns are linked from 00_testmax.
The following modes are validated:
bist_all_fail_tb: Runs BIST for all SMS processors expecting no failures in
SMS memories except the TBOX_SEL instruction, which performs the
write/read operation (W(D), R(~D))
signature_reg_check_tb: Verifies SMS network connection by reading out
the processor ID register
sms_status_tb: Reads out the SMS status register default value
bist_all_tb: Verifies all MBIST IPs using the default algorithm and checks
the SMS result by reading out the SMS status register
repair_verif_tb: Verifies the memory repair feature with error injection in
the testbench, and checks the SMS result by reading out the SMS status
register
The generated patterns are simulated using the VCS tool and the mapped
netlist.
This task generates VCS simulation reports.
Subsystem: 51_vcs_atpg
The ATPG patterns generated at the core level are ported to the subsystem
level for validation and simulation using the VCS tool.
The following figure shows the validation of ATPG pattern porting from the
core to the subsystem level.
The ported core wrapper modes, OCC modes, and fault models are used to
generate patterns at the subsystem level.
Figure 21: Pattern Porting from Core to Subsystem
The following are the ccore0 and core1 patterns ported at subsystem0 and
subsystem1 level for the stuck-at fault model:
Compression wrp_if mode (OCC bypass)
Scan wrp_if mode (OCC bypass)
Scan mode bypass wrp chain (OCC bypass)
The following are the core0 and core1 patterns ported at Subsystem0 and
Subsystem1 level for the transition fault model:
Compression wrp_if mode (OCC active)
Scan wrp_if mode (OCC active)
Scan mode bypass wrp chain (OCC active)
The ported patterns are simulated using the VCS tool in the following
configurations:
Serial 0-delay simulation
Parallel 0-delay Simulation
This task generates VCS simulation reports and ported patterns.
Subsystem: Summary
To sign-off the subsystem level execution, ensure that the simulations are
successful and the fault coverage is acceptable according to the required
metrics.
SoC: 00_testmax
This task reads the source RTL design and generates, inserts, and connects
the TestMAX SMS components in the design. It also integrates and connects
the core and subsystem level pre-inserted SMS rings implemented in the
subsystem and core of the design.
This task also inserts and validates boundary scan cells for the existing pads
and then connects the inserted boundary scan cells to the pre-existing
boundary-scan segments to form a boundary scan chain. The following figure
shows the SoC design before the execution of this task.
The ISH file is generated based on the setting of SMS components and
the top server ring. This setting is used by generate_dft command. The
boundary scan pin map info is also read.
2. generate_dft: TestMAX SMS memory BIST components: such as SMS
wrappers, SMS processors, and the SMART BIST interface are created.
TAP, TDR, boundary scan, and Top server component with E-Fuse
interface are also generated.
3. UDS and CPF files for the validate_dft command and the connection
file for the connect_dft command are generated. The BSDL file for
boundary scan pattern generation and validation is also generated.
4. connect_dft: TestMAX SMS MBIST components created by the
generate_dft command are instantiated in the design and connected.
The SoC-level SMS is connected with Subsystem0 SMS ring to the top-
Server. The top-server also drives the Subsystem1 subserver.
5. validate_dft: The implementation is verified statically (connectivity checks)
and dynamically (integrity check and simulation) to validate the
components, connections, and entire SMS SoC core-level system.
The dynamic validation is performed using five pre-defined basic SMS test
patterns. With custom patterns targeting lower SMS processors, the usage
SoC: 01_testmax
Read the modified RTL design from the previous task and generate, insert,
and connect the TestMAX DFT components (compression, OCC, and
boundary scan) in the design. This task handles the TDR test mode by
assigning a test mode value according to the definition and porting the value
into an SPF file for later ATPG usage.
This task also reuses the functional pads for scan input and output
assignments. The core-level DFT compression logic is integrated and
connected in this task. A fabric logic is generated in this task to handle test
modes of the cores and combine them with the defined SoC-level test modes.
The following figure shows the SoC design after the execution of this task.
SoC: 10_formal
Run the Formality tool to perform the following verification:
RTL (original) compared with the SMS- inserted RTL
This task uses the run_fm.csh shell script. The Tcl script used by the fm_shell
is scripts/fm.tcl.
This task generates reports for each check step:
reports/*fmv_unmatched_points.rpt
SoC: 20_fc
The DFT-inserted SoC-level RTL is synthesized using the Fusion Compiler
tool if the environment variable $syn is set to fc.
The cores are read as NDM and treated as Hard-Macros, and untouched.
The design is synthesized from RTL to mapped logic and optimized using the
linked technology library. The scan chains are routed and connected to the
existing codecs inserted by the 01_testmax task. In addition, the Design
Compiler tool inserts clock gating to save power.
The script includes commands of the following implemented features:
Ability to exclude logic from a specific test mode
Random resistant test point insertion to improve the codec coverage and
reduce ATPG test patterns
Flow enhancement to support the in-compile flow of the Fusion Compiler
tool
The default design_setup.tcl file, from the RM is replaced with the one defined
for the TestMAX mainstream flow.
This task generates the following output files:
Netlist verilog of the design
Reports
Empty module definition
NDM
SPEF
SoC: 20_dc
The DFT-inserted SoC-level RTL is synthesized using the Design Compiler
tool if the environment variable $syn is set to dc. The compile_ultra
command is invoked to obtain better (QoR) when you compile designs that
have significantly tight timing constraints. The command performs a bottom-
up compilation.
The design is synthesized from RTL to mapped logic and optimized using the
linked technology library. The scan chains are routed and connected to the
existing codecs inserted by the 01_testmax task. In addition, the Design
Compiler tool inserts clock gates to save power.
You can run an optional incremental compile on the design to fix hold
violations.
The resulting netlist can be verified and simulated using back annotation.
SoC: 40_tmax_atpg
SoC-level pattern generation for the manufacturing test uses the TestMAX
ATPG tool.
The following wrapper, and OCC modes, are used to generate patterns for the
stuck-at fault model:
SOC top in compression mode and cores and subsystem in wrp_of mode
(SoC OCC active and in bypass mode)
SOC top in scan mode and cores and subsystem in wrp_of mode (SoC
OCC active and in and in bypass mode)
SOC core in compression mode and cores and subsystem in wrp_of mode
(SoC OCC active and in bypass mode). This model is used for validation
only.
SOC core in scan wrp_if mode and cores and subsystem in wrp_of mode
(SoC OCC active and in bypass mode). This model is used for validation
only.
SOC core in scan mode bypass wrp chain and cores and subsystem in
wrp_of mode (SoC OCC active and in bypass mode). This model is used
for validation only.
Subsystem in compression wrp_if mode and cores in wrp_of mode
(subsystem OCC active and in bypass mode). This model is used for
validation only.
Subsystem in scan wrp_if mode and cores in wrp_of mode (subsystem
OCC active and in bypass mode). This model is used for validation only.
o Subsystem in scan mode bypass wrapper chain (subsystem OCC
active and in bypass mode). This model is used for validation only.
o Core level in compression mode (core OCC active and in bypass
mode). This model is used for validation only.
o Core level in scan mode bypass wrp chain (core OCC active and in
bypass mode). This model is used for validation only.
o Core level in scan wrp_if mode (core OCC active and in bypass mode).
This model is used for validation only.
SoC: 50_vcs_sms
This task performs the SoC-level gate-level simulation of pattern generation
for SMS validation. The patterns are linked from 00_testmax.
SoC: 51_vcs_atpg
The ATPG patterns generated at the core and subsystem levels are ported to
the SoC level for validation and simulation using the VCS tool.
The following figure shows the validation of ATPG pattern porting from the
core in the subsystem to the SoC.
The following figure shows the validation of ATPG pattern porting from the
core to the SoC.
Figure 26: Validation of ATPG Pattern Porting from the Core to the SoC
The ported core and subsystem wrapper modes, OCC modes, and the fault
models are used to generate patterns at SoC. The following figure shows
pattern porting from core0 (in Subsystem0) to SoC.
The following are the wrapper and OCC modes of the core0 (in Subsystem0)
patterns ported to SoC for the stuck-at fault model:
core0Compression wrp_if mode (OCC bypass)
Scan wrp_if mode (OCC bypass)
Scan mode with bypass wrp chain (OCC bypass)
The following are the wrapper and OCC modes of the core0 (in Subsystem0)
patterns ported to SoC for the transition fault model:
Compression wrp_if mode (OCC active)
Scan wrp_if mode (OCC active)
Scan mode with bypass wrp chain (OCC active)
The following figure shows the pattern porting from core0 or core1core1 (in
Subsystem1) to SoC.
Figure 28: Pattern Porting from core0/core1 (in Subsystem1) to SoC
The following are the wrapper and OCC modes of the core0 or core1 (in
Subsystem1) patterns ported to SoC for the stuck-at fault model:
core0Compression wrp_if mode (OCC bypass)
Scan wrp_if mode (OCC bypass)
Scan mode with bypass wrp chain (OCC bypass)
The following are the wrapper and OCC modes of the core0 (in SoC) patterns
ported to SoC for the stuck-at fault model:
core0Compression wrp_if mode (OCC bypass)
Scan wrp_if mode (OCC bypass)
Scan mode with bypass wrp chain (OCC bypass)
The following are the wrapper and OCC modes of the core0 (in SoC) patterns
ported to SoC for the transition fault model:
Compression wrp_if mode (OCC active)
Scan wrp_if mode (OCC active)
Scan mode with bypass wrp chain (OCC active)
Figure 30: Pattern Porting from Subsystem0 or Subsystem1 to SoC
The following are the wrapper and OCC modes of the Subsystem0 or
Subsystem1 patterns ported to SoC for the stuck-at fault model:
Compression wrp_if mode (OCC bypass)
SoC: 53_vcs_bsd
The boundary scan pattern generated in the 00_testmax task is imported to
the SoC:53_vcs_bsd task to be verified for gate-level simulation using the
VCS tool in. It uses the common library and netlist generated in the 20_dc or
20_fc task.
SoC: 61_tmax_diagnosis
In this task, create a virtual failure log of patterns ported from core0 (in
Subsystem0) to SoC using gate-level simulation with fault injection in
DFTMAX Ultra mode. Run the map_fail_log command to convert the
failure log of the core level to the SoC level (two levels). Then, use the
TestMAX Diagnosis tool to identify the candidate defects.
The logic diagnosis test mode with the stuck-at fault model is used to inject
faults. This forces the D pins of the sequential cells to a specific state and run
the simulation to output a .diag (failure log) file.
After the failure log is generated, run the map_fail_log command with the
ale_shell (TestMAX ALE). Then, run a diagnosis on each failure log, and
generate the reports that locate the candidate defects with a matching
percentage score.
SoC: 70_vtran
The TestMAX Vtran tool reads the state and time information from logic
simulations and tester programs contained in the original vector file (OVF),
performs some optional processing on this data, and then formats it for a
selected target simulator in the target vector file (TVF).
Logic simulators and ATPG programs create large volumes of test vectors
(VCD/FSDB/STIL/WGL) that need to be translated into test programs for
specific ATEs. The TestMAX Vtran tool translates the test vectors into the
ATE formats.
The TestMAX ATPG generates STIL patterns, which are translated to the
FLEX format. These are translated to a Verilog testbench, which is validated
by playback simulations.
The following figure shows the translation flow.
Figure 33: Translation Flow
Requirements
To execute this task, the following are the requirements:
Input: STIL patterns generated by the TestMAX ATPG tool
TestMAX Vtran tool version: S-2021.06-SP5
Implementation Details
The run_vtran.csh file passes the STIL patterns through the following steps to
generate and validate the tester format files:
stil2ate.cmd: Translates the ported SoC-level STIL patterns generated at
the ATPG step to the .flex Teradyne tester format
ate2vtb: Translates the generated .flex tester format file to Verilog format
playback_sims: Validates the translated testbench using VCS simulations
This task generates translated STIL patterns as follows:
SoC-level patterns stored at: <your ilane install
path>/soc/40_tmax_atpg/outputs/*stil
Ported patterns stored at: <your ilane install
path>/soc/51_vcs_atpg/outputs/*stil
Note:
In the above script, “$STIL_PATH" is the path for STIL patterns given
as input argument to the Vtran command while running stil2ate.cmd.
proc_block
begin
{
#Data Modifications #
}
DONT_CARE = "X";
DISABLE_VECTOR_FILTER;
STATE_TRANS pure_inputs 'U'->'1', 'B'->'1', 'D'->'0', 'A'->'0', 'N'-
>'0', '?'- >'0', 'Z'->'0', 'F'->'0';
STATE_TRANS bidir_inputs 'U'->'1', 'B'->'1', 'D'->'0', 'A'->'0', 'N'-
>'X', '?'->'X', 'Z'->'X', 'F'->'X';
STATE_TRANS pure_outputs 'h'->'H', 'G'->'H', 'B'->'H', 'l'->'L', 'R'-
>'L', 'A'->'L', 'x'->'X', '?'->'X', 'T'->'M', 't'->'M', 'Q'->'M';
STATE_TRANS bidir_outputs 'h'->'H', 'G'->'H', 'B'->'H', 'l'->'L',
'R'->'L', 'A'->'L', 'x'->'X', '?'->'X', 'T'->'M', 't'->'M', 'Q'->'M’;
{
# Output Timing #
}
{
Note:
In the above script, the STATE_TRANS command is used to specify
state translations from the OVF to the TVF. This is required when
translating data from one simulator to another simulator for states such
as unknown, hi-impedance, and resistive drive.
tvf_block
begin
TARGET_FILE = "./stil2ate.flex";
TESTER_FORMAT Teradyne
-FLEX
WR_TIMESET_FILE = "./stil2ate_timing.flex"
MAX_LINE_LENGTH = "1023"
TIME_STAMPS = "On"
TERMINATE = "HALT"
MAX_REPEAT_COUNT = "65536"
PATTERN_NAME = "pattern_start"
DIGITAL_INST = ""
OPCODE_MODE = ""
SCAN_TYPE = "scan";
MERGE_BIDIRECTS 10HLMXZ;
RESOLUTION = 1.0;
end;
Note:
In the above script, stil2ate.flex and stil2ate_timing.flex are the output
files generated.
2. Step2: ate2vtb.cmd
ovf_block
begin
ORIG_FILE = "../stil2ate/stil2ate.flex“;
TABULAR_FORMAT ultraFLEX
;
AUX_FILE = "../stil2ate/stil2ate_timing.flex_tsets.txt";
COMMENTS = On;
end;
tvf_block
begin
TARGET_FILE = "./ate2vtb_new.v";
SIMULATOR VERILOG_TB
-VERBOSE
TESTBENCH_MODULE = "design_module"
COMPONENT_MODULE = "soc"
INSTANCE_NAME = "u_dut"
TIMESCALE = "1ns / 1ns"
TERMINATE_RUN = "$stop"
;
end;
Note:
In the above script, the ate2vtb_new.v testbench file is generated.
Example Outputs
The following figure shows an example output of a successful stil2ate
translation.
SoC: Summary
To sign-off the SoC-level execution, ensure that the simulations are
successful and the fault coverage is acceptable according to the required
metrics.
You can perform a visual inspection of the design at the end of the
implementation.