Accessug
Accessug
Accessug
Guide
Version T-2022.03-SP3, July 2022
Copyright and Proprietary Information Notice
© 2022 Synopsys, Inc. This Synopsys software and all associated documentation are proprietary to Synopsys, Inc.
and may only be used pursuant to the terms and conditions of a written license agreement with Synopsys, Inc. All
other use, reproduction, modification, or distribution of the Synopsys software or the associated documentation is
strictly prohibited.
Destination Control Statement
All technical data contained in this publication is subject to the export control laws of the United States of America.
Disclosure to nationals of other countries contrary to United States law is prohibited. It is the reader’s responsibility to
determine the applicable regulations and to comply with them.
Disclaimer
SYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Trademarks
Synopsys and certain Synopsys product names are trademarks of Synopsys, as set forth at
https://www.synopsys.com/company/legal/trademarks-brands.html.
All other product or company names may be trademarks of their respective owners.
Free and Open-Source Licensing Notices
If applicable, Free and Open-Source Software (FOSS) licensing notices are available in the product installation.
Third-Party Links
Any links to third-party websites included in this document are for your convenience only. Synopsys does not endorse
and is not responsible for such websites and their practices, including privacy practices, availability, and content.
www.synopsys.com
Contents
Related Products, Publications, and Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Customer Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3
Feedback
Contents
4. Automotive Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Autonomous In-System Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
AIT Operating Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
AIT Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
POST Using AIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
In-System Test Using AIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
AIT Pin Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Clocks and Resets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Clock Stopping Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Test Start and End Sequences Using the AIT Pin Interface . . . . . . . . . . . . . . . . . . . 69
Test Start and End Sequences Using the AIT IEEE 1500 Interface . . . . . . . . . . . . . 71
AIT Output Status Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Broadcasting the Test Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Generating AIT PDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4
Feedback
Contents
5
Feedback
Contents
6
Feedback
®
• Design Compiler
™
• Fusion Compiler
®
• Formality
Conventions
The following conventions are used in Synopsys documentation.
Convention Description
Courier bold Indicates user input—text you type verbatim—in examples, such
as
prompt> write_file top
Edit > Copy Indicates a path to a menu command, such as opening the Edit
menu and choosing Copy.
Convention Description
Customer Support
Customer support is available through SolvNetPlus.
Accessing SolvNetPlus
The SolvNetPlus site includes a knowledge base of technical articles and answers to
frequently asked questions about Synopsys tools. The SolvNetPlus site also gives you
access to a wide range of Synopsys online services including software downloads,
documentation, and technical support.
To access the SolvNetPlus site, go to the following address:
https://solvnetplus.synopsys.com
If prompted, enter your user name and password. If you do not have a Synopsys user
name and password, follow the instructions to sign up for an account.
If you need help using the SolvNetPlus site, click REGISTRATION HELP in the top-right
menu bar.
1
Understanding TestMAX Access
The TestMAX Access tool is built on the DesignWare STAR Hierarchical System (SHS)
technology. The SHS is an automated hierarchical test solution for testing an SoC or
designs using multiple IP blocks. The SHS creates a hierarchical IEEE 1500 network to
access and control all IP blocks at the SoC level.
This topic describes the architecture of the TestMAX Access tool and integration of
the Access components into an RTL design. The terms SHS and Access are used
interchangeably in this document.
To learn more about the basics of the TestMAX Access tool, see
• TestMAX Access
• TestMAX Access Network Architecture
• TestMAX Access Network Architecture Types
• SHS Server Architecture
• TestMAX Access Design Flow
• Licensing
TestMAX Access
The TestMAX Access tool leverages the SHS technology and the IEEE 1149.1, IEEE
1149.6, IEEE 1500, and IEEE 1687 standards to provide a test access infrastructure that
automates test integration and validation for an SoC.
The following are the key features of the TestMAX Access tool:
• Integrates and verifies the IEEE 1687 network and IEEE 1687-compliant IP
◦ Extracts and verifies instrument connectivity language (ICL) files
◦ Ports hierarchical procedural description language (PDL) patterns
• Integrates and verifies the IEEE 1500 access network
Server
1500 ring 1
1687 ring 4
1687 ring 5
1500 ring 6
Ring 2
Ring 3
1687 wrapped
Third-party 1500
XLBIST Third-party
IP1 wrapped IP
IP3
Core1 Core1 Core1
1500 wrapped
1500 Third-party
XLBIST IP2 Third-party
wrapped IP
IP4
Core2 Core2 Core2
1500
XLBIST
wrapped IP
Core3 Core3
Server
1500 ring 1
1687 ring 4
1500 ring 5
Ring 2
Ring 3
1687 wrapped
Third-party Subserver
XLBIST Third-party
IP1
IP3
Core1 Core1
1500 wrapped
1500 Third-party
XLBIST IP2 Third-party
wrapped IP
IP4
Core2 Core1 Core2
1500
XLBIST
wrapped IP
Core3 Core2
Star Architecture
A server with the star architecture has the following features:
• Server accesses each SHS core individually.
• More connections from all SHS cores to the server.
• Number of connections is six times the number of SHS cores.
• SHS cores can be daisy chained within the server.
• An individual SHS core can be bypassed from the server daisy chain.
JTAG TAP
SHS SHS
SHS SHS
Ring Architecture
A server with the ring architecture has the following features:
• Server accesses each ring individually.
• Server cannot access an SHS core individually.
• SHS cores can be daisy chained within the server.
• An individual SHS core in a ring cannot be bypassed from the server. Only a complete
ring can be bypassed.
SHS SHS
SHS
SHS
SHS
STAR
SHS
server
Fuse box SHS
SHS SHS
Hierarchical Architecture
A server with the hierarchical architecture has the following features:
• Server accesses only its SHS cores or rings.
• SHS cores can be daisy chained within the server.
• An individual SHS core in a ring cannot be bypassed from the server. Only a complete
ring can be bypassed.
SHS SHS
JTAG-ready
SHS SHS
subserver
Fuse box
Subserver1 Subserver2
SHS SHS
For more information about the architecture of the server, see the SHS Server User Guide.
Server
spif_mode
SFP_JPC AIT
Ring 2
Ring n
The JTAG to IEEE 1500 converter (JPC) logic converts the IEEE Std 1149.1 signals
into IEEE 1500 interface signals. The shared fuse processor (SFP) controls the repair
signature flow for all Access (SHS) cores in the Access network through the IEEE 1500
interface. The SFP provides an interface between the Access cores and the eFUSE block.
The JPC_SFP block controls the Access SMART BIST functionality. The system processor
TAP interface provides an alternate path to access SMS and all memories. This enables
in-system test and diagnostics of the embedded memories through the firmware using an
embedded or external processor.
The tool generates the APB interface driver at the server level. The APB driver contains
two registers for data decoding, which are addressed as word0 and word1.
The AIT block allows you to perform in-system and power-on self-test (POST) on the
XLBIST cores. For more information about the XLBIST cores, see the TestMAX XLBIST
User Guide. For more information about AIT, see Automotive Testing.
The server is connected in a two-level hierarchy. The server is always at the first level. The
servers at the second level are called subservers. The subservers can contain
• Their own core rings, JPC_SFP, and eFUSE
• Their own core rings, JPC_SFP, and a shared eFUSE
• Core rings only (shadow server)
Server
Subserver
(Ring only subchip)
Core
The following steps are involved in the TestMAX Access design flow:
1. Set up DFT: Read and elaborate the design files and enable DFT components.
2. Configure DFT: Define clocks, IP blocks, test modes, compression, and other DFT
components.
3. Check DFT: Perform RTL lint (syntax) and scan checks using the TestMAX Advisor
tool.
4. Generate DFT: Generate DFT components based on the configuration.
5. Connect DFT: Integrate the Access-generated components into the RTL design.
6. Validate DFT: Perform structural checks and connections between Access-generated
components using the TestMAX Advisor tool.
7. Write output files: Save the protocol, test models, ICL, and PDL files for the
downstream process.
Test patterns are represented using the PDL and ICL languages. The PDL defines the
procedures and actions of the XLBIST core. The ICL describes the elements and I/O
ports of the XLBIST core.
TestMAX Manager
DFT SDC
ICL PDL
RTL + DFT RTL Test models Test protocols constraints constraints Testbench
TestMAX DFT
Netlist
Licensing
The following licenses (provided with the tool) and tools are required for the TestMAX
Access tool:
• Test-Platform-RTL license: Only one copy of the Test-Platform-RTL license is checked
out upon invocation. The license is not released until you exit the tool. Set the
SNPSLMD_LICENSE_FILE environment variable to the license server hosting the Test-
Platform-RTL license.
• Test-Platform-Access license: Used for enabling the hierarchical flow.
• TestMAX Advisor (Version Q-2020.03-SP1): Used for scan and connectivity checks.
This license is checked out when the tool runs the plan_dft, check_dft, and
validate_dft commands.
2
Working With TestMAX Access
The TestMAX Access tool can only be used through a command-line interface called
dft_shell.
Setting Up Libraries
The create_lib command creates a new design library. Use this command with the
-ref_libs option to read the cell libraries (NDM) for memories, standard cells, I/O pads,
and so on. The following example shows the command usage.
dft_shell> create_lib -ref_libs \
{../NDM/cell_library_name ../NDM/saed32hvt_c.ndm} stdcell.nlib
3
TestMAX Access Flow
This topic describes the steps involved in the TestMAX Access hierarchical flow.
Note:
The TestMAX Access tool supports only hierarchical design flows.
To generate and integrate Access components, see
• TestMAX Access Flow at Different Levels of the Design Hierarchy
• Core-Level Flow
• Enabling DFT Components at Higher Levels of the Design Hierarchy
• Executing Cores Parallelly
• Configuring the TestMAX Access Network
• Reading Lower-Level Components of the Design Hierarchy
• Configuring the TAP IP
• Checking DFT
• Generating TestMAX Access Components
• Connecting TestMAX Access Components to the RTL Design
• Validating the TestMAX Access Connections to the RTL Design
• Verifying TestMAX Access Generated Components
• Writing Output Files From the TestMAX Manager Tool
• Pattern Porting
Configure DFT
set_dft_configuration -ieee_1500 enable,
define_test_mode -usage ...,set_dft_signal ...
Enable DFT components, define test modes ...
Check DFT
check_dft
Perform RTL lint and scan checks
Generate DFT
generate_dft
Generate DFT IP Verilog files and connectivity files *.ict.zip and *.wks file
used at subsytem or SoC level
Connect DFT
connect_dft
Modify RTL design to instantiate the generated DFT IP and make
required connections
Validate DFT
validate_dft
Connectivity checks on the modified RTL design
Configure DFT
read_test_model – Read ICL/PDL that has information about
interface connectivity, ports, and patterns
set_dft_access_element – Specify the access type, subserver
or shadow server
Check DFT
check_dft
Perform RTL lint and scan checks
Generate DFT
generate_dft
Generate DFT IP Verilog files and connectivity files *.ict.zip and *.wks file
used at subsytem or SoC level
Connect DFT
connect_dft
Modify RTL design to instantiate the generated DFT IP and make
required connections
Validate DFT
validate_dft
Connectivity checks on the modified RTL design
Configure DFT
read_test_model – Read ICL/PDL that contains information about
interface connectivity, ports, and patterns
set_dft_access_element – Specify the subserver and
shadow server
Check DFT
check_dft
Perform RTL lint and scan checks
Generate DFT
generate_dft
Generate DFT IP Verilog files and connectivity files *.ict.zip and *.wks file
used at subsytem or SoC level
Connect DFT
connect_dft
Modify RTL design to instantiate the generated DFT IP and make the
required connections
Validate DFT
validate_dft
Perform connectivity checks on the modified RTL design
Core-Level Flow
The following topics describe the tasks that you must perform on each core before
configuring DFT at a higher level in the design hierarchy:
• Enabling DFT Components at the Core Level
• Defining Test Modes at the Core Level
• Defining IEEE 1500 Interface Controls at the Core Level
• Configuring DFT Components at the Core Level
• Checking DFT at the Core Level
• Generating TestMAX Access Components at the Core Level
• Connecting DFT Components to the RTL Design at the Core Level
• Validating DFT Connections to the RTL Design at the Core Level
• Writing Output Files From TestMAX Manager at the Core Level
• Validating Generated PDL at the Core Level
Each test mode must have a unique name that can be used to refer to the test mode in
the subsequent DFT commands or reports. You can either use the default test mode and
define additional test modes or create a new set of test modes.
You can use the following options with the define_test_mode command:
• -usage wrp_if: Inward facing or INTEST mode of wrapper configuration. This mode is
used for testing all logic internal to the IP under test. In this mode, the tool enables and
configures wrappers to drive and capture data within the core, in conjunction with the
internal chains.
• -usage wrp_of: Outward facing or EXTEST mode of wrapper configuration. This
mode is used for testing all logic external to the IP under test. The tool enables and
configures wrappers to drive and capture data outside the core. The internal chains are
disabled.
• -usage scan: Standard scan mode operation, which is the default if the -usage option
is not specified. The top-level scan-in ports drive the scan chains, and the scan chains
in-turn drive the top-level scan-out ports. This mode is used for testing all logic internal
to the IP under test.
• -usage streaming_compression: Compressed scan mode of operation. In this mode,
the scan data decompressors drive the internal scan chains, and the scan chains in
turn drive the scan data compressors. This mode is used for testing all logic internal to
the IP under test with reduced test data volume and test application time.
• -usage logicbist: Inserts the TestMAX XLBIST IP in the design.
For more information about the set_dft_signal command options, see the man pages.
SpyGlass LogFile:
work_dir/spg_check_dft_config/consolidated_reports/des_unit_core_dft_shel
l_goal/spyglass.log
Standard Reports:
spyglass_violations.rpt moresimple.rpt
Information: Use 'check_dft -load_gui on' for loading SpyGlass GUI
1
Mode: scan
"si0" -> U_DFT_TOP_IP_0/si[0]
[...]
"si6" -> U_DFT_TOP_IP_0/si[6]
Mode: wrp_of
"wrp_si0" -> U_DFT_TOP_IP_0/si[7]
"wrp_si1" -> U_DFT_TOP_IP_0/si[8]
[...]
ScanDataOut:
Mode: sccomp
"so0" -> U_DFT_TOP_IP_0/so[0]
[...]
"so7" -> U_DFT_TOP_IP_0/so[9]
Mode: wrp_if
"so0" -> U_DFT_TOP_IP_0/so[0]
[...]
"so6" -> U_DFT_TOP_IP_0/so[6]
Mode: scan
"so0" -> U_DFT_TOP_IP_0/so[0]
[...]
"so6" -> U_DFT_TOP_IP_0/so[6]
Mode: wrp_of
"wrp_so0" -> U_DFT_TOP_IP_0/so[7]
"wrp_so1" -> U_DFT_TOP_IP_0/so[8]
[...]
work_dir/spg_validate_dft_config/consolidated_reports/des_unit_core_dft_
shell_goal/
SpyGlass LogFile:
work_dir/spg_validate_dft_config/consolidated_reports/des_unit_core_dft_
shell_goal/spyglass.log
Standard Reports:
spyglass_violations.rpt moresimple.rpt
Information: Use 'validate_dft -load_gui on' for loading SpyGlass GUI
1
To save the ICL and PDL files, use the following command:
write_testbench
-icl_pdl enable
-out ./patterns/$design\_1687
-test_mode xlbist
To write constraints to connect the DFT components to scan chains in the Design
Compiler or Fusion Compiler tool, use the write_dft_constraints command. This
command also writes the constraints for formal equivalence checks using the Formality
tool.
write_dft_constraints -output constr
For example, the following command validates the TestMAX XLBIST IPs at the core level:
validate_dft -check verify_access_component
Note:
You can enable DFT components such as scan, compression, wrapper, OCC,
and pipeline with the components mentioned above. To create ports in the RTL
design, use the setup_rtl_flow and create_ports commands.
You can use the following options with the set_dft_access_configuration command:
• -group: Specify the user-defined group name for the set of cores to be executed
parallelly
• -cores: Specify the list of cores that needs to be grouped. You can also specify a
single core for this option.
• -misr_comparison: Specify the type of comparison for MISR. The default MISR
comparison type is unified.
For example,
set_dft_access_configuration -group test_group_1 -cores \
{core1_1 core1_2} -misr_comparison individual
set_dft_access_configuration -group test_group_2 -cores \
{core2 core3} -misr_comparison individual]
To generate a merged PDL for the user-specified core groups, use the port_patterns
command.
For example,
port_patterns -access_interface ieee1149.1 -format pdl -merge
{Test_group_1 Test_group_2}
For more information about the port_patterns command, see the man pages.
You can use the following options with the set_dft_access_element command:
◦ -instance instance_name: Specify the instance name.
You can use the following options with the set_dft_ring command:
◦ -ordered_elements ordered_list: Specify the order in which the components
are connected.
◦ -head_element head_component: Specify the first component of the ring.
◦ -complete true|false: When false, the tool controls the order of the rings.
◦ wks: Specify the workspace file path. For lower-level BIST cores, specifies the file at
a higher level of the design hierarchy.
◦ pdl: Specify the PDL of the IP to access.
◦ ict: Specify the compout directory. For lower-level cores, specifies the file at a
higher level of the design hierarchy.
◦ hdl: Specify the stub file path of the lower blocks.
To identify the IEEE Std 1149.1 TAPs, use the set_dft_signal command. This command
places an attribute on the specified port; the attribute's value is the same as the signal type
keyword.
The following example shows the command usage.
set_dft_signal -view spec|existing_dft -type signal_type \
-port port_list -hookup_pin pad_output_name
Checking DFT
Use the check_dft command to identify potential coverage issues and DFT violations.
The check_dft command generates the following output.
Information: Generating design lib file ./spg_check_dft_gate_design.tlib
Information: Generating functional RTL source list
file ./spg_check_dft_sources.f
Information: Generating constraint file for scan readiness
checks ./spg_check_dft_constraints.sgdc
Invoking SpyGlass...
…/spyglass_R-2020.09/SPYGLASS_HOME/bin/spyglass -project
spg_check_dft_config.prj -goal dft_shell_goal -batch
Information: SpyGlass run started
work_dir/spg_check_dft_config/consolidated_reports/des_unit_core_dft_she
ll_goal/
SpyGlass LogFile:
work_dir/spg_check_dft_config/consolidated_reports/des_unit_core_dft_she
ll_goal/spyglass.log
Standard Reports:
spyglass_violations.rpt moresimple.rpt
Information: Use 'check_dft -load_gui on' for loading SpyGlass GUI
For more information about the validate_dft command, see the man pages.
The validate_dft -check connectivity command generates the following output.
Invoking SpyGlass...
/global/apps/spyglass_R-2020.09/SPYGLASS_HOME/bin/spyglass -project
spg_validate_dft_config.prj -goal dft_shell_goal -batch
Information: SpyGlass run started
Information: Synthesis completed
Information: Flattening completed
'SCAN_DATA_INPUT' group connection validation started...
'63' check(s) passed
'0' check(s) failed
[…]
Information: SpyGlass running goal(s) `dft_shell_goal' with top `soc'
completed successfully
SpyGlass Message Summary: 177 errors, 39 warnings, 1195
Infos
---------------------------------------------------------------------
Results Summary:
---------------------------------------------------------------------
Total Flip flop count: 436
Scannable Flip flop count: 436
Total combinational reconvergent paths to clock pins of flip-flop
: 0
Total combinational reconvergent paths to asynchronous pins of
flip-flops : 0
Total sequential reconvergent paths to asynchronous pins of flip-flops
: 0
---------------------------------------------------------------------
Reports Directory:
work_dir/spg_validate_dft_config/consolidated_reports/soc_dft_shell_go
al/
SpyGlass LogFile:
work_dir/spg_validate_dft_config/consolidated_reports/soc_dft_shell_go
al/spyglass.log
Standard Reports:
spyglass_violations.rpt moresimple.rpt
Information: Use 'validate_dft -load_gui on' for loading SpyGlass GUI
1
[-masis_dir path_to_dir]
[-apb on | off]
• -group: Specify the list of cores groups for which merged testbenches are generated.
• -testbench: You can specify the following arguments for this option:
◦ all: This is the default option for generation of testbench and simulates them as
well.
• -masis_dir: Specify the location of the MASIS files directory. The default directory is
generated_files.
• -apb: Specify the type of interface (JTAG or APB) for validation for the STAR Silicon
Debugger tool. The default value is off.
For example,
• Validating XLBIST IPs at the top level
validate_dft -check verify_access_system
• Generating and simulating testbench for the merged PDLs with JTAG interface
validate_dft -check verify_access_system -group \
{test_group_1 test_group_2}
• Generating and simulating testbench for the merged PDLs with APB interface
validate_dft -check verify_access_system -group \
{test_group_1 test_group_2} -apb on
• Constraint files for connecting XLBIST cores to scan chains in the Design Compiler or
Fusion Compiler tool
• SDC constraints for the PrimeTime tool and synthesis constraints for the Design
Compiler tool
• Constraint files for formal verification using the Formality tool
Note:
You can write out the protocol files and test models by using the
write_test_protocol and write_test_model commands.
Pattern Porting
Test patterns generated at a lower level can be ported to a higher level. To port the core-
level patterns to SoC-level, use the following command:
port_patterns -access_interface ieee1149.1 -pdl on
The ported patterns are saved in tester formats such as STIL and WGL. The Verilog
testbench is also saved for simulation of the patterns.
• -format: Specify the format in which patterns are ported. You can use the following
arguments with this option:
◦ stil: Port the patterns in STIL format
• -template_file: Specify the path of the template trace file for APB sequence text
generation. The default path is the location of the template FTS file generated by the
STAR Yield Accelerator tool.
• -merge: Specify the list of user-defined groups to generate the merged PDL
For example,
• Porting serial PDL patterns
port_patterns -access_interface ieee1149.1 -format pdl
For more information about the port_patterns command, see the man pages.
4
Automotive Testing
Automotive and industrial applications are safety critical and must comply to safety
regulations such as ISO 26262 (automotive) and IEC 61508 (industrial). High-quality
silicon must have zero defective parts per million (DPPM) so no faulty chips are shipped
to customers. Periodic testing is done in the field to safeguard against defects originating
because of aging. For these stringent requirements, DFT (structural testing) becomes part
of the on-chip safety mechanism.
Standards specify only fault classes and detection requirements. In an implementation,
purely software-based functional testing can be used if it meets the criteria and the
fault metrics (such as coverage and time) are measurable. Structural tests using DFT
techniques are fault-metric based. A combination of functional and structural fault
detection methods is required to meet the quality goals.
The following are a few automotive-DFT design safety concepts:
• Single point fault metric (SPFM)
• Latent fault metric (LFM)
• Fault tolerant time interval (FTTI)
• Failure in time (FIT)
The ISO 265262 standard defines automotive safety integrity levels (ASIL), which defines
the level of risk reduction needed to achieve a tolerable risk for safety. There are four
levels: ASIL A, ASIL B, ASIL C, and ASIL D. The criteria for ASIL levels gets stricter from
ASIL A through ASIL D, that is, ASIL D defines the highest integrity level. For the higher
levels, the tests must detect more faults in less time and propagate the results faster.
The following figure shows the relationship between time and failure occurrence for the
ASIL levels.
Failure detection
ASIL-D
Failure occurence
ASIL-C
ASIL-B
ASIL-A
APB-to-1500 JTAG-TAP
Converter FSM
Control MUX
Server
MUX
MUX MUX
WSI_RING1
WSO_RING1
WSO_RING2
WSO_RING2
WSI_RING2
WSI_RING2
AITXLBIST_WSI/WSC
AIT_TEST_MODE
WSO_RING2
Control
interface
MCU/PMU/ Status XLBIST XLBIST
Safety Manager interface AIT
(Customer IP) Start
address
XLBIST XLBIST
POST_or_IST_enable
MUX
The following figure shows the AIT controller with a server and subserver SHS network.
SMART IP
Server
IEEE 1500
XLBIST SMS
IEEE 1500 IP
AIT XLBIST SMS
IP
XLBIST
XLBIST SMS
the AIT controller is at the subserver level, the core-level PDL is ported to the subsystem-
level PDL.
TDR SoC-level
APB SMART IP PDL
JTAG
Server
Subsystem
-level PDL
IEEE 1500
XLBIST SMS
IEEE 1500 IP
AIT XLBIST SMS
IP
POST
If APB is available, it can trigger the AIT controller using the APB driver. If APB is not
available, then the AIT controller can be triggered by the power management unit (PMU)
through the pin interface. In POST mode, the AIT controller
1. Fetches test data from the AIT memory
2. Collects responses from the XLBIST cores using the AIT ports or APB network (if
available)
3. Compares the responses with the expected value and gives the test status (pass or
fail) to the output ports
In-System Test
In in-system test mode, the APB triggers the AIT controller using the APB driver. In in-
system mode, the AIT controller
1. Fetches test data from the AIT memory
2. Collects responses from the XLBIST cores using the AIT ports or APB network (if
available)
3. Compares the responses with the expected value and gives the test status (pass or
fail) to the output ports
The following are a few implementation choices for the in-system test:
• CPU-driven test – Uses more bandwidth of the CPU and network on chip (NoC)
1. The CPU or the Safety Manager drives the test data through the APB interface of
the server.
2. The CPU provides test data, waits for the test to finish, and reads the multiple-input
status register (MISR).
3. The CPU compares the MISR with the expected values and determines whether the
test has passed or failed.
• CPU-triggered test – Uses less bandwidth of CPU and on-chip functional resources
1. The CPU or the Safety Manager drives the test data through the APB interface of
the server and loads the test data in the memories.
2. The CPU then triggers DFT resources such as the AIT controller, which fetches and
executes tests, similar to POST mode.
3. The CPU and NoC are idle when the test runs. The CPU can carry out functional
tasks or tests on other blocks.
4. The CPU waits for a certain number of cycles and checks the AIT status. Or, the
CPU polls and gets an interrupt from the AIT when the test status is available.
AIT Architecture
The AIT controller manages XLBIST-based POST or IST for automotive SoC designs
through the IEEE 1500 interface. The AIT controller also reduces the load on the CPU
during the in-system test.
The following steps are involved in the functioning of the AIT controller:
1. The CPU or PMU triggers the AIT controller.
2. The AIT controller fetches test data from the memory and applies it to the XLBIST
cores through the IEEE 1500 network.
3. The AIT controller collects responses from the XLBIST cores and compares it with the
expected data stored in the memory.
4. After the comparison, the AIT controller indicates whether the test has passed or failed.
The following figure shows the AIT controller architecture.
EXEC unit
IEEE 1500 Status Error handler
System Control
Control unit
i_timeout_cnt_strap
o_status
i_mode
o_wso_compare_status
PMU/custom i_test_start
o_wso_compare_status_ready
input interface i_test_enable
PMU/custom
o_max_compare_wso_done
i_abort output interface
o_core_status_valid
i_reset_counter
o_xlbist_ateclk_stop
o_ait_test_mode
i_data_valid
i_mem_data_in
i_mem_start_addr
o_mem_rd_enable AIT controller
Memory interface o_mem_addr
o_mem_wr_en i_i15002ait_wso
o_mem_wr_data o_ait2i1500_wsi
o_ait2i1500_wrck
WSI
o_ait21500_wrstn
WRCK Output IEEE 1500
WRSTN o_ait2i1500_selectWIR interface
WRCK o_ait2i1500_shiftWR
Input IEEE 1500
SelectWIR o_ait2i1500_captureWR
interface
ShiftWR o_ait2i1500_updateWR
CaptureWR
UpdateWR
WSO
i_ait_bypass_mode i_ait_rstn
Reset
Subserver
WSI_RING2
AITXLBIST_WSI/WSO
WSO_RING2
WSI_RING2
WSO_RING2
WSO_RING2
AIT_TEST_MODE
Control interface
Power XLBIST
Status interface
AIT
manager Start address
POST_or_IST_enable
Programmable test data RAM/ROM XLBIST
i_abort Input i_ait_clk MCU/PMU/Safety If this pin is set to 1, the AIT operation is
Manager terminated immediately.
To start the AIT operation, apply i_abort
= 0 and assert test_en and test_start in a
four ait_clk interval.
i_ait_clk Input N/A Functional clock Primary clock that controls all AIT
(PLL) registers. No dependency on any other
IP.
i_ref_clk Input i_ait_clk Functional clock Controls the watchdog counter flip-flops;
no limit on the clock frequency. If the
(divided) (Oscillator/PLL)
frequency of i_ref_clk is high, the timeout
count occurs quickly. The i_ref_clk clock
frequency and the timeout count values
must be adjusted optimally. i_ref_clk
must be ratio synchronous to i_ait_clk.
i_test_enable Input i_ait_clk MCU/PMU/Safety Starts the test sequence. Must go from
Manager 0 to1 and stay high until the test is
completed.
i_mem_start Input i_ait_clk MCU/PMU/Safety Gives the address from which the
_addr [N:0] Manager AIT controller starts fetching data. If
the memory contains multiple EOT,
i_mem_start_addr must be the address
of the location where the last execution
stopped.
i_mem_start_addr must be set at the
start of AIT operation or along with either
test_en or test_start. TDR is overridden.
i_mem_data Input i_ait_clk MCU/PMU/Safety Input from the memory to the AIT
_in [N:0] Manager controller. Memory data widths supported
are 8, 16, 32, and 64. Must connect with
read_data of the memory.
selectWIR / Input WRCK Server/subserver IEEE 1500 interface of the AIT controller,
shiftWR / driven by the IEEE 1500 network.
captureWR /
updateWR
WSI Input WRCK Server/subserver WSI IEEE 1500 data input, driven by the
IEEE 1500 network.
WRSTN Input Asynchron Server/subserver IEEE 1500 network reset input, driven
ous by the IEEE 1500 network. Requires
functional override in POST or IST mode.
N/A
WRCK Input N/A Server/subserver IEEE 1500 network clock input, driven
by the IEEE 1500 network. Requires
functional clock source in POST or IST
mode.
i_div_wrck Input i_ait_clk Functional clock Drives the IEEE 1500 interface logic of
(divided) (PLL) the AIT controller.
i_div_wrck is ratio synchronous with
ait_clk and can be /1 , /2, /3 or /4 or /5 of
i_ait_clk. i_div_wrck must match with the
IEEE 1500 WRCK frequency.
i_i15002ait_ Input i_div_wrck Server/subserver WSO coming from the XLBIST ring
wso through the server or subserver.
o_mem_rd_e Output i_ait_clk Test ROM/RAM Read enable for test memory (RAM or
nable ROM)
o_mem_wr Output i_ait_clk Test ROM/RAM Write enable for test memory
_en
o_mem_addr Output i_ait_clk Test ROM/RAM Read/write address of the test memory.
If the AIT controller is reading from
memory, o_mem_addr acts as the read
address.
If the AIT controller is writing into the
memory, o_mem_addr acts as the write
address.
o_ait_test_m Output i_ait_clk MCU/PMU/Safety Indicates that the AIT-based XLBIST test
ode Manager is enabled
o_mem_wr_ Output WRCK Test RAM Provides write data to the AIT memory
data when the memory write feature is
enabled
o_status_re Output i_ait_clk MCU/PMU/Safety Indicates when to collect the AIT status.
ady Manager If o_status_ready is 1, the AIT status can
be collected.
o_ait2i1500_ Output i_div_wrck Server/subserver IEEE 1500 output from the AIT controller
selectWIR that goes into the XLBIST ring
o_ait2i1500_ Output i_div_wrck Server/subserver IEEE 1500 output from the AIT controller
shiftWR that goes into the XLBIST ring
o_ait2i1500_ Output i_div_wrck Server/subserver IEEE 1500 output from the AIT controller
captureWR that goes into the XLBIST ring
o_ait2i1500_ Output i_div_wrck Server/subserver IEEE 1500 output from the AIT controller
updateWR that goes into the XLBIST ring
o_ait2i1500_ Output Asynchron Server/subserver IEEE 1500 output from the AIT controller
wrstn ous that goes into the XLBIST ring
N/A
o_ait2i1500_ Output i_div_wrck Server/subserver IEEE 1500 output from the AIT controller
wrck that goes into the XLBIST ring
o_ait2i1500_ Output i_div_wrck Server/subserver IEEE 1500 output from the AIT controller
wsi that goes into the XLBIST ring
WSO Output WRCK Server/subserver IEEE 1500 output of the AIT controller
that connects to the server
o_status[3:0] Output i_ait_clk MCU/PMU/Safety Shows the current status of the AIT
Manager controller.
IDLE – 4’b0000
BUSY – 4’b0010
MEM_MISR_FAIL_AND_TEST_PASS –
4’b0101
MEM_MISR_PASS_AND_TEST_FAIL –
4’b0110
BAD_AIT_INSTRUCTION_DETECTED –
4’b0111
AIT_MEM_INTERFACE_WRONG –
4’b1000
PAUSE – 4’b1001
TEST PASS – 4’b1111
TIMEOUT – 4’b1011
TEST FAIL – 4’b1100
BAD_TEST_SEQ – 4’b1101
ABORT – 4’b1010
Test complete without any WSO
comparisons – 4’b1110
o_xlbist_atec Output Asynchron MCU/PMU/Safety Clock gating enable for ATE clock (clock
lk_stop ous Manager/Server input of XLBIST).
N/A
o_xlbist_atec Output Asynchron MCU/PMU/Safety Clock gating enable for ate clk (clock
lk_stop ous Manager input of XLBIST)
N/A
o_ring_status Output i_ait_clk MCU/PMU/Safety Indicates whether the values of each bit
_valid Manager in the o_ring_status_valid bus is valid in
per XLBIST status mode.
o_ring_<x>_ Output i_ait_clk MCU/PMU/Safety Indicates whether the values of each bit
status_valid Manager in the o_ring_<x>_status bus is valid in
per XLBIST status mode.
IDLE 4’b0000 Indicates that the AIT operation has not yet started.
The AIT controller is in IDLE state until the test start
sequence is completed.
MEM_MISR_FAIL_AND_ 4’b0101 Indicates that the MISR check failed and the test
TEST_PASS passed when the memory MISR check is enabled
MEM_MISR_PASS_AND 4’b0110 Indicates that the MISR check passed and the test
_TEST_FAIL failed when the memory MISR check is enabled
STATUS_PAUSE 4’b1001 AIT operations pause when the AIT controller gets this
instruction. The AIT controller comes out of the pause
state after it detects toggle on i_data_valid.
STATUS_TIMEOUT 4’b1011 Timeout occurs when the timeout counter reaches the
timeout_cnt_value
maximum limit, that is, (2 ) i_ref_clk.
The timeout counter works even when the AIT
controller has not started. Timeout can be reset by
applying i_reset_counter or programming the RESET
counter bit in SHS2AIT_CTRL TDR.
Apply i_ait_rstn to start a new sequence, after the
timeout occurs.
STATUS_TEST_COMPL 4’b1110 Indicates that the status test is complete without WSO
ETE BUT no WSO comparison.
compares
WIR
WDR SHS2AIT 1500 interface and debug data
AIT2CTRL
Output interface/MUX
SRAM, ROM,
EXEC engine
Packet decoder
interface
Memory
splicing
and so on
FIFO
Data
AIT21500
write_interface EXEC engine
Timeout ait_clk
CRC Master sequencer div_wrck
counter ref_clk
WRCK
AIT_CLK AIT
i_div_wrck
Clock divider
REF_CLK
ate_clk ate_clk
ate_clk
o_xlbist_ate o_xlbist_ate o_xlbist_ate
AIT SYNC CGC XLBIST
clk_stop clk_stop clk_stop
Test Start and End Sequences Using the AIT Pin Interface
This topic describes the reset, start, and end sequences for the AIT-driven IEEE 1500 test
using the AIT controller pins. A fixed sequence of AIT pins is required to start and end
an AIT-driven test. This is to safeguard the AIT FSM from starting or ending accidentally
because of spurious bit flips on its inputs, which can occur because of ageing or random
events in the silicon.
Note:
After applying the resets (i_ait_rstn and WRSTN), the AIT controller is in pin
interface mode. In this mode, the IEEE 1500 interface is not active. After
Test Start and End Sequences Using the AIT IEEE 1500 Interface
This topic describes the reset, start, and end sequences for the AIT-driven IEEE 1500
test using the IEEE 1500 registers in the AIT controller. A fixed sequence of IEEE 1500
register programming is required to start and end an AIT-driven test. This is to safeguard
the AIT FSM from starting or ending accidentally because of spurious bit flips on its inputs,
which can occur because of ageing or random events in the silicon.
The following table lists the IEEE 1500 registers inside the AIT controller.
Table 4 AIT IEEE 1500 Registers
Note:
The number of RING_<X>_STATUS and RING_<X>_STATUS_VALID depends
on the number of XLBIST rings, based on which the width of the WIR varies.
The following tables provide detailed information about the IEEE 1500 registers.
Bit 1 IR_value[1]
Bit 2 IR_value[2]
Bit 3 IR_value[3]
SHS2AIT_BYPASS Bit 0 IEEE 1500 bypass Bypasses the AIT IEEE 1500
reg network with one pipeline depth
5 unused Unused
... ...
4 Unused Unused
5 Unused Unused
WSO_READ back Bit 0 Bit 0 of XLBIST WSO WSO can be read from the AIT
data reg controller.
... …
AIT_BUSY Bit 0 Indicates that the AIT The ATE polls this register
controller is busy and sends the next data if the
register is not set. If the register
is set (AIT is busy), the ATE
does not send data.
... …
4. Set bit #3 to 1. This starts ait_clk. At the end of this sequence, the AIT FSM reaches
the start state.
5. Assert i_data_valid = 1. The AIT controller starts fetching data from the memory after
the FSM reaches the run state.
The following figure shows the test start sequence.
Note:
When the AIT controller uses the IEEE 1500 interface, the AIT controller applies
the reset sequence and test start sequence according to the AIT PDL.
The test sequences for multiple AIT sessions are as follows:
• Session 1
1. Apply the reset sequence to the AIT controller.
2. Apply the test start sequence. The AIT operation starts.
3. Collect the AIT status from the o_status port when the o_status_ready port is 1.
4. Collect the pass or fail status of the XLBIST core from the o_wso_compare_status
port when the o_wso_compare_status_ready port is 1.
5. Apply the test end sequence. The statuses of all registers are cleared.
When the AIT controller reaches the end sequence, the o_status port indicates
whether the test has passed or failed. After the end sequence, the AIT controller
stops fetching data from the memory and the o_mem_rd_addr port is not
incremented. All output ports hold the values until the ait_rstn signal or AIT exit
sequence is applied.
• Session 2
1. Apply the i_reset_counter signal to the AIT controller. This clears the timeout
counter. The i_reset_counter signal must be synchronous with the i_ref_clk signal.
2. Apply the test start sequence and the new memory address through the
i_mem_start_addr port. The AIT controller starts fetching data from the
i_mem_start_addr port.
3. Collect the AIT status from the o_status port when the o_status_ready port is 1.
4. Collect pass or fail status of the XLBIST core from the o_ring_status,
o_ring_<x>_status, and o_wso_compare_status ports when the
o_wso_compare_status_ready port is 1.
5. Apply the test end sequence. The statuses of all registers are cleared.
For example, there are five cores (A_c1, A_c2, A_c3, A_c4, A_c5) in ring A and each
core contains five intervals of XLBIST patterns. There are three cores (B_c1, B_c2,
B_C3) in ring B and each core contains seven intervals of XLBIST patterns. The
MAX_COMPARE_VALUE parameter value = (5 cores x 5 patterns + 3 cores x 7 patterns) = 46.
For ring A, the testing sequence is A_c1, A_c3, A_c2, and A_c5. A_c4 is not tested.
• A_c1 has three passing and two failing patterns (11100).
• A_c3 has all failing patterns (00000).
• A_c2 has all passing patterns (11111).
• A_c5 has all passing patterns (11111).
For ring B, the testing sequence is B_c2 followed by B_c3. B_c1 is not tested.
• B_c2 has six passing patterns and one failing pattern (1111110).
• B_c3 has all passing patterns (1111111).
The width of the status ports is as follows:
• o_ring_status = number of rings = 2
• o_ring_status_valid = number of rings = 2
• o_ring_A_status = number of XLBIST cores in ring A = 5
• o_ring_A_status_valid = number of XLBIST cores in ring A = 5
• o_ring_B_status = number of XLBIST cores in ring B = 3
• o_ring_B_status_valid = number of XLBIST cores in ring B = 3
• o_wso_compare_status = MAX_COMPARE_VALUE – (total number of XLBIST cores)
= 46 – (5+3) = 38
The status of the ports for per pattern mode is as follows:
• o_ring_status: N/A (reset condition or 0)
• o_ring_status_valid: N/A (reset condition or 0)
• o_ring_A_status: 11100 (A_c1)
• o_ring_A_status_valid: N/A (reset condition or 0)
• o_ring_B_status: 000 (For A_c3, the status of three patterns is logged in
o_ring_B_status and the remaining are logged in o_wso_compare_status because
o_ring_B_status overflows.)
• o_ring_B_status_valid: N/A (reset condition or 0)
• o_wso_compare_status:
enabled, and programs all the corresponding XLBIST cores with the targeted core using
the same test data.
While the MISR UNLOAD command is executed, XLBIST rings are selected one by one to
shift the WSO data to the AIT controller. For example, XLBIST rings A and B are identical
and both the rings have four cores: A {A_c1 A_c2 A_c3 A_c4}, B {B_c1 B_c2 B_c3 B_c4}.
If broadcasting is enabled for rings A and B and the {A_c2, A_c3} cores are targeted, then
the same test data is used to program the corresponding cores in ring B, that is, {B_c2,
B_c3} at the same time.
Because the same test data is used to program multiple XLBIST cores at the same
time, both test time and test data are reduced by broadcasting. You can select multiple
groups of XLBIST rings for broadcasting. The write_test_packets command uses
the -broadcasting option to generate AIT packets in such a way that broadcasting is
supported for the given set of XLBIST rings.
For example, if there are four XLBIST rings (A, B, C, D), where A and B are identical and
C and D are identical, the command usage is as follows:
write_test_packets -broadcasting {A B} {C D}
When you use the enable argument, the following AIT ports are not available:
• i_timeout_cnt_strap
• i_mode
• i_test_start
• i_test_enable
• i_mem_start_addr
• i_reset_counter
In the AIT controller, IEEE 1500 override is available for these ports. The values of these
ports can be changed directly using the SHS2AIT_CTRL register.
WSO_RING2
WSI_RING1
WSO_RING1
WSO_RING2
WSO_RING1
WSI_RING1
WSI_RING2
WSO_RING2
WSI_RING1
WSI_RING2
WSI_RING2
The first column of ports represents the actual ports of the AIT controller. The second
column of ports represents the ports in the design. The TestMAX Manager tool creates
connections between the first and second columns of ports. For the remaining ports of the
AIT IEEE 1500 interface, the Access tool creates connections.
You must connect the memory clocks to the same source pins as that of the ait_clk.
The -memory_write option enables or disables the memory write logic through the IEEE
1500 interface in the AIT controller. When the -ieee_1500_interface_only option
is enabled, the AIT controller can be triggered only through the IEEE 1500 interface.
It disables the input ports, i_timeout_cnt_strap, i_mode, i_test_start, i_test_enable,
i_mem_start_addr, and i_reset_counter. When this option is disabled (default), the AIT
controller can be triggered through both the pin and IEEE 1500 interface.
The -ring_status_ports option enables or disables the output status ports,
o_ring_status, o_ring_status_valid, o_ring_<x>_status, o_ring_<x>_status_valid, and
o_wso_compare_status. By disabling this option, the number of ports can be reduced.
Replacing the CGC or SYNC2P Logic
The generated AIT RTL has CGC and second stage synchronization cells (SYNC2P)
in the design. You can replace these cells with your CGC and SYNC2P cells. You can
identify CGC cells by the name, module_name_ClockGate in the AIT RTL. SYNC2P cells
can be identified by the name, module_name_sync2psync2p in the AIT RTL.
Table 5 AIT Parameters
You can use the following options with the write_test_packets command:
• -input: Input PDLs are XLBIST PDLs ported to the server or subserver, which
are converted into AIT packets. The write_test_packets command can accept
more than one PDL at a time and convert the PDLs into AIT packets. By default, the
conversion occurs in the order in which PDLs are given. The order can be changed
using the -test_order option.
Command usage:
write_test_packets -input \
"ported_PDLs_of_xlbist_to_server_or_subserver"
Example:
write_test_packets
-input "core1xlbist_portedtoserver.pdl"
-input "core1xlbist_portedtoserver.pdl core2xlbist_portedtoserver.pdl"
-input "core1xlbist_portedtosubserver.pdl \
core2xlbist_portedtosubserver.pdl"
• -output: AIT test data file, which contains the AIT packets.
The following table shows how the XLBIST rings are connected to the Access tool and
AIT controller.
Table 6 AIT and XLBIST Rings
Ring_A XLBIST 2 1
Ring_B XLBIST 3 2
Ring_C XLBIST 4 3
Ring_D XLBIST 5 4
Ring_E XLBIST 6 5
• -ring_order: Indicates how IEEE 1500 rings are constructed (WSO to WSI) in the
SoC.
For example, if the IEEE 1500 ring_A contains 5 instances of core1 (m1_1, m1_2,
m1_3, m1_4, m1_5) and the IEEE 1500 ring_B contains 3 instances of core2 (m2_1,
m2_2, m2_3), the command usage is as follows:
write_test_packets -ring_order "ring_A {m1_1 m1_2 m1_3 m1_4 m1_5}
ring_B {m2_1 m2_2 m2_3}"
Note:
Use the -chain_order option when the -multiple_xlbist_rings option
is disabled.
• -broadcasting: Broadcasts the same test data across multiple XLBIST rings.
• -exec_level: Indicates the level (server or subserver) to which the XLBIST core PDLs
are ported.
Command usage: write_test_packets -exec_level server|sub_server
• -verbose: Provides additional information about the conversion process. The valid
arguments are on and off. The default is off.
Command usage: write_test_packets -verbose on|off
• -core_to_pdl_list: Inputs the PDLs of the XLBIST cores in the entire IEEE 1500
ring. The PDL list is given as a pair, {xlbist_core_module_name core_xlbist PDL
path}. If the same core is instantiated multiple times, you can give a single core name,
{core_module_name, PDL path}.
Command usage:
write_test_packets -core_to_pdl_list "core_level_xlbist_PDLs"
Example:
If the IEEE 1500 ring contains five instances of core1, five instances of core2, and five
instances of core3, use the following command:
write_test_packets -core_to_pdl_list m1 core1_xlbist.pdl m2
core2_xlbist.pdl m3 core3_xlbist.pdl …
• -chain_order: Indicates how the XLBIST IEEE 1500 ring is constructed (WSO to
WSI) in the SoC.
Command usage:
write_test_packets -chain_order "1500_xlbist_ring_order"
Example:
If the IEEE 1500 ring contains five instances of core1, five instances of core2, and five
instances of core3, use the following command:
write_test_packets -chain_oder "m1_1 m1_2 m1_3 m1_4 m1_5 m2_1 m2_2
m2_3 m2_4 m2_5 m3_1 m3_2 m3_3 m3_4 m3_5"
Example:
If the IEEE 1500 ring contains five instances of core1, five instances of core2, five
instances of core3, use the following command:
write_test_packets -core_module_to_instances "m1 {m1_1 m1_2 m1_3 m1_4
m1_5} m2 { m2_1 m2_2 m2_3 m2_4 m2_5} m3 {m3_1 m3_2 m3_3 m3_4 m3_5}"
• -memory_data_width: The memory width of RAM or ROM, which stores the AIT
content. The valid arguments are 8,16, 32, and 64.
Command usage: write_test_packets -memory_data_width 8|16|32|64
• -max_wso_compares: Gives the maximum number of WSO comparisons that
can occur inside the AIT controller without overwriting the WSO status. At the
time of AIT RTL generation, the MAX_COMPARE_VALUE parameter determines the
number of comparisons that can occur inside the AIT controller. If the number
of WSO comparisons exceeds the max_wso_compares parameter value, the
write_test_packets command issues a warning, but the comparison occurs.
Command usage:
write_test_packets -max_wso_compares \
"maximum_number_of_comparisons"
• -add_wrstn_pre_eot: Indicates that WRSTN must be toggled at the end of the AIT
test. This sets all IEEE 1500 registers of the XLBIST core to known values after the AIT
operation. The valid arguments are on and off. The default is off.
Command usage: write_test_packets -add_wrstn_pre_eot on|off
• -single_eot: Places one EOT packet for the entire AIT test data. After the AIT
controller executes the EOT packet, the AIT controller does not accept any new AIT
packet, and the output status can be read. The valid arguments are on and off. The
default is off. If you do not want to place single EOT, then write_test_packets
places one EOT for one input PDL.
Command usage: write_test_packets -single_eot on|off
• -wrstn_clockoff_margin: While applying asynchronous reset, it is safe to turn off
the clock for the logic. This is to ensure that there is no metastability in the design.
By default, the AIT RTL is developed considering metastability, that is, WRCK turns
off while applying WRSTN. The RTL provides a gap of four AIT clock cycles between
stopping, applying, and starting WRCK.
The following figure shows an example waveform.
You can use this option to add more gap of clock cycles between the WRCK and
WRSTN toggle. If you want a gap of six more cycles added to the default clock cycles
provided by the RTL, use the write_test_packets - wrstn_clockoff_margin 6
command. Extra packets are generated for introducing an extra gap between WRCK
and WRSTN.
• -per_core_xlbist_status: To generate AIT packets for per XLBIST core mode, the
-per_core_xlbist_status option must be on. If the -per_core_xlbist_status
option is off, AIT packets generated using the write_test_packets command are for
the per interval/pattern status mode. The default is off.
Command usage: write_test_packets -per_core_xlbist_status on|off
• -stop_at_first_fail: To give the fail status after the AIT controller encounters the
first WSO comparison fail, the -stop_at_first_fail option must be on. After the first
comparison fail, the AIT controller stops executing packets. The default is off.
Command usage: write_test_packets -per_core_xlbist_status on|off
• -wrong_packet_detection: If this option is on, the AIT controller identifies the invalid
AIT instructions and issues the BAD_AIT_INSTRUCTION_DETECTED status, that is,
4’b0111. The default is off.
Command usage: write_test_packets -wrong_packet_detection on|off
• -misr_check: Enables MISR check to validate the AIT memory content.
Command usage:
write_test_packets -misr_check on|off
• -misr_mask_data: 64-bit data used to mask the actual 64-bit MISR value.
• -srv_sms_pipes: Number of pipelines between the server and SMS. The tool uses
this number to generate the AIT packets from the ported PDL files.
Command usage:
write_test_packets -srv_sms_pipes "number_of_server_sms_pipelines"
• -tap_srv_pipes: Number of pipelines between the server and TAP. The tool uses this
number to generate the AIT packets from the ported PDL files.
Command usage:
write_test_packets -tap_srv_pipes "number_of_tap_server_pipelines"
AIT PDL is modified with the estimated wait time and expected status value using the
write_test_packets command.
-misr_mask_data “10000000_00000000_00000000_00000000_00000000_00000000_0
0000001_00000101"
The AIT controller supports two versions of PDL. The TestMAX Manager tool outputs the
following PDLs:
• Per XLBIST core status PDL: PDL generated when the -active_cores option is used
with the set_dft_access_element command. This PDL contains the expected value
for comparing the status of each XLBIST core.
• Per interval/pattern status PDL: PDL generated for comparing each interval/pattern
when the -active_cores option is not used. This PDL contains the expected value for
comparing the status of each interval/pattern.
The following IEEE 1500 registers are present in the per interval/pattern and per XLBIST
core status AIT PDLs.
Table 7 IEEE 1500 Registers
AIT2SHS_STATUS Outputs status of the AIT controller Outputs status of the AIT controller
WSO_COMPARE_STA Indicates pass/fail status for each Indicates pass/fail status for the
TUS interval/pattern entire XLBIST core
After applying the initialization sequence through the SHS2AIT_CTRL register, the AIT
controller starts fetching data from the memory and applies the data to the XLBIST cores
through the Access network. Then, the test status responses (pass or fail) are captured in
the AIT2SHS_STATUS register.
The AIT controller does not know when to collect the status. Therefore, after initialization
through the SHS2AIT_CTRL register, the AIT controller waits for some predetermined time
(Twait) before capturing the status responses into the AIT2SHS_STATUS register. Twait
varies from design to design. Therefore, the original AIT PDL must be corrected with this
Twait value. The write_test_packets command can be used to correct the Twait value.
To correct the AIT PDL with the correct Twait value, you can use the following options with
the write_test_packets command:
• -update_ait_pdl: If this option is on, the AIT PDL is modified with the correct Twait.
To refresh the AIT core PDL, use the write_test_packets -refresh_ait_pdl on|off
command. If refresh_ait_pdl is on, the AIT PDL is modified.
The -refresh_ait_pdl option refreshes the AIT PDL (number of comparisons and
targeted cores for per XLBIST core status mode) according to the write_test_packets
output file. For operating the AIT controller in per XLBIST core mode, use the per XLBIST
core PDL with the write_test_packets command. For operating the AIT controller in
per interval/pattern mode, use the per interval/pattern PDL with the write_test_packets
command.
form). Using the AIT memory read sequence, contents of the AIT memory can be read
through the IEEE 1500 or APB interface.
• read_write PDL: read_write generates the write sequence followed by the read
sequence. Using the read_write sequence, you can validate the AIT to memory path
and the read/write logic of the AIT controller.
You can use the following options with the write_test_model command:
• -memory: The PDL sequences can be generated using this option.
• -output: Output PDL to which the read, write, or read/write PDL sequence is written
to.
Command usage: write_test_model -output "name_of_output_PDL".
The following flowchart shows how the write_test_model command functions in the
TestMAX Manager tool.
Convert the RTL-level XLBIST PDLs into AIT packets and generate
memory content
write_test_packets (RTL level)
Generate testbench based on RTL-level AIT PDL and run simulation for the
Server+AIT+XLBIST system
validate_dft -verify_access_system (RTL level)
5
Advanced Peripheral Bus Support
When Advance Peripheral Bus (APB) is enabled in AIT using the TestMAX Manager tool,
you must generate and validate the APB hardware, testbench, and firmware code or
sequence.
To generate and validate the APB hardware and other required components, see
• APB and Other Protocols
• Generating APB Using TestMAX Manager
• APB Components
• Server With APB Interface
High-performance High-bandwidth
ARM processor on-chip RAM
bridge
Keypad PIO
DMA bus master
PSELn
PENABLE
Strobe
APB bridge
Read data PRDATA
PADDR
Address and
control
PWRITE
Reset
Clock PWDATA
Write data
PENABLE
PWDATA
PRESETn
PREADY
PCLK PSLVERR
Note:
APB slave is the hardware inserted by the TestMAX Manager tool when APB is
enabled in the AIT controller. This hardware component is known as the APB
driver. The APB driver has only one PSEL enable.
Note:
The APB bridge or master is the hardware that is added to the SoC and
controlled using the system bus interface. The APB bridge or master hardware
is not discussed in detail in this document.
Table 11 APB Signals
PCLK Input APB data transfer occurs at the rising edge of PCLK.
PRESETn Input System bus equivalent reset. The APB reset is active
low.
PWRITE Input Indicates write when high and read when low.
• To enable the APB hardware with parity protection, use the set_dft_access_element
-type top_server -parameter [parity_enable 1] command. Parity protection for
APB hardware is enabled only when the system_interface_type parameter is set to
2.
APB Components
To learn more about the APB components, see
• APB Interface Driver
• APB Data Decoding
• APB to IEEE 1500 Data Converter
• APB Parity Protection
MUX spif_mode
Pipe 1
Pipe n
Core 0
Core m Core 0
Core k
connected to the PADDR signal of the server through the APB bridge and PADDR[1:0]
must be ignored.
SMS GR access
The configuration register is used to pass the information about the size of the chain,
which is accessed in the next transaction. The read/write data register is used to transfer
data to and from the server using the APB PWDATA and PRDATA buses.
parity_in
Byte 3
P3
Byte 2
P2 input_parity_fail
Byte 1
P1
Byte 0
P0
parity_out
Byte 3 P3
Byte 2 P2
Byte 1 P1
Byte 0 P0
APB control
(FSM)
SMS1
JTAG TAP Ring 1
model
Repairable Repairable
memory memory
STAR
JPC_SFP
Non-repairable Non-repairable
SP_TAP memory memory
Ring N+M
Ring N+1
AMS Wrapper1
Server
IP block
eFUSE
The following figure shows the pin diagram of the server with the APB interface.
PADDR
APB interface
PSEL
PREADY
PENABLE
PSLERR
PWRITE
PRDATA[31:0]
PWDATA[31:0]
Server
SPIF_MODE
SYS_RST_N
TRSTN
TAP interface
TMS
TDO
TCK
TDI
6
Automotive Flow
This topic describes the automotive flow using the TestMAX Access tool. The difference
between the generic flow described in the preceding topics and the automotive flow is
generating the AIT controller, creating AIT packets, and validating the packets.
At the subsystem and SoC levels, the Access tool uses the components generated at
the core level. Depending on the configuration, you can insert the AIT controller at the
subsystem or SoC level. At the subsystem level, use the set_dft_access_element
-type sub-server command, and at the SoC level, use the set_dft_access_element
-type server command.
SMART APB
eFUSE
Server
1500 ring 1
1687 ring 4
1500 ring 5
SMART
SMART
Ring 3
Subserver Subserver
AIT 1500 AIT
Third-party
wrapped IP IP1
Core1
1500
XLBIST SMS SMS XLBIST
wrapped IP
Core1 Core2 Core1
1500
XLBIST SMS
wrapped IP
Core2 Core3
Server
Configure DFT
read_test_model,set_dft_configuration,
set_dft_access_element, set_bsd_configuration
Read ICL/PDL that contains interface connectivity, ports, and patterns information
Define the top server, TAP controller, access elements, and ring architectures
Plan DFT
plan_dft
Generate ISH and RCL files
Perform RTL link checks using TestMAX Advisor and generate STAR Integrator
components
Generate DFT
generate_dft
Generate DFT IP Verilog files and connectivity files *.ict.zip and *.wks file
used at subsytem or SoC level
Connect DFT
connect_dft
Modify the RTL design to instantiate the generated DFT IP and make the
required connections
Validate DFT
validate_dft
Perform connectivity checks on the modified RTL design using TestMAX Advisor
The following are the steps involved in the SoC-level design implementation:
1. Set up DFT.
To set up the design, use the following commands:
lappend search_path ./mylibdir
open_lib ./tpzn65lpgv2lt.nlib
analyze -f sverilog [glob RTL/*] -f sverilog -vcs "-f sources.f"
elaborate $design
set_top_module $design
2. Configure DFT.
To enable the DFT components, use the following commands:
set_dft_configuration
-bsd enable
-dft_access enable
-ieee_1500 enable
-mbist enable
3. Plan DFT.
To read the compiler library and generate the STAR Integrator files, use the following
command:
plan_dft
NUM_XLBIST_CORES: 3
MAX_COMPARE_VALUE: 50
WSO_COMPARE_COUNTER_WIDTH: 6
Information: AIT IP Name: 'SOC_DFTTopIP_1'
Information: ICL file 'SOC_AIT.icl' generated successfully.
Information: PDL file 'SOC_AIT.pdl' generated successfully.
Information: Populating setup information.
Information: STAR Planner config file not set. Creating planner
config file
****************************************
Information: Generating design lib
file ./sms_plan_dft_gate_design.tlib
Information: Successfully created planner config file
'sms_plan_dft_planner_config.tcl'
Invoking STAR Planner...
Information: STAR Planner run started
Information: Read compiler library... done
Information: Generating integrator shell script... done
Information: STAR Planner run completed successfully
Information: Integrator Config File set to : scripts/SOC_prj.ish
Use command
'set_mbist_configuration/set_dft_access_configuration
-integrator_config' to change.
Generating report file...
Information: Report generation successful. Please check
"preview_dft.rpt" file for more details
The TestMAX Manager tool uses the test models (ICL and PDL) to generate a MASIS
model for the IEEE 1500- or IEEE 1687-wrapped IP blocks. The MASIS model contains
information about interface connectivity, ports, and test patterns.
read_test_model
/work_dir/des_unit_core_1687.icl -format icl -design des_unit_core
/work_dir/des_unit_core_1687.pdl -format pdl -design des_unit_core
4. Generate DFT.
To generate the DFT IP Verilog files and constraints, use the following command:
generate_dft
ieee_1500 Disable
Bsd Enable
Hsio Disable
Invoking STAR Integrator...
Information: STAR Integrator run started
Information: Read files... done
Information: Running "Generate" on component "des_unit_3"
Information: Running "Generate" on component "wrap_SOC_DFTTopIP_1_1"
Information: Running "Generate" on component "wrap_des_unit_1_1"
Information: Running "Generate" on component "wrap_des_unit_2_1"
Information: Running "Generate" on component "wrap_des_unit_3_1"
Information: Running "Generate" on component "srv_1"
Warning: [create_test_protocol] command was not run. (DFT-2906)
IEEE 1149 TAP Ports:
U_TDI_pad/C -> bsd_inst_0/TDI
bsd_inst_0/TDO -> U_TDO_pad/I
bsd_inst_0/TDO_EN -> U_TDO_pad/OEN
5. Connect DFT.
To modify the RTL design by instantiating the generated DFT IP blocks and making the
required connections, use the following command:
connect_dft
The modified RTL design files are written into ./output/Verilog. The connect_dft
command generates the following output:
Invoking RTL modifier...
Invoking RTL modifier...
RTL modifier run started
Information: RTL modifier design read complete.
Information: DFT IP instantiation complete.
Information: MBIST DFT IPs read complete.
Information: MBIST DFT IPs instantiation complete.
Information: Connections for MBIST DFT IPs complete.
Information: RTL modifier run completed successfully.
Information: Modified RTL with DFT IP generated
at /<work_dir>/TestMAX/output/Verilog directory.
RTL modifier Log
Directory: /work_dir/TestMAX/rtl_modifier_log/
RTL modifier
LogFile : /work_dir/TestMAX/rtl_modifier_log/gensys.log
Invoking STAR Builder to update side files...
6. Validate DFT.
To check the connectivity between the DFT IP blocks in the modified RTL design, use
the following command:
validate_dft -check connectivity
To convert the XLBIST PDL patterns to AIT packets, use the following command:
write_test_packets
MISR Check : 1
MISR Mask Data :
00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000
000
Server SMS Pipes : 0
TAP Server Pipes : 0
7
TestMAX Access IEEE 1687
The TestMAX Access IEEE 1687 feature provides access to IPs embedded in a design.
The architectural complexity of chips increases with advancement in technology. The
interoperability between multiple IPs can be managed by standard protocols such as
IEEE1149.1, IEEE 1500, and IEEE 1687. The main components of the IEEE 1687
standard are the test data register (TDR) and segment insertion bits (SIBs).
The following figure shows an example of the IEEE 1687 network. The network is
programmed to the required state through the IEEE 1687 interface, also called as the
client interface. The interface can be controlled using the IEEE 1149.1 signals. An IP or a
target instrument can be controlled through the host interface of the network.
The IEEE 1687 standard also defines the instrument connectivity language (ICL) to
describe the connectivity of the TDR and SIB elements of the network. The procedural
description language (PDL) based protocols define the patterns that configure the IEEE
1687 network by programming the TDR and SIB elements.
The following are the major IEEE 1687 features supported by the TestMAX Manager tool:
• Scan control at different levels
• Third-party IP integration
The TestMAX Manager tool allows you to control the test mode bits and any other DFT
signal through an IEEE 1687 compliant TDR. The tool also observes and controls custom
pins in the design through the TDR.
You can enable the IEEE 1687 feature in the TestMAX Manager tool using the
set_dft_configuration -ieee_1687 enable command.
You can configure the IEEE 1687 pin interface, TDR length, and SIBs using the
set_dft_signal, set_scan_path, and set_dft_ring commands.
#Configure TDR
set_scan_path TDR -class ieee_1687 -exact_length 10 -init_data 0000000000
-reset_state 0000000000
set_dft_ring RING -class ieee_1687 -ordered_elements {TDR} -sib enable
#TDR pin usage
set_dft_signal -type TestMode -tdr_pin TDR[0]
set_dft_signal -type TestMode -tdr_pin TDR[1] -usage occ
set_dft_signal -type TestControl -tdr_pin TDR[2] -connect_top
{inst/pin}
#Configure TDR
set_scan_path TDR -class ieee_1687 -exact_length 10 -init_data 0000000000
-reset_state 0000000000
set_dft_ring RING -class ieee_1687 -ordered_elements {TDR} -sib enable
#Configure TDR
set_scan_path TDR -class ieee_1687 -exact_length 10 -init_data 0000000000
-reset_state 0000000000
Integrating IPs
The TestMAX Manager tool allows you to access the IEEE 1687- and IEEE 1500-
wrapped or unwrapped IPs at any level through the TestMAX Access network. The IPs
are connected to the server (for flat designs) or shadow server/subserver (for hierarchical
designs).
The TestMAX Access network uses the description of the IEEE 1687 or IEEE 1500
interface through the IEEE 1687 standard ICL (or MASIS models) for integrating the cores
instantiated at any level. To specify the ICL/MASIS model of the cores or WKS/ICL model
of the hierarchical TestMAX Access network, use the read_test_model command.
Based on the level, a TestMAX Access component is inserted to control the rings. At the
SoC level, a server must be added for ring selection control. The TestMAX Manager tool
allows you to insert a single server or separate servers to control SMS and SHS rings. At
the subsystem level, a subserver or shadow server is required. Insertion of a TestMAX
Access component generates the components connection database in WKS and ICT
formats. To read the generated data at the lower levels and build the Access network
further, use the read_test_model command.
To configure the Access rings at a specific level, use the following command:
set_dft_ring ring_name -class IEEE_1687 -ordered_elements {instance_1
instance_2}
To learn more about the IEEE 1687 support with the TestMAX SMS tool, see:
• DFT Mode Control in SMS Using IEEE 1687
• DFT Mode Control in SMS Using IEEE 1687: Example
• Configuring Access Network for SMS Using Separate Servers
• Configuring Access Network for SMS Using Separate Servers: Example
• Configuring Access Network for SMS Using a Single Server
• Configuring Access Network for SMS Using a Single Server: Example
The following figure shows the Access network configuration for separate servers.
◦ To generate the test setup, after the connect_dft step, enable the -dft_access
option and read the Access (SHS) database.
The following figure shows the Access network configuration for a single server.