12 D 68 A 55
12 D 68 A 55
J750 Programming
V3.40
Training Manual
Module 7
Patterns
Patterns - 1
Patterns - 2
Module Overview
This module covers the concepts and activities used to create and use
Patterns - 3
Patterns - 4
J750 Programming
V3.40
Training Manual
Module 7
Patterns
Pattern Execution - Overview
Patterns - 5
Pattern Execution
Pattern Execution is handled by the PatGen and Vector Memory blocks of the
Digital Subsystem.
When a start pattern step is reached in the Template body, a start signal and the
address of the first vector to execute is passed to the PatGen.
microcode
start
PatGen vector
address
Vector
timeset
Waveform
Memory
+ data
Formatter
Drive Hi/Lo
Drive On/Off
Compare On/Off
PE
expect data
Pass/Fail
HRAM
vector
results
DUT
high
Fail
Processing
low
Patterns - 6
Pattern Execution
As a vector is accessed from Vector Memory,
a Timeset address and channel data are passed to the Waveform Formatter
section.
Microcode data is passed back to the PatGen.
Microcode data may consist of an opcode and/or control bits:
Opcode is used by the PatGen to determine what to do next.
Control bits are used to enable or disable certain PatGen functions.
Microcodes
Tset Address
Channel Data
pin1pin 1024
00000001
To
PatGen
To TimeSet
Memory
0100011110000XHLHLHL.L
To Each Channel
Patterns - 7
Pattern Execution
Once the PatGen starts accessing vectors from Vector Memory, the process will
continue until one of the two following events occur:
A halt opcode is detected
A vector failure is reported from the Fail Processing circuit
halt
PatGen
vector
address
Vector
timeset
Waveform
Memory
+ data
Formatter
Drive Hi/Lo
Drive On/Off
Compare On/Off
PE
expect data
Fail
HRAM
vector
results
high
Fail
Processing
low
Patterns - 8
J750 Programming
V3.40
Training Manual
Module 7
Patterns
Pattern Files
Patterns - 9
Pattern Files
Vectors are loaded from binary pattern files into Vector Memory as a result of a
successful Program Validation. The pattern files have an extension of .pat.
The binary pattern files are typically generated by compiling pattern source files
(*.atp).
Pattern files, source and binary, may be compressed
*.pat.gz
*.atp.gz
Patterns are loaded into the tester Vector Memory from binary files at Program
Validation. IG-XL will look for *.pat.gz if *.pat does not exist.
*.atp
*.atp.gz
Compile
*.pat
*.pat.gz
Program
Validation
Vector
Memory
Patterns - 10
Patterns - 11
Patterns - 12
;
;
;
;
Patterns - 13
Vector Statement
The vector statement is composed of
Vector Pin List
Vector Data
Syntax
vector
// Vector Pin-List
( [$tset,] pin/group1[:radix][, pin/group2[:radix]][,..] )
// Vector Data
{
[label:] [opcode] > tset-name vector-data1[ vector-data2][..];
[ [label:] [opcode] > tset-name vector-data1[ vector-data2][..];
|
|
[label:] [opcode] > tset-name vector-data1[ vector-data2][..]; ]
}
Patterns - 14
The keyword $tset is often included as the first entry in the Vector Pin List.
It may appear in any position, but the first position is the most common.
A tset name or tset number may used in the $tset position in the Vector Data line.
The use of tset names and tset numbers may not be combined in the same
pattern.
Refer to IG-XL Help, Pattern Language Reference, Tset Data for an alternative
method to include the tset name in the vectors.
Patterns - 15
portA:X
portA:O
portA:B
portA:D
( $tset
Patterns - 16
A semicolon (;) marks the end of a Vector Data line (one vector).
vector
{
( $tset
g dir portA
portB)
> time_PLH 0 1 11111111 HHHHHHHH ;
> time_PHL 0 0 LLLLLLLL 00000000 ; }
Patterns - 17
Patterns - 18
Patterns - 19
portB:O)
.r377 ;
.r000 ; }
Patterns - 20
import tset
time_fun, time_PHL, time_PLH; // import tset names
vector
// Begin Vector Statement
( $tset, g, dir, portA, portB
)
// Vector Pin List
// Begin Vector Data
{
global time_start_glbv:
> time_fun
0 1
repeat
> 0 1
last
choice
> time_PLH
0 1
time_stop: halt
> time_PLH
0 1
} // End Vector Data
label
Vector-data portA
00000000
00000000
11111111
LLLLLLLL ;
LLLLLLLL ;
HHHHHHHH ;
Vector-data portB
opcode
11111111
HHHHHHHH ;
tset-name
Patterns - 21
00000000
LLLLLLLL ; // Vector n
LLLLLLLL
Shown below are vectors intended for a Normal Timing Mode Pattern:
time_stop:
> time_PHL
halt
> time_PHL
0 1
00000000
LLLLLLLL ; // VectorPair n
0 0
LLLLLLLL
00000000 ; // VectorPair n
Patterns - 22
Patterns - 23
Patterns - 24
Patterns - 25
Patterns - 26
Compiler Options
The Compiler Options settings are used
by the Pattern Compiler to provide
direction as to how to compile the
source file(s).
Compiler Options may be set in the
Pattern Compiler GUI window or by
statements included in the source file.
When compiler options are set in both
places, the Pattern Compiler window
settings will override the statement
settings.
Patterns - 27
Compiler Options
Radio buttons are used to set the
some of the compiler options:
Yes selects the option,
regardless of any statement in the
file.
No selects the opposite of the
option (the opposite is also the
default action), regardless of any
statement in the file.
Default uses whatever is
specified in the file. If the file has
no compiler control statement for
this option, the default is No.
Patterns - 28
Compiler Options
The following options are set by Radio
buttons:
Extended Mode
Yes = Extended Mode
No = Normal Mode
SVM Only
Yes = allocate all vectors to
SVM
No = split vectors between
LVM/SVM
Scan Parallel
Yes = Expand scan vectors into
parallel vectors
No = compile scan vectors for
scan hardware
Patterns - 29
Compiler Options
The following options are also set by
Radio buttons:
Import Undefineds
Yes = import any undefined
subroutines labels and tset
names without giving an error
or warning. Not recommended.
No = report an error if any label
or tset name is undefined at the
end of compilation.
Compress
Yes = compress the compiled
pattern file (*.pat.gz).
No = do not compress the
compiled pattern file (*.pat).
Patterns - 30
Compiler Options
Additional Compiler Options include:
Max Errors maximum # of errors
Patterns - 31
When using the Pattern Compiler window, the statements take effect only if the
Default radio button has been selected for the respective options in the Pattern
Compiler window.
Patterns - 32
Patterns - 33
Reverse Compiler
The Pattern Reverse Compiler can be
Patterns - 34
J750 Programming
V3.40
Training Manual
Module 7
Patterns
Pattern Tool
Patterns - 35
When editing an existing binary pattern file, the following steps are used:
1. Open Pattern Tool
2. Load Pattern File
3. Edit Vectors
4. Save File
Patterns - 36
Patterns - 37
Patterns - 38
Editing Vectors
The Vectors worksheet in Pattern
Tool provides access to the vector
fields:
Vector fields
label
PatGen microcode
tset
pin data
Patterns - 39
Patterns - 40
Patterns - 41
Patterns - 42
Editing Tset
A list of available tset names may
be displayed by:
1. Left-click in tset cell
2. Left-click in arrow box
Names in list are tset names that
have been imported to this pattern
file. See import tset statement.
Adding tset names may be done
using the Imports worksheet in
Pattern Tool. See next slide.
Patterns - 43
Imports Worksheet
3
4
5
1
Patterns - 44
Patterns - 45
Patterns - 46
J750 Programming
V3.40
Training Manual
Module 7
Patterns
Pattern Sets & Pattern Groups
Patterns - 47
Overview
Pattern Sets and Pattern Groups offer alternative means of assigning
patterns to instances.
Patterns - 48
Pattern Groups
A pattern group is a list of pattern files that will be loaded in contiguous
Patterns - 49
Patterns - 50
FullFuncPat_7408
// 7408_Warmup.pat
Start_warmup:
>
>
end_module >
//7408_Gate1.pat
Start_gate1:
// 7408_Gate2.pat
Start_gate2:
// Last_one.pat
Last_one:
>
>
end_module >
>
>
end_module >
halt
>
Patterns - 51
Pattern Sets
The Pattern Sets sheet creates named lists of one or more pattern files
Patterns - 52
Patterns - 53
PatSet1
This is the pattern file
referenced in PatSet1.
All referenced labels are
global.
In effect, PatSet1 is getting
four test patterns out of this
one pattern file.
Patterns - 54
Patterns - 55
Patterns - 56
J750 Programming
V3.40
Training Manual
Module 7
Patterns
Pattern Debug
Patterns - 57
Patterns - 58
The Pattern Control Display lets you control and debug patterns. You can
interactively load, unload, and run patterns, monitor hardware memory usage, and
set up PatGen and HRAM features.
The Display consists of an Execution Frame which is always visible and 3 Tabs:
Patterns
PatGen/HRAM Setup
Mem Usage
Patterns - 59
Execution Frame
The top of the Pattern Control Display (above the tabs) is the Execution frame,
which controls interactive pattern execution and displays execution status.
Last start: displays the name of the last pattern ran by the PatGen.
Three additional pieces of pattern status information are shown to the right of the
buttons:
Current status of the pattern: Stopped, Running, or in Keepalive
The pattern fail flag: Pass or Fail
The current cycle count
Patterns - 60
Execution Frame
The Site Control box selects the site to be displayed. During initial debug, site 0
should be the site selected.
Next to Site Control is the site status. It is important that the site be active during
debug. If not, a pattern cannot be rerun from here. Selecting the DoAll Run option
will prevent the device from being removed from the active list.
Patterns - 61
Execution Frame
Four (4) buttons in the Execute Frame control interactive pattern execution.
The Restart button will rerun the current pattern. See Last Start:
The Loop button loop the pattern. This is a continuous restart.
The Halt button will terminate the looping. However, repeated pressing of the Halt
button may be necessary. Holding down ALT + H will also stop looping and may take
effect sooner.
Patterns - 62
Execution Frame
The Start button is used to select a new pattern and then run it. A list of all loaded
patterns is displayed. Select the new pattern by a left-click. Then, left-click OK. The
new pattern will now run and it is now the Last Start pattern.
After test flow has been stepped to the Body of the functional instance, you will need
to select the pattern for the instance and start it. Then it will be the current pattern
and you can rerun it as needed with the Restart button.
Patterns - 63
Patterns Tab
The Patterns tab has a window that displays the currently loaded patterns and a set
of buttons for loading, unloading, and starting patterns.
The window contains a tree control showing all the patterns and groups currently
loaded by the pattern drivers. You can use the plus and minus signs to open and
close tree elements:
You can open a group to show its member patterns.
You can open a pattern to show its exported labels.
Patterns - 64
Patterns Tab
The buttons on this tab are used after you have selected an item in the tree display
window:
Load New - load a new file into vector memory.
Unload - unload selected pattern from vector memory, freeing up space.
Unload All - unload all patterns from vector memory.
Start the pattern selected in the tree display window.
Patterns - 65
Patterns - 66
Patterns - 67
Trigger Frame
Trigger is used to specify the point in
the pattern where capturing is to begin.
The On box is used to select the cycle
type on which to start capturing. There
are three (3) options in a drop-down
list:
Cycle - start on first cycle of pattern
Fail - start on first failing cycle
STV - start on first cycle marked as
stv
Patterns - 68
Trigger Frame
The Arm On box specifies a delay for the
trigger (as defined in the On box). There
are two options:
First Cycle - do not delay. Trigger is
defined solely by Trigger frame.
PatGen Event - trigger on first cycle,
that meets PatGen Event criteria after
the On event, i.e., if On = Cycle, then
trigger on the first cycle after cycle 1
that meets PatGen Event criteria.
The trigger definition will be the
combined data from Trigger and
PatGen Event frames.
Patterns - 69
Trigger Frame
The Pretrigger box is used to specify
a number of cycles prior to the trigger
to be captured by HRAM. For
example, when triggering on first fail, it
might be desired to see the cycle(s)
prior to the failing vector.
The checkbox Stop on full is used to
inhibit overwriting of HRAM when it
fills up and more vectors are still being
executed. Checking this box is
usually a good idea.
Patterns - 70
Capture Frame
Patterns - 71
Capture Frame
Size - may be used to limit number of
vectors stored in HRAM. Can reduce
run time when only a limited number
of vector results are needed. Size =
0, in effect, means use all locations.
Compress repeats:
If checked, the results from only
the last cycle in a repeat will be
stored in HRAM. If not checked,
all vectors in the repeat will be
stored.
Patterns - 72
Capture Frame
Capture keepalive - capture keepalive
vectors. See Help for more details.
Loop Select Four choices - Repeat, LoopA,
LoopB, LoopC.
Only one loop counter or the repeat
counter can be used in PatGen
Event. See following slides.
Patterns - 73
Patterns - 74
Patterns - 75
Patterns - 76
Patterns - 77
Patterns - 78
Patterns - 79
Patterns - 80
Patterns - 81
Patterns - 82
Patterns - 83
Sync Frame
This frame lets you enable a sync
pulse on a specified digital channel. It
is best to select an unused channel.
The sync pulse is a drive-high signal
synchronized with a pattern. It is
typically used during debug to provide
a reference point when examining
waveforms.
Sync pulse generation is enabled by
Sync on Patgen Event D. The
specified channel will then be
programmed to generate the sync
pulse.
Run the pattern. The sync pulse will
be generated whenever the event
defined in the PatGen Event Frame
occurs.
Patterns - 84
Patterns - 85
Patterns - 86
Patterns - 87
Patterns - 88
Patterns - 89
Patterns - 90
Patterns - 91
Patterns - 92
Patterns - 93
Patterns - 94
Patterns - 95
Patterns - 96
J750 Programming
V3.40
Training Manual
Module 7
Patterns
Pattern Opcodes
Patterns - 97
Pattern Microcode
PatGen microcode is a field in every vector stored in vector memory.
PatGen microcode is directed to the PatGen as a vector is being processed.
Microcode = opcodes and control bits:
Opcode controls the flow of execution within the pattern file
Control bits modify the execution of the specific vector on which they appear: for
example, mask failure on this vector, or inhibit fail count on this vector.
microcode
PatGen
LVM
Vector
Memory
Timeset +
data
SVM
Patterns - 98
microcode
PatGen
LVM
Timeset +
data
16M
(max)
SVM
1K
Patterns - 99
microcode
PatGen
LVM
Timeset +
data
16M
(max)
SVM
1K
Patterns - 100
Patterns - 101
Start_here:
>
>
>
Stop_here: halt
>
Start_here:
>
>
>
>
Stop_here: end_module
>
>
Patterns - 102
repeat / mrepeat
The repeat opcode allows a single
vector to be repeated N times
N = 2 to 65536
Saves vector memory because
vector is stored only once
The mrepeat opcode also allows a
single vector to be repeated N times
N maybe modified through
program code.
Using this opcode does affect
LVM/SVM optimization.
Use repeat unless mrepeat is
absolutely necessary
See Help for details
Start_here:
>
>
repeat 100
>
>
halt
>
Patterns - 103
Branching
Branch opcodes cause the PatGen to
go to a vector other than the next
sequential vector.
The jump opcode will cause flow
control to go to the label specified.
The jump_glo opcode is used to
direct execution control to a vector
whose address is stored in the global
register. The vector address should
have been placed in the global
register by a set_glo label opcode.
jump Fred
>
>
Fred:
>
set_glo Fred1
>
jump_glo
>
>
>
Fred1:
>
>
Patterns - 104
Labels
A vector label is a string of
characters terminated by a colon ( : ).
When present, a label is the first field
of a Vector Data Line.
Labels may be local or global:
A local label may only be
referenced by its own pattern.
Label2 is a local label
// Pat1.pat
global Label1:
Label2:
>
>
>
>
// Pat2.pat
import label Label1;
vector ($tset, In, Out )
{
>
jump Label1
>
:
}
Patterns - 105
Branching - Conditions
Branching opcodes may be set up for conditional execution.
For conditional execution, a set of condition flags are available for testing with the
if opcode.
if (condition) then action
condition = a flag state or combination of flag states
action = one of the execution control opcodes, i.e., jump, jump_glo
Additional execution control opcodes will be presented later
There a two sets of flags
System flags
CPU flags
During a pattern burst, the pattern generator monitors the flags. If one of the flags
occurs, the corresponding condition latch is set. It remains set until it is cleared by
the pattern microcode or until another pattern start is executed. Clearing flags is
covered later.
Patterns - 106
Conditions - Flags
System flags are set by the tester based on vector results:
fail - set by PatGen when a vector fails during a pattern burst
pass - not a separate flag. The inverse of fail. Cannot be cleared.
fail is automatically cleared when a pattern start is executed or may be
cleared by pattern opcodes.
CPU flags can be set or read by opcodes in the pattern file and by code included
in the test program
cpuA, cpuB, cpuC, cpuD
See Help, Visual Basic for Test, for details about using program code to set
the CPU flags.
Patterns - 107
Conditions - Flags
>
if (!cpuA)jump_glo >
>
>
Fred1:
>
>
Patterns - 108
enable (cpuB)
if (flag) jump Fred
>
>
>
>
if (flag) jump_glo
>
>
>
>
Patterns - 109
>
if (flag) jump_glo
>
>
>
Fred1: clr_flag(cpuA)
>
Patterns - 110
Ex1:
set_cpu (cpuA)
>
>
>
>
Patterns - 111
Patterns - 112
//7408_IccPat.pat
Icc_start:
set_cpu (cpuA)
>
>
set_cpu (cpuA)
IccL: if (cpuA) jump IccL
halt
>
>
>
Patterns - 113
Patterns - 114
Patterns - 115
Patterns - 116
Loops
A loop is a common technique that is used when a given set of vectors needs to be
executed multiple times
The loop opcodes provide a means of setting up a loop that executes N number times
There are three (3) loop choices in the J750 Pattern Language:
LoopA - uses a 4 level counter stack (counterA stack) to control looping. Permits
nesting up to 4 levels.
LoopB - uses a single counter
LoopC - uses a single counter
The following sequence will be used to create a loop in a pattern:
Set loopcounter to desired count
At the end of the loop, decrement the counter and branch if not equal to zero
Patterns - 117
set_loopB 10
Loop1:
>
>
>
>
Patterns - 118
set_loopB 10
Loop1:
>
end_loopB Loop1 >
endloopA/B/C
Loop2: loopC 20
>
>
>
Patterns - 119
Nested Loops
The LoopA structure uses a 4 level
stack to keep up with the nested loop
counts.
In this example, the loopcount of 10 is
loaded into the top level of the stack at
vector 1.
Loop1: loopA 10
> // 1
> // 2
Loop2: loopA 5
> // 3
> // 4
10
> // 6
end_loopA Loop1 > // 7
Patterns - 120
Nested Loops
The end_loopA opcode will always
decrement the top level. See vector
5. Top Level now = 4. Therefore,
control will go back to vector 3.
Loop1: loopA 10
> // 1
> // 2
Loop2: loopA 5
> // 3
> // 4
10
10
Patterns - 121
Nested Loops
Loop1: loopA 10
> // 1
> // 2
Loop2: loopA 5
> // 3
> // 4
end_loopA Loop2 > // 5
> // 6
Patterns - 122
Nested Loops
The exit_loop opcode provides the
opportunity to exit from a loop before
the loopcounter equals zero.
If used in a LoopA, pops LoopA
stack before branching
Typically used with a condition.
At vector 5, if cpuA is true, the top
value on the loopA stack is popped
off, and the next vector to be executed
will be at Fred.
It is good programming practice to
avoid premature exits unless
absolutely necessary.
Loop1: loopA 10
> // 1
> // 2
Loop2: loopA 5
> // 3
> // 4
if (cpuA) exit_loop
Fred
> // 5
end_loopA Loop2 > // 6
Fred:
> // 7
end_loopA Loop1 > // 8
Patterns - 123
Loop1: loopA 10
> // 1
> // 2
Loop2: loopA 5
> // 3
> // 4
pop_loop
> // 7
Patterns - 124
Subroutines
A subroutine is a set of vectors introduced by a label declared as subr or
global subr.
A subroutine is typically used because a specific set of vectors is being used in
multiple locations.
Using a call mechanism allows the subroutine to be accessed from various
locations in patterns while being stored in vector memory only once.
When a subroutine is called, execution control transfers to the first vector in the
subroutine. When the subroutine is finished, execution control is passed back to
the vector after the call vector.
The subroutine call mechanism is controlled by a subroutine stack. The subroutine
stack has a maximum of 8 levels.
Patterns - 125
Subroutines
Patterns - 126
>
call sub1
>
>
call sub1
>
>
halt
>
subr sub1:
>
>
return
>
Patterns - 127
>
halt
>
subr sub1:
>
>
return
>
>
Patterns - 128
>
halt
>
subr sub1:
>
>
return
>
>
Patterns - 129
Calling Subroutines
Subroutines may be called using one
of the following:
call label
ccall label
label = first vector in subroutine
call_glo
The call opcodes will cause the
address of the vector following the
call to be stored in top level of
subroutine stack. Any values in
subroutine stack are pushed down
one level
ccall opcode is similar to call
May execute as a NOP based on
setting of a ccall property
Property is set using program
code = ccall or nop.
The call opcodes may be used with
an if opcode
PN 553-405-50 Rev - August 2002
>
call sub1
>
>
set_glo sub1
>
>
>
>
>
return
>
Patterns - 130
External Subroutines
An external subroutine is a subroutine whose vectors are in one file and are called
Patterns - 131
Control Bits
The control bits do not take arguments or depend on conditions.
There can be more than one of the control bits per vector (subject to the restrictions
on normal mode note that mask can appear on any vector, even in normal mode).
The control bits can be combined with the execution control opcodes, except that ign
and halt are mutually exclusive.
The following control bits are failure-related control bits (see next slide)
ign (ignore),
mask,
clr_fail,
ifc (inhibit fail count)
The clr_cond (clear condition) bit was discussed earlier (see Clearing Flags)
The stv (store this vector) bit is used for marking vectors to be stored when using
Store This Vector mode for HRAM capture.
The icc (inhibit cycle count) bit is used to prevent the cycle counter from
incrementing when the vector is executed.
Patterns - 132
Patterns - 133
Patterns - 134
Patterns - 135
Patterns - 136
Patterns - 137
Patterns - 138
J750 Programming
V3.40
Training Manual
Module 7
Patterns
Review
Patterns - 139
Patterns - 140
Patterns: Review/Exercise
1. List and describe the purpose of the statement types that are used in a pattern
source file.
- Pinmap - identifies the pin names/pin groups that will be used for vector data
- Preprocessor - provides the ability to use C preprocessor directives like #define, #include, #if, etc.
- Compiler Control - identifies how the pattern file gets compiled.
- Import Tset or Label - provides a mechanism to reference external file timing and symbols.
- Vector - encapsulating the pattern data per pin/group, timing reference and opcode.
- Comments - C like syntax for documenting user text.
2. Identify and describe vector data syntax.
- vector data can be expressed as a numeric form with the radix as:
X, H = Hexadecimal; O = Octal; B = Binary; D = Decimal
numeric values could be 0-9, A-F and Channel modes = Drive (.d) or Receive (.r)
or data could be represented as Symbolic (Radix = S)
0
Drive Data = 0,
Voltage Level = VDriveLow
1
Drive Data = 1,
Voltage Level = VDriveHigh
2
Drive Data = 1,
Voltage Level = Vph
H
Expect High,
VDUT >= VCompareHi
L
Expect Low,
VDUT <= VCompareLo
M
Expect Midband,
VCompareLo <= VDUT <= VCompareHi
V
Expect Valid,
VDUT <= VCompareLo OR VDUT >= VCompareHi
X
Expect Mask
PN 553-405-50 Rev - August 2002
Patterns - 141
Patterns: Review/Exercise
3. Describe the difference between the pattern opcode and control bits.
- Pattern opcodes - controls the flow of execution within the pattern file
- Control bits - modify the execution of the specific vector for which they appear: for example, a mask
failure, or inhibit fail count
4. List and describe the purpose of various commonly used opcodes.
- nop - increment the vector program counter to the vector
- halt - inhibits the Patgen from fetching another vector (after the halt vector is executed)
- end_module - in a stand alone pattern, it acts like a halt, in a pattern group acts like a nop.
- repeat - allows a singe vector to be repeated up to 65K times.
- call - executes a subroutine
- jump - executes a goto a specified location
- loop - executes some number of vector based on a loop count
- if (CONDITION) then (ACTION) - a conditional branch if the flag state is true then branch
(jump, call, return, exit loop, etc).
- cpuA|B|C|D - set the state of a flag (using program code) and testing the condition for a true
or false
Patterns - 142
Patterns: Review/Exercise
5. List the steps for creating subroutine vectors and the considerations.
- If subroutines and non-subroutine vectors are contained in the same pattern file, the
subroutines must be at the end of the file, after all non-subroutine vectors.
If a subroutine is created in one pattern file and called in another pattern file, then the
subroutine label must be imported to the calling file.
- The beginning vector of a subroutine must be labeled with a subroutine-type label.
- Mark the exit point(s) of the subroutine with return opcode(s).
- Insert calls of the subroutine at desired points (vectors) in pattern(s)
- Considerations are: LV/SVM Optimization; inter-pattern label references; and the use of
resume vs.. return
6. List both the pattern and instance steps involved for implementing a dynamic Icc test.
- Identify the pattern to be used and the number of measurement points and setup the cpu
flag/s in order to loop on the specified vector/s
- In the instance specify the HoldStatePat pattern, select the cpu flag should be true for the
waitflag, if there are multiple measurements set Test Control = Pattern\Flag-multiple
tests and program the limits for additional measurements
Patterns - 143
Patterns: Review/Exercise
7. Describe the difference between a pattern group and a pattern set.
- A pattern group is a list of pattern files that will be loaded in contiguous locations in vector
memory.
- A Pattern Set creates named lists of pattern files (.pat) and pattern groups to be executed or
used by a test instance, all patterns that are required for the test are listed in the set and
are loaded into tester memory for execution as a set of patterns.
8. List the programming considerations needed for creating a pattern group.
- A pattern file listed in multiple pattern groups will be loaded multiple times
If a pattern is intended to run as a stand-alone pattern and included in pattern groups,
the pattern should be terminated with an end_module opcode instead of halt. When
the pattern is executed in a group, end_module acts a NOP. If pattern is executed as a
stand-alone pattern, end_module acts as a halt.
The last pattern in pattern group should always end in halt. However, some patterns
may need to execute in the middle of one group and at the end of others. If that is the
case, it is recommended to create a terminator pattern consisting of a single vector with
an halt opcode. This pattern would then be used as the last pattern in any group. A
pattern file that is included in a pattern group can reference labels only in other pattern
files within the same group.
9. Identify an advantage of using a pattern set over a pattern group or stand-alone pattern.
- Pattern Sets allow the user to start a pattern at any labeled vector in the pattern. Standalone patterns and pattern groups must always start at the first vector.
PN 553-405-50 Rev - August 2002
Patterns - 144
J750 Programming
V3.40
Training Manual
Module 7
Patterns
Lab 4 - Exercise 1 - 4
Go to Page 37 in Lab Section to complete
Lab 4 Exercises 1 - 4
PN 553-405-50 Rev - August 2002
Patterns - 145
Patterns - 146