Professional Documents
Culture Documents
Synopsys Testmax™ Sms User Guide: Version T-2022.03-Sp3, July 2022
Synopsys Testmax™ Sms User Guide: Version T-2022.03-Sp3, July 2022
Contents
Related Products, Publications, and Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Customer Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3
Feedback
Contents
4. Methodology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
4
Feedback
Contents
9. Customizing BIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Clocking Architecture: Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
IEEE 1500 Clock: WRCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Customizing Reset Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102
Customizing SMS Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Customizing the Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Customizing Pipeline Stages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5
Feedback
Contents
6
Feedback
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.
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 SMS
This topic introduces the TestMAX SMS tool, describes the high-level SMS architecture
and integration of SMS components (BIST IP) into the RTL design, and provides the
license requirements for the tool.
The TestMAX SMS tool, built on the DesignWare STAR memory system (SMS), enables
testing memories of different configurations using the IEEE 1500 network. The TestMAX
SMS tool helps in generating custom memory built-in self-test (BIST) hardware with self-
repair capability and BIST production patterns with diagnostic capability. The SMS tool
runs on the TestMAX Manager platform that provides a common interface for TestMAX
DFT implementation capabilities.
To learn the basics of the TestMAX SMS tool, see
• TestMAX SMS
• TestMAX SMS Architecture
• TestMAX SMS Design Flow
• Licensing
TestMAX SMS
This topic describes the features of the TestMAX SMS tool.
The TestMAX SMS tool is a comprehensive and integrated test, repair, and diagnostics
solution that supports repairable and non-repairable embedded memories across
foundries, process nodes, and memory IP vendors. The automated design implementation
and diagnostic flow enables SoC designers to achieve quick design closure and improve
time-to-market and time-to-yield.
The TestMAX SMS tool provides
• Full RTL integration with the TestMAX Manager tool
• Hierarchical architecture and automated SoC integration and verification
• Key components for embedded memory test and repair such as server, subserver,
processor, and wrapper, and then connects these components to the RTL design or
gates
• High-quality test with full memory defect coverage and minimal test time
• Rapid, cost-effective, and accurate identification, analysis, isolation, and classification
of memory faults when designs are readied for the transition from silicon to
manufacturing
• Automatic generation of test vectors for fault analysis and root cause failure guidance
based on the silicon test results
• SMS DFT constraints (synthesis, timing, and Formality), which can be used in the
downstream design process
• Test algorithm programmability, where you can either program the custom algorithm or
select from the list of algorithms in the library
• The built-in repair and redundancy allocation (BIRA) module, which identifies
redundant elements and determines the best redundancy configuration
• The built-in diagnosis module, which determines the location of memory defects and
provides error logging by scanning out the failure data for silicon debug
• Silicon bring-up and characterization by interactive communication with the SMS
infrastructure through the JTAG port
• High yield with efficient on-chip repair across multiple operating corners
• Superior diagnostics with physical fail bitmaps and XY coordinate identification that
determines the root cause of failures
For more information, see https://www.synopsys.com/implementation-and-signoff/test-
automation/testmax-sms.html.
See Also
• TestMAX SMS Architecture
• TestMAX SMS Design Flow
• Licensing
CPU SoC
Test bus
Cache
eFUSE
group 1
Core1
1EEE 1500
Test bus
Cache SMS
TAP
1EEE 1149.1
ATE
group 2 server
1EEE 1500
1EEE 1500
SMS-inserted components
The main SMS components are the server, subserver, processor, wrapper, and the SMS
IEEE 1500 network. The interconnection of the SMS components with the SMS server
through the IEEE 1500 network depends on the user configuration.
The server provides access points to the Test Access Port (TAP) controller, system
processor TAP, Advanced Peripheral Bus (APB), and SMART. The server consists of two
main modules—shared fuse processor (SFP) and JTAG to IEEE 1500 converter (JPC).
The SFP module provides full control of the repair signature flow through the IEEE 1500
network between the eFUSE and SMS cores. The JPC module provides interface with the
IEEE 1500 functionality. For more information, see Figure 20.
SMART provides direct interface to run functionalities such as BIST, BIHR, and UDR
load. The JPC_SFP block executes SMART for both SMS and STAR Hierarchical System
(SHS) cores. The system processor TAP provides alternate path to access the SMS cores
for in-system test and diagnostics.
The SMS processor takes control of the memories through intelligent wrappers and
performs memory testing and repair. The SMS processor supports
• IEEE 1500 pipelined interface. For more information, see Customizing Pipeline Stages.
• Different memory configurations with a single processor
See Also
• TestMAX SMS
• TestMAX SMS Design Flow
• Licensing
Perform the following steps to generate and integrate the SMS components into the RTL
design or gates and validate the modified RTL:
1. Set up DFT: Defines clocks, memories, files, and other parameters. The tool reads,
elaborates, and links the design files.
2. Plan DFT: Defines memory grouping information. The tool traces the clocks and makes
them controllable.
3. Generate DFT: Generates SMS components based on your configuration.
4. Connect DFT: Integrates the SMS-generated components into the RTL design or gates.
5. Validate DFT: Tests the SMS components individually. The tool also tests the RTL
design integrated with the SMS components.
See Also
• TestMAX SMS
• TestMAX SMS Architecture
• Licensing
Licensing
The following licenses (provided with the tool) and tools are required for the TestMAX SMS
tool:
• Test-Platform-RTL license: Only one copy of the Test-Platform-RTL license is checked
out upon invocation. The license cannot be released until you exit the tool. Set the
SNPSLMD_LICENSE_FILE environment variable to the license server hosting the Test-
Platform-RTL license.
• TestMAX-Platform-BIST license: Enables BIST 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.
See Also
• TestMAX SMS
• TestMAX SMS Architecture
• TestMAX SMS Design Flow
2
TestMAX SMS Network Architecture
The TestMAX SMS network consists of multiple SMS cores compliant to the IEEE 1500
standard. The SMS cores are grouped together using a shared module called a server or
subserver. Different types of SMS cores, repairable or non-repairable memories can share
the same server or subserver.
The SMS cores are connected in a ring to the server or the subserver. The cores in a ring
have similar behavior. For example, the cores in a ring are in the same clock domain.
Subserver
(Ring only subchip)
Core
shift_dr
capture_dr
update_dr
SMS SMS 2 Wrap i Memory
IEEE 1500
Server
TDI TAP
smsg_sel
TDO
SMS n Wrap m Memory
TMS
TCK smsg_data
WSOR
TRSTN
SMS Subsystem
IEEE 1500
interface
Memory
IW controller
SMS primary
memory interface
interface
Processor to
The intelligent wrapper (IW) consists of two blocks: control and int. The control block
• Receives an opcode (such as write, read, or NOP) from the processor and generates
memory interface signals
• Translates the processor-generated linear address into the memory logical address
• Adds user-defined JTAG TAP registers for user-defined memory pins
• Adds the memory boundary scan registers for memory control through the JTAG TAP
• Contains the memory repair allocation engine and stores the data related to memory
repair
By default, the memory is instantiated inside the int block. The int block
• Creates a direct interface to the memory
• Adds test MUXs if not available in the memory
• Adds an error comparator if not available in the memory
• Adds DFT control logic to make the memory controllable and observable
Chain MUX
control signals
Command Data
Memory
generator comparator
Wrapper
SMPR
BIRA
Reconfiguration
PMPR
register chain
ECC output
ECC
MRR
(Optional logic)
Chain MUX
control signals
SMPR
Data
PMPR comparator
Intelligent wrapper
Memory
SMS processor
IW controller
Processor to Wrapper to
wrapper interface memory interface
Memory
SMS processor
IW controller
Processor to Wrapper to
wrapper interface memory interface
SMS Subsystem
Intelligent wrapper
Single-instance wrapper
STAR processor
Wrapper to memory
IW controller Memory
wrapper interface
interface
Processor to
Subwrapper
Wrapper to memory
Subwrapper
STAR processor
Memory
Shared IW logic
Dedicated IW logic
interface
wrapper interface
Processor to
Intelligent wrapper
Memory
Processor to wrapper
high-speed signals
IW controller
Wrapper to
memory interface
Processor Architecture
The TestMAX SMS processor provides an external interface for the RTL assembly. The
processor controls the memories though intelligent wrappers and performs testing and
repair. The following figure shows the architecture of the processor.
TCLK
Repair data
Controller MISR FSM Wrapper MISR
generator control signals
Wrapper
control signals
Test string
TA FSM BIST FSM
register
Star Architecture
The following are the features of a server that uses the star architecture:
• Server accesses each SMS processor individually
• More connections are available from all SMS processors to the server
• Number of connections is six times the number of SMS processors
• SMS processors can be daisy chained within the server
• Each SMS processor can be bypassed from the server daisy chain
• Server downloads the repair data from the SMS processors, compresses the data, and
stores the data in one-time programmable (OTP) non-volatile memory called eFUSE
SMS1 SMS4
M
M
SMS2 STAR SMS5 M
server
M
Fuse box
M SMS3 SMS6
M
M
M
Ring Architecture
The following are the features of a server that uses the ring architecture:
• Server accesses each ring individually
• Server cannot access an SMS processor individually
• SMS processors can be daisy chained within the server
• Individual SMS processors in a ring cannot be bypassed from the server. Only a
complete ring can be bypassed.
• Controlled by the sms_grouping_list parameter of the server compiler.
SMS1 SMS9
SMS8
SMS2
SMS7
STAR
SMS3
server
Fuse box SMS6
SMS4 SMS5
Hierarchical Architecture
The following are the features of a server that uses the hierarchical architecture:
• Server accesses only its SMS processors or rings.
• SMS processors can be daisy chained within the server.
• Individual SMS processors in a ring cannot be bypassed from the server. Only a
complete ring can be bypassed.
• Controlled by the hier_mode=1 parameter of the server compiler.
SMS1 SMS12
JTAG-ready
SMS2 SMS11
subserver
Fuse box
Subserver1 Subserver2
SMS3 SMS10
For more information about the architecture of the server, subserver, processor, and
wrapper, see the SMS Server User Guide and the SMS Processor User Guide.
SMS Server
The following figure shows the SMS server with different interfaces.
Server
spif_mode
SFP_JPC
Ring 2
Ring n
The JTAG to IEEE 1500 converter (JPC) logic converts the IEEE 1149.1 signals into IEEE
1500 interface signals. The shared fuse processor (SFP) controls the repair signature flow
for all SMS cores in the SMS network through the IEEE 1500 interface. The SFP provides
an interface between the SMS cores and the eFUSE.
The JPC_SFP block controls the SMS SMART BIST functionality. The system processor
TAP interface provides alternate path to access SMS and all memories. This enables the
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, addressed as word0 and word1.
The server is connected in a two-level hierarchy. The server is always at the first level. The
second level of servers are called subservers. 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)
The following figure shows the server hierarchy.
Server
Subserver
(Ring only subchip)
Core
When the server shares eFUSE with the subserver, the subserver must be generated with
the eFUSE option enabled. The server generates a copy of server repair data register,
buffer register, and user data register, which helps eFUSE to read/write. The subserver
contains SMART pins that support the BIHR flow for both SMS and SHS. The following
figure shows the sharing of eFUSE between the server and subserver.
WIR WIR
RR copy Repair
register
Controller
Controller
eFUSE eFUSE
UDR
Boundary Boundary
register register
Ring Ring
number number
The JPC register controls the JPC_SFP block using the signals received from the TAP.
The JPC is a sequential logic that connects the TAP I/O to the IEEE 1500 I/O signals
of the core rings. The synchronizer block is used for isolating the core rings using the
ring_bypass signals. The following figure shows the JPC block.
Synchronizer
The SMS tool supports OTP, multi-time programmable (MTP), and eFUSE from different
vendors. The server controls the transfer of data with eFUSE through the generic eFUSE
interface in test and SMART modes. The generic eFUSE interface consists of the write
buffer, FSM, and registered output. The eFUSE is user programmed. The following figure
shows the generic eFUSE interface.
eFUSE eFUSE
controller
Synchronizer
ef_addr ef_data
FSM
Repair buffer
Controller data register
Server
3
Working With TestMAX SMS
The TestMAX SMS tool can only be used through a command-line interface called
dft_shell.
To learn more about configuring the tool and using the commands, see
• Configuring TestMAX SMS
• Using the User Interface
• Getting Started
Running the TestMAX SMS tool generates the following files in the current directory:
• dft_command.log: List of commands executed.
• dft_output.txt: Log file that captures the commands and output.
To exit the tool, use the exit or quit command.
Getting Started
The TestMAX SMS tool uses a design library to store the design and its associated library
information. This topic describes how to define the search path and set up libraries and
binary paths.
To get started with the TestMAX SMS tool, see:
• Defining the Search Path
• Setting Up Libraries
• Setting Up Binary Paths
• lappend – Use the lappend command to add your directories to the default search
path, which is the directory from which you invoked the tool.
Example:
dft_shell> lappend search_path ./mylibdir
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 for memories, standard cells, I/O pads, and so
on.
Example:
dft_shell> create_lib -ref_libs {../NDM/ \
cell_library_path ../NDM/saed32hvt_c.ndm} stdcell.nlib
◦ EMBEDIT
◦ TestMAX
◦ VCS
For example,
% setenv SPYGLASS /spyglass_installation_path/SPYGLASS_HOME
% setenv EMBEDIT /embedit_installation_path/embedit/bin
% setenv VCS /vcs_installation_path/vcs/bin
4
Methodology
This topic describes the methodology for integrating and validating the memories in a
hierarchical or a flat flow. Perform these steps in the TestMAX Manager tool to integrate
and validate the inserted components:
• Set up DFT: Defines clocking, memories, design files, and so on. The tool reads,
elaborates, and links the design files.
• Plan DFT: Defines memory grouping information. The tool traces the clocks and makes
them controllable.
• Generate DFT: Generates SMS components based on your configuration.
• Connect DFT: Integrates the SMS-generated components into the RTL design.
• Validate DFT: Tests the individual components and the RTL design integrated with SMS
components.
In the following hierarchical flow example, the functional design has memories (without
repair capability) at the core and subsystem levels only and not at the SoC level. However,
in real designs, any level can have memory.
Memory Memory
Core1 Core2
Memory Memory
At the core level, the tool reads, elaborates, and links the design. Then, the tool reads the
memory and SMS interface standard (MASIS) files for the memories that must be inserted
with BIST. For setting the global options for the BIST controller, two options are available:
• Use the set_mbist_configuration command to configure the number of memories
per wrapper and the number of wrappers per processor.
• Let the tool decide the number of processors and wrappers using the default criteria.
By default, the memories are grouped per wrapper or processor based on the clock
domains.
The tool inserts the shadow server at this level. The tool also generates and validates
BIST patterns. As part of the pattern validation, the tool also performs connectivity and
integrity checks. For information about generating, validating, and verifying BIST patterns,
see Flow for Flat Design.
Memory Memory
Core1 Core2
Memory + Memory +
Processor Wrapper Processor Wrapper
In this example, at the subsystem level, a few memories are present. The tool generates
• Processors and subservers for the memories
• Rings and connects the subsystem-level processors to core-level processors
Subserver Subserver
Core1 Core2
Memory + Memory +
Processor Wrapper Processor Wrapper
Note:
In real designs, the SoC level can contain memories. In this case, the tool
inserts processors and other BIST components for all the memories according
to the user configuration (using the set_mbist_configuration command). If
there is no user configuration, then the tool inserts processors according to the
default settings. For more information, see Enabling the BIST Client.
The tool performs the following functions:
• Integrates the TAP controller
• Integrates the server
• Generates rings
Note:
One ring is created per subserver and a separate ring is created for the
processors and shadow-server-based cores at the SoC level. In this example,
the tool does not create rings at the SoC level because there are no memories.
At the SoC level, the tool generates and validates test patterns comprehensively. TestMAX
SMS supports custom BIST production patterns at the SoC level. You can save the
patterns in different tester formats such as STIL and WGL. For information about custom
BIST production patterns, see BIST Production Patterns.
Subsystem1 Subsystem2
Subserver Subserver
Core1 Core2
Memory + Memory +
Processor Wrapper Processor Wrapper
The following figure shows the steps and commands for generating, integrating, and
validating the TestMAX SMS components.
5
Flow for Flat Design
This topic contains the following sections:
• Integrating SMS components (BIST IP) into the RTL design using the TestMAX SMS
tool
• Configuring BIST in the TestMAX platform shell for integrating the BIST IP into the RTL
design
To learn about the TestMAX SMS flow for flat designs, see
• Flow Diagram for Flat Design
• Setting Up Design Files
• Enabling the BIST Client
• Configuring BIST
• Configuring the DFT Access Elements
• Generating the Memory Grouping Information
• Generating the SMS (BIST) Components
• Connecting the SMS Components to the RTL Design
• Writing the TestMAX SMS DFT Constraints
• Writing the TestMAX SMS DFT Constraints for the Current Level
• Validating the SMS Connections
• Verifying the SMS-Generated Components
• Simulating the BIST System
• Example Script: Overall Flow
REF_CLOCK (1GHz)
Divide by 2 Clock gating high_speed_mem_inst_1
RST
After enabling the BIST client, configure BIST as described in Configuring BIST.
Configuring BIST
Use the set_mbist_configuration command to define the BIST parameters for the
design.
For configuring BIST, use the following options with the set_mbist_configuration
command:
• -allow_module_override: Allows multiple definitions of modules for VCS during
simulation of the modified (BIST-inserted) design.
Example:
set_mbist_configuration -allow_module_override on|off
• -builder_config: Specifies the directory of the STAR Builder configuration file (RCL
file). The STAR Builder tool integrates the SMS-generated components into the RTL
design.
Example:
set_mbist_configuration -builder_config insert.rcl
Use this option to specify the configuration file (RCL file) for the STAR Builder
tool. The generate_dft -generate_connections command uses the RCL
file when launching the STAR Builder tool. By default, this is option is set to
sms_generate_dft_default.rcl. For information about modifying the RCL file, see
Customizing the Interface.
• -compiler_libraries: Lists the paths to the TestMAX SMS compiler libraries such as
the wrapper compiler, processor compiler, server compiler, and others. The compilers
are used to generate the wrapper, processor, server RTL, and other supporting files
such as testbench and synthesis views.
Example:
set_mbist_configuration -compiler_libraries "../complib.6x"
Note:
Use only compiler libraries recommended by Synopsys. Using other
compiler libraries can cause issues such as connectivity failures, simulation
mismatches, and incorrect hardware.
• -compout_path: Specifies the directory where the SMS components generated by
the Embed-It! STAR Integrator tool is written out. By default, this option is set to the
project_name/compout directory.
Example:
set_mbist_configuration -compout_path $design\compout
Use this option to specify the configuration file (ISH file) for the Embed-It! Integrator
tool. The generate_dft command uses the ISH file when launching the Embed-It!
Integrator tool. By default, this option is set to scripts/project_name.ish.
• -masis_files: Specifies the directory that contains the MASIS files. MASIS files
specify the memory instance parameters that are necessary for the tool to interface
with the RTL design. MASIS files allow you to describe the physical core of the
memory. MASIS files (*.masis) include behavioral, structural, and other information of
the memory. MASIS files can be generated using the MASIS compiler.
Example:
set_mbist_configuration -masis_files "../masis"
Example:
set_mbist_configuration -max_mem_num_per_proc 11
Example:
set_mbist_configuration -max_mem_num_per_wrapper 4
• -project_name: Specifies the Embed-It! STAR Planner project name. This also
specifies the directory where the SMS components generated by the Embed-It! STAR
Integrator are written out.
Example:
set_mbist_configuration -project_name $design\_compout
The default path is dft_shell_project. You must specify this option when you specify
the -planner_config option.
• -simulation_models: Lists the directories containing memory Verilog simulation
models or other simulation model files.
Example:
set_mbist_configuration -simulation_models "../simulation_models"
• -verifier_options: Specifies the options of the script file, which will be used for
simulating the modified design.
Example:
set_mbist_configuration -verifier_options "–real design_list_svlog \
/*_ya_files/design_sv.lst"
• -verifier_script: Specifies the STAR Verifier simulation script path. For information
about STAR Verifier, see BIST Production Patterns.
Example:
set_mbist_configuration \
-verifier_script verifier_project_simulation/run_sim.scr
For selecting processors using processor and mmb_processor types, you can use
keywords such as:
◦ SMS_ALL_SP_MEM_PROC: Single port processor mode
For example, the following command selects all single port processors:
set_dft_access_element -type processor -module SMS_ALL_SP_MEM_PROC
You can use this option to select wrapper and processor modules using a wildcard
entry. For example, the following command selects all wrappers whose names start
with core_wrap:
set_dft_access_element -type wrapper -module core_wrap.*
• -parameter: Specifies the TestMAX SMS parameters that overrides the default. The
tool uses this option to update the ISH file.
• -interface: Overrides the connections. When you use this option, the tool updates
the RCL file.
For more information about the set_dft_access_element command options, see the
manpages.
For more information, see Debugging Clock 29 Violations. The TestMAX Advisor tool
generates the dft_memory_report file, which reports memory-related information such as
clock frequency, clock source, count, and so on.
The Embed-It! STAR Planner tool uses the sms_plan_dft_planner_config.tcl and
dft_memory_report files generated by the TestMAX Advisor tool as input to generate the
initial memory grouping information and the Embed-It! STAR Integrator shell script (ISH)
file.
The ISH file is used as an input by the Embed-It! STAR Integrator tool when you run the
generate_dft command to generate the SMS components. The preview_dft.rpt report
file, which is an output of the Embed-It! STAR Planner tool contains the SMS components
and memory grouping information.
The following is an example output of the plan_dft command.
dft_shell> plan_dft
Information: Populating memory information.
Information: Using NDM models for memory identification
Information: Populating compiler information.
Information: Populating setup information.
Information: STAR Planner config file not set. Creating planner config
file
****************************************
Report : Reporting Mismatches
Version: R-2020.09-DEV
Date : Tue Sept 31 16:34:20 2020
****************************************
==============================
Library : stdcell.nlib
==============================
Mismatch Type Total Count Repaired Unrepaired
-----------------------------------------------------------------------
empty_logic_module 2 0 2
Information: Generating design lib file ./sms_plan_dft_gate_design.tlib
Information: Successfully created planner config file
'sms_plan_dft_planner_config.tcl'
Information: Number of memory instances found in design: 1
****************************************
Report : Reporting Mismatches
Version: R-2020.09-DEV
Date : Tue Sept 31 16:34:21 2020
****************************************
==============================
Library : stdcell.nlib
==============================
Mismatch Type Total Count Repaired Unrepaired
-----------------------------------------------------------------------
empty_logic_module 2 0 2
Information: Generating design lib file ./spg_plan_dft_gate_design.tlib
/.../core/spg_plan_dft_config/consolidated_reports/des_unit_core_dft_she
ll_goal/
SpyGlass LogFile:
/.../core/spg_plan_dft_config/consolidated_reports/des_unit_core_dft_she
ll_goal/spyglass.log
Standard Reports:
spyglass_violations.rpt moresimple.rpt
# - The first section contains the total memory count in the design
# followed by the number of memory instances per module
# - The second section contains memory instance specific information
# - shift_clock
# - capture_clock
# - functional clock(s) for all clock pins of all memory
instances
####################################################################
Total Memory Instance Count
: 1
memory_instance
-instance_name
"des_unit_core.memory_inst.high_speed_mem_inst_1.u_mem"
-master_name
"sadclsgq4l1p4096x40m16b1w0c0p0d0t0s2sdz0rw00"
-scanwrapped
-sgdc_memory
-clock_pin_1_name "CLK"
-clock_pin_1_shift_clock_name
"des_unit_core.memory_inst.divider_inst.out_clk"
-clock_pin_1_shift_clock_phase posedge
-clock_pin_1_capture_clock_name
"des_unit_core.memory_inst.divider_inst.out_clk"
-clock_pin_1_capture_clock_phase posedge
-clock_pin_1_fastest_functional_clock_name
"des_unit_core.memory_inst.divider_inst.out_clk"
-clock_pin_1_fastest_functional_clock_frequency 500.0000
-clock_pin_1_fastest_functional_clock_phase posedge
-clock_pin_1_func_clock_001_logical_name "DIV2_CLK"
-clock_pin_1_func_clock_001_root_name
"des_unit_core.memory_inst.divider_inst.out_clk"
-clock_pin_1_func_clock_001_frequency 500.0000
-clock_pin_1_func_clock_001_root_phase posedge
The plan_dft command creates the following directories and files in the current working
directory:
• spg_plan_dft_sources.f – List of all RTL source files.
• spg_plan_dft_constraints.sgdc – TestMAX Advisor constraints such as Clocks, Async,
and TestMode.
• spg_plan_dft_config.prj – File required by the TestMAX Advisor tool to read the source
list and .sgdc files, and to define the checks that are run, such as clock 29 violations.
• spg_plan_dft_config/ – This directory contains the following report files that provide
information such as design-related violations and memory count:
◦ /spg_plan_dft_config/consolidated_reports/des_unit_core_dft_shell_goal/
spyglass_violations.rpt
◦ /spg_plan_dft_config/consolidated_reports/des_unit_core_dft_shell_goal/
moresimple.rpt
◦ ./spg_plan_dft_config/design_name/dft_shell_goal/spyglass_reports/dft/
dft_memory_report.rpt
• <design_name>_compout_mem.csv – This file contains the memory grouping
information.
• sms_plan_dft_sources.f – RTL source files.
• sms_plan_dft_planner_config.tcl – This file contains information such as BIST
configuration, RTL design files, and memory MASIS files, which is used by the Embed-
It! STAR Planner tool for ISH file generation.
• scripts/design_name.ish – Used as an input file by the Embed-It! STAR Integrator tool
when you run the generate_dft command.
The generate_dft command invokes the Embed-It! STAR Integrator and Embed-It! STAR
Builder tools internally. The Embed-It! STAR Integrator tool generates SMS components
such as servers, shadow servers, subservers, processors, and wrappers based on
the scripts/<project name>.ish file. This file contains server, processor, and wrapper
generation parameters.
The Embed-It! STAR Builder tool generates the necessary files required for the
instantiation and connection of the SMS components in the hierarchy of the RTL design.
The Embed-It! STAR Builder tool also generates the files that are required for validation
when you run the validate_dft command.
The following is an example output of the generate_dft command.
Warning: 'check_dft' command should be run to get an early estimate of
the coverage and scan readiness of the design. (DFT-2902)
Client Status
--------- ---------
Scan Disable
Wrapper Disable
Logicbist Disable
Mbist Enable
Dft Access Disable
Scan_compression Disable
Pipeline_scan_data Disable
Clock_controller Disable
ieee_1500 Disable
Bsd Disable
Hsio Disable
Invoking STAR Integrator...
Information: STAR Integrator run started
Information: Read files... done
Information: Running "Generate" on component
"sadclsgq4l1p4096x40m16b1w0c0p0d0t0s2sdz0rw00"
Information: Running "Generate" on component
"des_unit_core_wrap_sadclsgq4l1p4096x40m16b1w0c0p0d0t0s2sdz0rw00_1"
Information: Running "Generate" on component "des_unit_core_proc_1"
Information: Running "Generate" on component "des_unit_core_srv_1"
Information: STAR Integrator run completed successfully
Information: ICT files moved successfully to des_unit_core_srv_1.ict.zip
directory.
Information: Compout Path set to: des_unit_core_compout/compout
Use command
'set_mbist_configuration/set_dft_access_configuration -compout_path' to
change.
Report : Reporting Mismatches
Version: R-2020.09-DEV
Date : Tue Sept 31 17:25:44 2020
****************************************
==============================
Library : stdcell.nlib
==============================
==============================
Library : stdcell.nlib
==============================
Mismatch Type Total Count Repaired Unrepaired
-----------------------------------------------------------------------
empty_logic_module 2 0 2
Information: Generating design lib file ./rtl_modifier_gate_design.tlib
Information: Generating RTL modifier input source list
file ./rtl_modifier_sources.f
Information: Generating RTL modifier commands
in ./rtl_modifier_connection_commands.tcl
The following are the files and directories created by the generate_dft command:
• <design_name>_compout/compout – The directory contains the RTL files for the
SMS-generated BIST components. TestMAX SMS components are written out by the
Embed-It! STAR Integrator tool.
• <design_name>_ya_files – The directory contains the design_sv.lst,
<design_name>_srv_1_chip_param.cpf, <design_name>_srv_1_uds.uds,
<design_name>_hier_paths_sms.txt, <design_compout>_hier_paths.txt files. These
files are used during simulations by the STAR Verifier tool.
• sim_<design_name> – The directory contains the simulation files for each of the SMS-
generated component. These files are used by Integrity Checker to validate the RTL of
the SMS-generated components.
• rtl_modifier_sources.f – List of RTL source files for the connect_dft command.
• rtl_modifier_connection_commands.tcl – Script file used by the connect_dft
command to modify the RTL design.
• rtl_modifier_sources_ip.f – List of source files of SMS-generated components for the
connect_dft command.
Writing the TestMAX SMS DFT Constraints for the Current Level
To write the SMS DFT constraints for the current level only, use the following command:
write_dft_constraints -sms -sms_outdir output_directory \
-setup_options [list TOP_CONSTR_ONLY 1]
You can also customize other parameters such as OUTPUT_DIR, DONT_USE_CELLS, and
SUBCHIP_FOLDERS. For more information, see the STAR Builder User Manual.
Alternatively, you can use a custom setup file. The .script_gen_plugin.setup file with
default parameter settings is generated by the tool during constraints generation. You can
customize the parameters in this file to make your own .setup file and pass the custom
parameters as follows:
write_dft_constraints -sms -sms_outdir output_directory \
-setup_file setup_file_path
setup_file_path specifies the path to the file with the custom parameters. The SMS
constraints are saved in the SMS_constraints/sg_output/design_name directory.
Reports Directory:
/.../core/spg_validate_dft_config/consolidated_reports/des_unit_core_dft
_shell_goal/
SpyGlass LogFile:
/.../core/spg_validate_dft_config/consolidated_reports/des_unit_core_dft
_shell_goal/spyglass.log
Standard Reports:
spyglass_violations.rpt moresimple.rpt
6
Flow for Hierarchical Design
This topic describes how to enable the TestMAX SMS hierarchical flow and read the core-
level SMS-generated components.
To learn about the TestMAX SMS flow for hierarchical designs, see
• Hierarchical Flow Diagram
• Enabling the Hierarchical Flow
• Configuring BIST in the Hierarchical Flow
• Reading Lower-Level SMS-Generated Components
• Hierarchical Flow With Subserver
• Hierarchical Flow With Server and TAP Controller
Set up DFT
Read RTL design files and NDMs for
memories and standard cells
Read test models of lower hierarchies
• -builder_config: Specifies the path to the STAR Builder configuration file (RCL file).
Example:
set_dft_access_configuration -builder_config_file insert.rcl
Use this option to specify the configuration file (RCL file) for the STAR Builder tool.
The generate_dft -generate_connnections command uses this configuration
file when launching the STAR Builder tool. By default, this option is set to
sms_generate_dft_default.rcl.
Use this option to specify the configuration file (ISH file) for the Embed-It!
Integrator tool. The generate_dft command uses this configuration file when
launching the STAR Embed-It! Integrator tool. By default, this option is set to
scripts/project_name.ish.
• -max_mem_num_per_proc: Specifies the number of memories per processor.
Example:
set_dft_access_configuration -max_mem_num_per_proc 11
• -planner_config: Specifies the path to the user-defined configuration file for the
Embed-It! STAR Planner tool.
Example:
set_dft_access_configuration -planner_config_file ./planner.tcl
The plan_dft command uses the planner configuration file when launching the STAR
Planner tool. By default, the plan_dft command generates the Embed-It! STAR
Planner configuration file. If you use this option to specify a user-defined planner
configuration file, you must also specify the -project_name option.
• -project_name: Specifies the project name of the Embed-It! STAR Planner tool. This
also specifies the path where the SMS components generated by the Embed-It! STAR
Integrator tool are written out.
Example:
set_dft_access_configuration -project_name $design\_compout
Example:
set_dft_access_configuration -simulation_scripts sim_top_block
• -verifier_options: Specifies options for the script file used for simulating the
modified design.
Example:
set_dft_access_configuration -verifier_options –real
design_list_svlog/*_ya_files/design_sv.lst
Note:
If both the BIST and dft_access (hierarchical) flows are enabled, the
dft_access flow gets higher priority for common options.
#Directory that contains the memory behavioral models required for SMS
simulations
set_dft_access_configuration -simulation_models \
"memory_Simulation_models_path"
For information about writing the TestMAX SMS DFT constraints, see Writing the TestMAX
SMS DFT Constraints.
The set_dft_signal command identifies IEEE 1149.1 TAPs by placing an attribute on the
specified port. The attribute value is the same as the signal type keyword.
To define each TAP you intend to create in your boundary-scan design, use the
set_dft_signal command.
set_dft_signal -view [spec|existing_dft] -type signal_type \
-port port_list -hookup_pin pad_output_name
#Directory that contains the memory behavioral models required for SMS
simulations
set_dft_access_configuration -simulation_models
"memory_Simulation_models_path"
set_dft_signal -type tdi -port TDI -view spec set_dft_signal -type tdo \
-port TDO -view spec
set_dft_signal -type tck -port TCK -timing [list 45 55] -view spec \
set_dft_signal -type tms -port TMS -view spec
set_dft_signal -type trst -port TRSTN
set_bsd_instruction SMS_SEL -code 1000 -register SERVER1 -length 1 \
set_app_options -as_user_default -name
dft.testmax_force_tlib_file_generation -value true
7
Custom BIST Algorithm
Embedded memories occupy the largest part of the chip area. Memories are structured
and designed tightly to the limits of the technology. This makes memories more prone to
failures than logic. Memory test algorithms must cover the fault models corresponding to
the target fabrication process and memory design.
Some fault models are not known during the design of the product. The flexibility that
allows you to select memory test algorithms on-the-fly during silicon debug helps you to
identify unexpected failures in the fabrication process. Programmable memory BIST allows
you to select memory test algorithms that cover a wide variety of faults, thereby reducing
area cost. The FSM-based BIST solution is used to customize BIST algorithms.
To learn more about BIST algorithm programmability, see
• FSM-Based BIST
• BIST Controller Hardware Components and Programmable Sources
• Programmability Execution Flow
• Customizing BIST Algorithms
• Test Algorithm Programmability: Use Cases
FSM-Based BIST
Finite state machine (FSM) based BIST allows you to select the test algorithm from a
predetermined set of algorithms using macro commands. The test algorithm is generated
through a set of march elements. This solution has two FSMs: one selects the test
algorithm and the other controls the read/write operation. This solution reduces area and
test time.
The FSM-based BIST controller supports
• Hard algorithm programmability: During the design, either Synopsys-programmed or
user-programmed memory test algorithms can be hardwired into the BIST controller.
Any of these algorithms can be applied to each memory through run-time control. Test
time can be optimized by selecting shorter test algorithms for wafer sort on the ATE.
ALGO_SEL
BIST engine
TBOX_SEL
BIST_RUN ALGO_SEL
SHIFT_STATUS BIST_RUN
WAIT
SHIFT_STATUS
Figure 35 BIST Run With Default and Multiple Programmable Algorithms in TAR
BIST run with default algorithm BIST run with multiple programmable
in TAR algorithms in TAR
TBOX_RST TBOX_SEL
BIST_RUN BIST_RUN
WAIT WAIT
SHIFT_STATUS SHIFT_STATUS
TREG_RST TREG_SEL
ALGO_SEL ALGO_SEL
TSR_CODE MARCH_ELEMENT_CODE
BIST_RUN BIST_RUN
WAIT WAIT
SHIFT_STATUS SHIFT_STATUS
◦ treg_enable TRUE
◦ treg_algo TRUE
You can use the following options with the set_dft_access_element command:
• -type: Specifies the type of processor.
◦ -default: Specifies the default algorithm. The default algorithm must be one
among the algorithms specified for the -soft_programmable and -hardwired
options.
◦ -hardwired: Specifies the hardwired algorithms
Use the command multiple times to give different settings to different processors. Ensure
that the same algorithm is not defined in both hardwired and soft programmable algorithm
lists.
The set_dft_access_element command sets the following SMS parameters in the ISH
file:
• hardwired_test = [NAME1 NAME2…]
• default_algo_name = NAME
To get the list of predefined and user-defined algorithms, run this command before and
after running the set_dft_access_element command.
Specify one of the following values with the -algorithm option:
• userdefined: Reports the list of custom algorithms loaded using the
-load_user_defined_algorithm option.
• predefined: Reports the list of predefined algorithms supported by the TestMAX SMS
tool. The -selected_tests list… option in the ISH file generates processor output
views in the algo_name.alg file in the algos folder.
• all: Reports the complete list of user-defined and predefined algorithms.
Predefined Algorithms
Table 2 lists the field and manufacturing test algorithms for memories.
VLP21 Single-port / Links between static and Recommended for testing links
Multi-port dynamic faults between static and dynamic
faults
• -algorithm: Specifies the list of algorithms for which patterns are generated.
• -sms_list: Specifies the list of processors on which the defined algorithm patterns are
generated.
For example, three processors P1, P2, and P3 support the following algorithms:
• P1 – A1, A2, and A5
• P2 – A3 and A5
• P3 – A1, A5, and A6
Consider the case where the processors must run the following algorithms:
• P1 – A1
• P2 – A5
• P3 – A6
In this case, run the following commands:
create_mbist_pattern -name SMS_Pat_1 -algorithms [list A1] \
-sms_list [list P1]
create_mbist_pattern -name SMS_Pat_2 -algorithms [list A3 A5] \
If you specify only the -check_verify_mbist_system option, the tool executes all
hardwired algorithms in parallel.
Use Case 2
Test algorithm programmability is partially enabled. Only multiple hardwired algorithms are
selected.
set_dft_access_element [list proc1] -type processor \
-parameter [list talgo_prog_enable true treg_enable false]
Use Case 3
Test algorithm programmability is enabled for soft and hardwired algorithms.
set_mbist_configuration -custom_algorithm enable
8
BIST Production Patterns
To learn about generating BIST production patterns, see
• Generating BIST Patterns Using STAR Yield Accelerator
• TestMAX Manager Support for BIST Pattern Generation
• Predefined Patterns
• Creating BIST Production Patterns
• Predefined Patterns: Use Cases
design_real.lst
design_virtual.lst
Predefined Patterns
TestMAX SMS supports the following predefined test patterns:
• Manufacturing
• Memory dump
• Process variation: Tests process variation failures and the corresponding fault models:
read destructive fault (RDF), transition fault (TF), incorrect read fault (IRF) and
destructive fault (DF). The pattern must be run at different PVT corners.
• Production
• Retention: Parallel wait for the selected group of SMS processors between loading and
sequential running of test algorithm segments.
• Random telegraph noise induced failures (RTNF): Runs at low voltages and high
temperatures.
• SONE
To modify the UDS or chip parameter file (CPF), use the update_dft_setup command.
You can specify the following options with the update_dft_setup command:
• -format format: Specifies the format (UDS or CPF) to be updated.
• -active_state value: Specifies the value applied to the port during simulation. This
value must match the port width. Test vector ports can also take a single value, which
is applied to all bits.
• -string string_value: For the UDS, it specifies the value of a string applied to a
port. For the CPF, it specifies a key value pair to be added or updated in the selected
CPF section. This option has priority over the -active_state option.
• -sequence FILE_NAME.txt: Specifies the text file containing the test sequence.
• -section string_value: Specifies the section name in the CPF. This option can be
used with the CPF format only.
The following examples show how the UDS or CPF file can be modified:
# Provide the active state value, 1010 to the RST_N port in the UDS file.
update_dft_setup -format uds -port RST_N -active_state "1010"
# Provide the string value, virtual_clk to the CLK_A port in the UDS
file.
update_dft_setup -format uds -port CLK_A -string "virtual_clk"
# Assign core_proc_1_1 with the value 1.6 and add it to the RATIOS
section in the CPF file.
update_dft_setup -format cpf -section RATIOS -string \
[list core_proc_1_1 1.6]
|--(3) SMS_WRAPPER :
des_unit_core_wrap_sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00_1_gen
|
|--(4) MEMORY :
des_unit_core.memory_core.high_speed_mem_inst_2
|--(4) MEMORY :
des_unit_core.memory_core.high_speed_mem_inst_3
|
|--(2) PROCESSOR : des_unit_core_proc_2
|
|--(3) SMS_WRAPPER :
des_unit_core_wrap_sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00_2_gen
|
|--(4) MEMORY :
des_unit_core.memory_core.high_speed_mem_inst_1
SONE TBOX
create_mbist_pattern -predefined sone_tbox -name sone_tbox_pattern \
-parameters { sone_counter 1 } -sms_list { proc_1 {} proc_2 {} } \
-uds_path "des_unit_core2_ya_files/srv_1_uds.uds"
Manufacturing
create_mbist_pattern -predefined manufacturing -name
manufacturing_pattern \
-sms_list { proc_1 {} proc_2 {} } \
-uds_path "des_unit_core2_ya_files/srv_1_uds.uds"
Production
create_mbist_pattern -predefined production -name production_pattern \
-sms_list { proc_1 {} proc_2 {} } \
-uds_path "des_unit_core2_ya_files/srv_1_uds.uds"
Connectivity check
create_mbist_pattern -predefined connectivity_check -name \
connectivity_check_pattern -parameters { ringlist 1 } -sms_list \
{ proc_1 {} proc_2 {} } -uds_path "des_unit_core2_ya_files/srv_1_uds.uds"
RTNF
create_mbist_pattern -predefined rtnf -name rtnf_pattern \
-sms_list { proc_1 {} proc_2 {} } \
-uds_path "des_unit_core2_ya_files/srv_1_uds.uds"
Process variation
create_mbist_pattern -predefined process_variation -name \
process_varaiation_pattern -parameters { delay 10 } -sms_list \
{ proc_1 {} proc_2 {} } -uds_path "des_unit_core2_ya_files/srv_1_uds.uds"
Retention test
create_mbist_pattern -predefined retention_test -name \
retention_pattern -parameters { delay 100 } -sms_list { proc_1 {} proc_2
{} } \
-uds_path "des_unit_core2_ya_files/srv_1_uds.uds"
Repair verification
set_mbist_configuration -fault_inj_path scripts
create_mbist_pattern -predefined repair_verification -name
repair_verification_pattern \
-sms_list { proc_1 {} proc_2 {} } -uds_path
"des_unit_core2_ya_files/srv_1_uds.uds" \
-fault_inj "repair_faults.inj"
Memory dump
create_mbist_pattern -predefined memory_dump -name memory_dump_pattern \
-sms_list { proc_1 {} proc_2 {} } \
-uds_path "des_unit_core2_ya_files/srv_1_uds.uds"
Fast BIST
create_mbist_pattern -predefined fast_bist -name fast_bist_pattern \
-sms_list { proc_1 {} proc_2 {} } \
-uds_path "des_unit_core2_ya_files/srv_1_uds.uds"
Other Commands
To reuse existing Yield Accelerator Tcl scripts through the TestMAX SMS tool, use the
create_mbist_pattern -name user_pattern_1 -user_tcl_file /disk/A/B/
YA_user_pattern_1.tcl command.
To modify the UDS file with a custom init sequence, use the -format UDS -sequence
[list reset ./X/Y/init_seq.txt] option.
Use Case 2
Create a SONE pattern called sone_pattern_1. The pattern targets all the memories under
the des_unit_core_proc_1 and des_unit_core_proc_2 processors.
create_mbist_pattern -predefined sone -name sone_pattern_1 \
-parameters {sone_counter 1} -sms_list {des_unit_core_proc_1 {}
des_unit_core_proc_2{}} \
-uds_path des_unit_core_ya_files/des_unit_core_srv_1_uds.uds
Use Case 3
Create a SONE pattern called sone_pattern_2. The pattern targets all the memories under
the des_unit_core_proc_1 processor.
create_mbist_pattern -predefined sone -name sone_pattern_2 -parameters \
{sone_counter 1} -sms_list {des_unit_core_proc_1{}} \
-uds_path des_unit_core_ya_files/des_unit_core_srv_1_uds.uds
9
Customizing BIST
To customize BIST, see
• Clocking Architecture: Use Cases
• IEEE 1500 Clock: WRCK
• Customizing Reset Handling
• Customizing SMS Parameters
• Customizing the Interface
• Customizing Pipeline Stages
• Configuring Wrappers Using the DFT Operations File
• Customizing DFT Mode Signals
• Defining the IEEE 1500 Interface at the Shadow Server or Subserver Level
• Disabling Propagation of Memory Functional Ports and Processor Control Signals
• Custom Memory Grouping
User logic
clk_1 (func)
tclk_sms
biste
Processor Memory
Wrapper
Customization support: To set the same clock to drive the BIST operation and the
functional operation, use the set_mbist_configuration -setup_options [list
extract_rcl.connect_proc_clocks 1] command.
User logic
clk_1 (func)
tclk_sms
biste
Processor Memory
Wrapper
Use Case 2
The memory has a dedicated functional clock and test clock.
Default behavior of the tool: An additional port is created at the boundary interface to drive
the BIST controller.
User logic
clk_2 (func)
tclk_sms
Processor Memory
Wrapper
Customization support: To set the functional clock to drive the BIST controller operation
and the functional operation, use the set_mbist_configuration command with the
extract_rcl.connect_proc_clocks 1 parameter.
clk_2 (func)
clk_3 (func)
User logic
tclk_sms
clkb (func)
clk_sms
clka (func)
tclka tclka (test)
tclkb tclkb (test)
Processor
Wrapper Memory
Use Case 3
The memory has a dedicated functional clock and test clock. The functional clock is
controlled by the PLL.
Default behavior of the tool: An additional port is created at the boundary interface to drive
the BIST controller.
PLL
tclk_sms
Processor Memory
Wrapper
Customization support: To set the functional clock to drive the BIST controller operation
and the functional operation, use the set_mbist_configuration command with the
extract_rcl.connect_proc_clocks 1 parameter.
PLL
User logic
tclk_sms
Processor Memory
Wrapper
Processor 1
WRCK
Processor 2
WRCK
Processor 3
vl_srv_WRCK
Core Core
vl_sms_WRCK vl_sms_WRCK
WRCK WRCK
Processor 1 Processor 1
WRCK WRCK
WRCK WRCK
Processor 3 Processor 3
Core Core
vl_sms_WRCK vl_sms_WRCK
WRCK WRCK
Processor 1 Processor 1
WRCK WRCK
Processor 2 Processor 2
WRCK WRCK
WRCK WRCK
Processor 1 Processor 1
Processor 3 Processor 3
Subsystem
TCK
Test CLK
Core
Pad vl_sms_WRCK
MUX
WRCK
(functional)
vl_srv_WRCK
In-system CLK Processor 1
WRCK
Subserver Processor 2
WRCK
WRCK
TCK
Processor 3
TAP
Server
Core
vl_sms_WRCK
WRCK
Processor 1
WRCK
Processor 2
WRCK
Test CLK
MUX WRCK
eFUSE Processor 1
(functional)
In-system CLK Processor 3
Subsystem
Core
vl_sms_WRCK
WRCK
vl_srv_WRCK
Processor 1
vl_sms_WRCK WRCK
Processor 2
Core
WRCK
WRCK
Processor 1
Processor 3
WRCK
Processor 2
Core
vl_sms_WRCK
WRCK WRCK
Processor 3 Processor 1
WRCK
Processor 2
WRCK
WRCK
Processor 1
Processor 3
SoC
Core
vl_sms_WRSTN WRSTN
vl_sms_*proc_1_rst_sms rst_sms
vl_sms_*proc_2_rst_sms Processor 1
rst_sms
vl_sms_*proc_3_rst_sms
Wrapper
WRSTN
rst_sms
Processor 2
rst_sms
Wrapper
WRSTN
rst_sms
Processor 3
rst_sms
Wrapper
Customization support: To merge the RESET signal with WRSTIN, use the
set_mbist_configuration command with the extract_rcl.connect_proc_resets 1
option.
Core
vl_sms_WRSTN WRSTN
rst_sms
Processor 1
rst_sms
Wrapper
WRSTN
rst_sms
Processor 2
rst_sms
Wrapper
WRSTN
rst_sms
Processor 3
rst_sms
Wrapper
TestMAX SMS components are connected to higher levels using the RCL file. In the
following example, the user-defined connections of clk_sms, rst_sms, and the DFT mode
bits of two processors are shown.
The default RCL file:
sms $Test_case2_proc_2_sms_2_tcl add_top_level_port "clk_sms" \
"vl_sms_proc_2_sms_2_clk_sms"
sms $Test_case2_proc_2_sms_2_tcl add_top_level_port "rst_sms" \
"vl_sms_proc_2_sms_2_rst_sms"
sms $Test_case2_proc_2_sms_2_tcl add_top_level_port "dm0" \
"vl_sms_proc_2_sms_2_dm0"
sms $Test_case2_proc_1_sms_1_tcl add_top_level_port "dm0" \
"vl_sms_proc_2_sms_2_dm0"
Inpipe P
TAP P P
JPC P
P
Processor
P
Int Memory
P
P
SFP P P
P
To control the number of pipeline stages between the TAP and server, use the following
command:
set_dft_access_element -type server -parameter [tap_srv_pipes "N"]
To enable pipelining between the server and the IEEE 1500 rings, use the following
command:
set_dft_access_element -type server -parameter [srv_sms_pipes "N"]
Similarly, to enable pipelining between the wrapper and memory, you can customize
the wrapper parameters such as pipe_lined_bist_inputs,pipe_lined_read, and
pipeline_regs_on_wr_inputs. For more information on the available options, see the
STAR Wrapper Compiler User Guide.
To enable pipelining between the wrapper and memory, use the following commands:
set_dft_access_element -type wrapper -parameter \
[pipe_lined_bist_inputs "N"]
set_dft_access_element -type wrapper -parameter \
[pipe_lined_read "N"]
The following is an example for the STAR Embed-It! Integrator ISH command:
component wrapper_name set_parameter dft_ops_file
“/remote/user/my_dft_operation_files/sample_dft_operations.tcl”
DFT operations in the dft_ops.tcl file must be specified using the following format:
set dft_op_table(dft_mode_name:dm_pin_values)
{memory_port_name:port_value … wrapper_control_name:ctrl_value}
set dft_insertion_mode dft_insertion_mode_name
• dm_pin_values: Represent the values of dm2, dm1, and dm0 signals for which
dft_mode_name is activated. 000 is reserved for BIST and functional modes and
cannot be specified in the DFT table.
• memory_port_name: Name of the memory port assigned to port_value during DFT
mode.
• wrapper_control_name: Name of the wrapper control signal assigned to ctrl_value
during DFT mode.
• port_value and ctrl_value: The values to which the memory port or the wrapper
control signal is assigned during DFT mode. port_value and ctrl_value can be
either binary digits (such as 0, 1, or 1010), force_active, or force_inactive.
If the force_active or force_inactive argument is used, the wrapper automatically
detects the memory port active level from the MASIS file (based on the ActiveLevel or
SafeValue parameter) or uses High (1) and Low (0) by default if the parameters are not
specified in the MASIS file.
• dft_insertion_mode_name: Name of the DFT mode for which the scan insertion is
done. The mode must be set as one of the modes specified by the dft_op_table
parameter.
For example,
set dft_op_table(bist_basic_ATPG:100) {DFTMODE:1}
set dft_op_table(mem_bypass_ATPG:010)
{TD:force_inactive wr_tclk_en_int:force_active
RME:force_active RM:force_inactive DFTMODE:force_active
mem_chain_bypass:force_inactive} set dft_op_table(non_scan_ATPG:111)
{MEB:force_active SE:force_active CD:0 TADR:0}
set dft_insertion_mode bist_basic_ATPG
For configuring memory inputs and wrapper controls using TestMAX SMS commands,
you can use the dft_ops_file parameter as an input. This can be done either using the
set_dft_ops command or the set_dft_access_element command.
To create the dft_ops.tcl file, you can use the set_dft_ops command:
set_dft_ops -name mode_name
-mode mode_value
-pins [list name value]
-dft_insertion_mode mode_name
-ram_seq_mode mode_name_list
Alternatively, you can also pass the existing file through the set_dft_access_element
command.
set_dft_access_element -type wrapper
-parameter [list dft_ops_file file_path]
The following figure shows how each of the six core-level processors and one subsystem-
level processor are connected to separate subsystem-level ports individually.
The following figure shows how the DFT mode pins of the three core-level processors are
merged before propagation.
The following figure shows how the DFT mode pins of the core-level processors are
merged at the subsystem level before propagation.
The hookup pins must be unconnected so that the SMS tool can connect these pins to the
newly created signals.
The memory functional ports are defined using the None tag in the MASIS
file and are not connected to the design boundary in the input RTL. The
extract_rcl.limited_test_pin_propagation parameter also disables the propagation
of the processor status signals to the design status boundary. This parameter is passed to
the SMS setup file.
The following figure shows how the memory functional ports are propagated by default.
Read margin,
New ports read margin enable,
TEST1, BC1, and so on
The following figure shows how the memory functional ports propagation is disabled using
the extract_rcl.limited_test_pin_propagation parameter.
Read margin,
read margin enable,
TEST1, BC1, and so on
Disabled
Disabled
If the proc_3 processor does not exist, the tool creates the processor.
• -wrapper: Specifies the wrapper in which the memory instance is placed. If the
-processor option is specified and the specified wrapper does not exist, the tool
creates it under the processor. If the -processor option is not specified, the tool
creates the specified wrapper under the processor in which the memory instance was
already present.
For example, the following command groups all the memory instances ending with
inst_1 under the wrap_1 wrapper:
set_memory_grouping -instance [list .*inst_1 ] -wrapper wrap_1
If the processor is specified and the wrap_1 wrapper does not exist, the tool creates
the wrapper. If the processor is not specified, the tool creates the wrap_1 wrapper
under the processor in which the memory instances are present.
• -wrapper_type: Specifies the wrapper type. For the shared type (default), multiple
instances of identical memories can be placed under a wrapper. For the dedicated
type, only one memory instance can be placed under a wrapper.
• -file: Specifies the path of the CSV file that contains information about the memory
instance, processor, and wrapper. This option must be specified alone.
For example, set_memory_grouping -file csv_file_path.
The following example shows the format of the CSV file.
Memory, Processor Name, Wrapper Name
block.mem_inst1.mem_1, proc_3, wrap_3
block.mem_inst2.mem_1, proc_2, wrap_2
For custom memory grouping using additional parameters, see Memory Grouping
Using a Custom CSV File.
A
Debugging Clock 29 Violations
The clock 29 rule ensures that all clock sources of memories or hard macros are
controlled by the test clock in shift/capture mode. This rule ignores the no-scan memories
and hard macros.
The following report shows the clock 29 violations during the execution of the plan_dft
command.
Extracting memory clock information from SpyGlass...
$SPYGLASS_HOME/bin/spyglass -project spg_plan_dft_config.prj -goal
dft_shell_goal -batch
Information: SpyGlass run started
Information: Synthesis completed
Information: Flattening completed
Information: SpyGlass running goal(s) `dft_shell_goal' with top
`des_unit_core' completed successfully
SpyGlass Message Summary: 1 error, 8 warnings, 8 Infos
-------------------------------------------------------------------
Results Summary:
-------------------------------------------------------------------
Total Flip flop count: 1
Scannable Flip flop count: 0
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:
./CORE/spg_plan_dft_config/consolidated_reports/des_unit_core_dft_shell_
goal/
SpyGlass LogFile:
./CORE/spg_plan_dft_config/consolidated_reports/des_unit_core_dft_shell_
goal/spyglass.log
Standard Reports:
spyglass_violations.rpt moresimple.rpt
You can find the errors reported during the TestMAX Advisor checks in the
spg_plan_dft_config/ consolidated_reports/$design_dft_shell_goal/moresimple.rpt file.
To view the clock 29 violations:
1. Use the plan_dft -load_gui command to open the GUI.
3. Right-click the memory instances and select Incremental Schematic to view the
blockage.
B
Content-Addressable Memories
Content-addressable memories (CAMs) are a class of memories that compare the search
data against a table of stored data and return the address of the matching data, unlike
RAMs, which search for a specific memory location and provide the data stored in this
address.
CAMs with superior search speed find a role of their own in applications where intensive
data handling is required.
Unlike RAM, which has simple storage cells, each individual memory bit in a fully parallel
CAM must have its own associated comparison circuit to detect a match between the
stored bit and the input bit. This makes CAMs to have more physical size than other types
of memories.
CAMs come in two major types: binary CAMs (BCAMs) and ternary CAMs (TCAMs).
BCAMs are the simplest type of CAMs that use only 1s and 0s in the stored word. TCAMs
allow a third matching state X or “don’t care” for one or more bits in the search word.
The generated MASIS file is used in the plan_dft stage with the design RTL for .ish file
generation.
In the TestMAX SMS tool, there are separate Silicon IP generator compilers for CAMs. In
addition to the wrapper and processor compiler, the SMS tool includes CAM processor,
CAM wrapper, and virtual memory compilers for CAM.
It is necessary to include these compiler files along with the general SMS compilers in the
compiler library path provided to the tool.
set_mbist_configuration -compiler_libraries "-compiler_libraries_path"
The .ish file is used to run the Integrator tool, which uses the CAM processor and CAM
wrapper compilers to generate CAM-specific processors and wrappers.
Features
The TCAM flow supports all the features supported by the generic SMS flow, including the
following:
• Compiler parameter update for the CAM processor and CAM wrapper compiler
• Location and instance name control for the CAM processor compiler
• Custom algorithm support for the CAM processor compiler
• A unified TCAM-SMS flow for designs having both CAMs and other classes of
memories
C
Memory Grouping Using a Custom CSV File
While the plan_dft command runs, the Embed-It! STAR Planner tool uses the
sms_plan_dft_planner_config.tcl and dft_memory_report files generated by the TestMAX
Advisor tool as inputs to generate the initial memory grouping information and the Embed-
It! STAR Integrator shell script (ISH) file. This memory grouping information is stored in the
design_name_compout_gr.csv file.
You can use the custom CSV flow to control memory grouping. This is done by creating
a custom CSV file and passing it to the TestMAX SMS tool before running the plan_dft
command, as follows:
set_mbist_configuration -custom_csv_file csv_file_path
The Embed-It! STAR Planner tool uses the custom CSV file to generate the ISH file.
You can customize the following parameters in the CSV file for memory grouping:
• Memory Instance
• Memory Type
• Wrapper Name
• Processor Name
• Server Name
• Clock Source
• Frequency
For grouping based only on the processor, the Proximity Domain Name, Power Domain
Name, and User-Defined Domain Name parameters are not required in the custom CSV
file.
For example, the following design_name_compout_gr.csv file is generated by default by
the SMS tool.
Memory Instance,Memory Type,Memory Instance Count,Wrapper Name,
Wrapper Instance Count,Processor Name,Ring Info,Server Name,Clock Source,
Negedge,Processor Path,Clock Domain Name,Frequency,Proximity Domain Name,
Power Domain Name,User-Defined Domain Name
des_unit_core0.memory_inst.high_speed_mem_inst_2,
sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00,2,
des_unit_core0_wrap_sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00_1_gen,1,
des_unit_core0_proc_1,1:1,des_unit_core0_srv_1,clk500_grp2,
,des_unit_core0.memory_inst,clkgrp_user_500_grp_2,500.0000,,,
des_unit_core0.memory_inst.high_speed_mem_inst_3,
sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00,2,
des_unit_core0_wrap_sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00_1_gen,
1,des_unit_core0_proc_1,1:1,des_unit_core0_srv_1,clk500_grp2,
,des_unit_core0.memory_inst,clkgrp_user_500_grp_2,500.0000,,,
des_unit_core0.memory_inst.high_speed_mem_inst_1,
sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00,1,
des_unit_core0_wrap_sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00_2_gen,
1,des_unit_core0_proc_2,1:2,des_unit_core0_srv_1,clk500_grp1,
,des_unit_core0.memory_inst,clkgrp_user_500_grp_1,500.0000,,,
You can use the following custom CSV file to customize the default file.
Memory Instance,Memory Type,Memory Instance Count,Wrapper Name,
Wrapper Instance Count,Processor Name,Ring Info,Server Name,Clock Source,
Negedge,Processor Path,Clock Domain Name,Frequency,Proximity Domain Name,
Power Domain Name,User-Defined Domain Name
des_unit_core0.memory_inst.high_speed_mem_inst_2,
sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00,2,
des_unit_core0_wrap_sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00_1_gen,
1,des_unit_core0_proc_3,1:1,des_unit_core0_srv_1,clk500_grp2,,
des_unit_core0.memory_inst,clkgrp_user_500_grp_2,500.0000,,,
des_unit_core0.memory_inst.high_speed_mem_inst_3,
sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00,2,
des_unit_core0_wrap_sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00_1_gen,
1,des_unit_core0_proc_1,1:1,des_unit_core0_srv_1,clk500_grp2,,
des_unit_core0.memory_inst,clkgrp_user_500_grp_2,500.0000,,,
des_unit_core0.memory_inst.high_speed_mem_inst_1,
sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00,1,
des_unit_core0_wrap_sadsls0c4l2p2048x32m8b1w0c0p0d0r1s2z1rw00_2_gen,
1,des_unit_core0_proc_2,1:2,des_unit_core0_srv_1,clk500_grp1,,
des_unit_core0.memory_inst,clkgrp_user_500_grp_1,500.0000,,,
• A path between the clock source and memory clock pin exists
• Memories under a processor have the same clock source, clock domain, proximity
domain, and power domain
• Each wrapper exists under one processor only
• Each wrapper contains memories of the same type only
• The number of memories under a wrapper or processor is within the defined limit set by
the set_mbist_confguration command
set_mbist_configuration -max_mem_num_per_proc
set_mbist_configuration -max_mem_num_per_wrap
In the custom CSV flow, the TestMAX SMS tool considers the user-specified MBIST clock
in the custom CSV file even if the clock is not related to or not in the path of the memory
functional clock. You must specify this clock as a clock source in the input SMS scripts.
Note:
The TestMAX Advisor tool traces the MBIST clock to a traceable point in the
path of the memory functional clock. Therefore, you can ignore the TestMAX
Advisor clock trace report if the custom CSV clock is not in the traceable path.