Professional Documents
Culture Documents
Diagnosing Simulation Miscompares Modus
Diagnosing Simulation Miscompares Modus
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Cadence and the Cadence logo are
registered trademarks of Cadence Design Systems, Inc. All others are the property of their respective
holders.
Contents
Purpose........................................................................................................................ 4
Fault/Failure Introduced into the Xcelium Netlist .......................................................... 4
Audience ...................................................................................................................... 4
Overview ...................................................................................................................... 5
Items to Review before Starting Mis-Compare Analysis .............................................. 6
OPCG and SDF-Annotated Timing Items to Check .................................................. 7
Modus Verilog Patterns ............................................................................................ 8
Compile and Simulate .................................................................................................. 9
Description of the Simulation Mis-Compare Messages Shown in Figure 2............. 14
Using the Modus Diagnostic Tool (Serial Simulation Failures Only) .......................... 16
Import Failures into Modus Diagnostics .................................................................. 17
Diagnose Failures Using Modus Diagnostics ......................................................... 18
Diagnostic Analysis Success .................................................................................. 19
Understanding the Test Pattern Event Order ............................................................. 20
Important Notes for Parallel Verilog ........................................................................ 21
FULLSCAN Event Order ......................................................................................... 22
XOR or OPMISR Compression Conditional Pattern Sequence .............................. 23
Logic Timing for OPMISR with Masking ................................................................. 25
Debugging SO (Scan Output) FULLSCAN Logic Failures ......................................... 26
High-Level Debug Scenario .................................................................................... 26
Example Scan Output Failure Message ................................................................. 27
Detail Information from the TVE-660 Failure .......................................................... 27
Modus Simulation Mis-Compare Analysis: A Detailed Example ................................ 29
Finding the Root Cause of the Mis-Compare ............................................................. 37
Summary of Analysis Actions and Hints..................................................................... 44
XOR and Smartscan Serial Pattern Failure Analysis Scenario ............................... 46
A Few Checks Before Analysis ............................................................................... 46
Logic Pattern Timing for XOR- with Masking ............................................................. 48
Bonus Debug Information ....................................................................................... 50
Summary.................................................................................................................... 51
Support ...................................................................................................................... 51
Feedback ................................................................................................................... 51
Purpose
This application note illustrates how to diagnose Modus Verilog pattern mis-compares. If
you are not familiar with how to compile and simulate Modus Verilog patterns, see the
“Simulating Modus Verilog Patterns” application note.
The information in this application note provides you with the background knowledge
and tools to debug your simulation mis-compares. Requirements for your specific
design may dictate procedures slightly different from those described here.
Modus leads the industry in providing volume and fault-isolation diagnostics for patterns
that fail on a hardware tester. This document will introduce you to Modus Diagnostics
but does not cover the robust set of failure-diagnostic features that are available. For
information on this topic, contact your Cadence representative or download the Modus
Diagnostics RAK.
The DTMF netlist that is imported into the Xcelium simulator has been edited to cause a
few simulation mis-compares. You can download the ATPG RAK and insert this fault to
gain a hands-on experience.
Within module “results_conv_602”, we introduced this bug (An XNOR “A” input
stuck-at-1)
Audience
All Modus users who have Verilog simulation mis-compares.
Overview
Cadence Modus produces WGL, STIL, TDL, and Verilog output formats. Before
releasing WGL, STIL, or TDL to a hardware tester, engineers should simulate the
patterns via a Verilog simulator. Sometimes, simulation of the Verilog pattern set results
in mis-compare messages. When this happens, you must identify the cause of these
mis-compares and remedy the problem before releasing the test patterns.
This document provides advice and examples on how to identify the root cause of mis-
compares within a Modus pattern set. If you are not familiar with simulating Modus
patterns and are unaware of built-in debug features within Modus Verilog, first read the
“Simulating Modus Verilog Patterns” application note. That application note provides the
following information:
• How to compile your device under test and all the technology libraries
• Information about built-in debug features within Modus Verilog and how to invoke
those features
• The SDF timing file and how to annotate that timing data for simulation
Debug using the easiest scenario: Zero-delay simulation on using FULLSCAN test
mode patterns using parallel-pattern output from write_vectors.
• Avoid debug with serial patterns, SDF annotation, or XOR test modes, if you can.
For SDF timing annotated failure, are you seeing Expect <value> Simulate “X”?
• If yes, look for timing-violation messages in the simulation log. Any messages
result in the FF output being set to “X”. Fix these violations.
• Note that your SDF file may contain negative numbers. This may require a
compiler directive to select Negative Timing Check (NTC) code within the
technology library cells.
Zero-delay simulation may cause event order problem. The output UDP Verilog models
may get updated on a clock edge AND propagate downstream to another Latch or FF
without the need to advance time in the simulator. This will look like you have simulated
a double-clock pulse.
• Verify whether Modus is applying a “Z” input stimulus or trying to apply a pull-up
or pull-down . Look near the top of any Verilog pattern file for “203 0”, “203 1”,
or “203 Z”. This will tell you whether Modus is applying a weak-0, weak-1, or “Z”
stimulus when it expects the chip to drive the bidirectional pin.
• The Modus ATPG parameter for controlling these ‘pull’ values applied to
bidirectional pins is “globalterm”.
• The Modus pin assign file will have a “cutpoint” that defines this internal clock
source. Probe this location and ensure there is a clock pulse generated.
o Make sure that it is getting a clock pulse if that is what Modus expects.
o Compare the clock pulse(s) you see in the simulation with the FF clock
input from Modus. (Make sure you have the correct Modus pattern
selected – Discussed below)
• If you do not see a clock being generated during the simulation, check the
simulation log file for “lock”. In most PLL models, there is a message stating that
the PLL has locked and is generating the internal high-speed clock. You may see
a message that says that the lock is lost. This is bad.
Hint: If you have “no PLL lock” or “lock is lost” message, check the reference
OSC input to ensure that it is being applied in every tester cycle. Any gaps can
cause the PLL to not lock or lose its lock.
If you have imported SDF timing data into Modus and Xcelium, look at the import logs to
make sure that the timing data for the library cells has been imported.
If you are running SDF timing annotation and you are getting “Expected 1 or 0” and
“Simulated X”, check for timing-violation messages prior to the mis-compare. A timing
violation is most likely the root cause.
• During simulation debug analysis, you will be tracing back an X that most likely
leads to a Register/FF.
<WORKDIR>/testresults/verilog
There is one “mainsim.v” file and one or more vector files that are created for each
test mode. All the file names begin with “VER.<testmode>”. Scan confidence patterns
are placed into a file with “scan” as part of the name. Logic patterns are placed into a
file with “logic” as part of the name. The following is an example of a Verilog file set
for a Compression Decomp OPCG test mode (One logic pattern set, one scan pattern
set).
VER.COMPRESSION_DECOMP_OPCG.data.logic.ex1.ts2.verilog
VER.COMPRESSION_DECOMP_OPCG.data.scan.ex1.ts1.verilog
VER.COMPRESSION_DECOMP_OPCG.mainsim.v
Failures are reported in the log file and in the diagnostic +FAILSET file:
VER.COMPRESSION_DECOMP_OPCG.data.logic.ex1.ts2.verilog_FAILSET
The +FAILSET argument will produce CPP failure data for each mis-compare (See
Figure 4). For serial-pattern mis-compares, see “Using the Modus Diagnostic Tool”
section below.
Diagnostic analysis works with FULLSCAN and Compression. If your design has
Smartscan, you will first convert the failing Smartscan cycle to an XOR Compression
cycle using convert_smartscan_failures.
• There are 17 mis-compares in the parallel logic pattern set and 29 for serial
simulation.
o The measure event takes place while the chip is in functional mode, not in
scan shift mode.
The functional capture clock is issued, and data output values are
measured.
o With parallel patterns, you are measuring the expected values on the scan
FF. There is no scan chain shift offset to consider.
Failure analysis will involve finding the scan chain and bit position
of the FF instance for schematic display.
o You will need to trace back in time through all the scan shift clock pulses
to find the functional capture clock.
Hint: Within the waveform display, trace backwards in time via the SE pin.
The clock pulse when the SE is inactive is the functional capture clock.
This is the ATPG pattern number. You will need it when you invoke the Modus
schematic to see the logic values that are predicted by ATPG.
You can reference the “pattern” display variable in your simulation waveform
dump. With this value displayed, you can align your simulation results with
ATPG.
• Time: 190980000.00 ps
Note the time of the mis-compare. This time will differ between serial and parallel
simulations.
When you re-simulate to dump waveform values, you only need to simulate
slightly past this point.
Note: If you have initially run multiple TESTFILE pattern files, you can rerun and
simulate only the failing file. Removing TESTFILEs will affect the failing
simulation time that is reported.
Note: For parallel simulation, you may see that the failing net being measured
transitions at the point in time of failure. Move your time flag slightly earlier.
o In parallel simulation, you FORCE a new value onto the scan chain bit
positions for the next ATPG pattern.
o This will override the value in the chip and make it look like the FF’s
change value without any clock pulses.
• Scan Cycle #: 15
The CYCLE number reported on SO failures is the scan chain bit position relative
to SCAN OUT. The SO measure pin and scan chain register number (an “internal
to ET only” concept) will tell you which scan chain the failing FF is on.
o For parallel simulation, remember that you are measuring an internal net
driven by the scan chain FF. The measure is not done at the SO pin.
o For serial scan simulation, you will see all the scan chain shift clocks up to
the point of failure. You will want to work your way forward in time to find
where the SE is inactive and the clock pulse is the functional clock.
For Compression test modes, there can be hundreds of internal scan chains.
This entry provides the scan output of that channel and reports the scan chain
number.
Use this information to find the scan chain and bit position of the failing FF within
the Modus schematic.
If the debug variable “-includelatchnames yes” has not been used, the internal net
will not be printed as part of the message. When this happens, there are several ways
to identify the FF scan chain instance. Here are three methods (more details given
below):
• Bring up the Modus schematic via “WINDOWS > ANALYSIS CONTEXT”. From
the SCHEMATIC window, you can select “VIEW > SCAN BIT” to bring up the FF
instance. In the schematic, you can find the FF instance name.
• If you are running parallel Verilog simulation, the instance name is within the
mainsim.v file. You can find it manually based on the CYCLE entry or add a
“write_vectors” parameter to report the instance name.
Each mis-compare in your simulation run will produce a CPP (Chip-Pad-Pattern) failure
entry. The above figure shows only 3 of the 29 from your serial simulation example. Use
the +FAILSET failure file as an input to the Modus diagnostic tool set.
The CPP “position” keyword is the FF bit position on the scan chain. This goes from
1-to-n. The FF that directly drives the scan output pin is position 1. The “position”
keyword matches the Modus scan chain report.
If the CPP has the “offset” keyword instead of “position”, the bit position relative to
the scan out pin is 0 to n-1. The scan chain FF next to the scan out is bit position 0.
When the “offset” keyword is used, you will need to account for this if you reference
the Modus scan chain report. The scan chain structure “Observe Bit” entry is reported
from 1 to n relative to the scan output pin.
If the entry is “-1”, the failure is observed on a primary output pin and is NOT part of a
scan chain shift (Scan_Unload) operation. This operation is called a “Measure_PO”
event.
• Hardware tester failure data may report each failure at a CYCLE number. For
this, write_vectors creates a “cyclemap.*” file, which is used to map the
tester cycle from each failure back to the ATPG pattern number.
o You can learn more about using this script in the Modus Diagnostics RAK.
In the TFL-055 message above, expect no ‘failed’ imports. Analyzing ‘failed’ imports is
discussed in the Modus Diagnostics RAK.
Modus reads in the fail set from ‘read_failures’ and simulates the failure results
against possible faults in the design. The diagnostic results are reported. It is literally
that easy.
The log file entry below has been edited to fit the page.
first first
fault contributing conflicting
index score TFSF TFSP TPSF sequence sequence
---------------------------------------------------------------------
• TFSF = Tester Failure, Simulator Failure. Every tester failure (in this example,
the Xcelium mis-compare) is predicted by the Modus diagnostic simulation of the
fault location identified.
• TFSP = Tester Fail, Simulator Passed. For the given fault, anything other than 0
says there were reported tester or simulation failures that are not predicted by
the given fault.
• TPSF = Test Passed, Simulator Failed. For the given fault, diagnostics predicted
there would be a test pattern mis-compare (SF); yet the tester reported no mis-
compares (TP).
• Any TFSP and TPSF entries tell you that the fault identified does not completely
explain all failures that are reported in the fail set. This reduces your SCORE.
• “Cell Instance” points exactly to the bug you placed into the netlist for Xcelium.
See the section “Fault/Failure Introduced into the Xcelium Netlist”.
• ISA1: 13436 = Input Stuck-at-1 and the fault index number. That is the bug you
placed into the netlist.
o You can use the fault index number “13436” in the Modus schematic to
view the fault location.
Hint: Look at the comments at the top of your Verilog mainsim.v file. You will see the
two timing sets, one for “TEST” and one for “SCAN”. The event sequence and timing for
static patterns is provided along with the names of all your important control and clock
pins. An example from the Advanced ATPG RAK is given below:
//
// "DFT_mask_clk" (PI # 2)
// TEST OFFSET................2.000
//
// "OPCG_LOADCLK" (PI # 5)
// TEST OFFSET................2.000
Hint: write_vectors ‘scanXXX’ and ‘testXXX’ parameters allow you to adjust the
timings of when pins are stimmed, clocks are pulsed, and outputs are measured. You
cannot change the event order.
1. Measure the expected (you observe an internal net for every bit of every scan
chain).
2. Issue a #0.0 delay to advance the event wheel within the simulator.
3. Apply the Stim values for the next pattern. (This is applied to the net that drives
the SI port of every scan chain bit.)
WHEN YOU LOOK AT THE NCSIM WAVEFORM, you may see that the measure net
immediately transitions the value right at the time when it is being measured. This is
okay. The measure always takes place before you apply the Stim for the next pattern.
Also note whether there are different libraries for ATPG (Modus) and the Verilog
simulator. Sometimes, the library cell net identified for parallel stimulus/observe is not
the correct net within the simulation model. If the net identified by ATPG does not exist
in the simulation model, you will fail with an elaboration error.
1. If you suspect this to be true, one option is to ask for port names.
1. Set scan mode (Look for the scan enable pin to toggle).
2. Scan load.
3. Apply new PI state (Turn off scan enable, Set any other pins desired).
o During scan unload, you also Scan_Load in the next pattern. This is called
‘scan overlap’. It saves time on the tester.
Steps 1-2 and 6-7 are applied via “scan_cycle”. Steps 3-5 are applied via
“test_cycle”.
scan_cycle and test_cycle are timing templates that define an orderly event
sequence. These templates map nicely to hardware testers (ATE). The timing in these
templates are described within comments at the top of the Verilog mainsim.v file as
shown in the event order section above.
IF masking is required
ENDIF
Scan unload
Apply values to CME pins (Mask the scan chain pin), as needed. Masking
is done or not done for every scan shift.
IF OPMISR
IF MISR is to be observed
ENDIF
ENDIF
END
Return to TG state (if there are any TC pins, apply them in the scan exit
sequence)
2. Display the failing FF and surrounding logic on the Modus schematic and apply
the failing pattern.
a. The TVE-660 message gives you the observe scan chain and bit position.
Use this in the Modus schematic to pull up the failing scan FF.
b. Set the failing pattern number from TVE-660 to see the logic values that
Modus ATPG is predicting.
3. Via the Modus schematic capture, create a “watchlist” of signals within the failing
FF cone of logic. This list will be imported into the NC simulator.
a. The point in time at which you want to do this initial comparison is when
the functional capture clock is issued. (The scan enable signal is NOT
active.)
Note: To translate the Modus “watchlist” into a set of probe points, you will use a
Tcl program called “watch2probe.tcl”. This TCL program is in the installation
“scripts” directory.
5. Identify where the predicted versus simulated logic values differ and trace that
difference through the logic and possibly across time.
a. Keep in mind that if you find nothing that mis-compares at or around the
FF at the functional clock capture time, the failure may be occurring during
scan shift. This means you would have to trace the scan chain and
advance through time to show the captured FF value, as it is shifted
toward the scan output pin.
b. When you find a difference and trace that logic path, you will want to add
this new logic to your “watchlist” and rerun the simulation with this updated
list.
Learn more at Cadence Support Portal - https://support.cadence.com
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 26
Diagnosing Simulation Mis-Compares in Modus Test Patterns
On net: DTMF_INST.RESULTS_CONV_INST.lower770.n_22
− Cycle/Bit #: 271 tells you that the 271st FF from the scan output pin is the state
device that captured the bad logic value during the functional capture portion of
the test.
o The FF that directly drives the SO pin is reported as “Cycle 1”; therefore,
your failing FF is 271st from the scan output.
If you do not have a net name from the mis-compare message but
are running parallel Verilog simulation, you can look at the TVE-
660 message within your Verilog mainsim.v file to identify the
appropriate “part_MLs” variable entry. “part_MLs” is a vector
variable where each bit is mapped to an internal signal.
part_MLs_1[271] =
!dtmf_chip_inst.DTMF_INST.RESULTS_CONV_INST.lower770.n_22
If you have serial Verilog, you will not have an internal net or FF
name within the mainsim.v file. You will map the mis-compare
message information to the output from
report_test_structures.
DTMF_INST.RESULTS_CONV_INST.lower770.\dout_reg[0]. i3.dff_primitive
DTMF_INST.RESULTS_CONV_INST.lower770.\dout_reg[1]. i3.dff_primitive
Figure 5 shows failing bit 271 for your failing scan chain in the “ObserveBit” column.
The header information in the report names the scan output pin. Note that this report will
provide the FF instance name, and not a net instance driven by the FF.
Note that in the Modus schematic, you can request Observe Register 1 scan bit 271,
and it will display this FF instance.
o This example is from the DELAY_SDF_TIMED lab within the Advanced ATPG
RAK.
B. Use the Modus GUI and schematic to find the failing FF instance:
modus -gui
Dock the Analysis window into the main GUI by selecting the green arrow on the
right.
o Select VIEW > SCAN BIT, and then select Observe and enter Register
48, Bit Position 15.
In Figure 8 below, note that the Information window Scan Path Data confirms
Observe Register 48 and Bit Position 15.
Also note that the Information window provides the scan FF instance name.
Hint: Within the schematic, you can select the enclosing block and with a right-
click, implode to collapse. Find the technology cell for the ATPG RAK. This is cell
name SDFFRHQX1 and instance:
DTMF_INST3.RESULTS_CONV_INST.high_reg_2_.
o Highlight the clock pulse. The Information window will place brackets
around this clock pulse event.
o When you place the mouse over the FF ports the Information window, it
will show the ATPG values.
o The value within the brackets is the pattern you highlighted. If this is a
clock pulse pattern, the value is after the clock pulse has been simulated.
o Place the mouse over the FF output port and verify that ATPG expects 0.
Figure 9: xrun compile and simulate with GUI for waveform debug
-access +rwc \
VER.COMPRESSION_DECOMP_OPCG.mainsim.v \
../../../dtmf_chip.test_netlist_bad.v \
-v ../../../LIBS/verilog/include_libraries_sim.v \
-incdir ../../../ \
+TESTFILE1=VER.COMPRESSION_DECOMP_OPCG.data.logic.ex1.ts2.verilog -gui
o Add “-gui” - You want to interactively request probe points for waveform
debug.
“-access +rwc” is important. This allows you to probe internal to the chip.
In the Design Browser, select the “pattern” variable and dump it to the
waveform.
As shown in Figure 10, expand the Design Browser hierarchy to find the SDFF
technology cell instance obtained from the Modus schematic
DTMF_INST3.RESULTS_CONV_INST.high_reg_2_.
Dump these signals to the Waveform viewer (The Waveform icon at the top
right).
Hint: At the bottom right, you will see that you asked to NOT display internal
signals. You get port “Objects” only.
Figure 10: Find the failing SDFF in the Xcelium Design Browser
When you re-simulate the patterns with only the logic pattern set, the failing time
changes but all other information remains the same.
In the SimVision CONSOLE window (not shown), you must type “run” after selecting
items for the waveform display. This will simulate the logic patterns and dump values
into the Waveform viewer as shown above.
In the Waveform viewer, you can expand the names to Path.Name (Look for the down
arrow in the left pane, to the right of the Path.Name column heading and just to the left
of the Curser column heading).
In the waveform display, highlight the SDFF Q output port and drop the TimeA flag to
the failing time 185820000.00 ps.
o Verify that the Q logic value differs from the Modus schematic expect value.
Look earlier in time to find the functional capture clock (Hint: The SE signal is inactive =
0)
Notice that the Xcelium waveform shows the Q output going 0-1 at the functional
capture clock.
o When you look at the Q output in Modus, it stays = 0 (This confirms your mis-
compare).
o Trace this difference. Why does ATPG think there is no capture clock?
The failing scan FF clock input port is driven by 2-input AND cell
DTMF_INST3.RESULTS_CONV_INST.RC_CG_HIER_INST126.g12.
In Modus:
DTMF_INST3.RESULTS_CONV_INST.RC_CG_HIER_INST126.enl_reg
DTMF_INST3.RESULTS_CONV_INST.RC_CG_HIER_INST126.g7
You are going to have to dump these values in the SimVision waveform to see
which input differs.
C. Bring up OR cell
DTMF_INST3.RESULTS_CONV_INST.RC_CG_HIER_INST126.g7 onto the
Xcelium display.
D. At the rising edge of the capture clock, the "B" input = 1. Trace the "B" input of
the OR in Modus.
Hint: In Modus, if you highlight a NET and right-click, you can PROBE. This will
place a color highlight on the net so that it is easier to trace.
DTMF_INST3.RESULTS_CONV_INST.g5965
You are going to have to dump the waveform for this cell to see which input
differs.
E. In the SimVision schematic, trace the "B" input of the first OR cell.
Dump the "A", "B", and "Y" ports to the waveform of g5965.
Figure 12 below shows this waveform because with 0-delay, it looks like both “A”
and “B” inputs = 1 at the leading clock edge. Actually, as shown, only the “A”
input = 1.
Hint: By highlighting the signals as shown and repeatedly using the big BLUE
arrow EDGE search icon at top-left side, you can see the event order.
This figure shows the clock has gone 0-1 and only the “A” input = 1.
A waveform display of cell SDFFRHQX4 shows the clock input has TWO pulses.
The waveform display of cell SDFFRHQX4 shows DATA input=0 for both pulses.
Since you have been highlighting the nets as you trace back, you see that the "B"
input is driven from the SDFF you just traced through.
Hint: Change the highlight color for this net to visually keep it separate from
where you have already traced.
DTMF_INST3.RESULTS_CONV_INST.state_reg_3_
Hint: Try tracing back two or three levels on each input to see if there is logic
driven by any of the SDFF that you have already traced. If you find feedback, do
NOT trace that input.
Following the above Hint, you see that B0 and B1 have the SDFF instance
DTMF_INST3.RESULTS_CONV_INST.state_reg_3_ as part of their logic
cone.
This looks like feedback from logic that you have already traced; so, your guess
is to NOT trace these inputs.
Learn more at Cadence Support Portal - https://support.cadence.com
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 41
Diagnosing Simulation Mis-Compares in Modus Test Patterns
You can see that the “B” input has logic driving it in Modus.
The SimVision schematic shows input "A" is driven by a fixed value: "1'b1".
You have found the fault inserted into the Xcelium netlist.
See the “Fault/Failure Introduced into the Xcelium Netlist” section at the top of
this application note.
Because this was OPCG, there were two clocks: a launch clock and a capture clock.
This resulted in the fault propagating through scan FF before being captured. By
following the path that differs between SimVision and Modus, you found the root cause.
In Figure 13, you will see instances g17732 and g17707 that you traced through
above.
• When tracing in the Modus schematic, highlight the nets so that you can keep
track of where you have been.
• In the Modus schematic, you can collapse/implode the hierarchical boxes to see
the technology cell level.
o There is a PROBE button at the top that allows you to pick a specific
color.
o PROBE > AUTO tells the tool to use a new color every time you highlight
a net. It is recommended that you pick a bold color and only change it
when necessary.
• In the Waveform viewer, drop the “TimeA” flag at the leading edge of the
functional capture clock.
• Once you have used the Modus schematic to find the failing scan FF instance,
look that instance up in the SimVision Design Browser.
o Dump the "pattern" variable from the top of the Design Browser
hierarchy into the Waveform viewer. This is the ATPG pattern number.
o Hint: At the bottom right of the Design Browser, you can de-select the
internal net names. You then get only the port names on the right-hand
side.
• Once you have the initial failing FF in the SimVision schematic, use its schematic
trace feature to trace the mis-matching input.
o Highlight a port in the waveform or in the Design Browser, and then select
the Schematic icon to open the SimVision schematic.
• Once you have both the Modus schematic and SimVision waveform viewers
open:
o Verify that the instance names in the both tools match. Perform sanity
checks as you trace.
o Verify that the Modus schematic pattern (See Figure 11) matches the
“pattern” variable that you dumped in the SimVision waveform.
• Once you have traced backwards in the SimVision schematic, highlight the port
names on the inside of the bubble by holding the CTRL key down as you left-
click. This highlights all ports you have selected. Then, click on the Waveform
icon to dump the ports into the Waveform viewer.
• In the Waveform viewer, highlight the capture clock on the failing scan FF and
the ports on the instance you have traced to.
o User the BLUE edge search icon (top left ) to align TimeA flag to the
leading edge of the capture clock.
o This aligns all events to determine which signal differs from what Modus
ATPG expects.
• In the SimVision CONSOLE, enter “reset” (to return to time 0) and “run XXX
ns or us” to rerun the simulation just past the point of mis-compare. This
dumps your new probe data.
o Only run XXX to just past the failure. No need to run any farther.
• When you execute “xrun” or “xmsim” for debug, use “-gui” only to import the
failing “+TESTFILE”. There is no need to run any other pattern sets.
Here is the tool to map the Smartscan failing cycle (scan chain bit) to XOR. Debug is
then done using XOR. The tool is convert_smartscan_failures.
Once converted to XOR, you can debug the problem using the example above or the
diagnostics read_failures example.
o This will eliminate the actual functional pattern values and the functional
clock capture sequence as the root cause for your failures. You can now
focus on the XOR spreader logic from the SDI pins, any masking logic, or
the XOR Compression logic that drives the SDO pins.
At this point, you may want to export the single failing pattern.
• Note the Modus “pattern” number at the top. This is very useful for ensuring you
are doing analysis on the correct ATPG pattern.
• Channel Mask Load Enable (CMLE) is activated, and the channel mask scan
chain is loaded.
• Scan unload is executed. Twice during scan unload, you make active the
Channel Mask Enable (CME) input and mask the scan output data.
o Remember that you load in the next pattern, as you are scanning out and
observing the current pattern.
• You reach the next functional capture. Scan enable is again inactive.
• No channel masking is necessary for this pattern; so, you skip loading the
channel mask scan chain (no CMLE) and exercise scan unload (no CME signals
to mask-specific bits in the scan chains).
Capture State
No MASK in this Pattern
Scan Unload
Scan CLK is OFF
SCANOUT is MASKED
MASK Registers Loaded
The select items to probe and run simulation are as shown above.
B. Within the Modus schematic, you can dump blocks and ports into a ‘watchlist’
file.
For large netlists, finding instances within the SimVision DESIGN CONSOLE can
be cumbersome. The Modus schematic may be easier to use for tracing the
logic.
You can dump any logic traced into a watchlist file. Highlight the block and then
with a right-click, select “Add To Watchlist”.
Use the watchlist file as import into Xcelium simulation by using the
“watch2probe.tcl” script provided in the Modus installation under
“./scripts”. (These are for user convenience but not supported.)
Note that the “watch2probe.tcl” script opens the waveform database with “-
event”.
Summary
This document provided both general and scan-structure-specific information. The
reader should be able to utilize this information to systematically work through the
analysis of simulation mis-compares.
There is a lot of information within this document. Of all the information here, the
following are the most important items you should know when analyzing mis-compares:
• Understand the scan logic structure that you are dealing with.
• Know what your control and clock pins are and how they need to be manipulated.
• Know what pins must be toggled in what order to scan in, issue a functional
capture clock, and scan out.
• Use the waveform “TimeA” flag judiciously to ensure that you line up the Xcelium
simulation events with the Modus schematic pattern values.
Support
Cadence Support Portal provides access to support resources, including an extensive
knowledge base, access to software updates for Cadence products, and the ability to
interact with Cadence Customer Support. Visit https://support.cadence.com.
Feedback
Email comments, questions, and suggestions to content_feedback@cadence.com.