Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
5 or Higher
M-Series Test System
http://www.kvdco.com/
Contents
1. Introduction and Overview
About this Document ......................................................................................................... 29
Where to Look for Online Help and Tools ............................................................................ 29
Quick-Start Guide .............................................................................................................. 30
Nomenclature .............................................................................................................. 30
Warnings and Cautions ...................................................................................................... 31
System Overview............................................................................................................... 31
Feature Summary .............................................................................................................. 34
Device Families Tested on the KVD M-Series........................................................................ 35
3. System Hardware
AC Power Distribution Unit (PDU)........................................................................................ 50
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 3
KVD Company Confidential
4. System Setup
About CodeGear RAD Studio 2007 Professional .................................................................... 67
Installation .................................................................................................................. 67
Licensing ..................................................................................................................... 67
Installation Swapping Tool ................................................................................................. 68
Offline Emulator Mode - Notester Install.............................................................................. 68
Notester Emulation Mode.............................................................................................. 68
Test Head Power Control.................................................................................................... 69
Tester Configuration Tool - TCT.......................................................................................... 69
Functional Description .................................................................................................. 69
KVD Calibration and Checker Tool....................................................................................... 70
Fast Launch Tab .......................................................................................................... 70
FPGA Booting Process................................................................................................... 71
Simulated LED Results .................................................................................................. 72
Aborting a Program in Progress ..................................................................................... 72
Calibration and Checker Options.................................................................................... 73
Results Summary Display.............................................................................................. 74
5. Development Environment
CodeGear RAD Studio C++Builder 2007 .............................................................................. 75
Getting started .................................................................................................................. 75
Copying Existing Test Programs .................................................................................... 75
6. Operations Environment
Customer Preferences Tool................................................................................................. 77
Preferences Page ......................................................................................................... 79
Datalog Control Page.................................................................................................... 83
Handler Options Page ................................................................................................... 85
Custom Data DLLs........................................................................................................ 86
STDF Format ............................................................................................................... 86
CSV Format ................................................................................................................. 86
DLL Overview ......................................................................................................... 86
Output File Data Format ............................................................................................... 87
Data Upload Control ..................................................................................................... 88
Engineering Options on the Preferences Tool ................................................................. 88
Message Handling Control............................................................................................. 89
.................................................................................................................................. 89
Updating the Windows Registry..................................................................................... 89
Handler Bin Table Tool....................................................................................................... 90
Handler Bin Table Example ........................................................................................... 91
........................................................................................................................................ 92
Setup File Tool .................................................................................................................. 92
Test Program Launcher ...................................................................................................... 97
Error Checking for Lot Names ....................................................................................... 98
Preferences Flowchart........................................................................................................ 98
Launch Flow Overview................................................................................................ 100
Additional flow details for selecting handlers...................................................................... 101
Examples................................................................................................................... 101
Example 1 ............................................................................................................ 102
Example 2 ............................................................................................................ 102
Example 3 ............................................................................................................ 102
Example 4 ............................................................................................................ 102
then the TELP8MULTIPASS would be the handler that is used. ............................................ 102
Datalogs ......................................................................................................................... 102
Test Time Profiling ..................................................................................................... 104
Summaries...................................................................................................................... 104
Summary Counts Match Physical Device Counts............................................................ 105
Histograms...................................................................................................................... 105
Test Data Analysis ........................................................................................................... 107
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 5
KVD Company Confidential
7. DC Instruments
MPDCMOD and MPDCMODHI (Octal DUT Source) .............................................................. 133
MPDCMOD Pictorial .................................................................................................... 133
Functional Description ................................................................................................ 133
Physical Description.................................................................................................... 135
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 7
KVD Company Confidential
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 9
KVD Company Confidential
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 11
KVD Company Confidential
8. Digital Instruments
Important Features.......................................................................................................... 189
Vector JMP Restriction ................................................................................................ 189
Serial Send Memory Restriction ................................................................................... 189
DIGMOD16/32................................................................................................................. 190
Description ................................................................................................................ 190
Features and Basic Specifications ................................................................................ 191
Drive/Compare ..................................................................................................... 192
PMU..................................................................................................................... 192
Pattern Formatting................................................................................................ 192
Block Diagram............................................................................................................ 193
High Speed Link .............................................................................................................. 195
Overview of Digital Test Concepts..................................................................................... 195
Pattern Driving........................................................................................................... 195
Pattern Comparing ..................................................................................................... 198
Send Serial/Capture Memory....................................................................................... 199
Capture Memory ........................................................................................................ 201
Putting It All Together - Pattern and Send/Capture Memory .......................................... 202
Memory Address Sequencer ........................................................................................ 204
Clocking .................................................................................................................... 205
Drive and Compare Voltage Levels .............................................................................. 205
Formats and Edge Timing ........................................................................................... 205
Patterns .......................................................................................................................... 205
DIGMOD Pattern Editor............................................................................................... 206
Input ................................................................................................................... 206
Output ................................................................................................................. 206
Rules ................................................................................................................... 206
Vector Information ..................................................................................................... 207
Mandatory Input Vector Fields ............................................................................... 207
Alternate Drive Format .......................................................................................... 207
Optional Input Vector Fields .................................................................................. 208
Sequencer OpCodes ................................................................................................... 208
Flags ......................................................................................................................... 209
DIGMOD Additional State Characters ........................................................................... 210
Pattern Syntax ........................................................................................................... 211
Timeset Info .............................................................................................................. 212
Fail Disabling ............................................................................................................. 213
Serial/Parallel Send/Receive ........................................................................................ 213
Channel Default ......................................................................................................... 213
Pattern Example......................................................................................................... 214
.sym (Symbol Table) .................................................................................................. 214
DIGMOD Program Structure ............................................................................................. 215
One Time (in SystemInit or LotInit) ............................................................................. 215
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 13
KVD Company Confidential
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 15
KVD Company Confidential
9. AC Instruments
PWS ............................................................................................................................... 295
DSP Library ..................................................................................................................... 295
DSP Class .................................................................................................................. 296
Functions................................................................................................................... 296
DSP Testing on KVD M-Series Test System ........................................................................ 306
Clocking .................................................................................................................... 306
Example .................................................................................................................... 306
Ideal Conditions.................................................................................................... 306
PWD Clock Setup .................................................................................................. 306
DSPIO Clock Setup ............................................................................................... 307
PWS Clock Setup .................................................................................................. 308
The Test Frequency .............................................................................................. 309
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 17
KVD Company Confidential
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 19
KVD Company Confidential
LOG->UserGenTDA............................................................................................... 363
KVD Object ..................................................................................................................... 364
KVD->UserParamFileName .................................................................................... 364
KVD->CalibrateAll ................................................................................................. 364
KVD->CalibrateMenu............................................................................................. 364
KVD->DaysSinceLastCal ........................................................................................ 364
KVD->HoursSinceLastCal....................................................................................... 364
KVD->LoadConfig ................................................................................................. 364
KVD->ReadLauncherString .................................................................................... 365
KVD->ReadParameterString .................................................................................. 365
KVD->SelectView.................................................................................................. 366
KVD->Test ........................................................................................................... 366
KVD->TestNoFail .................................................................................................. 366
KVD->tnum.......................................................................................................... 366
KVD->UserComment............................................................................................. 367
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 21
KVD Company Confidential
Figures
3. System Hardware
Figure 3.1: Main Cabinet (Large) - M2 system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Figure 3.2: Main Cabinet (Small) - M1m or M2m system - with cart and manipulator . . . . . . 50
Figure 3.3: Power Distribution Unit (Front) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Figure 3.4: Power Distribution Unit (Rear). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Figure 3.5: Remote/Local PDU Switch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Figure 3.6: Main Power Switch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Figure 3.7: NEMA L6-20P plug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Figure 3.8: PowerPlus Power Flow Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Figure 3.9: 48V Power Flow Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Figure 3.10:Power Supply TCT Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Figure 3.11:Power GUI Control Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Figure 3.12:Power GUI Status Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Figure 3.13:48V Power Supply Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Figure 3.14:Hypertronics Connector (Male) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Figure 3.15:Hypertronics Female on Fathercard (Close-up) . . . . . . . . . . . . . . . . . . . . . . . . . 57
Figure 3.16:Keithley 3706-NFP Meter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Figure 3.17:Keithley 3706 Spec Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Figure 3.18:Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Figure 3.19:M2 Test Head . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 23
KVD Company Confidential
4. System Setup
Figure 4.1: Library Installation splash screen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Figure 4.2: Install Swappng Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Figure 4.3: Library Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Figure 4.4: KVD Power Control Icon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Figure 4.5: TCT Screen with Configured Test Head . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Figure 4.6: Fast Launch Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Figure 4.7: Simulated LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Figure 4.8: Termination Bar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Figure 4.9: Calibration and Checker Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Figure 4.10:Modify Custom Value Screen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5. Development Environment
Figure 5.1: The Copy Project Tool screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6. Operations Environment
Figure 6.1: Launching the Customer Preferences Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Figure 6.2: Main Customer Preferences Screen (Misc. control) . . . . . . . . . . . . . . . . . . . . . . 78
Figure 6.3: Customer Preferences Screen - GUI control . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Figure 6.4: Selecting Radio Buttons for Production Page and Site Data Page . . . . . . . . . . . . 83
Figure 6.5: Datalog Control Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Figure 6.6: Handler Options Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Figure 6.7: Custom Data DLL Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Figure 6.8: Data Upload Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Figure 6.9: Preferences Tool - Engineering Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Figure 6.10:Message Handling Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Figure 6.11:Updating the Registry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Figure 6.12:Bin Table Tool Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Figure 6.13:Sample Bin Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Figure 6.14:Launch the Setup File Tool from the Start Menu . . . . . . . . . . . . . . . . . . . . . . . . 92
Figure 6.15:Initial Setup File Tool Screen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Figure 6.16:Setup Files Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Figure 6.17:Job Plan Name and Executable Entered . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Figure 6.18:Limits File Chosen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Figure 6.19:Limits File Displayed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Figure 6.20:Saving the Setup File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7. DC Instruments
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 25
KVD Company Confidential
8. Digital Instruments
Figure 8.1: DIGMOD 16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Figure 8.2: DIGMOD 32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Figure 8.3: DIGMOD Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Figure 8.4: Pin Electronics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Figure 8.5: Digital Drive Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Figure 8.6: Digital Drive Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Figure 8.7: Compare Pattern Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Figure 8.8: Serial Send Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Figure 8.9: Serial Capture Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Figure 8.10:Memory Banks in the DSPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Figure 8.11:Pattern RAM Memory Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Figure 8.12:Timing Diagrams of the Various Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Figure 8.13:Pattern Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Figure 8.14:DIGMOD Library Debug Display. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Figure 8.15:Main DM Pattern Editor screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Figure 8.16:Logical Group Vector States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Figure 8.17:DM Pattern Editor Graphical View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Figure 8.18:DM Pattern Editor Format View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Figure 8.19:Help Screen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Figure 8.20:Import Status Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Figure 8.21:Logic Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Figure 8.22:Results for Pins of Interest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Figure 8.23:Use the Span and Position Sliders to Adjust Resolution . . . . . . . . . . . . . . . . . . 266
Figure 8.24:Results Shown in the DM Pattern Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Figure 8.25:Real Time Interface WIndow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Figure 8.26:Title of New Shmoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Figure 8.27:Running the Shmoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Figure 8.28:Margin Shmoo Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Figure 8.29:Multiple Charts, Active Chart Top. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Figure 8.30:Running Margin Shmoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Figure 8.31:Schmoo Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
9. AC Instruments
Figure 9.1: Simplified PWD, Single Channel, Clock Relationships . . . . . . . . . . . . . . . . . . . . 307
Figure 9.2: Simplified PWS, Single Channel, Clock Relationships . . . . . . . . . . . . . . . . . . . . 308
Figure 9.3: Waveform Source Pictorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Figure 9.4: WS Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Figure 9.5: WS I/O Pinout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Figure 9.6: Precision Waveform Source Pictorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Figure 9.7: WS2000 Precision Waveform Synthesizer Block Diagram . . . . . . . . . . . . . . . . . 321
Figure 9.8: Waveform Digitizer Pictorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Figure 9.9: WD Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Figure 9.10:Waveform Digitizer Hypertronics Pinout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Figure 9.11:Precision Waveform Digitizer Pictorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Figure 9.12:WD2000 QUAD Audio Digitizer Block Diagram. . . . . . . . . . . . . . . . . . . . . . . . . 337
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 27
KVD Company Confidential
The target audience is experienced semiconductor test engineers transitioning from the ATE systems of
other vendors, who are already familiar with test concepts such as digital test techniques, precision analog
measurement systems, and grounding issues peculiar to ATE.
On the maintenance side, service personnel must have working knowledge of good ESD practices, careful
mechanical adjustment and replacement techniques, and the willingness to perform thoughtful
troubleshooting flowcharts if necessary to discover the root cause of problems.
The most useful programming tools are located under the Start menu->Programming Tools
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 29
KVD Company Confidential
This KVD document will also be available in PDF format, either on the individual system or on your
company's servers, according to your administrator's preferences.
Quick-Start Guide
There is a generic (blank) test program shell available to quickly begin with a compilable job plan. Read
about it in Chapter 6, and you can soon be exploring the debugging environment and production GUI
displays. Your development group may also have its own custom test program template, with specialized
functions to make your job easier. Consult with administrators or your manager.
Nomenclature
The following is a list including several more common acronyms and terms used in this document which
may be unfamiliar.
• KVD - Kundrouf / Veitas / deHollan, the last names of the founders of KVD Company
• ATE - Automatic Test Equipment
• DUT - Device Under Test
• DSP - Digital Signal Processor/Processing
• PDU - Power Distribution Unit
• DIN - Deutsches Institut für Normung (European standards institute referenced for instrument and
motherboard connectors)
• Hypertronics - Manufacturer of the low resistance, two-piece connectors used in various locations,
especially in the test head.
• IDE - Integrated Development Environment
• DLL - Dynamically Linked Library (software program only usable by other programs, and only loaded if
required - thus saving resources such as load time and memory space)
• GUI - Graphical User Interface
• CodeGear - Vendor of RAD Studio 2007, the KVD software and debugging environment
• PCIDIS - Personal Computer Interface - Digital Interface Standard. The acronym of the KVD serial bus
to PCI interface board, located in the CPU.
• DISCONT - Digital Interface Standard - Controller. The acronym of the KVD serial bus interface to test
head instrument interface board, located in the test head.
Warning! Maintenance Instructions described in this document are for use by trained and qualified staff
only. To avoid risk of personal injury or hazard to human life, do not open covers, remove
safety interlocks, or troubleshoot any items with the AC power turned on. These Warnings and
this document are not represented to document all possible or foreseeable hazards
associated with test equipment of this class, and there is no substitute for personal common
sense for risk avoidance.
Caution! All electronic equipment, including your KVD Test System, contains items which can be
damaged or latently degraded by Electro-Static Discharge (ESD). You will enjoy a longer and
more satisfying relationship with your equipment if you always practice safe ESD techniques.
This includes personal grounding systems (wrist strap or conductive foot-wear), static-safe
workstations for handling maintenance items, and the constant use of static-proof packaging
and shipping materials for all electronic items.
System Overview
KVD offers a number of system configurations and cabinet styles to accommodate customer requirements.
In general, the M1 system includes a test head with fewer instrument slots (10), while the M2 test head can
hold up to 20.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 31
KVD Company Confidential
There are various packaging and cabinet options. The standard M2 cabinet is pictured above. There is
room for an additional 7" of rack-mounted equipment at the lower front part of this cabinet.
For test floors with space challenges, KVD offers the M2m system, with integrated manipulator and a
cabinet with no additional rack space.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 33
KVD Company Confidential
Feature Summary
The M-Series Mixed Signal Test System is designed to test high volume, low to medium pin count
consumer Mixed Signal semiconductor ICs. The system contains analog and digital instrumentation
integrated into a test head, and design features to maximize throughput.
The system can be configured to address various types of devices: RFID, SmartCard, Automotive,
Standard Linear and Mixed Signal, Image Sensors, Audio Processors and RF devices.
A tightly-integrated laser trim interface is available, with communication over a dedicated Ethernet
connection to enhance robustness and reduce message latency.
Testing multiple devices on one system in parallel dramatically reduces the cost of test for devices with
short test times. The system software handles the multi-site nature of testing, freeing the test engineer
from the complexities of such multi-site testing. The M-Series Mixed Signal Test Systems include:
• Multi-Site Architecture
• Inherently Low-Noise Floor Design
• Windows Production Software Interface
• C++ Test Language and Development Environment
• Mixed Signal Digital Pins with Send/Capture Memory
• Range of DC Source/Voltmeters
• Time Measurement Unit
• Waveform Synthesizers/Digitizers
• Optional Instruments designed for specific applications
Automotive
Electronic Ignitions
Anti-Skid Braking
Electronic Fuel Injection
Electronic Power Train
Temperature Controlled Oscillators
Engine Control
Electronic Motor Controllers
Remote Keyless Entry
Garage Door Openers
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 35
KVD Company Confidential
Safety Statement
The general safety information in this summary applies to Operators, Test Engineers and Maintenance
Personnel.
Warning! Only trained and qualified personnel should work on the equipment documented in this
manual. To avoid risk of personal injury, limit your maintenance or operations activities to
those described in this document unless you are trained to do additional tasks.
Caution! Statements indicate that conditions are present that could result in damage to the test
equipment or other property.
Caution! All electronic equipment, including your KVD Test System, contains items which can be
damaged or latently degraded by Electro-Static Discharge (ESD). You will enjoy a longer and
more satisfying relationship with your equipment if you always practice safe ESD techniques.
This includes personal grounding systems (wrist strap or conductive foot-wear), static-safe
workstations for handling maintenance items, and the constant use of static-proof packaging
and shipping materials for all electronic items.
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 37
KVD Company Confidential
Operator Safety
The general safety information presented in this summary is meant for operators, test engineers and
service personnel. Specific warnings and cautions will be found where they apply, but may not appear in
this summary.
The CPU contains a certified and sealed power supply assembly, not user-maintainable. No energy of a
hazardous nature comes out of this assembly.
The calibration meter is also a non-maintainable assembly, with no hazardous voltages appearing at its
terminals.
The KVD test system test head assembly, likewise, contains no hazardous voltages according to ANSI
definitions. All voltages present are less than 30V RMS, 42.4V peak, or 60 VDC, so there are no interlocks
or other required cutoff circuits.
Lockout/ Tagout
When servicing any KVD equipment at a customer site, all local lockout and tagout procedures must be
obeyed. If stanchions and/or placards need to be erected to protect personnel, contact the local test
manager. Personal safety should never be compromised when working on equipment.
The KVD Test System has as an optional lockout/tagout device, Brady part number 65674. Please contact
your local KVD sales representative or factory Customer Support staff if you need this device and do not
have access to a supplier local to you. One will be provided at no charge.
This device shall be installed surrounding the AC power cord male plug according to the your logout/tagout
procedures, and secured with an approved lock mechanism.
When the Brady 65674 is installed, the male power plug cannot be inserted into any source of AC power,
and no part of the KVD test system will present an electrical hazard to maintenance personnel.
A typical lockout/tagout procedure is as follows, but each customer facility is responsible for its own
procedure to be followed by their personnel.
Notify all affected employees that a lockout/tagout system is going to be utilized and the reason why.
If the test system is operating, shut it down by the normal stopping procedure (shut down computer using
the normal method
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 39
KVD Company Confidential
Seismic safety
The owner must install the included four hold-down clamps after the system is placed in its final position,
over the leveling feet and into suitable floor anchor points, for seismic safety against system movement.
Warning! Operators may not change or replace the battery described in this section of the Chapter. To
avoid risk of personal injury or hazard to human life, do not open covers or troubleshoot any
items with the AC power turned on.
Warning! There is a risk of an explosion if the battery on the CPU motherboard is replaced with an
incorrect part number.
Replace only with the same, or an equivalent, item as recommended by the CPU motherboard
manufacturer, when the battery life is exceeded and the CPU on-board clock no longer keeps
time properly when the CPU power is shut off. Dispose of used batteries according to the
manufacturer's instructions, or return to KVD for proper disposal.
Electrostatic Discharge
Electrostatic Discharge (ESD) can occur whenever proper procedures are not followed. Static voltages as
low as 25V can cause catastrophic or latent failures in semiconductor devices, so proper grounding is
essential to safe handling of these devices. A conductive wrist or heel strap should always be used when
handling boards, and these straps should be checked regularly to insure that they are working properly,
and replaced when defective. System circuit boards should be properly transported in static shielded bags,
and only removed from their packaging at static safe workstations.
The KVD test head includes a standard grounded banana jack, for connecting an operator or maintenance
staff ESD straps.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 41
KVD Company Confidential
Protective Grounding
The test system is grounded through the protective grounding conductor of the power cord. To avoid
electrical shock the grounding conductor must be connected by the customer to a properly-wired
receptacle.
The test system cabinet is attached to protective (earth) ground by means of a green/yellow wire
connected from the cabinet frame to the grounding terminal of the Power Distribution Unit. The attachment
points for this wire are marked with the following symbol at each end:
Do not operate the test system without this wire being attached securely at each end.
Ergonomic Statement
The KVD M-Series Test System includes the equipment cabinet, the test head, a flat panel monitor,
keyboard, and mouse. Since each customer's test floor environment is unique, KVD does not provide a
work surface or seating for the operations or programming personnel. Thus it is up to the customer to
provide ergonomic accommodation for the user, terminal, keyboard, and mouse, to satisfy SEMI standard
S8-0999.
Chemicals
There are no relevant chemicals involved with the operation, manufacture, or maintenance of this
equipment. Various parts of the test head that come into contact with contaminants may need cleaning,
and the choice of method and cleaning materials is left to the discretion of the customer.
Decommissioning
KVD believes there are no current restrictions on the disposal of materials used in the construction of the
M-Series test system, and there are no process liquids or gases involved in the operation of the system. If
requested, KVD will accept the entire system returned to the company for disposal after its
decommissioning.
Ionizing Radiation
This system has no ionizing radiation hazards.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 43
KVD Company Confidential
Design Specifications
Operation
• Rotate the crank handle clockwise to raise the test head and rotate it counterclockwise for lowering.
• Loosen the friction handle by turning it counterclockwise, then move the test head manually to the
desired rotational angle, then retighten the handle by turning it clockwise.
Inspection
Once per year, all accessible bolts and screws should be inspected for looseness, and retorqued to 80
inch-pounds.
Maintenance
If binding is noticed in the crank handle, as indicated by requiring more than 200 inch-pounds of torque to
lower or raise the test head platform, the access cover on top should be removed, and the internal bevel
gears lubricated with a quality silicone grease lubricant such as Loctite® Silicone Lubricant #51360.
Footprint drawings and seismic calculations required by SEMI S2-0200 are included here.
The angle at which the Manipulator tips over on its back end is: 46.7°
The angle at which the Manipulator tips over on its front end is: 24.1°
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 45
KVD Company Confidential
The angle at which the Manipulator tips over on its right end is: 26.4°
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 47
KVD Company Confidential
3. System Hardware
The Test System Cabinet contains the AC PDU, DC Power Supply Assembly (some models), CPU, and
the Calibration Meter.
The Test Head contains the test instrument boards, the motherboard, and the device-specific Fathercard.
An optional test head manipulator, if present, will be integrated as part of the main cabinet’s cart
The cabinets come in two sizes, depending on the customer’s requirement for additional 19” rack
equipment.
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 49
KVD Company Confidential
Figure 3.2: Main Cabinet (Small) - M1m or M2m system - with cart and manipulator
The rear surface holds a multiple power output strip for the various system elements, and the single power
input connector.
The Remote/Local PDU Switch is a feature for possible ganging of multiple PDUs. It is presently not used,
and the switch should always be in the LOCAL position. If it is not, the PDU will not power up and the test
system will not operate.
This unit is sealed and needs no user maintenance. The unit contains a main breaker, line filter, surge
protection, and a remote control relay board for possible master/slave power distribution design.
Danger! The PDU is never to be opened with the AC Power cord attached. Hazardous voltages are
present within.
The Main Power Switch also serves as the Emergency OFF control for the system. The circuit breaker
being used has a 5,000 Amps A.I.C. (Amperes Interrupting Capacity) when connected to the customer
supplied external circuit breaker or fuse panel. It is required by all jurisdictions that cord-powered
equipment such as the KVD test system be protected by an external overcurrent protection device.
The test system requires a protected circuit rated at 16 Amps of 100-240VAC single-phase power., 50 or
60 Hz. The customer must provide overcurrent protection in the form of a circuit breaker or fuse to satisfy
all local regulations.
Warning! The mains disconnecting device is the cord plug, so the installation MUST provide for easy
access to the plug and owner-supplied receptacle for disconnection
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 51
KVD Company Confidential
The AC Power cord is a flexible assembly that extends from the upper rear of the cabinet a minimum of
four feet (122 cm) . The male cord end plug is a NEMA L6-20P standard
The CPU controls the Power Supply, so it can be powered on and off by software command. The Test
Head also contains a power switch that can override the software control to shut the DC power OFF.
The Calibrator measurement lines are routed through a test head cable for convenience.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 53
KVD Company Confidential
In the KVD tester, positive voltages are preceded with a P, and negative with an N. Examples: P5V (for +5
V), N12V (for -12 V)
If the voltage has a decimal point, as in 5.2 V, it is written as 5P2 to ensure that the decimal point is not lost
in multi-generational copying. Example: N5P2V (for -5.2 V)
A supply used for analog circuits (with lower noise requirements than digital circuits) will have the suffix F,
standing for "filtered". Example: N15VF (for -15 V filtered)
The high voltage rails used for various circuits are called PHV and NHV, for positive HV and negative HV
respectively. Voltages on these rails is dependent on the tester configuration, but is usually from -20 V to
+40 V maximum.
This will normally be done at system configuration time, but if needed for lower power dissipation in the
instruments, may be changed as needed by the test engineer. The high voltage 40V rail may be lowered to
24V or 16V. The typical choice is the "PW" mode which sets 40V as the rail.
Note: The test head power must be turned off when installing or removing DUT boards, which also
interrupts power to test head instruments. This requires re-initializing the test head, a quick
process that happens automatically before testing or debugging can begin.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 55
KVD Company Confidential
Hypertronics
Hypertronics are very low resistance and reliable connectors used on the top edges of the KVD
instruments to connect to the father cards. The male pins are on the instruments, and you must use care in
handling them to avoid bent pins. They are brittle and do not often bend straight without micro-fracturing,
thus reducing their life.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 57
KVD Company Confidential
The female receptacle is the secret to their low resistance, having a hyperbolic arrangement of tiny wires,
so the male pin is touched in multiply redundant places, instead of the usual 2-4 point contacts by a fork
connector. They can accommodate a few millimeters of engagement depth variation as well, so the father
card connections have more reliability than the typical pogo pin contacts.
Calibration Meter
Optionally, KVD offers support for Keithley 2000, 2002, and HP/Agilent 3458A DMMs. The cal meter in use
must be selected in the TCT. All other functions for meter operation during calibration and checkers are
automatic.
The 3706 meter is provided with remote software control via Ethernet on a dedicated CPU port, for speed,
and without a manual front panel, for savings of cost and complexity. Other models are controlled by GPIB.
The Keithley uses three inputs for calibration: voltage high and low inputs and a current input.
These three wires create the calibration bus which is routed from the test head to the meter. The
instrument resource which is to be calibrated is connected to the calibration bus and the meter is
manipulated via its programming language to make the appropriate measurement.
The meter acts as a NIST traceable calibrator for the instrumentation in the test head. For detailed
accuracy and drift characteristics, please see the Keithley documentation, available on-line or from KVD
customer support.
Calibration
This is the diagram of the cal bus path from the test head motherboard to the Keithley DMM. The return
side of the cal bus is connected to Analog Ground in the Test Head or may be set floating.
Test Head
The test head is the second of the two major components of the test system. It contains all of the test
instruments that directly drive and measure the device under test. All instruments connect to a common
backplane (called the "Motherboard") which provides the power supply rails and data I/O ports.
The M2 Motherboard is partitioned into two symmetrical sets of 11 slots, for 22 total (21 available for
instuments), called sides. SIDES are designed into the unit for convenience, but have nothing to do with
the software concept of testing SITES, of which the KVD can handle 32. The M1 test head has 11 slots, of
which 10 are available for instruments.
Opposite the Motherboard, each test instrument has at least one Hypertronics connector that provides I/O
access to the device under test through a board called the Fathercard.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 59
KVD Company Confidential
The Fathercard is similar to the DUT interface boards used on other types of ATE equipment except that it
contains serial interface controlled relay driver ICs used to open and close the relays. Instruments that can
populate the test head include various DC sources and measurement systems, a set of digital subsystem
modules, waveform generator and digitizing cards, relay matrix, and other custom modules as required.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 61
KVD Company Confidential
Father Cards
The test head Father Card serves as the device interface board between the device under test and the test
head resources. It mounts on top of the test head modules (opposite the motherboard) and connects to the
instrumentation resources through the Hypertronics connectors located on top of each of the
instrumentation modules.
Each Father Card has unique signal connections for each test device and often contains numerous relays
for complex connection schemes. The DC source outputs from the MPDC Module are often routed through
networks of Father Card relays to create a matrix-like environment allowing for great flexibility in source
and voltmeter connections. Digital I/O connections are typically routed directly to the device but may be
connected to any point on the Father Card. However, for ease of troubleshooting, many designers route
digital channels through isolation relays.
Relay driver ICs are located on-board the Father Card to provide the voltage necessary to the energize the
relay coils. The relay driver ICs are controlled by serial bus lines generated on the DISCONT board.
This is a more efficient use of interconnect pins than the normal ATE architecture of having a separate
relay driver board requiring one interconnect pin per relay driver.
When allocating resources the Father Card can be configured with great flexibility. The DC source and
measurement resources within a test program typically require the greatest connection flexibility. This is
achieved on the Father Card by setting up several "resource buses". These connection networks are
created from a number of matrix lines. Generally, one line is allocated for each DC source or measurement
front end such as the UVM.
All resource or device pin connections made to the resource bus are through relays located on the Father
Card or a RMX Relay Matrix. This allows complete isolation of the resource bus from all Father Card
locations. On the resource side, the bus wire is assigned a DC source connection and, in most cases, a
voltmeter connection. Device pin connections are then allocated to each bus after consideration of the DC
needs they will require. It is common to connect device pins to more than one resource bus to allow for
various connection schemes.
Within the test program, resources are connected and removed from the resource buses as the need
arises. When source or measurement connection to a device pin is required, all other pins can be
removed. Device supply and reference pins are often the lone device pins on a given resource bus in
cases where the device under test requires a supply rail.
DC Power Wiring
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 63
KVD Company Confidential
• N15V (-15 V)
• P5VF (+5 V Filtered)
• N12VF (-12 V Filtered)
• PHV (Positive High Voltage) typically +40 V
• NHV (Negative High Voltage) typically -20 V
On an M2 test head, the power supplies may be split between the DISCONT and MPDCMOD0 (the first
MPDCMOD instrument in the test head).
KVD Fathercard designs typically include monitoring LEDs and test points for all DC power supplies to aid
in quick troubleshooting.
Maintenance: Fuses
Warning! Operators may not change or replace any fuses described in this section of the Chapter. To
avoid risk of personal injury or hazard to human life, do not open covers or troubleshoot any
items with the AC power turned on.
Besides fuses in the Power Supply Assembly in the main test system cabinet, these DC supplies are also
fused on the DISCONT, to reduce the risk of Hypertronics pin and Fathercard PC damage in case of
accidental short circuits.
Note: The fuses on the DISCONT are 4 Amp, to reduce nuisance opening. That way, since the father
card fuse is a lower value, it will open preferentially before the instrument fuse on the same supply,
and it is far easier and faster for maintenance staff to replace the father card fuse.
These are opaque fuses, and cannot be visually inspected like glass fuses. If a suspected power supply
failure causes a Fathercard monitor LED to go dark, please alert maintenance staff to investigate the
Fathercard or the DISCONT fuses as appropriate. Spare fuses are available from KVD to avoid the
expense of sending a DISCONT back to the factory for a simple fuse repair. You must take care when
replacing them to use an energy-controlled soldering station such as ones made by Metcal, to avoid
damaging the pads that the fuses are soldered to.
Grounds
Analog and Digital ground planes are kept separate in the power supply and cables, but are typically
shorted together on the test head motherboard.
The Zero Volt Reference for the DUT Sources and all measurement systems is called GROUND SENSE,
and for best accuracy, must be connected to the DUT at only one point. Connecting it at a ground plane
point distant from the DUT is possible, but may introduce an error proportional to the ground plane
resistance and the current flow in it between the DUT and the GROUND SENSE connection.
In many cases, this will only be a fraction of a millivolt, but the effect needs to be carefully considered if you
are measuring or attempting to correlate to a sub-millivolt accuracy level.
The KVD architecture is unusual in that there is no separate instrument board for relay drivers, as it was
judged to be a unnecessary dedication of relatively expensive resources such as test head slots and
Hypertronics pins. Rather, a serial bus from the DISCONT board is used to control relay drivers on the
Fathercard itself, and all registers and drive circuits are available for easy troubleshooting.
DUT Cards
Some custom Father Card and DUT board designs are using 68-pin Hypertronics connectors exclusively.
Custom applications documentation will be provided by the responsible applications engineer.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 65
KVD Company Confidential
4. System Setup
Installation
Licensing
Licensing is handled by KVD staff upon initial installation, working with your IT staff to configure a license
server.
Tester versus notester emulation mode is determined at runtime. This has the benefit of allowing the
engineer to compile on an offline system, and the executable can run without recompiling on a tester. Also,
all tools are available from any install.
The install screen displays the target Operating System,Compiler, and the KVD Library number being
installed.
If you wish to group the KVD shortcuts under one selection under your Start menu, check the lower box.
The software ON/OFF control is either a Desktop Icon, or a START Menu program, that you need to turn
ON to energize the solid state relay in the Power Supply Assembly.
Remember that BOTH of these controls must be energized to power up the test head.
Every time the power is cycled to the test head, the XILINX FPGA chips must be booted, in order for them
to contain their programmed personalities. The operator is usually prompted to boot the test head, or it is
forced automatically, a choice which is set in the Customer Preferences Tool.
Functional Description
The TCT allows the user to configure the test head and communication ports on each KVD Test system.
The TCT writes not only user information, but standard KVD setup information into the Windows Registry.
All tools, along with any test program that uses a KVD library, read this setup information at the very
beginning of startup. The benefit of this is that the KVD Testers can be reconfigured for different products,
and the test programs/tools do not have to be recompiled.
The main page shows all the slots within the test head. By double clicking on a slot, the user is shown a list
of KVD supported hardware that can go into the slot. By selecting a board, the registry will be updated to
include the chosen board for the chosen slot.
When the program launches, there are two tab choices at first, the top one showing fast launch buttons.
There is a single-button Cal All function, similar to the previous cal launcher, as well as CheckAll and
Check And Calibrate All buttons and a Boot Test Head button to check gross functionality of the data
bus.
As long as the DUT board is removed, you can press the button of your choice, and it will run unattended.
Each cal and checker program will run from a script, display the standard production GUI for a time, and
finish by showing a results summary display.
The following is a printout from a log file of BOOTing the test head, with various instruments being
programmed by the Xilinx files. The PCIDIS board is located in the CPU, whose power cannot be
interrupted as the test head can, so it almost always displays the result that it is already loaded.
If you accidentally configure the TCT with an instrument in the wrong slot, or if you remove an instrument
and do not remove it from the TCT, the Xilinx boot process will fail, with an error message about "maximum
retries exceeded." This may also happen in case of a failed instrument.
Running BOOT_ALL
B Boot PCIF with C:\xil370\PCIDIS.XIL Side, Slot = 3,10 subslot=0
base_addr=768
PCIDIS XILINX Already Loaded, Reloading
PCIDIS XILINX Loaded !!
D Boot DISCONT with C:\xil370\DISCONT.XIL Side, Slot = 3,0 subslot=0
base_addr=768
DISCONT Booted !!
M Boot DCMOD0_500MA with C:\xil370\DCMOD.XIL Side, Slot, VSlot = 1,1, 1
subslot=0 base_addr=256
M Boot WS with C:\xil370\WSXIL.XIL Side, Slot, VSlot = 1,3, 3
subslot=0 base_addr=256
M Boot WD with C:\xil370\WDXIL2.XIL Side, Slot, VSlot = 1,4, 4
subslot=0 base_addr=256
M Boot DSPIO0 with C:\xil370\DSPIOCNT.XIL Side, Slot, VSlot = 2,1, 1
subslot=0 base_addr=512
S Boot DSPIO0 with C:\xil370\DSPIOTI.XIL Side, Slot = 2,1 subslot=3
base_addr=512
S Boot DSPIO0 with C:\xil370\DSPIODD.XIL Side, Slot = 2,1 subslot=2
base_addr=512
S Boot DSPIO0 with C:\xil370\DSPIOADR.XIL Side, Slot = 2,1 Massubslot=1
base_addr=512
M Boot DCMOD1_500MA with C:\xil370\DCMOD.XIL Side, Slot, VSlot = 2,3, 3
subslot=0 base_addr=512
M Boot WD with C:\xil370\WDXIL2.XIL Side, Slot, VSlot = 2,5, 5
subslot=0 base_addr=512
M Boot TMU with C:\xil370\TMUXIL.XIL Side, Slot, VSlot = 2,8, 8
subslot=0 base_addr=512
A Boot STD_FC with C:\xil370\STDFC.XIL Side, Slot, VSlot = 3,12, 0
subslot=0 base_addr=768
12.5Mhz DIS Selected
An overall PASS/FAIL result section shows at the bottom of the GUI. Yellow LEDs are programs in
progress, while black LEDs are programs that have not yet been run.
If you wish to terminate any cal or checker program while the production GUI is on display, click on the
yellow termination bar just below the simulated LEDs.
You have the ability to run custom options in most of the cals and checkers, either limiting the number of
sources/channels run, various other selections, or program a repetitive loop. Choose the Options tab, then
click the selected options. Then press the Run Selected Programs button.
Note: When a custom option field requires you to type in a value, a box will pop up. To clear the value
from the box currently requires you to type "-1" as a value in the box. As displayed, it says (-1 for
default).
After a Cal and/or Checker run, a summary of the results is shown, with red for programs that generated at
least one failure, and green for pass. This summary display is a list of hyperlinks to the real datalog files,
located in resource folders underneath C:\_kvdco_CustFiles\Calibration with date stamped filenames
such as the following:
dspiock_KVD-LASER153_060606_1321.log
5. Development Environment
KVD installs on each test system one or more KVD libraries, and a standard C++ header file. The libraries
support test program development (kvdwin.lib) and other instruments under development if present.
The libraries are typically located in the folder C:\_kvdco\Libraries. The header file (kvdwin.h) is
located in the folder C:\_kvdco\Include.
Getting started
Many test engineers start with an existing test program, cloning it to a new location of their own. KVD has
a tool to streamline this process called the Copy Project Tool
The KVD Copy Project Tool (located from the START menu under the Customer Support folder) was
developed to make copying a KVD Test program, and all support files, easier. The tool has a very simple
interface, and is shown below in Figure 5.1
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 75
KVD Company Confidential
You'll notice that there are three main sections. These are the steps you will follow to copy the project to
another folder, whether that folder is on the same hard drive, or located on the network.
Step 1 - Select the folder where the project files to be copied are located. This is known as the "source"
folder. This location can be a folder on a local or network drive.
Step 2 - Select the folder where all the selected files will be copied into. This is known as the destination
folder. This location can be a folder on a local or network drive. If it does not yet exist, you will be given the
opportunity to create it.
6. Operations Environment
Test programs must be released to production after development and debug. The environment of the test
system is highly configurable, with multiple priorities of precidence. At the first level, configuration settings
saved inthe Windows Registry are non-volatile, and consulted first. At the second level, configuration
settings can be saved in a hard disk file, and loaded along with the test program to enforce consistency on
the production environment. Last, the test engineer who is the final authority, may modify (temporarily or
for the duration of the test program), almost any possible attribute of the tester. This is a fundamental part
of the KVD design culture - to allow fine control over those aspects of the tester that the customer wishes
to customize.
Note: The Preferences choices are under constant development, so new selections may appear for any
software release. Please consult the most recent Release Notes for details of these additional
features.
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 73
KVD Company Confidential
Preferences Page
The customer preferences tool allows the customer an easy way to change some of the run time features
and/or options of the run time environment. This tool is considered by KVD to be customizable per
customer. Therefore, only the fields that would be the same for every version of this tool will be explained.
There are currently eight pages (TABS) on this tool. The Preferences page allows the user to turn on and
off different options, or to choose certain startup conditions. The Datalog Control page offers many flexible
options for data handling. The Handler Options page is where handlers/probers are selected, and Handler
Bin Tables are chosen. The Custom Data DLL page is where you can choose to filter your datalogs or
summary information through a program that may put it into a suitable format for off-line processing.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 75
KVD Company Confidential
Field Description
Run Mode The normal desired selection here is Production, to launch test program
executables. If it is set to Engineering, then the test program .ini file that the
Setup File Tool creates is searched to find a RAD Studio Project file (.bpr) to
launch instead. This allows test programs to be debugged while the main KVD
loop is running, which may affect execution timing. If the .bpr file that is
referenced by the .ini file is missing, the library falls back to running the test
program executable only, in Production mode. Engineering mode also activates
a test time profiler, which adds two fields to each test line of the datalog file:
DTT (for Delta Test Time from the previous test) and CTT (for Cumulative Test
Time from the beginning of Tseq)
Menu Items The menu items that appear on the main KVD production screen can be
disabled or enabled, to reduce operator confusion.
Auto Boot on Startup The KVD system will begin a boot process once the Start button is clicked. If
this option is Disabled, the operator will be prompted on whether to boot, or not.
If this option is Enabled, the boot will occur automatically.
Confirm Before When an End Lot occurs in the production environment, the user is prompted to
Stopping Confirm the End Lot before testing stops. This option can be changed by
clicking on the NO radio button in this box.
Show Hand Test Hand test mode is a GUI feature where the system can be instructed to test
Mode Menu only one device at a time, with operator control over the serial number. This is
useful for setup verification, or for testing correlation devices where the serial
numbers may not start at one, or be contiguous.
Test Statistics View The real time test statistics page is sometimes more easily readable in single-
(Columns) column mode instead of double-column. You have control over this appearance
of the GUI here.
Hide Setup Info On The Launcher can display the entire setup file for each test setup it finds. The
Launcher option can be toggled between showing the info, and not showing it.
Startup View The Production runtime environment contains three or four (if wafer flow is
selected) pages on its main screen, although more are possible. The user can
select the default page that is visible when the test program is first launched.
Stop On First Fail This is a standard feature of test systems. In normal production, you wish to halt
testing and immediately bin the device to maximize tester throughput. If Stop on
First Fail is turned off, then a bad device will be tested beyond the point of
necessity, thus wasting time on a part you are going to throw away anyway.
When you are doing correlation, QA, or engineering, and wish to know all the
possible failing tests, this feature may be turned off.
Ignore Raw Data Files The KVD tester will create a raw data file whenever an End Lot occurs. The file
is saved in the chosen data path under a name associated with the Lot Number.
If another production run is started with the same data path AND the same lot
number, the system software can handle the existing raw data. Clicking on NO
in this box forces the system to handle the raw data. Clicking on Yes forces the
system to completely ignore any existing raw data files.
Field Description
Raw Data Handling If the user has chosen to handle the raw data (see above), there then are three
ways it can be used. If the User chooses Automatically Show if it exists, then
the data is read in, and all counts are adjusted. The user is not prompted. If the
user chooses Automatically No Show if Exists, then the data is read in, but no
visual counters are adjusted, only the internal lot summary counts are adjusted.
Finally, if the user chooses Prompt User, the user will be prompted on how to
handle the data.
Max Lines On You can customize the screen size for the engineering screen, which looks like
Engineering Screen a historical datalog display.
Testing Flow For packaged devices, the main testing data flow involves a lot identification
only. For wafer testing, you are presented with a display of both lot and wafer
numbers, and summary files are available for both the lot and sublot level.
Wafer Map Options These are options available when you are connected to a GSI M310 laser
trimmer.
Hide Minimize/ To prevent operator errors and confusion, you may choose to hide these
Maximize Icons window control icons.
Full Screen Mode Selecting full screen mode may also prevent accidental operator mouse clicks
on unintended programs.
Library Version Check Run-time error checking to confirm that the test program being run was
compiled using the same KVD library version. Program will halt if a mismatch is
detected. Default condition for this check is ON, which may cause operator
confusion if they are presented with a program launcher with mismatched
programs to choose from. This feature may be turned off in the Customer
Preferences Tool if desired, which will emulate current system behavior, at the
slight risk of running mismatched programs that may generate fatal run-time
exceptions.
Note: This feature will not detect legacy test programs that were compiled
under older KVD libraries. It is designed as a feature to protect against
future KVD libraries being used to run test programs compiled using
5.02 or subsequent mismatched libraries.
The confirmation box that pops up if a violation is detected looks like this:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 77
KVD Company Confidential
Field Description
Process Priority The test programs can implement a change in the windows process priority,
which can be overridden by the Preference option here:
Ignore
Does not allow any changes to the process priority from within the test program
code. Program code priority changes would have been programmed by the test
engineer.
Normal
This is the priority level that the windows operating system normally uses for
any windows application.
High
This is a priority level higher than the normal level. This level can keep out
some of the network traffic, and other process interruptions that can slow down
a test program. Some (not all) test programs can run faster. One note about
running in the HIGH mode. Interrupting the test program (pausing or stopping
via mouse clicks) can be affected.
Check MPDCMOD Testing can be halted until the test head temperature matches the last
temperature calibration temperature (within a chosen tolerance).
Rolling Yield Display A feature useful to production operations is available called the Rolling Yield
Display, to assist in spotting trends of yield reduction. If enabled in the
Customer Preferences Tool, the Yield Display will show the yield of the last "n"
devices, where "n" can be between 20 and 2000. The count resets itself at end
of lot or sublot.
If activated, the display window appears on the Production View tabsheet (only)
just underneath the normal lot yield display window. In this screenshot, the
display is set to show the yield of the last 20 devices.
This is a single-site feature, however, and for multisite programs, the site-based
yield GUI is more useful, which is a separate production GUI tab. (documented
later)
In the startup page view, the subgroup radiogroups for Production Page and Site Data Page only show if
the parent radio button is selected. For example the two sub tabs for Production Page are hidden unless
the Production Page RG is selected, as shown in Figure 6.4.
Figure 6.4: Selecting Radio Buttons for Production Page and Site Data Page
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 79
KVD Company Confidential
There are many choices for how to handle new data (data from an interrupted lot, or a possible rescreened
lot), whether or not to automatically force the data to be printed without operator intervention, and what the
default datalogging choices will be. In addition, sample datalog ratios can be specified, in case you do not
wish to save or display the datalogs for each device, but only every "nth" device.
Field Description
Save Summary To prevent power interruptions or other incidents from erasing partial testing
Feature summaries, you now have an option to save data to disk between each device.
Data is buffered by one device if hand test mode is active, in case the device is
retested (which normally backs the last data out of the summaries).
Datalog data is already saved to the disk after each device, at a programmable
Sample Size.
KVD always recommends installing a UPS (uninterruptible power supply) if you
are in a region of very bad power, since the UPS also. protects against surges
and spikes as well as short power dropouts.
ZIP Data Files By selecting YES, the data files produced by the KVD Library (summary,
histogram, datalog, and TDA files) will be combined into one zip file (named the
same way the files are named, and in the same folder.) This can be useful not
only for conserving disk space, but also speeds up transfers across networks.
The handler options page allows to user to specify handler and prober DLLs by selecting the Disabled or
Enabled radio boxes in the Use Handler group box. On this page, the word Handler references both
Packaged Device handlers, and Wafer Probers. If a handler will be used (Enabled), then the handler DLL
listed in the Select Handler File list is the DLL file that the system will automatically use on start up. If a
handler is being used, and it is a packaged device handler which needs a software bin to SORT category
conversion, then the Bin Table selected will also be loaded. All handler/prober DLL files found in the list are
either supplied by KVD, or customer-written by modifying a generic template. If a Handler/Prober is
required that does not show up in this list, contact KVD for instructions and sample source code. The Bin
Table files listed are generated by the user by using the Handler Bin Table Tool.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 81
KVD Company Confidential
Custom Data DLLs are written by KVD or the customer to process, transmit, or manage data (such as
datalogs or summaries) in some flexible or customized fashion. If desired, their use can be managed by
this control screen.
STDF Format
Pending.
CSV Format
DLL Overview
The CSVFormat DLL will generate Comma Separated Value (.CSV) output files. The DLL has a default
directory for output files of C:\KVDTestData\CSV Output and a standard file naming convention of
<filename root><DLL added>.CSV.
The <filename root> portion of the filename is "Lot" by default or the user can pass in a value from the test
program. The <DLL added> portion of the filename is "#_f#p#_<time stamp>", where the first '#' is the lot
number and the <time stamp> is in "mmddhhmm" format. For example, if the user ran a test on Jan. 12 at
1:54p and didn't specify a filename root, the output file generated would reside in the C:\KVDTestData\
CSV Output directory and would be named Lot1_f1p1_01121354.CSV.
The user may pass in a <filename root> by using the following function call in the LotInit() function:
KVD->customdata->SetStringParam(100, <AnsiString>);
Where <AnsiString> is an actual string (i.e. "KVDTest_Run1_Lot"), including the quotes ("") or an
AnsiString variable. For example:
The DLL will then create an output file in the C:\Lot123 Test Data directory with the name:
KVDTest_Run1_Lot1_f1p1_01121354.CSV and place the data within the file.
Because of specific limitations with the Microsoft® Excel spreadsheet this DLL has special functions to get
around these limitations. Excel is limited in the number of rows and columns that it can display on a
spreadsheet - 256 columns and 65536 rows.
The CSVFormat DLL will create a new 'page' (p#) for every 250 tests done on a device and the DLL will
create a new 'file' (f#) for every 65500 devices tested. The CSVFormat uses the "_f#p#" in the filename to
distinguish each of the output files. For example, if there are 130,000 devices that will have 600 tests
performed on them, the output files generated will be:
By adding the following code to the LotInit( ) function the user may pass in the Operator ID, the Computer
ID and the Test Program Name:
KVD->customdata->SetStringParam(101,LOG->OperatorID);
KVD->customdata->SetStringParam(102,LOG->ComputerName);
KVD->customdata->SetStringParam(103,ExtractFileName(Application-
>ExeName));
The CSVFormat DLL automatically fills in the test numbers, test names, upper and lower limits and the
units to the output file. The DLL also includes the site number, device number (Serial #), bin number and
the Wafer X and Y in the first five columns each output file.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 83
KVD Company Confidential
Optionally, besides saveing testing data onthe local hard drive, you may wish to upload it to a networked
location. This is controlled either in the test program, or an overall destination folder can be specified here:
A new option is whether or not to auto-launch the RTI when debugging applications. This saves a few
mouse clicks if you are in a debugging session.
Fine grain control is provided for how you wish to handle library error messages of various severity levels.
Once any changes have been made to these options, on any page, the Update button must be clicked for
these options to be saved in the Windows Registry. A test program reads these options on startup. If a test
program is running when these options are changed, and saved, they will not be in effect until the next time
the test program is started.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 85
KVD Company Confidential
This tool allows the user to create a conversion table, and save it to file. Then, using the Customer Setup
Tool, the Handler Bin Table file (extension HBT) can be selected for use. The following image is of the
Handler Bin Table Tool.
Shown in this image are the128 possible software bins (BIN columns). Next to each software bin is an
entry field to put the corresponding SORT category. Files created and saved previously by this tool can be
reloaded, changed, and re-saved. The Fill All button, when clicked, will fill all 128 software bins with the
SORT category that is entered in the box below the button. The next image is an example of a Bin Table for
a product.
In this example, BIN 0's will be sorted to category 8, BIN 1's to category 1, BIN 2's to category 2, BIN 3
sorted to category 3, and so forth. All bins 8 and higher will be sorted to category 8. On this particular
handler, the limit for the handler was 8 sort categories, thus only 8 are used. The only limit to the number of
sort categories used is based on the handler, with the KVD having a limit of 128. (Except for parallel
interface hardware, however, where the limit is typically 10 category lines.)
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 87
KVD Company Confidential
Figure 6.14: Launch the Setup File Tool from the Start Menu
First, select the location in which the Setup Files are to be saved:
Choose your site-defined location. There must be only one folder into which all users are to save their
setup files, as this location is saved in the Windows Registry. If each user chooses a different folder,
production confusion will certainly result.
Then you enter the name you wish to display in the Launcher. This can be an easy-to-understand name for
production operators, and does not need to be identical to the name of the executable job plan.
Then you select which executable job plan (jobplan.exe) you wish to be launched when this Launcher
Name is chosen.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 89
KVD Company Confidential
If you wish to associate a limits file with the job plan, select it here. The limits file may also be programmed
in the job plan code, in which case this choice would be overridden. One advantage to specifying it here is
that different limits files may be loaded using a single test program executable, saving disk space. For
instance, QA, Final Test, and Burn-in limits may all be run using one executable, with different launcher
strings (names) used to distinguish them for the production operators.
Similarly, choose all the items you wish to have associated with this executable test program. Please feel
free to explore it on your own, and read the How To Documents under the Start menu for one named KVD
Test Program Engineering Check List.
An important selection here is that you can associate a particular Customer Preferences File with each test
program in the launcher. This is very useful in case you wish to remove any possibility that the another
development engineer or operator may leave the Customer Preferences Screen in some unwanted state.
The Customer Preferences File selected in this Setup File Tool will override any selections made
elsewhere, as it is read in just before program launch. This is flowcharted in section X (Pending).
When all of your selections are complete, you save the setup file by using the File pulldown menu, then
the Save As selection. The extension of these files is always .ini, and you need to choose a distinctive
filename to make sure yours is not confused with others.
Also remember there can only be one central Setup File folder location chosen, for all users to share. This
will normally be defined by your system administrators.
Pending: Explanation of the Zip Download process from a networked folder for test program version
control.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 91
KVD Company Confidential
The large blue region is where the display names are presented to the operator. They can choose one by
a mouse-click, or if there are too many to be displayed easily, typing in the box will run a filter against the
list, and only display those names beginning with the typed characters.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 93
KVD Company Confidential
An operator ID needs to be entered here, and it is saved in a LOG object variable and printed with all
summary files and datalogs. The LOT number does not have to be all numeric, but can contain alpha
characters as well. Punctuation is not recommended.
Previously, invalid characters could be entered for lot names, which would cause filename errors after the
lot was ended and summary data should have been saved. This could cause loss of report data and force
retesting. Now, the code substitutes an 'X' for the following invalid characters / * & # ! - ; :
Finally, selecting a program name, and pressing the Launch Test Program button will execute the KVD
production GUI.
Preferences Flowchart
• When the production process launches, the KVD software accepts preferences from the Windows
Registry first. This is where the Customer Preferences Tool stores its selections.
• Next, the .ini file for the test program that has been launched is consulted for more preferences, such
as the limits file to be used. Remember, these are .ini files created and saved using the Setup File
Tool.
• The Setup Files are stored in a central location, so we need a way for their data to be communicated to
the executable test program. We use a generic file called KVDStartup.ini to accomplish this. Any
items named in the Setup File are copied to KVDStartup.ini, and this file is placed into the same folder
as the executable test program.
• Variables from the Launcher such as the Operator ID and Lot Number are copied into a file called
KVDLauncher.ini, and also placed into the test program folder.
• Data from both of these files is read into the test program before the SystemInit function in
UserClass.cpp.
• You can interrogate any of these variables in the LOG object to see what was read in.
• You can at that time change any of them if you wish, since the test program always has the last
chance. You, as the test engineer, can reload limits files, change lot number, index the serial number in
unusual ways if you wish, reboot the test head, customize the datalogging choices, and override things
such as the final destination folder for summary files.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 95
KVD Company Confidential
Open KVDStartup.ini
Note: Each item is now read, and then processed only at the end, not as it occurs.
Examples
This section gives several operational examples for the handler enabling flow. In general, in order of
precedence, the flow is as follows:
• LAUNCHER drop down list
• Followed by Setup File HANDLER line
• Followed by Customer Preference (CPC) file option.
• Followed by whatever was in the registry to begin with.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 97
KVD Company Confidential
Example 1
If the CPC file specifies that TELP8MULTIPASS is to be used,
and the operator selects the AETRIUM from the LAUNCHER drop down,
then, under the proposed flow, the AETRIUM would be the handler used.
Example 2
If the CPC file has the handler DISABLED,
and the setup file has the TELP8MULTIPASS listed as the Handler,
and the operator selected AETRIUM from the launcher drop down list,
Example 3
If the CPC file has the TELP8MULTIPASS selected and enabled,
and the Operator selects the AETRIUM from the drop down list,
Example 4
If the CPC file has the TELP8MULTIPASS selected and enabled,
and the Operator makes no selection in the LAUNCHER drop down list,
Datalogs
Datalogs are the detailed test results display for a tested device. You can select to datalog all tests, or just
failed tests, to a file or to the printer. When saved on the disk, the files have the extension .log, and they
are stored in a folder you have previously designated in the Setup File Tool. The default folder, if you do
nothing, is C:\KVDTestData.
Example:
Recently, per customer request, we added a field to the standard report header that displays the name
(string) that was chosen in the Launcher to run the test program.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 99
KVD Company Confidential
The KVD Library has the capability to profile each test's test time. Simply turn on Engineering Mode in the
customer preferences tool, and enable datalogging of all tests. You will then see two new columns on the
datalog.
The CTT value is the Cumulative Test Time from the beginning of the device and the DTT is the Differential
Test Time from test to test.
You can also read the system's internal timer into a variable by the following function:
variable1 = SYS->read_counter();
Do that at the beginning and end of code you're trying to time, get the difference, assign the difference to
SITE->lastresult.value and then you can datalog it.
Summaries
Bin result and test summaries are reports of the number of devices assigned to each bin, in a sublot or lot
of devices, along with the numbers of attempts made on each device for each test in the test list. A ratio of
failed attempts is also reported, to help in yield analysis and test list profiling. For instance, a test which
always passes every device may be a candidate for removal from the test list, since it may not contribute to
fault coverage. The file extension is .sum if the summary is saved to disk.
In the production environment, the operator can take a partial summary in case of curiosity about the yield
of a lot. The final lot or sublot summary is the one that is saved to the disk if specified in the Preferences
Tool.
BINNING SUMMARY
Viewing summary data from the production GUI (for example looking at a partial lot summary) is now
accomplished in a non-editable window instead of in Wordpad. This removes the operator's ability to
modify data before it is sent to the printer.
Depending on exactly how the handler or prober is halted or paused, the KVD summary reports could have
been low by one or more (depending on the number of active sites) devices because of data queuing.
Now, if the operator requests a partial summary report, the request is queued until the current device test
sequence is finished, that device (or devices, for multisite) is included in the report, which will pop up when
the handler bins the device(s).
Histograms
Histograms are a graphical way of showing the statistical results of a series of tests. The test limits are
shown as vertical lines, and the device test results are represented by asterisks. At a glance, the test
engineer can see the distribution of device results to see if there is a risk that limits are about to be
exceeded, or the distribution is skewed by process variation. Histograms use the extension .his when
saved to disk.
Graphical real-time histograms are also available while a lot is running by another path, documented
below.
Note that the mean of the result data is intended to be shown by a vertical column of dots, but this is
sometimes skewed due to a bug. The text report of the mean is correct, however.
Note also that in current software, out of range measurements cannot be excluded from the analyzed data,
which could also cause skew.
| * . |
| * . |
| * . |
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 101
KVD Company Confidential
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
========================================
0.400 V 1.000 V
| ** |
| ** |
| ** |
| ** |
| ** |
| ** |
| ** |
| *** |
| *** |
| *** |
| *** |
| **** |
| **** |
| **** |
| **** |
| ***** |
| ***** |
| ****** |
| ****** |
| ****** |
| ****** |
| ****** |
| ****** |
| ******* |
| ******* |
========================================
-100.000 dB -80.000 dB
Total Devices = 52
Test# Name Units Lower Spec Mean-3S Minimum Mean Maximum Mean+3S Upper Spec Sigma CPK
-------------------------------------------------------------------------------------------------------
--
1 CONT + : DOUT : V 0.400 0.654 0.654 0.655 0.655 0.655 1.000 0.000 512.088
2 CONT + : SSTRB : V 0.400 0.653 0.654 0.654 0.654 0.654 1.000 0.000 524.543
103 CONT - : DOUT : V -1.000 -0.524 -0.525 -0.522 -0.522 -0.521 -0.200 0.001 196.435
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 103
KVD Company Confidential
Notice the tabs that are below the Elapsed Time, and PASS / FAIL counters. These three tabs are labeled
"Production View", "Engineering View", and "Test Statistics View". The image above is displaying the
Production View. There is a Wafer Map view which is separately documented in an on-line How To
Document.
You can click on any of the three tabs at any time during testing (or when paused) and the program will
switch to that view. Since testing devices has a higher priority for CPU cycles, this switching could be
deferred until the end of the current device. Don't be alarmed at a possible delay. One way to increase the
chance that your mouse click will be noticed by the Windows scheduler is to sprinkle some or many of the
following statements in your program between tests:
Application->ProcessMessages();
Production View
The production view, when set up in a normal test program, will show horizontal bar graphs for each of the
BINS that the test program has defined. The graph above will automatically re-scale itself as the bin
counters fill up. In the image above, the area to the left of the graph shows the bin labels that the test
engineer has assigned to the bins in the program. To the right of the graph is a vertical list of two columns.
This is a run time counter of each test that fails, and the number of devices that have failed that particular
test. This is updated as the device is testing, but not resorted to put high counts at the top of the list.
Engineering View
The Engineering View is nothing more than a datalog screen view that is similar to the datalog environment
of any tester. You can switch to this view whenever running the test program, and see all tests or failing
tests only, depending on the preference you have previously chosen in the Customer Preferences Tool. If
you have chosen datalog to screen - OFF, then this page will have no datalog results, but a simple display
of device serial numbers and test time only.
Depending on the choice made in the Preferences Tool, the datalogs will be standard, with only test
results, or an engineering mode, with test time profiling time stamps included.
Note that the video screen refresh can be quite slow on this screen - on the order of dozens of milliseconds
- which could cost throughput. This should never be the default screen for viewing by operators. The scroll
window is also not very large, because of the amount of memory it could consume. Datalogs are normally
flushed to the hard drive after every device anyway, for later viewing.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 105
KVD Company Confidential
This view is updated at the completion of each device tested. This view will show all the tests in the
program, along with their associated upper and lower limits, the last result for each test, and the mean and
standard deviation for each test. When a test fails the limits associated with it, that line of the test statistics
view will be highlighted in red. You can scroll this view down to see other tests that might be hidden if many
tests are in the program.
If in Wafer test flow (a Preference), you will see a wafer map display.
If you are running a multisite program, there is a tab you may choose to display yield arranged by sites
instead of a consolidated display. This may increase the operator’s awareness of a site-based problem
such as bad probe tips.
Custom Forms
Some new and very useful features have been added to the Main KVD Production Display. Some
engineers in the past have developed their own data entry or setup forms that the engineer uses at the
beginning of program execution, or sometimes during program execution. The limitation of these forms
was that the engineer had to supply some way of the user deciding when the form was visible (or shown).
Now, that same form (with no changes required) can be added as a tabbed sheet on the KVD Main Display
with the call of one simple command, which takes a pointer to the form, and the text to use as the caption
of the tab sheet.
The test time that used to be datalogged, and displayed on the Production Main GUI page, was found to be
not fully representative of the test time needed to predict throughput on the test floor. Specifically, the
display was omitting the time spent in the functions DeviceInit and DeviceFinish, and only registering
time spent in Tseq.
For a better understanding of the number of devices tested per hour, we have enhanced the data gathering
to include these two functions in device test time, and also added two new fields in the production GUI to
show tester/video refresh overhead time and handler/prober index time. The total number of devices
tested per hour is always a function of the yield mix and variable laser trim activity, since very few devices
go through the exact same test sequence, and this data should always be calculated using full wafer or lot
test time reports. This is especially critical if the lot test time includes wafer robotic handler or vision system
auto-align activity.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 107
KVD Company Confidential
Speed-up Techniques
There are new means to reduce the overhead associated with the production GUI. As always, achieving
the optimum test time per device involves using the minimum reasonable relay delays, optimum trim
strategies, and avoiding unnecessary hardware resets and initializations. These are under your control as
a test engineer.
Once a test program is released to production, we have provided new preferences options to minimize the
time spent redrawing the video screen and calculating test statistics.
You can choose to defer updating the GUI until every Nth device, saving video refresh time. You can hold
off updating any of the three major GUI tab sheets, saving calculation time. You can add or suppress
throughput information being added to the summary report.
The production tab (bar chart) window is the slowest for updating. Depending on your chosen monitor
resolution (1024X768 or higher) and number of bins, this could be 130-200mS.
Engineering view (datalogs) with datalogging to screen turned off is quite quick, around 25mS overhead.
Suppressing the GUI updates on every device can bring the per-device overhead to less than 20mS.
If you choose to add throughput times to the reports (currently active on summary, histogram, and TDA
reports, not the datalog report), a section is added just after the header with the following information:
This is also under the test engineer's control, through the LOG object:
LOG->AddToReport=1.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 109
KVD Company Confidential
To improve the ability of test floor operators and managers to spot declining yields and take swift corrective
action, we have implemented a beta version of a programmable yield alarm.
The trend display can be shown in place of the former Production View (bin bar chart), with programmable
numbers of bins being monitored, with distinctive colors for the monitored bins. A scrolling display of the
last 100 devices is shown, and the graphical representation lends itself to spotting trends quickly. Future
enhancements will include site-based tracking, to assist in spotting trends such as continuity yield issues
per site.
Which bins are tracked is configurable with the Options tool. When you click the Options button, it
demands a password in this box:
The default password is administrator, but that can be changed by editing the file
C:\\_kvdco_CustFiles\\supervisor.ini.
If this file does not exist, create it, with the only content being your desired new password. This file will
persist between new software installations.
When the supervisor password is correctly entered, the following screen will launch, allowing specific
control over whether a bin is plotted on the Bin Trend Chart, the alarm percentage that trips the message,
the exact alarm message, whether or not a supervisor is required to clear the alarm or not, and the desired
color of the trend line. When you click the "save" button, this data is saved to
C:\_kvdco_CustFiles\BinTrendFiles\tempmem.btf until changed again.
Each bin can have an optional trigger value (in percent), which will cause an alarm to go off if a pass bin
falls BELOW the trigger value, or if a fail bin goes ABOVE the trigger value.
The exact message that appears when the alarm occurs is programmable, so the alarm can instruct the
operator in a variety of responses, from checking the hardware, cleaning probe tips, or calling maintenance
or test engineering.
Because the functionality of this is useful to save as part of a test program, so the test engineer can
program the desired initial conditions for the Bin Yield Display, the concept of the Bin Setup Tool has been
extended.
Bin files used to be stored with the extension .bin in the test program directory. Extended bin files, with the
yield alarm features, can be stored with the extension .btf, and edited with the new tool. The new Bin Setup
Tool is launched the same way as the previous version, from the Start->Programming Tools. But you
have the new features of being able to import legacy .bin files, and save the new files as .btf versions.
Note: If you use this feature, you will have to change any mention of LOG->load_bin_data in your test
program to LOG-> load_bin_setup_file and refer to the new .btf file as the argument.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 111
KVD Company Confidential
If plotted, the selected bins will appear in a display like this, with a color legend along the left edge:
To assist in quickly detecting site-to-site differences, which may indicate contact or probe problems, the
BTF file can also be configured to trigger an alarm if the lowest to highest yield for any bin exceeds some
threshold delta. Since this is a multisite-related display, it appears only when running a multisite program,
on the "Site Data" production GUI tab, on a sub-tab called "Bins per Site".
To assist in determining if a site-based repair (contact cleaning, overtravel adjustment, etc.) is immediately
effective, the Site Data GUI was enhanced to add two columns on the Statistics Per Site tab. One for the
yield per site for the last "N" devices, and the other a display of what the "N" is defined to be. The default is
100 devices, but you can change it in your test program to be a different number per site if you wish, with
the command:
KVD->siteyield_lastn[site]=#;
// # is the rolling yield per site window.
Cleared Alarms
Cleared alarms are now added to the utilization log for an audit trail. First added in Release 5.02 R6, here
are some details about this log:
These logs are kept in the folder C:\_kvdco_CustFiles\UtilizationLog. The filename includes the Tester
ID, month, and year, and the data is saved in CSV (comma separated value) format, for ease in importing
the data to Excel or another spreadsheet program.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 113
KVD Company Confidential
Operator ID
Clearing an alarm will always require the operator to enter an ID string (a minimum of 4 up to 10 characters
long). If the "Supervisor Clear" requirement is also set, the Supervisor Password box on the GUI is active.
If the Supervisor Clear requirement is not set, that box is grayed out.
Exiting the job using the Yield Alarm GUI is a supervisor function, and proceeds through the entire End Lot
process to ensure summaries are retained and not lost.
Pending.
The operator may also add a value tag to each bin with a label that contains the count, or a percentage,
and this tag may also be scaled for size.
To accommodate 128 bins and improve readability, the orientation of the bin bars in the standard GUI is
now vertical instead of horizontal, with numerous customization controls now available. See Figure 6.44.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 115
KVD Company Confidential
The Bin Count Chart can be sorted so that the left most bin in the chart represents the highest count, like a
Pareto chart. Since sorting takes a fixed amount of time each time it sorts, the user can choose the
frequency of sorting (every n devices) by using the new SortBinFrequency count in the Customer
Preferences Tool. Bin 0 always appears at the left, no matter how the others sort. See Figure 6.45.
Figure 6.45: Bin Count Chart
The only bins that show up now in the Visible Bins options list are the bins selected as used in the bin
editor, but you can suppress additional bins if desired. Bin 0 cannot be suppressed. See Figure 6.46.
The Bins Per Site table font now can scale larger or smaller by clicking on buttons on the Main GUI, for
enhanced readability at a distance on the production floor. See Figure 6.47.
Figure 6.47: Large Font Selected for Readability on Main GUI
It is possible to hide various parts of the GUI at LOT runtime, while the test system is RUNNING, not
PAUSED or STOPPED. When LotInit begins, selected parts of the GUI can be hidden, thus enhancing
other views such as charts, or tables.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 117
KVD Company Confidential
Outside of LOT runtime, the screen appears as it always has. These choices can be saved to a file and
then they become the default. See Figure 6.49.
Figure 6.49: Customizing GUI Display Details
The Wafermap page now has two buttons that allow zooming in and out. Thus the wafer map can be made
larger or smaller.
Limited view - the user can now selected test to view and test to hide on the test statistics view. To do this,
click on the View Options button located on the Test Statistics View page.
You are then presented with a page of check boxes for each test (based on a loaded limits file) that can be
viewed, or hidden.
Note that the tests that are selected are the tests to HIDE. After selecting the tests to hide, click on OK.
After the current DUT is finished testing, and as the next device starts testing, the view will change.
Highlighted View - the highlighted view allows the user to select tests that will be highlighted with a blue
background, and white font. This makes it easier to spot specific tests of interest. After clicking on the
Highlight Options button, you are presented with a screen similar to the hidden view options form.
The test you select (checked) are then highlighted the next time a DUT starts testing.
Pending examples.
The test engineer can also control the appearance of the statistics page from within the program:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 119
KVD Company Confidential
TEST STASTISTICS GRID - added capability to pre define the test stat cells for test numbers. See
functions PreAssignFromFile, PreAssignReset and PreAssignSet.
TestStatisticsForm->PreAssignReset() - resets any previously defined cell assignments.
TestStatisticsForm->PreAssignSet(tn) - as this function is called, it assigns the cell starting at the top.
Subsequent calls move down the grid cells.
TestStatisticsForm->PreAssignFromFile(AnsiString filename) - this file is just the list of test numbers, one
per line, in the order that they should appear on the test stat grid. However, the first line must be the current
value of the pre assign library version, which is currently the number 1.
Any tests not "pre assigned" using the file or the direct method will be assigned a cell as the test is run.
bool AllowMemoryCheck;
unsigned LowDiskThreshold;
unsigned LowMemoryThreshold;
unsigned MemoryCheckFreq;
void CheckForAvailableMemory();
void ShowAvailableMemory();
AllowMemoryCheck=false
LowDiskThreshold=100;//MB
LowMemoryThreshold=1000;//MB
MemoryCheckFreq=50;//devices
The StatusBar on the Production GUI shows the available RAM and available DISK space. An alarm is
enabled by setting 'AllowMemoryCheck'=true. Then, it will check the RAM and DISK space every
“MemoryCheckFreq;;” devices. If the RAM falls below the 'LowMemoryThreshold' threshold or the DISK
space falls below the 'LowDiskThreshold', then a warning message is displayed to the user.
The values are displayed on the second Statusbar, which autosizes for various display resolutions. See
Figure 6.54.
The variable AllowMemoryCheck defaults to OFF to prevent nuisance alarms, but you can turn it on in
program code if you want. Observing the RAM usage over time is one way to visually detect memory leaks
before the program consumes all RAM and crashes.
At any time during testing, the operator can click on the Partial Summary button and obtain any of these
data files. You can save these partial files, or print them out.
Operations Environment Production GUI RAM and hard disk usage display
You can click on the Start button and the test program should start up. You may be prompted to whether
you want to Boot the test head or not, depending on the preset Customer Preferences. If you haven't yet
booted the tester, it will automatically force a boot. Once the boot is completed (assuming you selected
YES if given a choice), the test program will begin. If you are still using a BLANK generic test program, you
should get BIN 1 and passing 100%. To STOP the test program, click on the End Lot or the Pause button.
You'll be asked to confirm this before the lot is ended, if the preferences were so set. To exit the test
program, click on the Exit button. That's it, you're done.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 121
KVD Company Confidential
As expected, select the tests you want to view by checking the appropriate box, or cancel viewing a test by
unchecking the appropriate box. Click on OK, and you'll see a plot like the example below.
The plot can be saved or printed. You can also view the individual measurement values by turning on the
Show Value Labels options. The plot will change each time the test is executed.
Graphical Histograms
We've added the capability to watch histograms of any test number in real time. The graphical histograms
are easy to use. Under the Quick Tools menu item, select the Histogram By Test Number menu item.
This brings up the following dialog screen.
Operations Environment Production GUI RAM and hard disk usage display
Select the tests that you want to view histograms on. As data is collected, if the test is selected (checked)
then the histogram plot will be updated in real time. You can view as many histograms as you want. To
remove a histogram plot, just bring up this dialog again, and uncheck that test. Here is an example:
The Options button brings up a dialog box that allows you to change the upper and lower boundaries (for
viewing) and the number of bins (slots) for the histogram plot. You can also print a histogram to the current
default windows printer by clicking on the Print button. In the case of really bad low data, or really bad high
data (data which falls far outside the predefined test limits), the plot will record these in the upper or lower
ERROR slots.
Conditional Breakpoints
Runtime Breakpoint Events
A test program can be halted, and the operator/engineer notified, if the test program encounters any of the
three following events:
• On Test Number
This event is launched whenever the test number selected becomes the current test number.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 123
KVD Company Confidential
Operations Environment Production GUI RAM and hard disk usage display
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 125
KVD Company Confidential
TEL
If your Customer Preferences are set in Engineering Mode (instead of Production Mode), and you are
using the most recent TSK or TEL Multipass Prober DLL, an additional Menu pull-down item appears,
labeled Handler.
If you enable Handler Engineering Mode, an additional GUI form will appear with four tabs.
Tab Description
INDEX Allows control over stepping from die to die, moving to any designated die X
and Y location, setting active sites, starting a test sequence, Z-up or Z-DOWN,
ending the lot, or exiting the engineering tool.
CONFIG This is a display only (not control) page that displays the current die location,
totalsites, reference die x and y, die height and width, and chuck temperature.
Tab Description
WAFERS Displays the contents of two cassettes, and allows control over wafer loading
and unloading, alignment, and a clean probe function.
Support for the TEL P8 Prober includes the following configuration settings in the file
C:\_kvdco_CustFiles\Handlers\TelP8ProberMultiPassCfg.ini.
[PARAMETERS]
; The probers primary GPIB address
GpibAddress = 5
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 127
KVD Company Confidential
Driver Commands:
Use these commands with great care. There is a large potential to cause flow problems within the handler
driver. This is especially true of the readstring and writestring commands. Only do the getstatus() to receive
a status that you expect from your writestring and readstring commands. If you get a status that does not
"belong" to your sent commands, it might cause an important status to be missed inside the driver flow.
TSK
The TSK prober driver has been enhanced (access this mode by clicking the "Handler" button at the top
menu of the Production GUI) to offer an off-line simulator and an engineering mode for fine control over
prober functions.
For maximum flexibility, KVD can accommodate site-swapping on these quad site handlers, and can be
configured as follows:
Site reversal is controlled by a keyword in the Cfg.ini file. Setting "ReverseSites = 1" will enable the
reversal, setting "ReverseSites = 0" will disable it. The default mode is 0 for both drivers, which will be the
Multitest default site layout.
Another launcher setup special fields keyword has also been added to these two drivers. That is
"HandlerCfgFile=". Use this to override the default Cfg.ini filename and path within the driver. This can
allow each setup file to specify a different Cfg.ini file. You can make one that has reversed sites, and one
that does not.
Multitest
Support has been added for GPIB control of the Multitest 93xx handler, with suitable trace statements for
communication debugging.
7. DC Instruments
MPDCMOD Pictorial
Functional Description
The MPDC Module (MPDCMOD) contains eight ground referenced DC Sources and one floating user
voltmeter. Each DC source is an independently programmable, four quadrant, Kelvin, DC voltage and
current source which can be connected to the device directly or through relay networks on the Father
Card. Sources are numbered beginning at 0 (zero) not 1 (one).
Gnd
Sense F S FS FS FS FS FS FS FS Hi Lo
0 1 2 3 4 5 6 7 UVM
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 201
KVD Company Confidential
The sources offer four voltage ranges ± 40V, ± 20V, ± 10V and ± 5V, and five current ranges: 200mA
(400mA for the MPDCMODHI) , 20mA, 2mA, 20uA, and 200nA. The force and sense line of each source
connect to the Father Card through a Hypertronics connector. Each DUT Source has a voltmeter/ammeter
that is dedicated to making voltage and current measurements. This meter is a 16 bit sampling converter
(4K sample memory) with variable clocking. Because this voltmeter is designed to measure the state of
each of the DC sources, it has no connections to the Father Card. This is commonly known as the SVM, or
Source VM.
There is also a precision differential voltmeter located on the MPDCMOD. This voltmeter is the commonly
referred to as a UVM, for User Voltmeter. This voltmeter has its inputs routed directly to the Fathercard
through the Hypertronics connector and can be connected to the device directly or through relay networks
on the Father Card, or a mux on the instrument itself to internal points. The floating voltmeter features a 16
bit A/D, variable sampling rate, differential or single-ended input stage, programmable DC offset and
multiple gain stages.
loopcomp(fast/slow);
remote_kelvin();
setir(value,range); local_kelvin();
seti (value);
setvr(value,range);
setv (value);
null Power on_force();
point Amplifier off_force();
Level DAC irange(range);
FORCE
Buffered
Gnd Sense 10 on();
MOhm
off();
Diff Amp
Force I Mode
VOLTAGE SENSE
RANGE
Force V Mode CONTROL on_sense();
vrange(range); off_sense();
ADC vmeter();
mux 1 of 8 imeter();
measvm(samples);
Gnd Sense Buffered
from DUT Gnd Sense
Vmin Ineg
vclamp(min_val,max_val); iclamp(symmetric_val);
local_groundsense();
Vmax Ipos remote_groundsense();
Clamps Ground Sense Buffer
Physical Description
The MPDC Module is composed of a D/A converter which feeds a high power operational amplifier. This
power op amp has two possible feedback loops. The first feedback path is used when the source is forcing
voltage and connects the op-amp's output to its own negative input. This feedback path senses the output
voltage and holds it constant. The output of the power amplifier is referred to as the force line and the
voltage feedback path is called the sense (or Kelvin) line. The force and sense lines can be connected
directly at the output connector by a relay or can be wired independently and tied together close to the
device to eliminate the effects of path resistance.
The second op amp feedback path is used to force (source or sink) current. This path uses a differential
amplifier to sense the voltage drop across a selectable resistor in series with the power op amp output.
Due to the nature of this sense connection, the feedback path does not require any type of remote
connection to ensure accuracy. Current ranges on the MPDCMOD are defined by a resistor network on the
output of the power op amp.
Voltage clamps are independently user-programmable and current limiting is also user programmable.
Control logic, including address decoding and serial data return bus generation, are contained within a
single on-board FPGA. The MPDC Module FPGA must be booted with a firmware data file each time the
test head is turned on, and this is normally handled automatically with no user intervention required.
MPDCMOD Objects
The MPDS class defines MPDCMOD source objects as one of three types:
• TMPDS - used for individual control
• TGroupMPDS - used to control a group of sources with one defined name
• TSiteMPDS - used to control a set of sources in a multisite test program
You are free to declare your own name for a resource, as many test engineers do in a file named
connections.cpp, such as declaring:
TMPDS *VREF;
void UserConnections() {
VREF = MPDS[4];
VREF->setname("VREF");
}
Force Voltage
Once the Kelvin connection has been selected, the source can be used to force a voltage up to it maximum
output specification, subject to the programmed voltage clamp.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 203
KVD Company Confidential
Note: Amplifier limitations reduce the maximum forced voltage to somewhat less than the DC supplies in
your particular configuration. In the typical configuration, with +40V, -20V DC supplies, you will
obtain a maximum voltage capability of +36V to -16V.
MPDS[i]->setv(value);
Example:
MPDS[1]->setv(1.20);
The argument [1] is the DUT Source within the test head (1 of 32, but they are numbered [0] through [31]).
Force Current
The MPDCMOD may be set to force any current up to 190mA (380mA for the MPDCMODHI), subject to
the programmed current clamp. Always make sure the clamps are programmed to be "out of the way" of
the forced value, which means slightly higher, outside the guardband of the specifications.
MPDS[i]->seti(value);
Example:
MPDS[1]->seti(0.100);
Voltage Ranges
0 ± 40V mpvr_40v
1 ± 20V mpvr_20v
2 ± 10V mpvr_10v
3 ±5V mpvr_5v
You can set the voltage range explicitly if you wish using the range index, or its alternate variable name, in
the setvr and vrange commands. Setvr sets both the value and the range in one command, while vrange
affects only the desired range. These are examples of valid statements only; please also see “MPDCMOD
and HPDCMOD Ranging Lockout” on page 211 for an important discussion of the order in which you are
required to perform certain ranging functions.
MPDS[i]->setvr(value, range);
MPDS[i]->vrange(range);
Example:
MPDS[1]->setvr(1.20,3);
MPDS[1]->setvr(1.20,mpvr_5v);
MPDS[1]->vrange(3);
MPDS[1]->vrange(mpvr_5v);
Current Ranges
0 200mA mpir_200ma
1 20mA mpir_20ma
2 2mA mpir_2ma
3 20uA mpir_20ua
4 200nA mpir_200na
The current range setting is handled automatically when forcing current using the seti command, however,
when using setv to force a voltage it may be desirable to change the current range. Note there are two
gaps in the ranging, at 200uA and 2uA, due to space limitation on the instrument.These are examples of
valid statements only; please also see “MPDCMOD and HPDCMOD Ranging Lockout” on page 211 for an
important discussion of the order in which you are required to perform certain ranging functions.
MPDS[i]->setir(value, range);
MPDS[i]->irange(range);
Example:
MPDS[1]->setir(0.018,1);
MPDS[1]->setir(0.018,mpir_20ma);
MPDS[1]->irange(1);
MPDS[1]->irange(mpir_20ma);
Warning! The test engineer MUST take extreme care to avoid hot-switching any range relays. For
enhanced execution speed, KVD software drivers do not enforce supply disabling or
discharging, or include any built-in delays, trusting the test engineer to know when they are
safe from the risk of hot-switching. Enlightened use of delays is REQUIRED to avoid the
possibility of instrument or DUT damage.
For each source, the voltage and current clamps are programmable. Current clamps are symmetrical (one
programmed value is used for both positive and negative current clamps) while the voltage clamps require
the user to program two values, a lower and an upper clamp.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 205
KVD Company Confidential
MPDS[i]->iclamp(value);
Example:
MPDS[1]->vclamp(-4.0,12.0);
MPDS[1]->iclamp(0.10); // value in Amps
Note: Clamps in the KVD sources are not used for programming precision levels of current or voltage.
They are meant for protecting against uncontrolled transients (current spikes into a short or
voltage spikes into an open). Note also the accuracy specs of the clamps, which makes the lowest
reasonable current clamp to be 20mA. Any time your clamps are set too closely (within the spec
guardband) to the programmed seti or setv values, you run the risk of having the clamps activate
and prevent your level from being achieved.
Kelvin Connections
Each source has separate Force and Sense relays, and a separate relay to short them out locally in case
the user does not wish to being both lines separately to the DUT. They can be configured in flexible ways,
depending on your design for the Father Card and DUT boards.
Examples:
Warning! The on and off commands are not electronic gates as on some other testers. They close and
open relays on a source that may be running, and they should not be hot-switched. Include a
delay after using any of these commands to allow the relays to settle, then turn on the current
or voltage from the source. Also note that the source requires local_kelvin to be stable in
forcev mode, so whenever you command the output connect relays to go off, make sure you
program local_kelvin first, with a suitable (0.5mS) delay. After commanding the output connect
relays on, and waiting a delay for them to close, you can command remote_kelvin if you need
full force and sense connections to your DUT.
Administrative Commands
To place an MPDCMOD channel into a known safe state, issue the reset command.
MPDS[i]->reset();
Example:
MPDS[2]->reset();
//sets local kelvin, opens
//F & S relays, sets irange
//to 3, current clamp to 10ma
//voltage clamps -35V, +35V,
//fast loop comp, force 0.0V
//acquire rate to 15000, and
//sets meter to measure v,
Earlier versions of the system software supported an inhibit/enable function, but that support has been
deleted because of unintended (and possibly damaging) side effects from the source feedback loop being
disconnected.
For a slower loop settling time, in case of high load capacitance that might encourage oscillation, use the
loopcomp command. Slew rate is dependent on the voltage range in use, and should be characterized by
the test engineer if it's critical, but generally, fast is about 1mS slew rate for a normal voltage delta, and 7-
10mS for slow.
Example:
The hardware implementation of this is shown on the block diagram in Figure 7.3. The DUT Ground Sense
is clamped to one diode drop from Analog Ground, and the relay shorts the two together. Thus you can see
that a short on one instrument will affect all instruments via their common father card connections.
Typically, this command is only required in calibration and diagnostic programs where a father card is not
guaranteed to be present. For best forcing and measurement accuracy, the test engineer should be
managing their own DUT Ground Sense connections properly.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 207
KVD Company Confidential
Example:
MPDS[i]->remote_groundsense();
MPDS[i]->local_groundsense();
Measure
Each DUT source can measure the voltage or current present at its I/O pins using the Source VM.
You first have to set up the converter to be connected in voltage mode or current mode, choose an acquire
rate (between 200 and 66000 samples/sec.) or accept the default rate of 15000, then issue the measvm
command, with a number of samples (1 to 4096) to average. For a single-site test program, the result is
placed in the variable SITE->lastresult.value. This is automatically the variable that the
KVD->Test;; command checks against the upper and lower limits for the test. If you are running a multi-site
program, then the result is placed in the SITE->results array for your later use if you wish to separate
the site results.
MPDS[i]->vmeter();
MPDS[i]->imeter();
MPDS[i]->acquire_rate(rate);
MPDS[i]->measvm(numsamples);
Example:
MPDS[1]->vmeter();
or
MPDS[1]->imeter();
then
MPDS[1]->acquire_rate(15000);
then
MPDS[1]->measvm(200);
Note: There is a single A/D converter for measuring source voltage, and another for measuring source
current. Each one is switched among the eight channels by its own mux. Therefore, you must
remember to make a measurement and process the result after you choose a channel, and before
you configure the SVM to measure the next channel.
Warning! Due to software implementation, the calibration factors for any range are latched into the
measurement routine at the time the vmeter or imeter command is executed, not when the
meavm is executed. Therefore it is very important to not change the V or I range AFTER
issuing the vmeter or imeter statement.
Source0->setvr(0.0,3);
Source1->setvr(0.0,3);
Source0->setvr(0.0,3);
Source1->setvr(0.0,3);
Source0->setvr(0.0,3);
Source1->setvr(0.0,3);
One MP source on each instrument can be connected to a test head motherboard bus called the ABus,
which also goes across to each of the instruments in the digital subsystem. Any digital channel can
connect to the ABus by way of a pin-level command, and then you can connect MPDS[0] to the bus or
disconnect it from the bus
MPDS[i]->backplane_con(unsigned condiscon)
Example:
MPDS[0]->backplane_con(con); //connects
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 209
KVD Company Confidential
MPDS[0]->backplane_con(discon); //disconnects
Previous KVD software included the following functions for the same purpose, but they are not as self-
documenting for anyone just examining the test program source. Please do not use these deprecated
functions in new programs:
MPDS[0]->aux_relay(8,8); //connects
MPDS[0]->aux_relay(0,8); //disconnects
This is useful for continuity or parametric measurements on digital pins, although the DIGMOD instruments
also have built-in PMUs for the same purpose. You can also use the ABus as a cross-connect to short out
multiple digital pins and also to an MP source - do this with extreme care.
DDBusA
5 0
0-
OD
OD CM
IGM n] D
P [0]
D [ M DS
CH P
DD M
MPDS[i]start_measvm(numsamples, delay)
MPDS[i]read_measvm(numsamples)
MPUVM objects already had this function, but it has been extended to the MP channels. The standard
measvm command waits until the measurement completes before returning a result and moving on. If you
initiate a measurement with start_measvm, control comes back right away so you can perform parallel
measurements (on different MPDCMOD instruments - remember there is only one ADC per instrument), or
do other operations such as burst a pattern for IDDQ measurements. When you wish to read back the
calculated results, just issue the read_measvm command.
Example:
MPDS[2]->start_measvm(256, 10e-3);
MPDS[2]->read_measvm(256);
Note: The resulting measurements are available in variables owned by the object: result, result_rms,
result_min, result_max.
There is a ranging lockout feature on the MP and HP instruments, such that when you are in a particular
force mode (voltage or current) you can not change the range of that mode; you can however change the
range of the mode opposite of that being forced; thus the following:
Additionally the acquire rate register applies to ALL sources and the UVM, but can be modified by ANY
source or the UVM.
Source0->setvr(0.0,3);
Source1->setvr(0.0,3);
Source0->setvr(0.0,3);
Source1->setvr(0.0,3);
Note: Both the vrange and the irange commands post a warning message to the KVD Status memo
whenever the situation occurs that a vrange change is attempted while in FORCEV mode, or an
irange change is attempted in a FORCEI mode.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 211
KVD Company Confidential
MP Readback Functions
MPDS[i]->actual_sample_rate
double actual_sample_rate;
MPDS[i]->Exists
unsigned Exists;
Description:
Boolean that returns true if the source channel exists in the TCT (Tester Configuration Tool).
MPDS[i]->mpdsirange
unsigned mpdsirange;
Description:
MPDS[i] >mpdsloopcomp
unsigned mpdsloopcomp;
Description:
MPDS[i] >mpdsmode
dsfmode mpdsmode;
Description:
MPDS[i] >mpdsval
double mpdsval;
Description:
MPDS[i] >mpdsvrange
unsigned mpdsvrange;
Description:
MPDS[i] >ResourceSide
unsigned ResourceSide;
MPDS[i] >ResourceSlot
unsigned ResourceSlot;
MPDS[i] >result
RESULT result;
Description:
MPDS[i] >vmmode
vmconmode vmmode;
Description:
MPDS[i] >get_board_local_groundsense
bool get_board_local_groundsense();
MPDS[i] >getname
AnsiString getname();
Description:
MPDS[i] >read_temperature
Reads one sample from the ds1722 temperature sensor; returns value in degrees Centigrade.
double read_temperature(void);
Returns:
0 - success
Description:
Value returned is from the single temperature sensor on the respective MPDCMOD circuit board (only one
sensor per board). The sensor is located centrally on the circuit board.
Threshold searching
SiteClass and MPDSClass have functions for threshold searching. Pending examples.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 213
KVD Company Confidential
Increments the current set voltage by increment on all sites that are active per SITE->IsActive and the
ActiveThisTest control flag. This will stay on the same range and will execute faster than a setv or setvr.
Does a faster version of measvm (not setting the vmeter/imeter and other things).
If a site is above (or below) the threshold it sets the ActiveThisTest variable false, shutting it down for the
rest of the test. Will return true when all the sites are disabled for the test, meaning reached the threshold
or were not active in the first place.
Returns the current set voltage for each source. Also moves this to
SITE->results[site].value;
Each floating User Voltmeter (UVM) can measure voltage only, on multiple ranges, that appear on
separate pins brought out to the Hypertronics connector, or various points internal to the instrument.
The gain stages are programmed in ranges as follows, with predefined constants available for ease of
reading the code later, and modification in the debugger.
0 ± 10 V uvmvr_10v
1 ±5V uvmvr_5v
2 ± 2.5 V uvmvr_2p5v
3 ± 1.25 V uvmvr_1p25v
4 ± 625 mV uvmvr_625mv
5 ± 312 mV uvmvr_312mv
6 ± 156 mV uvmvr_156mv
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 215
KVD Company Confidential
Connections can be made either single-ended (with a pre-defined name "se"), or differentially ("diff"). If you
choose single-ended, you can program a constant offset for the low side comparison, or allow it to be the
default 0.0 V by not entering an optional value in the uvmeter statement.
The low side connections can be chosen from a list as follows, if you are using a differential scheme:
The internal connections to the sense lines are not a calibrated or normalized/scaled path unless you
perform a focused cal yourself, so this is a non-standard use of the instrument. By far the most common
use is the Father Card Hypertronics connections.
MPUVM Objects
There is one UVM per MPDCMOD instrument board (typically four per test head maximum), so the index
number on the object such as MPUVM[0] refers to the instrument, not one of the MPDS sources. The
MPDS class defines MPUVMs as one of two types:
• TMPUVM
• TSiteMPUVM
You are free to declare your own name for this resource, as many test engineers do in a file named
connections.cpp, such as declaring:
TMPUVM *VOUT;
void UserConnections() {
VOUT = MPUVM[0];
VOUT->setname("VOUT");
}
The setname command (also documented in “Changing the Resource Names Shown in the RTI” on
page 100) is designed to allow the RTI to display your designated name instead of the system resource
name for ease of debugging.
MP UVM Measure
The User Voltmeters are defined as to the MP Instrument they are located on. Thus there are up to five
UVMs in a test head, numbered MPUVM[0] through MPUVM[4].
You must set up the UVM input connections, and program the measurement mode (single-ended or a
differential) and range, choose an acquire rate if you desire something different from the default 15000
samples/sec. (between 200 and 66000 samples/sec.), then issue the measvm command, with a number of
samples (1 to 4096) to average. For a single-site test program, the result is placed in the variable
SITE->lastresult.value.
This is automatically the variable that the KVD->Test(); command checks against the upper and lower
limits for the test. If you are running a multi-site program, then the result is placed in the SITE->results
array for your later use.
There is a single uvmeter command that also allows the reference (offset) voltage of the UVM to be
programmed as the [optional] third argument. If omitted, the offset is set to 0.0V.
If differential mode is active, for improved accuracy, the third argument may be set to the expected
common-mode voltage level of the UVM. The first argument is the mode (0 or diff for differential, 1 or se for
single-ended), and the second argument is the measurement voltage range index or the associated
variable name from the chart above.
Examples:
MPUVM[0]->uvmeter(0,4);
is equivalent to
MPUVM[0]->uvmeter(diff,uvmvr_625mv);
MPUVM[0]->uvmeter(diff,uvmvr_312mv,+7.5);
If you just wish to change the range of the MPUVM and not the mode or offset, use the vrange function
with the argument taken from the Vrange chart given above.
MPUVM[i]->vrange(range);
Example:
MPUVM[1]->vrange(1);
It determines the common-mode voltage of the UVM's inputs, then calls uvmeter() using the Vcm just
determined. The search algorithm requires that the differential voltage between the UVM's inputs be less
than the voltage supported by the specified Vrange (specified via the only input parameter to the
cmmeter() function). After determination of the actual common-mode voltage of the inputs a uvmeter()
function is automatically called specifying differential mode, the same Vrange as specified in the presently
active cmmeter() function call, and the common-mode voltage just determined.
The purpose of this command is to allow a semi-automated way to compensate for a common-mode
accuracy factor included in the specifications of the instrument. By measuring the common mode factor
first, the accuracy of the gain amplifiers can be enhanced by this predictive algorithm. For the utmost
accuracy, a focused calibration done by the test engineer with your exact DUT board hardware and relay
connection paths is always recommended.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 217
KVD Company Confidential
Example:
MPUVM[0]->cmmeter(uvmvr_625mv);
The series of detailed commands for accomplishing UVM functions are given here:
Example:
First issue the reset command if you are not certain what state the UVM is when you are starting to use it.
The reset state is the 10V measurement range, differential, User inputs.
MPUVM[0]->reset(0);
MPUVM[0]->uvmeter(se,<range>,[optional offset]);
OR
Then if you need to, select which of the high inputs are to be used. In almost all cases, this will be the
"user" input, which is the Hypertronics connection to the Father Card.
MPUVM[0]->uvmhi_is_user();
OR
MPUVM[0]->uvmhi_is_source(4);
OR
MPUVM[0]->uvmhi_is_ds0f();
Then if you are using differential mode, select the low side input:
MPUVM[0]->uvmlo_is_user();
OR
MPUVM[0]->uvmlo_is_source(4);
OR
MPUVM[0]->uvmlo_is_ds1f();
MPUVM[0]->acquire_rate(15000);
MPUVM[0]->measvm(200);
Readback Functions
MPUVM[i] >getname
AnsiString getname(void);
Description:
Semi-parallel Measurements
Starts UVM measuring <nummeas> samples after <delay>. Can start multiple UVM boards sampling in
parallel. Read back can be started on the first board as soon as all the other boards are started. The first
board is read back at the sample rate speed. The other boards are read back at data bus rates.
Example:
MPUVM[n]->start_measvm(num, delay);
MPUVM[n]->read_measvm(num);
Note: The resulting measurements are available in variables owned by the object: result, result_rms,
result_min, result_max.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 219
KVD Company Confidential
Pinouts
Features
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 221
KVD Company Confidential
Block Diagram
QUVM Specifications
User Voltmeter
Configuration Modes
External Trigger An external trigger maybe provided to allow for sampling to be linked
to an external trigger event.
High Common-Mode +36/-16 Volt inputs with 6 user selectable differential voltage ranges.
Low Common-Mode ±10 Volt inputs with 6 user selectable differential voltage ranges that
achieve noise performance superior to that of the High Common-
Mode inputs. A gain of 10 is also available for these inputs.
AC Performance
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 223
KVD Company Confidential
0 ± 10 V 0.005%
1 ±5V 0.005%
2 ± 2.5 V 0.005%
3 ± 1.25 V 0.005%
4 ± 625 mV 0.006%
5 ± 312 mV 0.008%
Voltage References
Reference Outputs
± 10 V 0.005%
±5V 0.005%
± 2.5 V 0.005%
Note 1: Voltage Compliance dependent user selected output voltages of KVD Company’s “PowerPlus”
Power Supply; See “PowerPlus” Power Supply Specification for possible voltage choices; User
inputs are limited to:
Minimum:(NHVF + 4volts)
Maximum:(PHVF – 4volts)
Note 3: Instrument accuracies must be added to the accuracies of the KVD System Calibration Meter to
calculate total system accuracies.
Note 4: Instrument accuracies must be added to the accuracies of the KVD System Calibration Meter to
calculate total system accuracies. Instrument accuracies were obtained by averaging over one 60
Hz power line cycle.
QUVM Functions
TQUVMMeasClass* QUADS;
QUADS = QUVMMCreate("QUADS", 0, 1, 2, 3);
TQUVMRefClass* RAMPS;
RAMPS = QUVMRCreate("RAMPS", 0, 1, 2, 3);
Earlier Code
The following is deprecated code, but supported for backwards compatibility. This category also includes
other functions using objects of the form QUVM[0].
Example
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 225
KVD Company Confidential
QMEAS[0-15]
Functions
short TQUVMMeasClass::con()
Connect differentially to output.
short TQUVMMeasClass::discon()
Disconnect differentially from output.
unsigned TQUVMMeasClass::plottime()
Calculation Functions
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 227
KVD Company Confidential
double TQUVMMeasClass::rms()
Return RMS value of last measvm.
double TQUVMMeasClass::minval()
Returns minimum value of last measvm.
double TQUVMMeasClass::maxval()
Returns maximum value of last measvm.
void QUVMMeasClassExists(void)
Example
QMEAS[i]->Exists
AnsiString TQUVMMeasClass::getname()
short TQUVMMeasClass::get_range()
double TQUVMMeasClass::get_ranged()
unsigned TQUVMMeasClass::get_nummeas()
bool TQUVMMeasClass::pinactive(void)
double TQUVMMeasClass::samplerate()
Returns sample rate.
QREF[0-15]
define QVREFR_10V 2
#define QVREFR_5V 1
#define QVREFR_2P5V0
Functions:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 229
KVD Company Confidential
short TQUVMRefClass::con()
Connect
short TQUVMRefClass::discon()
Disconnect
short TQUVMRefClass::ramp_exec(void)
void QUVMRefClassExists(void)
Example
QREF[i]->Exists
AnsiString TQUVMRefClass::getname()
double TQUVMRefClass::get_ramp_stepsize(void)
double TQUVMRefClass::get_ramp_rate(void)
double TQUVMRefClass::get_ramp_llimit(void)
double TQUVMRefClass::get_ramp_ulimit(void)
double TQUVMRefClass::get_setv_value()
double TQUVMRefClass::get_range()
unsigned TQUVMRefClass::get_kelvin()
short TQUVMRefClass::get_is_con()
short TQUVMRefClass::get_is_calbus_con()
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 231
KVD Company Confidential
HPDCMOD Pictorial
Functional Description
The HPDC Module (HPDCMOD) contains two independent DC Sources. Each DC source is an
independently programmable, four quadrant, Kelvin, DC voltage and current source which can be
connected to the device directly or through relay networks on the Father Card. The sources offer four
voltage ranges of ± 40V, ± 20V, ± 10 V, and ± 5 V, and four current ranges: 5A, 50mA, 500uA, and 5uA.
Currents on the 5A range are power limited. The force and sense line of each source connect to the Father
Card through a Hypertronics connector. Each DUT Source has a voltmeter/ammeter that is dedicated to
making voltage and current measurements. This meter is a 16 bit sampling voltmeter with variable
clocking, differential input, as well as input gain and offset. Because this voltmeter is designed to measure
the state of each of the DC sources, it has no connections to the Father Card. This is commonly known as
the SVM, for Source Voltmeter. Sources are numbered beginning at 0 (zero) not 1 (one), which is similar to
DD Channel resources.
The HPDCMOD has user programmable clamp registers for positive voltage, negative voltage, and source
and sink current. All registers are independently programmable. Future releases will include status
registers, board level temperature information, pulse mode operation, and user programmable power
dissipation monitoring.
To reduce unwanted power dissipation in the HPDCMOD instrument, a version is offered with 12 Volt
maximum output. This also requires support in the Tester Configuration Tool, where the instrument is
called HPDCMODLV.
Physical Description
The HPDC Module is composed of a D/A converter which feeds a high power operational amplifier. This
power op amp has two possible feedback loops. The first feedback path is used when the source is forcing
voltage and connects the op-amp's output to its own negative input. This feedback path senses the output
voltage and holds it constant. The output of the power amplifier is referred to as the force line and the
voltage feedback path is called the sense (or Kelvin) line. The force and sense lines can be connected
directly at the DC Module output connector or can be wired independently and tied together close to the
device to eliminate the effects of path resistance.
The second op amp feedback path is used to force (source or sink) current. This path uses a differential
amplifier to sense the voltage drop across a resistor in series with the power op amp output. Due to the
nature of this sense connection, the feedback path does not require any type of remote connection to
ensure accuracy. Current ranges are defined by a resistor network on the output of the power op amp.
Voltage clamps are independently user-programmable and current limiting is also user programmable. DC
Module control logic, including address decoding and serial data return bus generation, are contained
within a single on-board FPGA. The HPDC Module FPGA must be booted with a special firmware data file
each time the test head is turned on.
HPDCMOD Objects
The HPDS class defines HPDCMOD source objects as one of three types:
• THPDS - used for individual control
• TGroupHPDS - used to control a group of sources with one defined name
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 233
KVD Company Confidential
Force Voltage
Once the Kelvin connection has been selected, the source can be used to force a voltage up to its
maximum output specification, subject to the programmed voltage clamp.
HPDS[i]->setv(value)
Note: Amplifier limitations reduce the maximum forced voltage to somewhat less than the DC supplies in
your particular configuration. The Laser Trim configuration uses ± 30V supplies, so the HP will
operate between ± 26V only, even on the 40 V software range. In the M2m configuration (PW+),
with +40V, -20V DC supplies, you will obtain a maximum voltage capability of +36V to -16V.
Example:
HPDS[1]->setv(5.50);
The argument [1] is the DUT Source within the test head (1 of 12, but they are numbered [0] through [11]).
You are free to declare your own name for this resource, as many test engineers do in a file named
connections.cpp, such as declaring:
THPDS *VDD;
void UserConnections() {
VDD = HPDS[1];
VDD->setname("VDD");
}
The setname command is designed to allow the RTI to display your designated name instead of the
system resource name for ease of debugging.
Force Current
The HPDCMOD may be set to force any current up to 5A, subject to the programmed current clamp, and to
specified power and energy limits (Instantaneous Watts and cumulative Watt-seconds). Always make sure
the clamps are programmed to be "out of the way" of the forced value, which means slightly higher, outside
the guardband of the specifications. Current versions of the hardware are however limited to 1 Amp
steady-state.
HPDS[i]->seti(value)
Example:
HPDS[1]->seti(0.850);
Voltage Ranges
You can set the voltage range explicitly if you wish using the range index, or its alternate variable name, in
the setvr and vrange commands. Setvr sets both the value and the range in one command, while vrange
affects only the desired range. These are examples of valid statements only; please also see “MPDCMOD
and HPDCMOD Ranging Lockout” on page 211 for an important discussion of the order in which you are
required to perform certain ranging functions.
HPDS[i]->setvr(value, range)
HPDS[i]->vrange(range)
0 ± 40V hpvr_40v
1 ± 20V hpvr_20v
2 ± 10V hpvr_10v
3 ± 5V hpvr_5v
Example:
HPDS[1]->setvr(4.50,3);
HPDS[1]->setvr(4.50,hpvr_5v);
HPDS[1]->vrange(3);
HPDS[1]->vrange(hpvr_5v);
Current Ranges
Four ranges are available: 5A, 50mA, 500uA, and 5uA. The current range setting is handled automatically
when forcing current using the seti command, however, when using setv to force a voltage it may be
desirable to change the current range.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 235
KVD Company Confidential
HPDS[i]->setir(value, range)
HPDS[i]->irange(range).
0 5A hpir_5a
1 50mA hpir_50ma
2 500uA hpir_500ua
3 5uA hpir_5ua
Example:
HPDS[1]->setir(0.275,0);
HPDS[1]->setir(0.275,hpir_5a);
HPDS[1]->irange(1);
HPDS[1]->irange(hpir_50ma);
Warning! The test engineer MUST take extreme care to avoid hot-switching any range relays. For
enhanced execution speed, KVD software drivers do not enforce supply disabling or
discharging, or include built-in delays, trusting the test engineer to know when they are safe
from the risk of hot-switching. Enlightened use of delays is REQUIRED to avoid the possibility
of instrument or DUT damage.
KVD instrument drivers include make-before-break current range changing. Using a break-before-make
algorithm, the driver could be slightly faster, but at the risk of opening the current feedback loop during a
range change event. This could cause a transient spike if the range was being changed while hot. Since
KVD cannot control whether or not hot switching is occurring, this transient could be a cause of DUT state
abnormalities or reduced instrument reliability.
By closing the relay for the new range 200uS before the previous range relay is opened, the open-loop
transients should be eliminated.
Note: Due to hardware implementation, the 5A range resistor is always connected to the output force
connection when this highest current range (range 0) is selected. If you need to disconnect the
instrument totally from the father card, you will need to select current ranges 1, 2, or 3 (not 0).
For each source, the voltage and current clamps are programmable. Current clamps are symmetrical (one
programmed value is used for both positive and negative current clamps) while the voltage clamps require
the user to program two values.
HPDS[i]->iclamp(value);
Example:
HPDS[1]->vclamp(-4.0,12.0);
HPDS[1]->iclamp(0.50); // value in Amps
Note: Clamps in the KVD sources are not used for programming precision levels of current or voltage.
They are meant for protecting against uncontrolled transients (current spikes into a short or
voltage spikes into an open). Note also the accuracy specs of the clamps, which makes the lowest
reasonable current clamp to be 20mA. Any time your clamps are set too closely (within the spec
guardband) to the programmed seti or setv values, you run the risk of having the clamps activate
and prevent your level from being achieved.
Kelvin Connections
Each source has separate Force and Sense relays, and a separate relay to short them out locally in case
the user does not wish to being both lines separately to the DUT.
Example:
Administrative Commands
To place an HPDCMOD channel into a known safe state, issue the reset command.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 237
KVD Company Confidential
HPDS[i]->reset()
Example:
HPDS[1]->reset();
//sets local kelvin, opens
//f & s relays, sets irange
//to 3,current clamp to 250ma
//voltage clamps -35, +35,
//fast loop comp, force 0.0V
//acquire rate to 15000, and
//sets meter to measure v,
For a slower loop settling time, in case of high load capacitance that might encourage oscillation, use the
loopcomp command.
HPDS[i]->loopcomp(fast-slow)
Example:
To use Ground Sense (the defined Zero Voltage Reference for the "ground" side of the source and A/D
converters) from the Father Card (which should be connected at the proper place on the DUT), you want to
use the remote_groundsense command. For using a local analog ground instead, use local_groundsense.
Issuing either command for either channel on a board will act upon both channels of that board, and affect
all channels in the system.
The hardware implementation of this is shown on the block diagram in Figure 7.10. The DUT Ground
Sense is clamped to one diode drop from Analog Ground, and the relay shorts the two together. Thus you
can see that a short on one instrument will affect all instruments via their common father card connections.
Typically, this command is only required in calibration and diagnostic programs where a father card is not
guaranteed to be present. For best forcing and measurement accuracy, the test engineer should be
managing their own DUT Ground Sense connections properly.
HPDS[i]->remote_groundsense();
HPDS[i]->local_groundsense();
Example:
HPDS[1]->remote_groundsense();
HPDS[1]->local_groundsense();
Measure
Each DUT source can measure the voltage or current present at its I/O pins using the Source VM. The
HPDCMOD does not contain a User Voltmeter.
You first have to set up the converter to be connected in voltage mode or current mode, choose an acquire
rate (between 7000 and 35000 samples/sec.), then issue the measvm command, with a number of
samples (1 to 4096) to average. (More than 4096 samples may be coded, but the number will be reduced
to 4096. For a single-site test program, the result is placed in the variable SITE->lastresult.value.
This is automatically the variable that the KVD->Test(); command checks against the upper and lower
limits for the test. If you are running a multi-site program, then the result is placed in the SITE->results
array for your later use.
HPDS[i]->vmeter();
HPDS[i]->imeter();
HPDS[i]->acquire_rate(rate);
HPDS[i]->measvm(numsamples);
Example:
HPDS[1]->vmeter();
or
HPDS[1]->imeter();
then
HPDS[1]->acquire_rate(15000);
then
HPDS[1]->measvm(200);
Note: Due to software implementation, the calibration factors for any range are latched into the
measurement routine at the time the vmeter or imeter command is executed, not when the meavm
is executed. Therefore it is very important to not change the V or I range AFTER issuing the
vmeter or imeter statement.
Readback Functions
HPDS[i]->actual_sample_rate
double actual_sample_rate;
HPDS[i]->Exists
unsigned Exists;
Description:
Boolean that returns true if the source channel exists in the TCT (Tester Configuration Tool).
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 239
KVD Company Confidential
HPDS[i]->hpdsirange
unsigned hpdsirange;
Description:
HPDS[i] >hpdsloopcomp
unsigned hpdsloopcomp;
Description:
HPDS[i] >hpdsmode
dsfmode hpdsmode;
Description:
HPDS[i] >hpdsval
double hpdsval;
Description:
HPDS[i] >hpdsvrange
unsigned hpdsvrange;
Description:
HPDS[i] >getname
AnsiString getname();
Description:
Pinouts
Meter Classes
Some father cards contain a connector to route signals to the external precision meter, where you can
measure them using code from the TKeithleyMeter2000, TKeithleyMeter2002, or THP3458A classes.
There is also a generic TMeterClass if you wish to write code for a generic precision meter on your system.
Contact KVD applications engineers for assistance and code examples for this sort of use.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 241
KVD Company Confidential
The Relay Switching Matrix (RMX) provides the user with programmable relays located on a small (single
DIN size) module.
Features
The matrix consist of 64 relays and is designed in an array of eight lines, each with six pins. Each line has
a disconnect relay to isolate it from the father card, and there are eight line-to-line shorting relays to
connect lines in banks if desired.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 243
KVD Company Confidential
There are 4 Relay matrix objects, RMX0 through RMX3.with an enumerated list of connection types. In
each board, the first group is Line Input relays, the second group is Line to Pin relays, and the last group
is Line to Line Shorting relays.
RMX0 Connections
M0,M1,M2,M3,M4,M5,M6,M7
M0M1,M1M2,M2M3,M3M4,M4M5,M5M6,M6M7,M7M0
RMX1 Connections
M8, M9, M10, M11, M12, M13, M14, M15
M8M9,M9M10,M10M11,M11M12,M12M13,M13M14,M14M15,M15M8
RMX2 Connections
M16, M17, M18, M19, M20, M21, M22, M23
M16M17,M17M18,M18M19,M19M20,M20M21,M21M22,M22M23,M23M16
RMX3 Connections
M24, M25, M26, M27, M28, M29, M30, M31
M24M25,M25M26,M26M27,M27M38,M28M29,M29M30,M30M31,M32M24
Note: Even though the schematics use the term MxPy, we also allow use of previous syntax of the form
LxPy, but this is more confusing for tracing signals through the father cards. Please convert old
syntax to new if you encounter it in legacy programs.
RMX Commands
There are two commands that can be used to make or break connections. Set, and Clear. Set makes the
connection, Clear opens the connection. You can pass in to each command up to 8 connections from the
above enumerated list.
Example:
Example:
RMX0->Set(L2p0, l2p3);
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 245
KVD Company Confidential
Example:
To open an entire BANK of relays (all pins associated with a line, and the line relay)
Example:
RMX0->resetline(<linenumber>);
Example:
RMX0->resetall();
Up to 256 named RMX (Relay Matrix) connections can now defined, increased from 48, and the number of
relays that each connection can contain is now 16, increased from 8.
RMX0 >Clear
Clears (opens) up to 8 relays on a matrix board.
Parameters:
Returns:
Always returns 0.
Description:
This routine is the only available routine in the matrix class that the user can call to open relays on any
pins, lines, or line to line relays on a matrix board. The user can open between one and eight relays with
one call.
RMX0 >CreateNamedConnection
Creates a relationship between a string and a series of connections.
Parameters:
char* initname
A character string that will be used with the NSet and NClear commands.
Returns:
-2 = no connections sent in
0 = success
Description:
The user can associate a name with a series of RMX connections so that the code is more readable. By
creating a named connection, the user can call the NSet or NClear commands by passing in the more
readable string.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 247
KVD Company Confidential
RMX0 >GetLineStatus
Returns the state of the line relay on the bank of relays.
Parameters:
unsigned banknum
Returns:
true - the line relay is closed. false - the line relay is open.
RMX0 >GetLineToLineStatus
Returns the state of the line to line relays.
Parameters:
unsigned banknum
The first line number of the line to line relay. 0 - line 0 to line 1 relay. 1 - line 1 to line 2 relay. 2 - line 2 to line
3 relay. 3 - line 3 to line 4 relay. 4 - line 4 to line 5 relay. 5 - line 5 to line 6 relay. 6 - line 6 to line 7 relay. 7 -
line 7 to line 0 relay.
Returns:
RMX0 >GetPinStatus
Returns the state of one pin on a chosen bank (line) on the matrix board.
Parameters:
unsigned banknum
unsigned pinnum
Returns:
RMX0 >NClear
Clears (opens) up to 8 relays on a matrix board, referenced by name
Parameters:
char* conname
The name used in the SetNamedConnection function (case sensitive) Return Value.
Returns:
RMX0 >NSet
Sets (closes) up to 8 relays on a matrix board, referenced by name
Parameters:
char* conname
The name used in the SetNamedConnection function (case sensitive) Return Value:
Returns:
RMX0 >resetall
Opens all relays on the matrix board.
short resetall();
RMX0 >resetline
Opens all the relays on one line, including the line relay.
Parameters:
unsigned line
RMX0 >ResetNamedList
Resets and clears ALL previously created named lists.
short ResetNamedList();
RMX0 >Set
Sets (closes) up to 8 relays on a matrix board.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 249
KVD Company Confidential
Parameters:
Returns:
always returns 0.
Description:
This routine is the only available routine in the matrix class that the user can use to close relays on any
pins, lines, or line to line relays on a matrix board. The user can close between one and eight relays with
one call.
TRelay Constructor
Used to create new relays.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 251
KVD Company Confidential
Command: $RELAY$->close();
Objects: $RELAY$
Description: an object
Command: $RELAY$->open();
Objects: $RELAY$
Description: an object
Data type: TRelay pointer
Arguments: None
TConnection Constructor
Used to create new Connections.
Description: an object
Arguments: <Relays>
Description: This can be either a list of previously defined relays (see TRelay) or a list of
address bit pairs. (see example).
Effect: Creates a new TConnection object.
Command: $CONNECTION$->con();
Objects: $CONNECTION$
Description: an object
Data type: TConnection
Arguments: None
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 253
KVD Company Confidential
Relay closure time may take up to one millisecond. During this interval it is recommended not to force
voltages or currents, as this may cause source oscillation and/or shorten relay lifetime.
Command: $CONNECTION$->discon();
Objects: $CONNECTION$
Description: an object
Data type: TConnection
Arguments: None
Effect: Disconnect a path by opening all relays in the list
Prototype: short discon(void);
Example: DS1_TO_DUTPIN2->discon();
Alternative Forms: discon_side( <side>) Open all the relays in the list, on one side only.
Thing to Remember: This command only has effect on active sites.
Relay opening time may take up to one millisecond. It is recommended that no current flow through the
relays at the time discon() is issued and during the relay open time, as this may cause source oscillation
and/or shorten relay lifetime.
Example: FC->reset();
Commands are:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 255
KVD Company Confidential
8. Digital Instruments
This section provides detailed information about the Digital Subsystem in the KVD test system. Included in
the discussion are functional and hardware descriptions, block diagrams, programming examples, and
command definitions. The DIGMOD family includes DIGMOD16 and DIGMOD32 instruments. Previous
KVD test systems included instruments called DSPIO, with lower pin count and data rates.
Topics Covered:
• Instrument Block Diagram and Description
• Overview of Digital Test Concepts
• Patterns
• Clocking
• Channel commands
• Sequencer commands
Important Features
The two restrictions described here are inherent in the KVD architecture. They are mentioned here to
serve as a reminder that awareness of them may speed up development of new test programs.
Due to logic pipelining, you cannot JMP backwards fewer than three vectors. Thus the following pattern (in
DMP format) is appropriate to use:
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 185
KVD Company Confidential
DIGMOD[0]->ddrv_setup(2, 16);
The argument drv_length can never be set to less than 16. Even if the user needs to only send one
address during a pattern run, the length must be set to at least 16. This also means that it is not possible to
loop through a memory block of fewer than 16 locations. If you accidentally enter a variable that is less
than 16 at run time, the KVD software will automatically round it up.
DIGMOD16/32
Description
The DIGMOD16 module includes 16 high speed digital bi-directional channels, while the DIGMOD32
supports 32 channels per instrument. The KVD test head can be populated with as many as 6 DIGMOD
boards, for a total of 96 or 192 high speed pins. A custom power supply and enhanced test head air
cooling are required to support the DIGMOD option, compared to a system with the DSPIO configuration.
Compared to the DSPIO instrument, the DIGMOD architecture offers much higher speed, larger memory
per pin, increased numbers of time and format sets (16), built-in PMU and programmable loads per pin, a
built-in frequency measurement feature, and a window (not level) comparator. Added features include
same cycle drive/compare, vernier timing control with 50pS resolution, a "no change" drive/compare
command, and combine mode.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 187
KVD Company Confidential
Drive/Compare
PMU
Pattern Formatting
• Board-to-board timing skew is in the process of being improved when in the Master->Slave
configuration. Expected board to board edge placement accuracy will be 1nS. Please contact KVD if
board-to-board timing is a critical requirement for applications advice.
• Serial Send memory setup command ddrv_setup operates on a MINIMUM vector sequence of 16
addresses, and will cause an error if this minimum is not observed.
Block Diagram
FPGA
KVD High Speed LVDS Data Bus
High Speed
Data Bus
Management ABus connection to
MPDCMOD/Cal Meter
Local Power
Regulation
To
DUT
FPGA
Sequencer
Data Formatter
Memory
Management
times 16/32
KVD Instrument Data Bus
Pin Electronics
Driver
Comparators
Delay Lines
PMU
References
Memory Clocks
16 MB per pin pattern Master Clock
Relay Drivers
16MB per pin send/ PLL
capture Memory Clocks
The DIGMOD is implemented with two-channel-per-package pin electronics ICs, a 2 million gate FPGA,
multiple on-board voltage regulators and clock distribution circuits. The FPGA-based architecture allows
for simple file transfer updates of the logic configuration definition, to allow customization and feature
updates without removing instruments from the test head or performing hardware change orders.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 189
KVD Company Confidential
VH To ABUS
MUX
VL
Data
To DUT
Enable (Fathercard)
VTT
CVB
CVA
Comp B F/S
PMU
V-MU
To ADC
Comp A
CVB-
PPMU
PLL_CK
(100MHz)
CVA-
V_Ref PPMU
R_Ext
Pin Electronics
Driver
Comparators
Delay Lines
PMU
Burst DMA readback modes are being implemented for certain functions where speed is of great impact to
test time. These include readback from Capture/Send Memory, Fail information readback, ADC data
readback.
For HSL (High Speed Link) support, the argument to the initialization function has additional meaning.
ModuleInitDigmod(N);
In the interests of simplicity in the earlier sections, certain information will be concealed until the time is
right. If you are an experienced digital test engineer, please don't get impatient, just skip ahead. In later
sections you will find the information you need on how to make the KVD do what you need it to do.
Pattern Driving
At the core of any digital subsystem is the ability to generate digital high and low voltages, and stimulate
the DUT input pins. Each DIGMOD instrument has 16 or 32 output channel drivers to accomplish this.
Supporting each channel is a 16M deep section of what is called pattern (or vector) memory.
When the test program is initialized, this memory needs to be pre-loaded with the desired data (ones and
zeros) [the method of doing this is explained later]. When you are testing each device, upon command, this
data is sent to the pin drivers that force your desired high and low voltage levels onto the DUT pins.
Data is sent at a rate called the T0 (Tee-Zero) rate, which is also called your pattern (or data rate). In the
simplest view, your data moves from pattern memory one address each T0 time period, and the address
increments up by one each time. The data goes from memory to the pin drivers, and then to the DUT pins.
In the following diagram, pattern memory is on the left, 16M words long, and 16 bits wide. (one bit for each
of the 16 pin drivers). A DIGMOD32 instrument has double the resources of this diagram. DIGMOD
instruments can be ganged together for wider, but we will limit our discussion to one instrument at a time
for now.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 191
KVD Company Confidential
Memory address 0 is on the right of its box, and is the first data sent to the pin drivers at the first T0 time
period. If we look at the data being sent, with Channel 0 on the left, and Channel 15 on the right, the first
word being sent would be this:
0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0
1
Pattern Memory Address
6
M 5 4 3 2 1 0
Drivers
0 0 0 1 1 1 0 0 DMCH0
1 1 0 1 0 1 0 1 DMCH1
0 1 1 1 1 1 1 1 DMCH2
0 0 0 0 1 0 0 0 DMCH3
1 1 1 1 1 1 1 1 DMCH4
0 0 0 0 1 0 0 0 DMCH5
1 1 1 1 1 1 1 1 DMCH6
0 0 0 0 0 1 0 0 DMCH7
1 1 1 1 1 1 1 1 DMCH8
1 1 1 1 1 1 1 1 DMCH9
1 1 1 1 1 1 1 1 DMCH10
0 0 0 0 0 0 0 0 DMCH11
1 0 0 0 1 0 0 0 DMCH12
1 0 0 0 1 0 0 0 DMCH13
0 0 0 0 0 0 0 0 DMCH14
0 0 0 0 0 0 0 0 DMCH15
T0
Drive Data
Looking at the data being stored in the first six addresses, the pattern file would look like this. The memory
address (the first column) is not part of the file itself as it's written.
000000 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0
000001 0 0 1 0 1 0 1 0 1 1 1 0 0 0 0 0
000002 1 1 1 0 1 0 1 1 1 1 1 0 0 0 0 0
000003 1 0 1 1 1 1 1 0 1 1 1 0 1 1 0 0
000004 1 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0
000005 0 0 1 0 1 0 1 0 1 1 1 0 0 0 0 0
Looking at the right side of the diagram, the pin drivers accept this data, and drive the DUT pin high or low
for each one or zero that they get from pattern memory. Each T0 represents a new piece of data, or test
vector. A scope or logic analyzer view of the pin driver output waveform is shown to the far right.
1
Pattern Memory Address
6
M 5 4 3 2 1 0
Drivers
0 1 1 1 0 0 DMCH0
0 1 0 1 0 1 DMCH1
1 1 1 1 1 1 DMCH2
0 0 1 0 0 0 DMCH3
1 1 1 1 1 1 DMCH4
0 0 1 0 0 0 DMCH5
1 1 1 1 1 1 DMCH6
0 0 0 1 0 0 DMCH7
000000 0 1 1 0 1 0 1 0
000001 0 0 1 0 1 0 1 0
000002 1 1 1 0 1 0 1 1
000003 1 0 1 1 1 1 1 0
000004 1 1 1 0 1 0 1 0
000005 0 0 1 0 1 0 1 0
Vector File
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 193
KVD Company Confidential
Besides 1 and 0, you can disable the driver and allow the output to float by using code X (don't care) or M
(mask).
Pattern Comparing
Each digital channel is also connected to a programmable level comparator, if the DUT is driving the pin
instead of the DSPIO instrument. We can receive this data and compare it to data in pattern memory, to
see if it is a match to what we expect the DUT to send us. Instead of zeros and ones, we program code H
for an expected high, and L for an expected low, into pattern memory.
L L L H H H L L DMCH0
H H L H L H L H DMCH1
L H H H H H H H DMCH2
L L L L H L L L DMCH3
H H H H H H H H DMCH4
L L L L H L L L DMCH5
H H H H H H H H DMCH6
L L L L L H L L DMCH7
H H H H H H H H DMCH8
H H H H H H H H DMCH9
H H H H H H H H DMCH10
L L L L L L L L DMCH11
H L L L H L L L DMCH12
H L L L H L L L DMCH13
L L L L L L L L DMCH14
L L L L L L L L DMCH15
In this diagram, the comparators for all 16 channels are having their data compared to memory.
For each T0 time period, the input voltage level is compared to a programmed level at a specified strobe
time (covered later). If it is high, and the pattern memory contains an H, then the data is a match, and it is
not a fail. If it is low, and the pattern memory is expecting an L, then it also is not a fail. If any channel is a
mismatch, and does not equal the expected data, then the fail flag is set. The fail flag is set for any
mismatch in any of the vectors executed, and can be interrogated later for use in a test statement. If the
channel state does not matter, you can enter code X (don't care) or M (mask) and it will be ignored at the
fail register.
The comparator is actually a window (two level) comparator, and if the signal is between H and L it is
called mid-band, and wil match a Z character in the compare memory.
In most test programs, you will have a mixture of inputs and outputs, and the pattern file will have a
combination of 1, 0, H, L, X, and M codes.
Up to 512 vector addresses and the channel that causes the fail to occur are also saved in the Fail
Address Register, in case you wish to know for debugging or to datalog them
The first line of the vector file that this figure represents is given here:
L H H L H L H L H H H L L L L L
For flexibility, the pattern memory we have been discussing is augmented by another memory called the
Serial Send/Capture memory. The normal pattern memory sends data in parallel to the pin drivers and
comparators, but many devices require serial I/O. It can be tedious to write the patterns and wasteful of
pattern memory to use it for serial I/O pins.
This second bank of memory is also 16M words in size per pin, and the data being sent to the DUT is first
sent to a 16-bit (32-bit for DIGMOD32) shift register. Ignoring the normal pattern memory for now, this is a
discussion of the Send memory being used to source data to the DUT.
The Send memory is loaded with data, usually predefined as a C array of data, not the typical vector file
discussed earlier. It is often easier to create this kind of data with an algorithm than write it out in full in text
format.
The data to be sent is loaded a word at a time into the shift register. The command to do this is written into
the pattern vector file at a particular address: SLOAD. Precisely how to do this is covered later.
Once the data word is in the shift register, it can be sent to the pin drivers beginning at the next T0 period.
Typically, one channel is used to send the serial data, and the drivers of the adjacent channels are not
used. Once a bit is sent to the driver during one T0 period, the command SSHIFTL is sent, and the shift
register moves data from LSB to MSB, and the next bit is available during the next T0 period. This can be
repeated 8 or 16 times as necessary to shift out all the desired data in the shift register.
Besides shifting left one position, SSHIFTL, there are commands to shift two positions, SSHIFTL2, and for
shifting right, SSHIFTR and SSHIFTR2.
The pattern memory needs to have the code W entered to use the shift register as the source of driver data
instead of the normal pattern memory 1 or 0. This can be changed on the fly, on a vector-by-vector basis.
You need to make sure the shift register contains the desired data by using the SLOAD command first,
then on the next or a subsequent vector, code W will send this data to the pin driver. The code W was
chosen to designate Write data.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 195
KVD Company Confidential
Eight bits of data are highlighted in the diagram. One entire 16-bit word is loaded into the shift register on
one vector, then sent one bit at a time via one or more drivers, in this case we will examine eight bits being
sent out channel 15, and the serial data being sent is:
0 0 0 0 0 1 1 1
Again, shifting left is always done in the LSB to MSB direction. This can be used for sending serial bus
commands such as for the I2C bus, ramp data for testing DACs, or any testing purpose.
Send
Send/Capture
1 Shift
6 MemoryAddress
M 5 4 3 2 1 0 Register Pin Drivers
LSB
0 0 0 1 1 1 0 0 0 DMCH0 X
1 1 0 1 0 1 0 1 1 DMCH1 X
0 1 1 1 1 1 1 1 1 DMCH2 X
0 0 0 0 1 0 0 0 0 DMCH3 X
1 1 1 1 1 1 1 1 1 DMCH4 X
0 0 0 0 1 0 0 0 0 DMCH5 X
1 1 1 1 1 1 1 1 1 DMCH6 X
0 0 0 0 0 1 0 0 0 DMCH7 W
1 1 1 1 1 1 1 1 1 DMCH8 X
1 1 1 1 1 1 1 1 1 DMCH9 X
1 1 1 1 1 1 1 1 1 DMCH10 X
0 0 0 0 0 0 0 0 0 DMCH11 X
1 0 0 0 1 0 0 0 0 DMCH12 X
1 0 0 0 1 0 0 0 0 DMCH13 X
0 0 0 0 0 0 0 0 0 DMCH14 X
MSB
0 0 0 0 0 0 0 0 0 DMCH15 W
T0
SLOAD
Send Data SSHIFTL Pattern Memory Word
Capture Memory
In an analogous way to the use of Send memory data going to the pin drivers, the DIGMOD instrument can
also capture (detect) serial data streams and place them into the same memory. The destination memory
region needs to be set up so as to not conflict with send data regions, and that memory management is
discussed later.
In the next diagram, data coming from the device is sent to the comparators (it uses the High level
comparator, not the Low for each channel), and the use of the code V in a pattern memory vector is the
signal to send incoming data to the capture shift register instead of using it for a fail comparison. This
capture shift register is separate from the send shift register, although it operates in the same direction,
from LSB to MSB.
The data to be captured goes from the comparators to the shift register. The pattern file then issues the
command to shift the acquired data if desired:CSHIFTL. Once the data has shifted towards the MSB in the
shift register, the next bit can be captured in the next T0 period. Typically, one channel is used to capture
the serial data, and the comparators of the adjacent channels are not used.
Besides shifting left one position, CSHIFTL, there are commands to shift two positions, CSHIFTL2, and for
shifting right, CSHIFTR and CSHIFTR2.
Once a series of bits is captured and arranged as desired in the capture shift register, the command
CSTORE is sent from the pattern vector file, and the word moves into the destination address of the
capture memory. Each CSTORE command moves another word into memory, at a subsequent address.
The pattern memory needs to have the code V entered to use the shift register as the destination for
comparator data instead of the normal pattern memory H or L. This can be changed on the fly, on a vector-
by-vector basis. The code V was chosen to designate Valid data.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 197
KVD Company Confidential
Capture
1
Send/Capture Memory Shift
6 Address Register
M 12 11 10 9 8 7 Pin Comparators
LSB
0 0 0 1 1 1 0 0 0 DMCH0 V
1 1 0 1 0 1 0 1 1 DMCH1 M
0 1 1 1 1 1 1 1 1 DMCH2 M
0 0 0 0 1 0 0 0 0 DMCH3 M
1 1 1 1 1 1 1 1 1 DMCH4 M
0 0 0 0 1 0 0 0 0 DMCH5 M
1 1 1 1 1 1 1 1 1 DMCH6 M
0 0 0 0 0 1 0 0 0 DMCH7 M
1 1 1 1 1 1 1 1 1 DMCH8 V
1 1 1 1 1 1 1 1 1 DMCH9 M
1 1 1 1 1 1 1 1 1 DMCH10 M
0 0 0 0 0 0 0 0 0 DMCH11 M
1 0 0 0 1 0 0 0 0 DMCH12 M
1 0 0 0 1 0 0 0 0 DMCH13 M
0 0 0 0 0 0 0 0 0 DMCH14 M
MSB
0 0 0 0 0 0 0 0 0 DMCH15 M
T0
CSTORE
Capture Data CSHIFTL Pattern Memory Word
All four of the previous concepts are present concurrently in the DIGMOD instrument, arranged as in the
following diagram. 16M of pattern memory per pin is loaded with parallel data and control commands, and
16M of serial send/capture memory per pin is also ready to be used on a vector-by-vector basis.
You can see that the Memory MUX control comes from pattern memory, as well as the control for SHIFT,
LOAD, and STORE. Pattern memory is significantly wider than 16 bits due to these extra features.
1 0 0 0 1 0 0 0 Shift/ DMCH1
1 0 0 0 1 0 0 0 Store DMCH2
DMCH5
Capture
DMCH6
Shift
Send/Capture Memory
LSB
Register MMM DMCH7
0 0 0 1 1 1 0 0 0 0 UUU DMCH8
1 1 0 1 0 1 0 1 1 1 XXX DMCH9
DMCH10
0 1 1 1 1 1 1 1 1 1
0 DMCH11
0 0 0 0 1 0 0 0 0
W DMCH12
1 1 1 1 1 1 1 1 1 1
(From Send Shift
0 0 0 0 1 0 0 0 0 0 Register) DMCH13
DMCH14
1 1 1 1 1 1 1 1 1 1
0 DMCH15
0 0 0 0 0 1 0 0 0
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 V
(to Capture
1 1 1 1 1 1 1 1 1 1 Shift
0 0 0 0 0 0 0 0 0 0 Register)
1 0 0 0 1 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
MSB
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 199
KVD Company Confidential
So far, we have assumed that vectors are issued from pattern memory one at a time, one per T0 time
period, in sequential order starting at address zero. If this was strictly true, the instrument would not be as
useful as one where the test engineer can control the start address, and exercise more control over the
order (or sequence) that the vectors are issued.
So there is a microcoded memory address sequencer, with its own language, called opcodes, for this
purpose. Further details of this language are explained in the section on “Pattern Syntax” on page 207, but
here is a short summary.
When testing devices, patterns are executed, or burst, beginning at start addresses noted by symbols
which are embedded in the pattern source code. Digital patterns are written in a text-based form, but these
are not usable by the DIGMOD hardware as is. Test systems traditionally include what's called a pattern
compiler to convert pattern source code (easy-to-read) format into a hex or binary format usable by the
instrument. The examples given so far in this chapter have all been in source code format. The pattern
editor/compiler is detailed in a later section, but suffice it to say here that the source code files are the ones
generated by human typing.
Our original drive data sample pattern looked something like this:
000000 0 1 1
000001 0 0 1
000002 1 1 1
000003 1 0 1
000004 1 1 1
000005 0 0 1
The truth is that a full source code pattern has more possible fields, and the first column (the memory
address) is not part of the source code file.
These additional fields exercise the sequencer control and memory control commands. The Symbol field
is a way to indicate where a pattern should begin its execution. When you load patterns into memory, you
may have a collection of many short useful series of vectors. You almost never wish to execute them all at
once, but instead specify where to begin a series of vectors. The memory address could be specified for
each pattern fragment that needs to be executed, but using symbols is an easier-to-read technique.
Opcodes are the programming language that tell the sequencer to chose another address other than the
next one in order. You can repeat vectors, saving valuable pattern memory space. You can have
conditional opcodes, that only operate if some condition is true. And some op codes take arguments,
which are usually the place to go to if the op code involves a jump.
Patterns are compiled using the compiler/editor tool, and saved to the hard drive. They are listed in a
structure called the PATLIST, loaded into the instrument pattern memory at the beginning of the test
program, and executed, or burst, when needed by the patexe command.
Clocking
All of this discussion so far has assumed that the DIGMOD instrument is executing vectors at some data
rate called the T0 rate. To accomplish this, the instrument must first be programmed with a Master Clock,
which is always running at some multiple of the T0 rate.Each of the 16 timesets may have a different T0
rate, which is derived by dividing the masterclock by an integer, not less than 2 and not greater than 2047.
The normal condition if you have multiple DIGMOD instruments is that the lower number instrument
(DIGMOD0) is the Master, and others are Slaves, meaning that the Master Clock of DIGMOD0
synchronizes all instruments. This can be changed if necessary, especially for multisite, since each
instrument can act independently of the others.
So far, we have also ignored the driver and comparator programming, but there are commands for each
channel (pin) available. Each pin can have a different high and low drive voltage, and hi and low
comparator thresholds.
Another deferred issue is one of the Data Formats. Before now, we have assumed that when the pattern
memory contains a 1, we will command the driver to go high, and a 0 will mean a drive low. As you know,
not all data formats are defined this way, and some go low for a 1, and high for a 0, as well as patterns that
are defined (such as RZ - Return to Zero) by their action before and after their valid time.
Also, one essential feature of a test system is to be able to place start and stop edges within a T0 time
period. The actual rising or falling edge of a driver may not occur at the exact beginning of the T0 cycle, but
there is often a START delay before the initial edge, and a STOP delay to define the trailing edge. The
comparator strobe is also located somewhere inside the T0 cycle, and can be programmed.In the KVD
architecture, you can both drive and compate within the same T0 period.
Therefore, there is a section of circuitry located between the memory data and the driver/comparator (pin
electronics) that handles the data formatting and timing edge placement. The actual data formats are
explained later, with examples of placing the edges. Basically, you can program a different data format for
each pin if you require, and place a timing edge anywhere.
Patterns
Patterns define the driver and comparator data, and control the Sequencer function. Each vector has an
independent OpCode field with the following options supported:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 201
KVD Company Confidential
4. 2 independent User Flags which can repeat a vector until set from the test program.
5. Match Mode.
6. Serial or Parallel Drive/Capture Data Capability.
7. Time Set and Format Set Switching on the fly.
Pending - more complete explanation: The DM Pattern Editor is a stand alone vector translation tool that
will translate an ASCII pattern file to a .bp file that can be loaded into the pattern memory. By default this
utility will be saved in the "Programming Tools" directory as "KVD Pattern Editor and Compiler", which can
be launched from the Windows Start menu.
Input
This tool can be used to translate a single vector file or many at a time.
Output
All files that are translated will generate an output file. This file will retain the base filename of the input file
and will also have a .bp extension. (example: testfile.xx translates to testfile.bp). The translation process
is non destructive to the input file.
Rules
The format of the input file must adhere to several rules. Below is a list of the basic rules.
1. The first vector must contain a label. All lines prior to the first vector are tested for other information but
can contain no drive/compare information.
2. Comments are allowed, however no comment may contain a ':' character.
3. Channel lists are defined before the first test vector. The order in which the channels are defined will
determine the order that they should appear in the ASCII test vector. The complete channel list can be
comprised of groups of channels. Each channel in a group is delimited by a tab, space, or comma.
Channel numbers are limited to 0-63. A group of channels is preceded by the syntax .chmap as well as
a single field description of the pins.
4. Timesets can be defined prior to the first vector. There can be a maximum of 2 timesets defined. The
order that the timeset labels appear in the input file will determine their designation throughout the
pattern. The first timeset label defined will be designated as timeset "0" in the .bp file. If timesets are
not defined, the default timeset 0 will be used. A timeset is preceded by the syntax .tset.
5. Labels can be lower and upper case alpha-numeric combinations, however a label must start with an
alpha character.
6. The flag field must be delimited by simple parentheses. A '(' indicates the start of a flag field and a ')'
indicates the end of a flag field. No whitespace is allowed inside the field.
Vector Information
Each input vector must contain drive, compare, or mask information for all channels defined in the header.
The format of this drive/compare information should be such that each channel group that is defined in the
header should have its own vector channel segment, delimited from the following and preceding segment
by a space or tab.
Example:
then the input vector should contain 7 vector characters split into 2 groups, like this:
101 HLHL
000 LLLL
111 MMHL
Note that the .chmap designator is separated from the channel list by some descriptive name for the list.
1,0,h,l,m,x,H,L,M,X,v,V,w,W.
The upper and lower case 'x' and 'm' characters can be used to represent a high impedance state for the
driver, with no data comparison ("don't care"). The 'v' and 'w' characters are used for driving or capturing
data in the send/receive memory. Send/Receive is described later in this document.
Example:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 203
KVD Company Confidential
101 00101001
101 Dx29
or
101 dx29
If the input vector contains a label representation, the label must be terminated with a colon character ':'.
The label must be the first character field of the input vector. Labels must start with an alpha (upper or
lower case) and can contain alpha-numeric characters.
Vmax:
Foo42:
XyZZY:
42Foo:
Start
Opcode Info:
The input vector may contain an opcode. This opcode should be represented by lower case. Most opcodes
can be conditionally executed, depending on flag conditions. Some opcodes are standalone, while others
require an operand.
Stand-Alone Opcodes:
halt
wait
return (can also be represented by "rtn")
jmp
jmpr
repeat (can also be represented by "rpt" or "rep")
loadcnt (can also be represented by "lcnt")
call
callr
along
rlong
flags
control
note
Sequencer OpCodes
Note: In each of these cases the opcode should be followed by an operand (if called for) that represents
a label, an absolute address (in decimal) or a step index forward or backward from the current
vector. The relative addressing opcodes (jmpr and callr) must be followed by a relative operand,
not a label.
Opcodes are executed AFTER the vector data is used (driven or compared).
Flags
The condition of several flags can be used to determine pattern execution. The most common flags are the
User Flags (U1 and U2) and the Loop Counter Flag (L). All flags can be tested for being set or not-set.
(Place a "!" in front of the flag to test it for being not-set.) (Pending: Is this still true?)
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 205
KVD Company Confidential
The normal status of User Flags is not-set, and if set true by the external dflags command, the next time
they are evaluated in the pattern, they are automatically reset to false.
Example:
operation result
wait (U1) wait on this vector until User Flag U1 is set
jmp (!L) .-5 jump back 5 vectors if loop counter flag is not set
(counter!=0)
Note: Each time the loop counter flag is tested, the loop counter is decremented by one.
In addition to the most commonly used pattern state characters (0,1,H,L,X,Z,V,W), the system allows for
pattern state characters that will allow for driving and comparing on the same DIGMOD channel, on the
same pattern cycle. The following table gives a complete list of the accepted state characters.
J Drive data comes from Send SR Compare for Low level (L)
Note: It is now possible to drive and compare in the same pattern cycle and use the Send/Capture shift
registers and memory. The enable start and stop times should be used accordingly.
Pattern Syntax
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 207
KVD Company Confidential
Timeset Info
Each input vector may contain timeset information in the TS column. If the input vector contains no
timeset, the previous vector’s timeset is used for this vector. If no timesets are provided in the pattern
vectors, timeset 0 will be loaded for all vectors. The actual edge placement information for the timeset is
defined outside the pattern, by the dfmt command.
Example:
Note: Formats and timesets may be switched on the fly (i.e.: from vector to vector) UNLESS you are
switching to or from NRZ format. This is due to a limitation of the hardware implementation of the
NRZ format. Pending: is this still true? Any restrictions?
If you wish to change the timeset of multiple vectors, you may wish to use an editor with column mode
capability such as UltraEdit. To do so, export the pattern file to .DMP format, then open it with UltraEdit.
The timeset field is denoted TSET:
Fail Disabling
It is possible to disable the fail flag and fail register on a vector-by-vector basis. This will allow for the
execution of a vector without changing the fail flag or fail register, regardless of data. The Fail Disable (FD)
bit is automatically set on vectors where a match condition is qualified. The FD bit can also be set on an
arbitrary vector basis. To set the FD bit, the syntax "F=off" should follow the timeset information (or the
data where no timeset is given). See the later example for details.
Serial/Parallel Send/Receive
Note there is also a send/receive capability. If this feature is used, the appropriate extended microcode
should be included after a timeset (or after a fail disable statement if applicable) but before a comment.
For the most part, common conventions were followed for the send/receive syntax. Channels that will
receive data from the device are represented by a 'v' or a 'V' character. Channels that will send data to a
device are represented by a 'w' or a 'W' character. The control operation of the send and receive shift
registers are represented as follows:
Note that there are some constraints on using the send and receive memory. Since the drive (send) and
capture (receive) shift registers share the same bus, it is not possible to 'load' and 'store' on the same
vector cycle. All other combinations are valid.
It is best to visualize the shift register operation as occurring at the end of the T0 cycle. Also, do not
perform a capture on the last two vectors of a pattern, but pad with at least two dummy vectors.
Channel Default
Normal operation of this translator will only operate on the channels that are defined in the header portion
of the file. All undefined channels will be set in a high impedance mode when the pattern is run. There
could possibly be a case where it is desirable to set all the undefined channels to either a high or low drive
condition. The following syntax, when added to the header, will accomplish this.
.chdefault HIGH
.chdefault LOW
Note that it is also possible, although not necessary, to define the .chdefault as HIZ or MASK.
The user should be advised that although this feature is present, it should be used with extreme caution.
Use this feature sparingly when there are no alternatives ( example: a pattern exists that uses 15 channels
but all the undefined channels need to be set to drive low and there are 30K vectors to modify).
Improper consideration when using this feature could result in damaged devices or DSPIO drivers and is
not normally a reasonable way to treat your ATE system.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 209
KVD Company Confidential
Pattern Example
;
;****************************************
;
;DEFINE GROUPS
;--------------------
.chmap INDATA = {7,6,5,4,3,2,1,0}
.chmap OUTDATA = {23,22,21,20,19,18,17,16}
.chmap TRIG = {8}
.tset t0
.chdefault HIZ
;****************************************
;
;
;
; IN OUT
; M M
; S S
; B B
;----------------------------------------
TEST_PATTERN: 00000000 XXXXXXXX 0
00000000 XXXXXXXX 1
00000000 LLLLLLLL 1
00000001 LLLLLLLH 1
00000010 LLLLLLHL 1
00000011 LLLLLLHH 1
00000100 LLLLLHLL 1
00000100 LLLLLHLH 1 F=off ; comment
rpt 10 00000000 XXXXXXXX 0
HALT 00000000 XXXXXXXX 0
;----------------------------------------
CAPTURE_DATA: 00000000 XXXXXXXX 0
lcnt 256 00000000 XXXXXXXX 0
WWWWWWWW XXXXXXXX 1 W=LOAD ;
jmp (!L) .-1 WWWWWWWW VVVVVVVV 1 A=STORE ;
WWWWWWWW XXXXXXXX 0
HALT WWWWWWWW XXXXXXXX 0
A symbol table is also generated by the pattern compiler, for ease in starting a pattern burst at a named
label, instead of needing to define the physical memory start address. Use of the symbols is explained
later.
For the sample pattern given above, this is the symbol table:
TEST_PATTERN = 0
CAPTURE_DATA = 10
The DIGMOD and QUADUVM drivers are a separate library that needs to be linked into the test program.
1. 1) In KVDTestAppMainHeader.h (or whatever the main header file for your test programis named)
add the line:
#include "c:\_kvdco\Include\DigmodLib.h"
after the
#include "c:\_kvdco\Include\KVDwin.h"
line.
2. 2) Add the Library to the Project List:
a.View Project
b.Select your .EXE file
c.Add c:\_kvdco\libraries\digmodlib32.lib
3. Add the following line in the beginning of SystemInit()
InitDIGMOD();
4. Add the following line in the beginning of LotInit()
ModuleInitDigmod(1);
• Define PATDATA
• Loading compiled patterns into Pattern memory
• Assigning Pattern Symbols
• Loading Send/Capture Memory if applicable
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 211
KVD Company Confidential
Defining PATDATA
PATDATA is a structure that you use to manage your pattern memory. More than one compiled pattern file
can be loaded into the DSPIO vector RAM, and they need to be enumerated just once in your test
program, typically in SystemInit.
// PATDATA Structure
/*
typedef struct {int id;
char filename[1000];
unsigned bank;
unsigned long address;
long length;
int loadflag;
int haltflag;
int retestpat;
} PATDATA;
PATDATA pat_list[] = {
//ID FILENAME BANK LOADFLAG RETESTPAT
// OFFSET LENGTH HALTFLAG
{0, "Demo1.BP", 0, 0UL, 100UL, 1, 2, -1},
{1, "Demo2.BP", 0, 200UL, 50UL, 1, 2, -1},
{-1, "NOPATT", 0, 0UL, 0UL, 0, 2, -1}
};
The lines beginning with // are comments, to aid remembering in what order the arguments appear. You
will find a template for this in your typical blank program, in UserClass.cpp.
The ID number should be an integer starting at 0, and increment by one for every entry. If you wish to load
multiple compiled patterns into your pattern RAM, you will need to manage the start addresses and lengths
to make sure they don't overlap each other in your bank of memory.
The line that begins with an ID of -1 is a dummy entry, defining the end of the list. Always just copy this at
the end of your own list without modification.
The filename is the name of the valid .bp file you wish to use. They are assumed to reside in the local test
program folder unless you change the PATDIR variable, or explicitly name the folder in the patload
command.
The BANK field is currently not used, and is ignored. Please leave it as 0.
LENGTH represents your entry of the size of the pattern file in vectors. pat_load fills in the actual number
of vectors stored.
LOADFLAG needs to be a 1 for pat_load to load the pattern (useful only for skipping large patterns while
debugging).
HALTFLAG, RETESTPAT are legacy flags, left over from a previous KVD digital implementation, retained
for backwards compatibility. They can be safely ignored.
At one time, usually in an initialization section of the program such as LotInit, you need to load the pattern
memory of the DSPIO instrument with your compiled pattern. Do not do this within Tseq, since that
function is executed once per device, and loading the patterns repetitively would be a waste of time.
PATLIST Technique
//Summary:Loads the pattern data listed in the pat_list into the pattern
// and the LoadPatlist commands. Those commands create the MAP file, then load it. This command
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 213
KVD Company Confidential
//
Example:
DIG0->patload(pat_list,"c:\\your_test_program\\");
You should normally add a delay after this of a few hundred milliseconds to allow the command to
complete before continuing along in your program.
Set Object Variable DIG0->peekmode = 0 to have the patload command not verify pattern loads to speed
pattern loads.
This is a picture of what your pattern RAM would contain after you loaded the pat_list defined by the
previous example:
Data Formats
Main Formats
• NRZ - Non-Return to Zero (Between the start and stop edge, the data is high or low, and it stays where
it was after the stop edge.)
• RZ - Return to Zero (Data always goes or stays low after the stop edge)
• RZC - Return to Zero Complement (The inverse of RZ)
• RO - Return to One (Data always goes or stays high after the stop edge.)
• ROC - Return to One Complement (The inverse of RO)
• CS - Complement Surround (No matter what the data is, high or low, during its valid time between start
and stop, it goes to the opposite level. Guaranteed to have at least two transitions per T0.)
• CSC - Complement Surround Complement (inverse of CS)
T0 - T Zero - the typical name for the Data Rate of a Digital Subsystem. Every T0 tick means another
vector has been executed from pattern or send/receive RAM.
Each T0 contains one vector's worth of formatted data. The data is defined in the pattern. The levels are
defined in the dlevel command and edge placement is defined in the dfmt command.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 215
KVD Company Confidential
Other Formats
• High
• Low
• CLKX2: Master Clock X 2
• CLK: Master Clock
• CLK2: Master Clock/2
• CLK4: Master Clock/4
• CLK8: Master Clock/8
Note that these additional formats are "pattern independent" meaning that a static format will be generated
regardless of the pattern content, but only if one of the following two statements is true:
• Pattern is halted and the channel is enabled
Or
• Pattern is running and a valid drive symbol (0,1) is being sent (in other words, not tri-state)
Start and Stop Timing for the above waveforms are derived from the Master Clock and a per pin fine delay
line. Likewise for the per pin Comparator Edge Strobe.
Pin Definition
Basics
The KVD Operating System defines a DIGMOD pin as type TDMDigPin. There are system defined pins
DMCH[0]->DMCH[191]. It is important to note that DIGMOD16 pins ARE NOT defined contiguously. This
numbering feature will allow for simple program portability between DIGMOD16 based systems and
DIGMOD32 based systems.
While it is possible to construct an entire program using the system defined pin names, most test program
developers will want to assign a pin naming structure that closely mimics the DUT pin names, and will also
want to create groups of pins. The following text contains a brief explanation of pin naming. This will prove
helpful in understanding the DMCH pin programming syntax.
Now the test engineer only has to remember the name 'SCLK' and not the actual DMCH number. The
setname command changes the RTI (Real Time Interface) pin labeling to the more memorable 'SCLK'.
Grouping Pins
Pins can also be 'grouped' together in order to simplify programming. Each group can contain between 1
and 32 DMCH pins. Groups of pins can consist of other groups of pins, so long as the group total does not
exceed 32.
TDMDigPin *data0;
TDMDigPin *data1;
Group definitions also cause changes in the RTI (Real Time Interface) debugging tool display, for
decluttering and ease of issuing commands to the group. This is shown in section 17 of this chapter.
Grouping of Groups
Assuming two groups have been defined as outlined in the previous example, these groups can then be
combined to form a third group:
TDMDigPin *alldata
data0 = DMCHCreate("alldata", data0, data1);
It is important to note that the more detailed command syntax description that follows applies to both single
pins (DMCH) or groups of pins (more than one DMCH), and that a group can consist of a maximum of 32
DMCH pins.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 217
KVD Company Confidential
DMCH[x]->SetSiteMode
Example:
DMCH[0]->SetSiteMode(TRUE, 1);
Arguments:
DMCH[x]->enable
Enables or disables a pin or group of pins. Enabling a pin means that when pattern execution is stopped
the pin continues to drive to the keep alive data. Otherwise it will tri-state (or go to the termination voltage if
termination enabled). When the pattern executes the pin is enabled if the data is set to a drive 0 or 1. At
initialization all pins are disabled.
Example:
DMCH[2]->enable(1);
DMCH[2]->enable();
The above 2 statements are effectively the same and will enable the driver on channel 2.
Arguments:
DMCH[x]->disable
At initialization all pins are disabled.
Example:
DMCH[3]->disable();
DMCH[3]->enable(0);
Note the above 2 statements are effectively the same and will disable the driver on DIGMOD channel 3.
short TDMDigPin::disable(void)
Arguments:
none
DMCH[x]->forcemode
This mode will override the formatter pattern logic and allow the DIGMOD channel to be set to a static logic
condition. This is different from keepalive in that the forced state is a high or low level, where the keepalive
argument is the data presented to the formatter.
Example:
myGroup->forcemode(1);
short TDMDigPin::forcemode(unsigned value)
Arguments:
DMCH[x]->forceenable
This mode will work with the forcemode statement and will enable the driver for static forcing. Assuming
the pin has been set to forcemode, this statement will effectively set the pins in 'myGroup' to a static state
that is determined by the 'force' statement.
Example:
Arguments:
DMCH[x]->force
This mode will work with the forcemode and forceenable statements and will set the state (high or low) of
the pin or group that has previously been set to forcemode.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 219
KVD Company Confidential
Example:
Assuming the pin has been set to forcemode, and the forcemode has been enabled this statement will
effectively set the pins in 'myGroup' to a static state low. The table below shows pin state with forcemode
on.
0 0 hiz
0 1 hiz
1 0 low
1 1 high
Arguments:
DMCH[x]->dlevel
This will set the DIGMOD pin drive and compare levels; both low and high drive levels as well as low and
high compare levels.
Example:
Arguments:
DMCH[x]->cmplevel
This will set the DIGMOD compare levels only. Typically the all levels will be set with the 'dlevel' statement,
however it is sometimes necessary to change only one of the compare levels.
Example:
Arguments:
DMCH[x]->vil
This will set the DIGMOD drive low level only. Typically the all levels will be set with the 'dlevel' statement,
however it is sometimes necessary to change only one level.
Example:
myGroup2->vil(0.4);
short TDMDigPin::vil (double vil)
Arguments:
DMCH[x]->vih
This will set the DIGMOD drive high level only. Typically the all levels will be set with the 'dlevel' statement,
however it is sometimes necessary to change only one level.
Example:
myGroup2->vih(2.8);
short TDMDigPin::vih (double vih)
Arguments:
DMCH[x]->vol
This will set the DIGMOD compare low level only. Typically the all levels will be set with the 'dlevel'
statement, however it is sometimes necessary to change only one level.
Example:
myGroup2->vol(1.0);
short TDMDigPin::vol (double cmplo)
Arguments:
DMCH[x]->voh
This will set the DIGMOD compare high level only. Typically the all levels will be set with the 'dlevel'
statement, however it is sometimes necessary to change only one level.
Example:
myGroup2->voh(1.5);
short TDMDigPin::vol (double cmphi)
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 221
KVD Company Confidential
Arguments:
DMCH[x]->trm
This will set a termination voltage on a DIGMOD channel using the pin driver (not the PMU). This
statement is used with the 'trmenable' statement to allow for termination through 50 Ohm to a specific
voltage.
Example:
myGroup2->trm(1.5);
short TDMDigPin::trm (double value)
Arguments:
DMCH[x]->trmenable
This statement is used to allow for termination through 50 Ohm to a specific voltage as defined by the 'trm'
statement.
Example:
myGroup2->trmenable(1);
Note that the DIGMOD channel will now be terminated thru 50ohm to a voltage defined by the 'trm'
statement. This means the whenever the DIGMOD driver is HIZ (disabled), the pin will go to this
termination level.
Arguments:
DMCH[x]->pmuenable
Each DIGMOD channel has a built in PMU (parametric measurement unit) that will allow for analog force
and measure directly through the 'digital' pin connection. This allows for high speed contact and leakage
measurements on many pins at the same time, static settings that exceed the normal drivel level, and so
forth.
Example:
The PMU may be enabled while the DIGMOD driver is also enabled. Previous documentation that his was
not possible were in error.
Arguments:
DMCH[x]->vclamps
This will set the voltage clamps for a PMU. Note it is vclamps, not vclamp (which is used for DC sources)
Example:
myGroup3->vclamps(-2, 6);
short TDMDigPin::vclamps(double clamplo, double clamphi)
Arguments:
DMCH[x]->setv
This will set the voltage level for an 'enabled' PMU, and set the PMU to force voltage mode
Example:
myGroup3->setv(3.0);
short TDMDigPin::setv(double value)
Arguments:
DMCH[x]->seti
This will set the current level for an 'enabled' PMU, and set the PMU to force current mode.
Example:
myGroup3->seti(10e-6);
short TDMDigPin::seti(double value)
Arguments:
DMCH[x]->irange
Each PMU is limited to 2 voltage ranges, however there are 8 defined current ranges.
Example:
myGroup3->irange(1);
myGroup3->irange(PMU_8MA);
short TDMDigPin::irange(unsigned range)
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 223
KVD Company Confidential
Arguments:
unsigned range // valid current ranges are 0-7 and are also defined //
as follows:
// 0 = PMU_32MA
// 1 = PMU_8MA
// 2 = PMU_2MA
// 3 = PMU_512UA
// 4 = PMU_128UA
// 5 = PMU_32UA
// 6 = PMU_8UA
// 7 = PMU_2UA
DMCH[x]->vrange
Each PMU has 2 voltage ranges.
Example:
myGroup3->vrange(1);
short TDMDigPin::vrange(unsigned range)
Arguments:
unsigned range // valid voltage ranges are 0-1 and are also defined as
follows:
// 0 : -2V->10V
// 1 : -1V->7V
DMCH[x]->imeter
Each PMU can force voltage or current and measure voltage or current. This statement is used to set up
the PMU to measure current.
Example:
myGroup3->imeter();
short TDMDigPin::imeter(void)
Arguments:
none
DMCH[x]->vmeter
Each PMU can force voltage or current and measure voltage or current. This statement is used to set up
the PMU to measure voltage.
Example:
myGroup3->vmeter();
short TDMDigPin::vmeter(void)
Arguments:
none
DMCH[x]->measvm
Each PMU can force voltage or current and measure voltage or current. This statement is used to measure
voltage or current on a PMU channel(s) as previously set by the 'imeter' or 'vmeter' statement.
Example:
The average result of 100 measures on DIGMOD channel 8 PMU is returned by this function. In addition
the result will be saved in SITE->lastresult.value if the pin is NOT in 'SiteMode'. If the pin is in 'SiteMode',
the result will be saved in SITE->results[site].value, where site is the preassigned site for the DIGMOD
channel - in this case DMCH[8].
Arguments:
DMCH[x]->ldenable
In addition to performing typical PMU functions of force and measure, the DIGMOD PMU can also be used
to provide a static resistive load. This is particularly useful if a device pin requires a pullup to some voltage
level. This pullup can be enabled on the DIGMOD pin using the PMU range resistors.
Example:
myPins->ldenable(1);
short TDMDigPin::ldenable(unsigned value)
Arguments:
This is not the same as termination, for termination see 'trmenable' and 'trm'.
DMCH[x]->loaddisable
This will disable the PMU resistive load.
Example:
myPins->loaddisable();
short TDMDigPin::loaddisable(void)
Arguments:
none
This is not the same as termination, for termination see 'trmenable' and 'trm'.
DMCH[x]->load
The load resistor and voltage are programmed with this command.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 225
KVD Company Confidential
Example:
Both of these examples will accomplish the same goal. The 2Kohm load will be set and the voltage load
will be set to 3.4 volts. This will effectively 'pullup' the DIGMOD channels defined in 'myPins' to 3.4 volts
through a 2K Ohm resistor.
Arguments:
unsigned range // valid load values are 0-7 and are also defined as
follows:
// 0 = PMU_80OHM
// 1 = PMU_180OHM
// 2 = PMU_500OHM
// 3 = PMU_2KOHM
// 4 = PMU_8KOHM
// 5 = PMU_32KOHM
// 6 = PMU_128KOHM
// 7 = PMU_500KOHM
DMCH[x]->dig_con
By default all DIGMOD channels are isolated from the Fathercard with a dedicated relay per channel. In
order to connect the driver/comparator or PMU resource to the DUT, this relay connection must be closed.
Example:
myPins5->dig_con();
short TDMDigPin::dig_con(void)
Arguments:
none
DMCH[x]->dig_discon
Likewise, this connection must be opened if isolation is desired.
Example:
myPins5->dig_discon();
short TDMDigPin::dig_discon(void)
Arguments:
none
DMCH[x]->abus_con
In addition to connecting the DIGMOD pin electronics up to the Fathercard, it is also possible to connect an
alternate analog resource for higher voltage and current capability. This resource is typically MPDS[0]. A
relay is provided that will connect a DIGMOD pin to the 'ABUS'. Further effort will be needed to connect
this internal ABUS to the motherboard and then to MPDS[0] if you wish to use MPDS[0] for parametric
measurements. See also the MPDS function backplane_con on page 137.
DDBusA
5 0
0-
OD
OD CM
IGM n] D
P [0]
D [ M DS
CH P
DD M
Example:
myPins5->abus_con();
Caution is urged when using this command as any number of pins can simultaneously be connected to this
bus, effectively shorting DUT pins together.
short TDMDigPin::abus_con(void)
Arguments:
none
DMCH[x]->abus_discon
Opposite of abus_con (opens relay to ABUS)
Example:
myPins5->abus_discon();
short TDMDigPin::abus_discon(void)
Arguments:
none
DMCH[x]->l1abus_con
Once a connection is made between the on board ABUS and a pin or group of pins, this bus will need to be
connected to the motherboard so it can connect to MPDS[0] via a connection called Line1 (or l1) on the
motherboard schematic.See also the MPDS function backplane_con on page 137.
Example:
DMCH[5]->l1abus_con();
short TDMDigPin::l1abus_con(void)
Arguments:
none
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 227
KVD Company Confidential
DMCH[x]->l1abus_discon
Disconnects the connection made by the l1abus_con command.
Example:
DMCH[5]->l1abus_con();
short TDMDigPin::l1abus_con(void)
Arguments:
none
DMCH[x]->dtiming
There are many parameters involved in setting up timing for a DIGMOD channel. This is the master
command that will allows setting all timing for a single timeset. It is also possible to set each parameter
individually.
Example:
digbus->dtiming( 2,
RZ,
10e-9,
50e-9,
0e-9,
80e-9,
60e-9,
70e-9,
0);
Arguments:
DMCH[x]->dtimingT0
Alternate Timing Setup Command: dtimingT0
0 = Time 0
0.1 = 10% of T0 rate
1 = 100% of T0 rate
Example:
DMCH[x]->dtiming_combine
Special variant of dtiming, which puts the pin into combine mode where the data from the next higher
channel is combined with the data from the existing channel to provide double the data rate of the
sequencer. This mode is only supported when the T0 Divider is set to 2. The data from the programmed
channel is used for the first MCLK cycle and the data from the adjacent channel is used for the second
cycle. Note that the adjacent channel can still be used in a static mode by using forcemode.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 229
KVD Company Confidential
DMCH[x]->dfmt
The 'dfmt' command is similar to the 'dtiming' command except that only the drive edges are set.
Example:
digbus->dfmt(2,
RZ,
10e-9,
50e-9,
0);
short TDMDigPin::dfmt(unsigned tset,
FORMAT format,
double start,
double stop,
unsigned dka)
Arguments:
DMCH[x]->dcmp
The 'dcmp' command can be used to set the enable and comparator timing edges for the defined timeset.
No drive edges are set.
Example:
Arguments:
DMCH[x]->dcomp
The 'dcomp' command is similar to 'dcmp' except only the compare start edge is programmed. It is
assumed that the compare window will be open for 2 master clock cycles (MCLK - see PLL setting). It is
also assumed that the driver will be enabled at 0nS.
Example:
digbus->dcomp( 3, 40e-9);
short TDMDigPin::dcomp(unsigned _tset,
double _start)
Arguments:
DMCH[x]->tset
If it is necessary to program individual timing for a specific timeset, this command will simply set a variable
that will define the timeset for subsequent timing commands that do not pass a 'timeset' argument.
Example:
DMCH[5]->tset(2);
short TDMDigPin::tset(double value)
Arguments:
DMCH[x]->fmt , DMCH[x]->format
This will set the drive format for the current timeset defined by the 'tset' command.
Example:
DMCH[5]->fmt(RZC);
DMCH[5]->format(RZC);
short TDMDigPin::fmt(FORMAT value)
Arguments:
DMCH[x]->start
This will set the drive start edge for the current timeset defined by the 'tset' command.
Example:
allpins->start(20e-9);
short TDMDigPin::start(double value)
Arguments:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 231
KVD Company Confidential
DMCH[x]->stop
This will set the drive stop edge for the current timeset defined by the 'tset' command.
Example:
allpins->stop(40e-9);
short TDMDigPin::stop(double value)
Arguments:
DMCH[x]->enastart
This will set the driver enable start edge for the current timeset defined by the 'tset' command.
Example:
allpins->enastart(0e-9);
short TDMDigPin::enastart(double value)
Arguments:
DMCH[x]->enastop
This will set the driver enable stop edge for the current timeset defined by the 'tset' command.
Example:
allpins->enastop(60e-9);
short TDMDigPin::enastop(double value)
Arguments:
DMCH[x]->cmpstart
This will set the comparator start edge for the current timeset defined by the 'tset' command.
Example:
allpins->cmpstart(70e-9);
short TDMDigPin::cmpstart(double value)
Arguments:
DMCH[x]->cmpstop
This will set the comparator stop edge for the current timeset defined by the 'tset' command.
Example:
allpins->cmpstop(80e-9);
short TDMDigPin::cmpstop(double value)
Arguments:
DMCH[x]->keepalive
This will set the keepalive data for the current timeset defined by the 'tset' command.
Example:
Arguments:
Whether the driver drives high or low is a combination of the keepalive data and the pin's format. Note that
in KVD architecture, Keepalive mode is always active when a pattern is not bursting. This command does
NOT control whether or not Keepalive mode is active.
DMCH[x]->dka
This will set the keepalive data for the current timeset defined by the 'tset' command. It will also 'enable/
disable' the driver if desired.
Example:
allpins->dka(1,1);
short TDMDigPin::dka(unsigned value, unsigned _enable)
Arguments:
DMCH[x]->tmucon
Each DIGMOD board has a mux that can connect the high or low comparator buffered output to the
backplane to the KVD TMU Module, via the DDTMUA or DDTMUB bus. The last connected channel stays
on the TMU bus until replaced by another channel. There is no additional DUT loading caused by this
connection, so there is currently no disconnect function.
Example:
XCLK->tmucon(DDTMUA, 1);
short TDMDigPin::tmucon(TMUCHAN tchan, unsigned hilo)
Arguments:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 233
KVD Company Confidential
Be extremely careful to not apply this command to pin groups so you do not short channels out.
DMCH[x]->measfreq
Each DIGMOD board has a built in TMU (time measurement unit) that allows for accurate measurements
of digital frequency. This is a useful feature for the measurement/adjustment of DUT built-in oscillator
circuits. The 'measfreq' command will return the measured frequency. Results will be placed in the proper
SITE->results[site].value array location for each site if the pins are setup in SiteMode. Otherwise the
results will be placed in SITE->lastresult.value. This is for convenience for the datalogging KVD->Test()
command.
Example:
XCLK->measfreq(DDTMUA, 1, 32, 10e-3);
double TDMDigPin::measfreq(TMUCHAN tchan,
unsigned hilo,
unsigned cycles,
double timeout)
Arguments:
DMCH[x]->start_measfreq
Each DIGMOD has a built in TMU on it, so to start parallel frequency measurements on pins that are on
separate DIGMOD boards the start_measfreq is used to start the measurement. A subsequent measfreq
command will readback the measurements from each of the boards.
Example:
Arguments:
short pmucompv(double lo, double hi); // Set PMU comparator levels for
comparing voltage
short pmucompi(double lo, double hi); // Set PMU comparator levels for
comparing current
The pmucompv and pmucompi statements setup "limits" for the voltage and current on the PMU. The PMU
comparators are routed to the functional comparators allowing either a pattern to verify status or for it to be
done via a snap() function.
These comparators are not calibrated or very accurate (10-20%) and to be used for a quick snap of
continuity or leakage. For example if your leakage specs are ±1uA then programming ±800nA on the 2uA
range would give you sufficient coverage on whether you are above or below the threshold. If you fail the
rough comparator test then the pins should individually be tested. The accuracy could somewhat be
improved with calibration, but in current mode the full scale voltage range to the comparators is only ±1V.
This could be effected by noise and resolution. Note that the snap() function for a group returns two bits
per group entry with the MSBs being the first entry in the mask.
unsigned contstatus;
ALLPINS->dig_con();
ALLPINS->setv(0);
ALLPINS->pmucompv(-0.8, -0.15);
ALLPINS->vclamps(-3,4);
ALLPINS->irange(3);
ALLPINS->vrange(0); // Needed to set lower V limit to below -1
ALLPINS->pmuenable(1);
SYS->del(3.0e-3);
// xtime1 = SYS->read_counter();
LOG->tnum(testnum+0);
DATA->seti(-100e-6);
SITE->lastresult.value = contstatus = DATA->snap();
if (KVD->Test())
return(FAIL);
DATA->setv(0);
contstatus = DATA->snap();
------------------------------------------------------------------------
--
unsigned leakstatus;
ALLPINS->setv(0);
ALLPINS->irange(PMU_2UA);
ALLPINS->pmucompi(-0.8e-6, 0.8e-6);
ALLPINS->pmuenable(1);
SYS->del(3.0e-3);
// xtime1 = SYS->read_counter();
LOG->tnum(testnum);
SITE->lastresult.value = leakstatus = DATA->snap();
if (KVD->Test())
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 235
KVD Company Confidential
Sequencer Definition
Basics
The KVD Operating System defines a Sequencer as a single DIGMOD board, or a grouping of DIGMOD
boards. It is possible to slave all DIGMOD boards together for testing a single DUT with higher pin count,
or make each board independent and dedicated to a specific site.
While it is possible (and common practice) to construct an entire program using the system defined
sequencer (SEQ0), it is also possible to create a specific sequencer name that applies to a single
DIGMOD board, or a group of DIGMOD boards.
Now when the program executes a command that references 'JEFF_SEQ', only DIGMOD0 will run.
Grouping Boards
DIGMOD boards can also be 'grouped' together into one 'SEQUENCER'. This will allow for a single
sequencer command to act upon multiple DIGMOD boards. By default all installed boards are grouped to
the system defined sequencer 'SEQ0'.
TSEQUENCER *XYZ_SEQ;
XYZ_SEQ = DMSEQCreate("XYZ_SEQ", 0, 1, 2, 3);
This will group together DIGMOD0-DIGMOD3 and allow XYZ_SEQ commands to operate on all boards (0-
3).
Sequencer Programming
Here is a quick listing of commands that can be applied to the TSEQUENCER Class.
SEQ0->SetSiteMode
Assigns a DIGMOD board to a specific site. The default is FALSE and all boards will not be assigned to
specific sites, instead all will be assigned to a site 0. A multisite program normally assigns boards of a
SEQUENCER group to specific sites. Contact KVD Applications if you need to share one DIGMOD across
multiple sites. Code example pending.
Example:
SEQ0->SetSiteMode(TRUE, 0,1,2,3);
This will sequentially assign each DIGMOD board in the SEQ0 group to a specific site. Since SEQ0 is a
system defined group, this example will map out as follows:
Arguments:
SEQ0->SetMode
This will set the operational mode of all boards that are included in the SEQUENCER.
Example:
SEQ0->SetMode(DM_INDEPENDENT,
DM_INDEPENDENT,
DM_INDEPENDENT,
DM_INDEPENDENT,
DM_INACTIVE,
DM_INACTIVE);
Options:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 237
KVD Company Confidential
This example will set the first 4 DIGMOD boards of the SEQUENCER group to independent mode of
operation. All boards will have their own clock setup and will not be synchronous in any way. The last 2
boards in the SEQUENCER group are present in the head but are not used for this example.
Arguments:
DMMODE _mode0
DMMODE _mode1
DMMODE _mode2
DMMODE _mode3
DMMODE _mode4
DMMODE _mode5 // following options for all:
// DM_NOTPRESENT
// DM_MASTER
// DM_SINGLEMASTER
// DM_SLAVE
// DM_INDEPENDENT
// DM_INACTIVE
DM_NOTPRESENT - if DIGMOD is not loaded in test head
DM_MASTER - this board will be the master of all boards
DM_SINGLEMASTER - ?
DM_SLAVE - this board will sync to the MASTER
DM_INDEPENDENT - will run on it's own clock, not a master or slave
DM_INACTIVE - board loaded in test head but not active for device test
SEQ0->mclk_sel
Selects a clock source for a DIGMOD defined as a MASTER in the SEQUENCER group, then configures
all 'SLAVE' boards to sync off of the MASTER. The master clock can come from several sources. Most
common and with most programmability would be the DM_PLLCLK. Other options include an external
clock derived on the Fathercard. All slave boards will use the DM_XSICLK that is produced on the
MASTER but that is handled by KVD library code.
Example:
SEQ0->mclk_sel(DM_PLLCLK);
void TSEQUENCER::mclk_sel(DM_CLK source)
Arguments:
SEQ0->MasterSlave
Selects the MASTER and connects others as SLAVE. For this example DIGMOD0 is the Master, other
active boards will be connected as SLAVE.
Example:
SEQ0->MasterSlave(0);
void TSEQUENCER::MasterSlave(unsigned _master)
Arguments:
SEQ0->SetupMCLK
Sets up the PLLCLK on ALL boards in the SEQUENCER, regardless of configuration. This will set the PLL
for all boards in the SEQUENCER as close to 100 MHz as possible, given the PLL limitations. If the
frequency is specified as 100MHz, the oscillator will be selected instead of the PLL. For most applications
this command will adequately setup the Master Clock.
Example:
SEQ0->SetupMCLK(100e6);
double TSEQUENCER::SetupMCLK(double freq)
Arguments:
SEQ0->dt0t
Sets the T0 cycle rate for a specific timeset. Operates on all boards in the SEQUENCER. This will set the
rate for timeset 2 to 12.5 MHz, or as close as possible given the current MCLK settings. A alternate and
more reliable approach might be to program the timeset rate as a divider of MCLK. See 'dt0div'.
Example:
SEQ0->dt0t(2, 12.5e6);
short TSEQUENCER::dt0div(unsigned timeset, double freq)
Arguments:
SEQ0->dt0div
Sets the T0 cycle rate for a specific timeset. Operates on all boards in the SEQUENCER as a divider ratio
of the master clock (MCLK). The divisor is an integer between 2 and 128. If the MCLK has been set to
100MHz, this command will adjust timeset 2 to be MCLK/100 = 1MHz.
Example:
SEQ0->dt0div(2, 100);
short TSEQUENCER::dt0div(unsigned timeset, unsigned t0div)
Arguments:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 239
KVD Company Confidential
SEQ0->keepalive_timeset
Sets the timeset to be used when the pattern is halted. This will set the keepalive timeset to 6. This
command is useful if the device requires an external clock running continuously after the pattern stops. By
changing the timeset, the clock rate can be modified without running a pattern.
Example:
SEQ0->keepalive_timeset(6);
short TSEQUENCER::keepalive_timeset(unsigned timeset)
Arguments:
SEQ0->dflags
This function gives the ability to set the User Flags, most often referred to as U1 and U2. This function has
the ability to set both flags simultaneously if desired. This will set the U1 flag. If the pattern is at a point
where it is waiting (using a conditional flag test) for the flag, it will continue after the flag is set.
Example:
SEQ0->dflags(1);
short TSEQUENCER::dflags(unsigned value)
Arguments:
SEQ0->running
Checks to see if a pattern is running or halted.
Example:
short i;
i=SEQ0->running();
Arguments:
none
SEQ0->dwait
Waits for the pattern to finish execution. The wait time is determined by the 'set_wait_timeout' command.
The default is 1 Sec. The test program will effectively halt here until the pattern has completed execution.
Note that the 'side' argument is not required but included for backwards (DSPIO) compatibility.
Example:
SEQ0->dwait();
short TSEQUENCER::dwait(unsigned __side)
Arguments:
SEQ0->dfail
Returns the number of fails after pattern execution. Most often the user will favor the 'status' command as
it will provide more detailed fail information, and will also include the number of fails. After pattern
execution, the number of fails is returned. Note that the 'side' argument is not required but included for
backwards (DSPIO) compatibility.
Example:
unsigned xfail=SEQ0->fail();
short TSEQUENCER::dfail(unsigned __side)
Arguments:
SEQ0->cycle_count
Returns the number of cycles after pattern execution. Most often the user will favor the 'status' command
as it will provide more detailed information, and will also include the number of executed cycles.
Example:
unsigned xcycle=SEQ0->cycle_count();
short TSEQUENCER::cycle_count(void)
Arguments:
none
SEQ0->status
This function should be executed after each pattern execution. The updated status information is
determined by the setting of the StatusControl variable (SEQ0->StatusControl). The default setting for
StatusControl is 1. The following listing briefly indicates information provided with the allowed settings. It is
important to note that if more information is required (higher StatusControl setting) program execution time
will increase. For production operation, StatusControl setting of "1" or "2" is usually sufficient. Other
settings are useful for pattern/program debug.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 241
KVD Company Confidential
Example:
SEQ0->StatusControl=2;
SEQ0->pat_exe(mystart, mypattern);
SEQ0->dwait();
SEQ0->status();
SEQ0->StatusControl=1;
This example sets the StatusControl variable to 2 which will allow the user to examine the following:
number of fails, number of executed cycles, value of the 'NOTE' register, running status, and all fail
address information (up to 512 fails). It is usually desirable to set StatusControl back to "1" after reading
status.
short TSEQUENCER::status(void)
Arguments:
none
Note: The 'status' function should only be executed one time after pattern execution. Multiple 'status'
commands will produce unknown results.
SEQ0->set_wait_timeout
Sets the amount of time that the 'dwait' command will actually wait for the pattern to finish. The default is 1
second.
Example:
SEQ0->set_wait_timeout(0.20);
void TSEQUENCER::set_wait_timeout(double timeout)
Arguments:
SEQ0->get_wait_timeout
Reads back the current dwait timeout setting.
Example:
double xwait;
xwait=SEQ0->get_wait_timeout();
double TSEQUENCER::det_wait_timeout(void)
Arguments:
none
SEQ0->patloadmap
Launches the Pattern Manager to read the <application>.map file. The pattern manager will automatically
load the patterns in the map file if in Production mode, from the Customer Preferences. In Engineering
mode the Pattern Manager will wait for the user to select which patterns to load.
Example:
SEQ0->patloadmap();
short TSEQUENCER::patloadmap(void)
Arguments:
none
The patterns can be verified against the checksum by double clicking in the Pat# column on the particular
pattern to be checked. This will also create ASCII .DUMP files (one for each active DIGMOD board) with
a disassembled version of the memory image loaded in DIGMOD memory. The loaded and verified
checksums are at the bottom of this file. The Pattern Manager Checksum column will display “Checksum
OK” or “Checksum Error” based on the checksum results. If the test program modifies pattern memory,
then the checksum will probably fail.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 243
KVD Company Confidential
SEQ0->createpatmap
Creates a Pattern Map file (<application>.map) from the traditional pat_list structure. The function stores
the actual pattern length in the map file.
Example:
Arguments:
SEQ0->patload
Loads a list of patterns that are contained in the pattern list structure. The pattern list structure is detailed
elsewhere in this document.
Example:
SEQ0->patload(pat_list, PATDIR);
short TSEQUENCER::patload(PATDATA* pat_list, char* pat_dir)
Arguments:
SEQ0->patload_parallel
Loads a list of patterns that are contained in the pattern list structure. The patload_parallel function has the
capability to load the same patterns on multiple DIGMOD boards.
Example:
The first line of the above example will load a list of patterns on the first 4 DIGMOD boards defined in the
Test Head Configuration. The second line above will load the list of patterns on only the first 2 DIGMOD
boards.
Arguments:
SEQ0->patload_pformat
Loads a list of pformat-style patterns that are contained in the pattern list structure. The pattern list
structure is detailed elsewhere in this document.
Example:
SEQ0->patload_pformat(pat_list, PATDIR);
short TSEQUENCER::patload_pformat(PATDATA* pat_list, char* pat_dir)
Arguments:
SEQ0->patexe
Executes a DIGMOD pattern contained in a specific pattern file. The pattern can be run from any starting
point label or offset.
Example:
SEQ0->patexe("PATTERN2", "START2");
This will simply execute the "PATTERN2" pattern from the "START2" label
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 245
KVD Company Confidential
Arguments:
Arguments:
Arguments:
Note that in almost all cases it is preferable to use the string arguments for this command. Alternative
methods are for reference only.
SEQ0->patexe_array
Executes a DIGMOD pattern contained in a specific pattern file. The pattern can be run from any point
(offset). In addition this function adds the capability to run each DIGMOD board from a different offset if
desired.
Example:
In the above example the first 4 DIGMOD boards that are defined in the SEQUENCER will run from
different starting points, determined by the array 'startoff'. The first board will run from 'startoff[0]' the 4th
board will run from 'startoff[3].
Arguments:
SEQ0->patexe_parallel
Executes a DIGMOD pattern contained in a specific pattern file. The pattern can be run from any point
(offset). In addition this function adds the capability to run only those DIGMOD boards that are represented
in the 'slotmask'.
Example:
unsigned PATTERN2=2;
unsigned START2= SEQ0->getsym(PATTERN2, "START2");
SEQ0->patexe_parallel(PATTERN2, START2, 0x7);
In the above example only the first 3 DIGMOD boards that are defined in the SEQUENCER will run. If
other DIGMOD boards are included in the SEQUENCER, they will be idle.
Arguments:
SEQ0->getsym
When patterns are compiled using the KVD Pattern Editor, a SYM file (patternname.sym) is created. This
file contains all of the patterns 'symbols' sometimes referred to as 'labels', and a relative offset of each
symbol from the beginning of the pattern. If the test engineer wishes to run a pattern from an 'unsigned'
offset (as opposed to AnsiString representation) then the 'getsym' function is used to read the offset.
Example:
unsigned PATTERN2=2;
unsigned START2= SEQ0->getsym(PATTERN2, "START2");
SEQ0->patexe(PATTERN2, START2);
Arguments:
SEQ0->dcap_setup
Sets up the 'capture memory' for each DIGMOD board defined in the SEQUENCER. This will set up each
DIGMOD board in the SEQUENCER to capture 1024 digital samples, and will save the results starting with
address 100 of the capture memory.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 247
KVD Company Confidential
Example:
SEQ0->dcap_setup(100, 1024);
Arguments:
DIGMOD[x]->dcap_setup
Sets up capture memory on an individual DIGMOD board.
Example:
DIGMOD[x]->dcap_setup(100,1024);
short TDIGMOD::dcap_setup(unsigned long cap_adr,
unsigned long cap_count)
Arguments:
DIGMOD[x]->dcap_read
Reading back capture memory is best handled on an individual DIGMOD basis instead of as a group. The
command dcap_read reads back the data from an individual DIGMOD board into array cap_data. Note the
side parameter is ignored and is a relic of the DSPIO.
Example:
DIGMOD[x]->ddrv_setup
Sets up send memory to start at drv_adr and to loop after drv_length addresses. Note send memory is
shared with capture memory, so you need to manage the address space to avoid collisions.
Example:
DIGMOD[x]->ddrv_setup(1500, 1024);
short TDIGMOD::ddrv_setup(unsigned long drv_adr, unsigned long
drv_length)
DIGMOD[x]->ddrv_load
Loads the drive memory for the DIGMOD board. Since the test engineer is likely sending different data to
each DUT in a multisite environment, this typically needs to be handled per DIGMOD instrument instead of
as a group.
Example:
The DIGMOD instrument is capable of loading a binary formatted file which has a .pformat extension. This
is a streamlined file that is significantly smaller in physical size than the ASCII source format. These binary
pattern files contain only relevant pin information, if a pin is not active, or not changing, no information is
stored. .
Patlist Structure
PATDATA pat_list2[] = {
//ID FILENAME BANK LOADFLAG RETESTPAT
// OFFSET LENGTH HALTFLAG
Pattern Loading
DIGMOD[x]->patload_pformat
You can load paterns either by having a named patlist, or a .klf (KVD Load File) format file that defines the
patterns’ start addresses. A .klf file is created, edited and saved using the Pattern Editor’s Load File
Management tab.
Examples:
SEQ0->patload_pformat(pat_list2, PATDIR);
SEQ0->patload_pformat(“MyPatterns.klf”);
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 249
KVD Company Confidential
In was historically necessary to include DIGMOD pins in several places including each pattern file and also
in the test program - usually in a resource.cpp or connections.cpp file. While it is still possible to map pin
names to DIGMOD pin numbers in the test program, it is now possible to map these names and channels
in one .ini files that is read by the test program. This preferred approach will simplify pin definition and
reduce errors.
[SITE_DMCH]
PA0_SCLK = 1, 33, 65, 97
PA1_SO = 0, 32, 64, 96
PA2_SI = 15, 47, 79, 111
PA3_CS = 2, 34, 66, 98
PA4 = 3, 35, 67, 99
PA5 = 4, 36, 68, 100
PA6 = 5, 37, 69, 101
PA7 = 6, 38, 70, 102
CHG = 7, 39, 71, 103
NEG = 8, 40, 72, 104
DIS = 9, 41, 73, 105
MCLRB = 10, 42, 74, 106
XCLK = 11, 43, 75, 107
IDDQ = 12, 44, 76, 108
ODI = 13, 45, 77, 109
TXRX = 14, 46, 78, 110
[GROUP_DMCH]
SITEPINS0 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
SITEPINS1 = 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47
SITEPINS2 = 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79
SITEPINS3 = 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
109, 110, 111
------------------------------
There are 3 possible options for mapping channels. Two of these options, [SITE_DMCH] and
[GROUP_DMCH] can be seen in the above file. Pins that are mapped in he [SITE_DMCH] section will be
mapped according to site. For this example there are four sites and each name contains a pin for each
site. The pins can also be mapped into groups using the [GROUP_DMCH] section. In addition to these
groupings it is also possible to individually map pin names to DIGMOD pins. This would require a third
section not seen in the above example and would be used mostly in single site test programs. A short
example is shown below:
[SINGLE_DMCH]
mypin1 = 45
mypin2 = 6
mypin3 = 9
Once the resources file has been created, it is necessary to load the file so the pin-to-name mapping can
occur. This loading is done in the test program and it is important that the loading occur BEFORE any
pattern loading, otherwise the pattern will not map/load correctly.
DMRMan->LoadResMap("MAP_FILENAME.INI");
Typically the filename will have some relation to the test program, for example in the UC06 program we
might use "DMRESOURCES.INI".
Once the file is loaded, the names defined in the test program can be correctly mapped to the DIGMOD pin
resources. The required syntax is as follows:
DMRMan->DMCHFromMap("pin_site_group_name");
Example:
PA0_SCLK = DMRMan->DMCHFromMap("PA0_SCLK");
PA1_SO = DMRMan->DMCHFromMap("PA1_SO");
PA2_SI = DMRMan->DMCHFromMap("PA2_SI");
PA3_CS = DMRMan->DMCHFromMap("PA3_CS");
PA4 = DMRMan->DMCHFromMap("PA4");
PA5 = DMRMan->DMCHFromMap("PA5");
PA6 = DMRMan->DMCHFromMap("PA6");
PA7 = DMRMan->DMCHFromMap("PA7");
CHG = DMRMan->DMCHFromMap("CHG");
NEG = DMRMan->DMCHFromMap("NEG");
DIS = DMRMan->DMCHFromMap("DIS");
MCLRB = DMRMan->DMCHFromMap("MCLRB");
XCLK = DMRMan->DMCHFromMap("XCLK");
IDDQ = DMRMan->DMCHFromMap("IDDQ");
ODI = DMRMan->DMCHFromMap("ODI");
TXRX = DMRMan->DMCHFromMap("TXRX");
SITEPINS[0] = DMRMan->DMCHFromMap("SITEPINS0");
SITEPINS[1] = DMRMan->DMCHFromMap("SITEPINS1");
SITEPINS[2] = DMRMan->DMCHFromMap("SITEPINS2");
SITEPINS[3] = DMRMan->DMCHFromMap("SITEPINS3");
It is still possible to map channels the "old" way, but for future program simplicity, it is recommended that
resources are mapped through the DMResource manager.
Pattern Editor
There is significant functionality in a Pattern Editor designed for DIGMOD support. Failure data is
communicated back into the tool from the instruments, graphical displays are improved over earlier tools,
and it supports the .pformat channel description structure.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 251
KVD Company Confidential
There are mre feature-rich editors if you need powerful column-mode functions, so KVD also includes a
licensed UltraEdit editor on the system. You can export a .pformat pattern file to an ASCII text file we call
the DMP format, edit it with UltraEdit, then import the DMP file back into the Pattern Editor.
The Pattern Editor will startup in different forms based on whether there is Fail Data (SEQ0->StatusControl
>2) or if there is Logic Analyzer data available. If not then it will open in the Pattern Load Management
page.
Some features:
• Ability to create a pattern from scratch
• Inserting and deleting vectors: right click in the left most column (the vector num column) and then
choose insert or delete rows. When inserting the user specifies how many new vectors to add, and
then adds them prior to the current vector. When deleting vectors: the current vector is the start vector,
and the user inputs the last vector number to delete. The deletion is inclusive of the start and end
vector numbers.
• The user can select cells by holding down the shift key as they scroll using the arrow keys. Mouse
selection will be added in soon
The editor has three main display tabs. The plain vector view:
At the bottom of the left side pane, tabs are available for switching support displays between:
• Fail Control (shown above)
Logical group vector states are now displayed as they are seen on the screen, and not in standard bit
order. In Figure example column 2 is a group of columns 0 and 1. Note that as displayed column 0 is the
left most bit in the group and not the rightmost.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 253
KVD Company Confidential
A graphical view:
If you double-click on a column label such as OPCODE, it will pop up a list of allowable values. These are
the lists for:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 255
KVD Company Confidential
There is on-line help available from the top-level menu item HELP.
Importing a DMP file into the DMPE is still accessed through the same File menu. Once the file has been
selected a new window that indicates import status will appear. See Figure 8.20.
This window will show the import status using the Pass and Line Number display fields. Importing is a two
pass process. The Line numbers are displayed in real-time during the import in 5000 line increments. If an
error occurs then a description of the error is displayed in the window.
There is a 15 error limit on the import before the import is terminated. The Edit File button appears when
there is an error. When that button is pressed, the UltraEdit editor opens the DMP file and the file is
positioned to the line of the first error. This will help the test engineer fix the problem.
Line 1:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 257
KVD Company Confidential
Optional Lines before VECTOR line (where vectors is comma separated character (letters and numbers)
names):
Line 2:
where vectors is comma separated character (letters and numbers) names. A groupName can be included
in this list to be expanded out for the group defined vectors. Some groups of vectors may be enclosed in (
); these cannot include groupNames.
Line 3 - End:
[GLOBAL symbol:] [Opcode [Operand]] TSET num [FLAG flag] [SR ssr] [CP csr] [ADC adc] [FD] [M] [ST]
columnVals ; [Comment]
where columnVals are the number of vector names (from line 2) of one of the following 0 1 L W H X
columnVals can also include hex values in the form of .DFFF or .CFFF. These can be used as a
different format to visualize logical group data. These can only be used with Logical groups. The
Line ANY:
Any Line can start or end with ; which is the start of a comment.Comments may currently be 64 characters
long, any longer are truncated.
The Logic Analyzer tool is a component of the DM Pattern Editor. This tool is useful when debugging
patterns. To properly use Logic Analyzer, several steps are required, and some caution is necessary.
Necessary Steps
1. The pattern to be debugged must include the "LOGIC" opcode at the point in the pattern where debug
will start. The operand must be "1".
2. A "LOGIC" opcode with a "0" operand must be included in the pattern where debug will stop. Note that
once these opcodes are included, the pattern will NOT fail at any point between the LOGIC 1 and the
LOGIC 0 vectors.
3. The pattern should be run normally using the "patexe" function:
SEQ0->patexe("PATTERN1", "START1");
4. After executing the pattern, Logic analyzer must be setup and run before the results can be viewed.
Cautions
The pattern that is being debugged will not fail between the LOGIC opcodes. It will be necessary to change
the pattern back to original for normal program operation.
The pattern must be repeatable - each execution must produce the same results or the Logic Analyzer
display will not be very helpful. Logic Analyzer works by setting the compare strobes at the beginning of
the cycle, executing the pattern, saving the data for pins of interest (send/capture memory is used), moving
the compare strobes, and then re executing the pattern, save etc. etc. If the results from the DUT are not
repeatable from one run to the next (if the pattern does not "FAIL" the same way each run), Logic Analyzer
is not going to be a useful debug tool.
The Send/Capture memory is used to save pattern information. The default memory start address is
0x800000 (8388608). This is at ½ of the total Send/Capture memory. It is important to note that if the test
program uses this part of the send memory (unlikely since 8M is available) then the programmer must
indicate an alternate start point.
where:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 259
KVD Company Confidential
void TlogicAnalyzer::Run();
This function should be executed after setting up the Logic Analyzer using the "Setup" function.
This shows the results for the pins of interest after logic analyzer has executed. Note that Logic Analyzer is
a tab of the DM Pattern Editor tool.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 261
KVD Company Confidential
This shows the same capture, but the "SPAN" and "POSITION" sliders at the bottom of the tool have been
used to zoom in to the desired resolution and the scroll to the area of interest.
Figure 8.23: Use the Span and Position Sliders to Adjust Resolution
This is a program file block that shows typical C++ steps for using Logic Analyzer:
Note that the logic analyzer tool is updated after the LogicAnalyzer->Run() has executed. Results can be
viewed using DM Pattern Editor.
This shows the inclusion of the "LOGIC 1" opcode/operand combination in the pattern.
RTI Shmoo
The Real Time Interface (RTI) gives the ability to run Shmoo and Margin Shmoo charts. Shmoo is a tab
sheet on the RTI window, along with other tabs such as System Functions and FatherCard Resources.
The starting RTI Shmoo configuration is shown in Figure 8.25.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 263
KVD Company Confidential
There is one tab for setting and maintaining a Shmoo chart and another tab to setup and maintain Margin
Shmoo. Each Shmoo chart receives its own tab. All the Margin Shmoo charts reside on a single page.
When run for the first time, all entries are blank and no charts are active.
Shmoo Setup
To create a Shmoo chart, click the Setup tab. When creating a Shmoo chart for the first time, type in a title
for the chart in the Title: field and click the New Shmoo button. See Figure 8.26: the new chart ‘Chart 1’
receives its own tab and the chart has the same title.
The new chart ‘Chart 1’ received its own tab and the chart was given the same title.
The left side of the panel contains the fields for defining the axes, with the X and Y fields operating in a
similar manner. Follow these steps to define the X and Y axes of the shmoo:
1. Select the resource from the Resource drop down field; it includes the description of all available
resources. When the resource has been selected, the appropriate functions for that resource are
loaded into the function field.
2. Select the function in the Function drop down field. When the function has been selected, the units
appropriate to that function are loaded into the Units field.
3. Type in numerical values to the minimum, maximum and increment for the X or Y axis.
Make sure to fill in both the X and Y axes’ fields for the Shmoo to operate correctly.
Radio buttons underneath the axes fields serve to select the site to be used for the Shmoo. It is possible to
select the site at any time.
The right side of the panel contains the pattern fields. Each is a drop down field based on currently loaded
pattern information. Select the appropriate pattern, symbol, sequence and time set values to run the
Shmoo.
Running Shmoo
All the axes and pattern information must be filled in before running the shmoo. Click the Run Shmoo
button to run the shmoo pattern across all the selected X and Y values. See Figure 8.27.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 265
KVD Company Confidential
Whenever a Shmoo is running, a Stop button appears below the Run Shmoo button. Press the Stop button
to stop running the shmoo.
To single step the output while running the shmoo, the checkbox for single stepping the chart output must
be checked. This box is located above the Run Shmoo button. When selecting this option, the output
proceeds by single axis increments when the running the shmoo.
An available option is switching which axis has the faster increment. The checkbox underneath the axes
fields called X Fast Mode is checked as a default. In this mode, the chart increments through each X axis
row before moving up and incrementing the Y axis. Removing the check from the checkbox reverses this
action.
To obtain a printout of the shmoo output, save data, or save panel setup, use the following available
buttons:
• Print Shmoo sends the output for printing to a configured printer.
• Save to PDF creates a .pdf file of the Shmoo chart.
• Data to CSV creates a .csv file with the data on the Shmoo chart.
• Save Setup creates a .shm setup file that contains the contents of all the fields on the panel. This file
can be read using the Get Setup button on this panel or the New Shmoo Form File button on the
Shmoo Setup tab.
• Get Setup button reads a .shm setup file and populates the panel with the values in that file.
To delete or remove a Shmoo tab or chart, go to the Shmoo Setup table and select the chart on the drop
down field next to the Delete Shmoo button. Once the chart is selected, delete the chart by clicking the
button.
Creating a Margin Shmoo chart starts on top of the Margin Shmoo tab. When creating a Margin Shmoo
chart, type in a title for the chart in the Add Plot field and click Add. Figure 8.28 shows the results of typing
in a title of ‘Margin Chart 1’ in title field, then clicking Add button.
Create as many charts as needed for the application. The charts get stacked on the panel as shown in
Figure 8.29.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 267
KVD Company Confidential
When there is more than one chart on the panel, the active chart shows on a white background, with blue
colored title and selected in the Active Plot drop down field.
On the left side of the panel are the fields for defining the X axis. Follows these steps to setup the margin
values:
1. Select the resource name from the available resources in the Resource drop down field. When the
resource has been selected, the appropriate functions for that resource are loaded into the function
field.
2. Select the function in the Function drop down field. When the function has been selected, the units
appropriate to that function are loaded into the Units field.
3. Type in numerical values for the minimum, maximum and increment.
Make sure to fill in all X axis’ fields for the Margin Shmoo to operate correctly.
Radio buttons underneath the axes fields serve to select the site to be used for the Shmoo. It is possible to
select the site at any time.
The right side of the panel contains the pattern fields. Each is a drop down field based on currently loaded
pattern information. Select the appropriate pattern, symbol, sequence and time set values to run the
Shmoo.
Click the Run Shmoo button when all of the axis and pattern information has been completely filled. This
will run the Shmoo pattern across all the selected X values. See Figure 8.30.
To run all of the Shmoo charts that are on the panel press the Run All Shmoo button. The Run Shmoo
button runs the active Margin Shmoo chart.
Whenever a Margin Shmoo is running, a Stop button appears below the Run Shmoo button. Press the
Stop button to stop running the shmoo.
One option that a user has for running Shmoo is to single step the output. Above the ‘Run Shmoo’ button is
a checkbox for single stepping the chart output. If the user selects this option, the output will only proceed
by single axis increments when the ‘Run Shmoo’ button is clicked.
To obtain a printout of the Margin Shmoo output, save data, or save panel setup, use the following
available buttons:
• Print Shmoo sends the output for printing to a configured printer.
• Save to PDF creates a .pdf file of the Shmoo chart.
• Data to CSV creates a .csv file with the data on the Shmoo chart.
• Save Setup creates a .shm setup file that contains the contents of all the fields on the panel. This file
can be read using the Get Setup button on this panel or the New Shmoo Form File button on the
Shmoo Setup tab.
• Get Setup button reads a .shm setup file and populates the panel with the values in that file. This
function will start by deleting all the existing charts on the panel before creating the new ones.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 269
KVD Company Confidential
To delete or remove a Margin Shmoo chart, select the chart on the drop down field next to the Remove
Plot button. Once the chart is selected, delete the chart by clicking the button. To remove all the charts,
click the Remove All Plots button.
Note: This function operates with the DIGMOD instrument commands only.
Shmoo plots allow the engineer to plot results of a test while two parameters, that may affect the test, are
altered. Following some simple rules, practically any parameters can be used. The shmoo plot is
implemented on the KVD tester in the following manner. The shmoo plot is generated, then a function is
assigned for the x axis, with parameters that indicate the start, stop, and increment values to be used. The
same thing applies to the y axis. Then, a 'main' function is assigned as the test routine that will determine
the pass or fail status for each x and y point on the plot. Setting up the axis' is made with one command for
the x axis, and another for the y axis. Setting up the main parts of the plot are done using another routine.
To get started, the engineer calls the NewShmoo command to create a shmoo plot framework. This
framework will be used for all interactions with the plot. The NewShmoo command returns a pointer
variable of type TFORMshmoochild ;
TFORMshmoochild* myshmoo;
myshmoo=ShmooMan->NewShmoo(<AnsiString tabsheet_caption>);
The parameter <AnsiString tabsheet_caption> is a string that will be displayed on the tabsheet that will
hold the shmoo plot.
TFORMshmoochild* myshmoo;
myshmoo = ShmooMan->NewShmoo("How To Shmoo");
Once you have a handle to your shmoo, the next step is to set up the look of the shmoo, along with the
boundaries and functions that the shmoo will use to produce the plot.
X Axis
• Xfunc - the function that will be called, with a parameter of type double passed in. This value is
determined by the next three variables.
• XMin - the start value used by the x axis function.
• XMax - the stop value used by the x axis function.
• XInc - the increment used to scan from the xmin value up to the xmax value, inclusive.
• Xtitle - the title that appears on the x axis.
• Xunits - the units that will be assumed for the x axis.
Y Axis
• Yfunc - the function that will be called, with a parameter of type double passed in. This value is
determined by the next three variables.
• YMin - the start value used by the y axis function
• YMax - the stop value used by the y axis function
• YInc - the increment used to scan from the ymin value up to the ymax value, inclusive.
• Ytitle - the title that appears on the y axis.
• Yunits - the units that will be assumed for the y axis.
Main
• ExeFunction - the function the shmoo plot will call to run the test (for each unique x/y value
combination). The function format must be that it takes a 'short' type parameter, which is the site
number, and returns a short value ( where a value of 0 indicates a fail, and any other value indicates a
pass).
• MainTitle - the shmoo plot's main title line.
• SecondaryTitle - another text line that appears below the MainTitle line.
General Fields
• Xfastmode - when Xfastmode is set to true (which is the default), the Xfunc function is called with all of
x values, for each y value. If Xfastmode is false, then the plot calls the Yfunc function with all y values,
for each x value.
• Disablerepaint - drawing each plot result in real time can be done, but will slow down the process. The
user has the option of disabling the repaint of the screen until ALL x and y values for the plot have
been tested. Once all testing has finished, the results are then displayed. In contrast, if DisableRepaint
is set to false, each result is plotted as it happens.
• InteractiveMode - if the engineer wants to have the process stalled at the calling of the shmoo's 'Run()'
call, then set InteractiveMode to true. The plot can then be run, and x and y axis valued altered. If
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 271
KVD Company Confidential
InteractiveMode is set to false, then when the RUN() function is called, the plot is executed (all x and y
value combinations are tested and plotted) and then the test program continues.
The ShortFuncDouble * type is simple a function pointer. It must point to a function which takes one double
value as a parameter, and returns a short result value. The shmoo plot ignores the return value.
TAXISTYPE is an enumerator type that can be used to tell the shmoo plot whether the x axis represents
time, frequency, or volts, amps, or something else. The allowed values for xaxistype are saTIME,
saVOLTS, saFREQ, saAMPS, saUNDEF, saNONE.
In our example, this was the command used for the x axis setup:
This was not run in xfast mode (thus running in what would be yfast mode), and not repainting the screen
after each test, but to show the results after ALL the points have been tested.
SetExeFunction(ShortFuncShort* exefunction);
The ShortFuncShort* type is a function pointer to a function that takes one short type as a parameter
(which will be equal to the site value) and returns a short (0 for fail, any other for passing). In our example,
we just set up our own function that would randomly generate a pass or fail. This was out main function:
short MyExecute();
short MyExecute(short site=0)
{
int x=random(10);
if (x>5) return 1;
return 0;
}
myshmoo->SetExeFunction=MyExecute;
Once the shmoo has been setup, you simply need to call TFORMshmoochild::Run() whenever you want
the shmoo to run, or enter in interactive mode (if it has been set). Again, for this example, we used:
myshmoo->Run();
How it Works
When run is called, internal variables are set to the xmin and ymin values. Then, in a loop that is either
calling the x axis function for all x value (in xfastmode) or vice versa (if in yfastmode), the x and y values
are set, the x and y functions are called, and then the exefunction is called. When the exefunction returns,
we use the return value to determine whether that point on the plot would be red(fail) or green(pass). We
also determine at this time whether to show the result (disablerepaint is false) or not. This loop continues
for all x and y values.
If you look on the screen shot, notice that there are RUN SHMOO and a CONTINUE buttons on the right
side. These only appear if Enable Interactive Mode is checked (interactivemode is true). Clicking on RUN
forces the Run() function to be called. Clicking on CONTINUE forces the shmoo to jump out of interactive
mode, and return to the main program flow. On the next device to be tested, the shmoo will enter
interactive mode again, and this will continue until the Enable Interactive Mode checkbox is cleared, or
interactivemode is cleared programmatically.
Other Commands
Some value can be entered directly, and are not limited to being a parameter in one of the above function
calls.
The SetDelay command allows the engineer to program in a delay value that gets used after the xfunc is
called, and after the yfunc is called.
myshmoo->DataToCSV(filename);
DataToCSV(filename) will dump the data to a csv file. The filename should contain the path and filename.
If you specify an [x][y] pair out of range, the return value is NULL.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 273
KVD Company Confidential
Margin Shmoos
Margin shmoos are identical to the standard 2 dimensional shmoo described above, but only vary one axis
(x) instead of two. The commands and usage are identical also, with the following exceptions.
TFormshmoomargin;
TFormshmoomargin * myshmoo;
myshmoo=ShmooMan->NewMarginShmoo(<AnsiString tabsheet_caption>);
There is only an x axis in the shmoo, so any references to the y axis setups will cause a compile error. The
SetXAxis commands are identical.
The DIGMOD resource tab has seven sub-tabs: CONFIG, LEVELS, TIMING, PMU, FREQ, SEQUENCER,
and SHOW CHANS.
The SHOW CHANS screen is a simple way to declutter your display, and ensure that only the channels of
interest are displayed. Uncheck the channels you wish to suppress.
System-defined channel names are displayed if they have not been renamed with the setname command,
and if you have defined multisite groups with the DDCHCreate command, the group names appear at the
end of the SHOW CHANS list.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 275
KVD Company Confidential
The CONFIG screen shows the mode that each of the instruments are set to, timeset frequency
information, and the masterclock source and frequency.
In this case each board is set to "INDEPENDENT" mode of operation, with the on board PLL as the
source. Also displayed is the MCLK frequency setting (in this case the PLL frequency). The divider for
each timeset is also displayed and the right hand scroll bar allows the user to scroll through all 16 timesets
per board if required.
Note that the configuration mode and MClk Source cannot be changed from this display - they are just
reporting the state of the instruments as set by test program code.
The (KA) indicator next to a timeset shows that this timeset has been selected to be active in Keep Alive
time (which is whenever a pattern is not bursting).
The LEVELS screen is an overview of all the pin driver and comparator setpoints. There is a column to
indicate if a pin is ACTive (meaning its SITE is still enabled - this parameter is a display-only, and not a
clickable control on this page), programmed levels for Drive Hi, Drive Lo, and the Termination voltage, an
indicator for TENA (Termination Enabled), comparator Low and High levels, and click boxes for relay
connections from a pin to the father card (CON), the Analog tie-line bus (ABUS), whether the driver is
ENAbled, if you have set a pin into ForceMODe, what the Forced VALue is, whether it's been Force
ENAbled (not the same as driver enabled), a SNAPshot of whether the driver is sending a high or a low to
the outside world, and finally, an indicator if the pin has been Fail Disabled.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 277
KVD Company Confidential
The TIMING screen displays the programmed edge placements for the driver data valid time, the driver
enable time, comparator edges, and skew values, plus the Keep Alive data. Since there are 16 time sets
now, the time set selection is a tab column at the right edge of the screen. Falling edge skew is
programmable by the test program, but has been suppressed from this RTI screen to reduce display
clutter.
The PMU (Parametric Measurement Unit) screen shows the forcing and measurement functions for each
desired pin, and allows an instant measurement to be made if you press the MEASURE button.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 279
KVD Company Confidential
The FREQ screen supports the on-board connection from comparator HI and LO channels to the DIGMOD
TMU (Time Measurement Unit) instrument, for frequency measurements. To change the measured result
field from frequency mode to period mode, click in the RESULT box and it will toggle the display.
Note that the built-in TMU measures frequency only. The output display can change to a period mode by
calculating the inverse (1/X), but there is no feature to directly measure pulse widths, rise times or
intervals.
The SEQUENCER screen displays patterns available in the test program (whether or not they've been
loaded at run time into memory), available symbols, a STATUS readback display and control pull-down
menu, and buttons to control pattern bursting, halt, and User Flags (dflags1 and 2).
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 281
KVD Company Confidential
• PATTERN STATUS - Shows the pattern failure information for the previously executed pattern. If all
fields are blank, this indicates that the previous pattern run was successful, with no failures. If a pattern
failed, the first 0-512 failures will be displayed in the table. The failures are separated by DIGMOD
boards, DM0-DM5. The following are displayed for each failure in the fail table: Physical failing
address, Failing cycle, Failing pins.
• The rightmost section of SEQUENCER RTI shows the current DIGMOD status by board. This
information is for the previous pattern execution and includes the following: PATTERN STATUS,
CYCLE COUNT, The value of the 'NOTE' register, Fail Count. The rightmost scroll bar will allow for
scrolling through all present DIGMOD boards.
Functional Description
The KVD test system is capable of making interval and frequency measurements using the TMU.
Measurements of pulse width, frequency, and timing between two signals are all possible with the TMU.
There are two high speed analog input channels as well as direct connections to any digital channel
through the KVD DSPIO module. Any combination (analog or digital) of start/stop triggering is possible.
Theory of Operation
The TMU module is designed to make accurate time measurements with 1nS resolution. The heart of the
TMU is a 1GHz clock. The clock is gated to a prescalar (divide by 64) and FPGA (Xilinx) by the incoming
start/stop signals. The FPGA will flush the measurement prescalar and count the number of gated clocks,
returning the appropriate count. For measurements that are greater than 250mS, a 40MHz (25nS
resolution) clock is substituted for the 1GHz clock. The TMU has the capability to measure either time
interval or frequency. The start/stop signals can come from either the digital subsystem (DSPIO via a
motherboard TMU bus) or directly from the Fathercard.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 283
KVD Company Confidential
Pinouts
Connections between the TMU module and the Father Card are made through a 33 pin Hypertronics
connector. Below is a listing and description of the connections.
TMU Object
There is typically only one TMU in a system, although two are possible. Of type TTMU, the object name is
TMU0. Since it is a single resource, there are no group or site objects, so if you have a multisite program,
you will be scanning the TMU among the signals to be measured serially (using a relay tree on the father
card, an RMX instrument or digital channel connections), and storing results in the multisite results array.
SITE->result[n].value
TMU Commands
To make a TMU measurement, you must choose your inputs first, either the Analog connections from the
Father Card, or the backplane motherboard connections to the TMU bus, which can connect to the
comparators of any Digital channel. If you choose the analog inputs, you must also program a comparator
threshold. (The Digital backplane connection uses the HI comparator on the DIGMOD, which are
independently programmed).
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 285
KVD Company Confidential
The input function requires you to specify what will be the start event, then the stop event. Either event can
be a rising edge or a falling edge, from either of the inputs, Channel A or B. (or from the DD Channels).
Example:
If you wish to use a digital channel connection, you must program which digital channel will be connected
to the motherboard backplane buses, DDTMUA and DDTMUB, and then select one or both of those buses
as the source of the start and stop events.The digital channel connect function is a pin-level command
called tmucon, and documented in this chapter on page 233
Example:
XCLK->tmucon(DDTMUA, 0);
DATA7->tmucon(DDTMUB, 1);
TMU0->input(DDTMUA, RISING, DDTMUB, FALLING);
DDTMUA
5
0- DDTMUB
OD
M
G ]
DI CH[n U0
M
T A
DM ut B
Inpput
I n
To set yourself up for making a measure, you need to choose either frequency or interval mode.
Measuring frequency involves programming the minimum frequency you are interested in measuring, so
the TMU will use the correct clock. (40MHz or 1GHz), giving it a timeout selection, so the TMU will not
hang forever waiting for the signal to change state, and programming the number of cycles of the signal to
measure, and the number of measurements to average. The number of cycles can be between 64 and 4
Meg, and the number of measures to average can be between 1 and 32. Note: since you can include many
cycles in the measurement window with the third argument, it's not usually useful to perform any averaging
in the fourth argument.The timeout is rounded up to 1mS minimum if you program a smaller number.
Example:
An interval measurement involves programming the maximum expected interval time, the timeout, and
number of events to average (between 1-32).
Example:
Note that in interval mode between two different signal inputs, or between rising and falling edge of the
same signal, there may be timing calibration issues that affect the measurement accuracy. Your DUT
board circuits and father card signal paths may need to be deskewed by you if you require the utmost
accuracy. Generally speaking, frequency measurements are not affected by the same issues, since a
rising edge to rising edge measurement would not be affected by any delay applied equally to both edges.
Finally, you need to enable the TMU and make the measurement. The enable can be either normal, which
means the next start event will begin the measurement, or external, which means the TMU must be armed
by an external signal. You can also enable the TMU to measure negative time, in case your stop event
may occur ahead of the start event. The measurement function will place the result in a named variable,
which is different from the behavior of the DC Source measurements. To use the measurement variable for
a single site KVD->Test(); you will need to place it in the SITE->lastresult.value variable yourself. For
multisite programs, place the measurements into the SITE->results[site].value array.
Example:
TMU0->enable(NORMAL, POSITIVE);
TMU0->meas(my_result_variable);
TMU0->ddchan(SSTRB, SSTRB);
TMU0->input(DDTMUA, FALLING, DDTMUA, RISING);
SEQ0->patexe(SETUP,TIME_TCONV); // Burst Pattern
TMU0->interval(1e-3, 10e-03, 1);
SYS->del(1e-3);
TMU0->enable(NORMAL, POSITIVE);
SYS->del(1e-3);
TMU0->meas(time_result);
SEQ0->dstop(); // Halt Pattern
SITE->lastresult.value = time_result[1].value;
if (KVD->Test())
return(FAIL);
TMU Commands
TMU->ddchan
Sets the TMU's CHANA and CHANB to the digital pin inputs.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 287
KVD Company Confidential
Parameters:
TDigPin * etmua
TDigPin * etmub
TMU->enable
Enables/resets the TMU trigger before the next measurement.
Parameters:
TRIG trigg
NEGTIME ntime
TMU->freq
unsigned freq(double minfreq, double timeo, unsigned cycles, unsigned
events);
Description:
TMU->input
Sets up the TMU so that the proper edges (RISING and FALLING) for each channel will be recognized.
Parameters:
TMUCHAN strtch
Start channel, can be CHANA or CHANB - this is a TMU channel, not a Digital Pin Channel.
TMUEDGE strtedge
TMUCHAN stopch
Start channel, can be CHANA or CHANB - this is a TMU channel, not a Digital Pin Channel.
TMUEDGE stopedge
Returns:
TMU->interval
Sets up the number of samples, the sample rate, and the timeout value for the next measurement.
Parameters:
double maxtime
double timeo
unsigned events
Description:
Forces the next TMU measurement to be an interval type measurement between two edges.
TMU->level
unsigned level(TMUCHAN chan, double hidac, double lodac);
Parameters:
TMUCHAN chan
Can only be CHANA or CHANB. These are TMU channels, not the Digital Pin Channels.
double hidac
double lodac
TMU->meas
Performs the measurement (interval or frequency) and stores the result in the RESULT parameter
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 289
KVD Company Confidential
TMU->meas_array
unsigned meas_array(RESULT result[], RESULT resarray[][EVENTS]);
TMU->meas_neg
unsigned meas_neg(RESULT result[], double tmax);
TMU->reset
Resets the TMU to default values, channels, levels, and timing.
unsigned reset(void);
9. AC Instruments
PWS
Pending a restructure of this section.
The PWS programming code is now simplified, making it easier for users to create, load and start/stop
waveforms. Previous PWS commands required verbose code statements to enable the instrument. These
new additions make it much easier to use the PWS as an Arbitrary Waveform Generator for Audio testing.
unsigned SearchforDDSLoop();
DSP Library
A collection of DSP functions. Pending examples.
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 295
KVD Company Confidential
DSP Class
TDSP::TDSP()
The DSP class contains many useful functions for analyzing sampled waveforms.
TDSP->zero_dbRef;
Type: double. Allows the user to define the 0dB reference level. Default is sqrt(2)
Functions
unsigned TDSP::Init();
Should be called once on initialization if any DSP functions are used. Sets the default value of
"zero_dbRef" variable. Automatically called from "InitDIGMOD()" function, user call not required.
Arguments none
Return 0
Allows the user to define a custom 0dB reference level. Needs to be called AFTER any call to
TDSP::TDSP::Init().
Return 0
Performs an FFT on data that is already in unsigned format, typically data that is captured by the DIGMOD
capture memory. The "bits" operator allows for masking of upper order bits the data_format arg will allow
FFT without the user having to convert twos compliment data to binary format.
Performs an FFT on data that is in double format, typically data sampled by a digitizing instrument
(QUVM).
Allows the user to manually set the real and imaginary elements of any bin in the fft array. Note that it can
ONLY be used after a call to TDSP:fft.
Return 0
Allows the user to examine the amplitude of an individual frequency bin. The level is relative to
"TDSP::zero_dbRef". Note that it can ONLY be used after a call to TDSP:fft.
Fills data_array[] with the magnitude values of each frequency bin. Typically called if spectral plotting is
necessary. Not typically required during production testing. Note that it can ONLY be used after a call to
TDSP::fft
Return 0
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 297
KVD Company Confidential
Returns the signal-to-noise ration in dB of a previously calculated fft. Note that it can ONLY be used after a
call to TDSP:fft.
Returns the a-weighted signal-to-noise ration in dB of a previously calculated fft. Note that it can ONLY be
used after a call to TDSP:fft.
Return double
Converts a data array into an array of dB values. The "ref" arguement is used as the reference level. The
"floordb" argument is optional with the default being -240dB. If the argument is used, it will limit the floor in
the array to the input argument value.
Return 0
Allocates a plot for the data that is curently in data_array, data type is "double". The user can also input a
reference value. This value is subtracted from all elements of "data_array" before plotting
Allocates a plot for the data that is curently in data_array, data type is "unsigned". The user can also input
a reference value. This value is subtracted from all elements of "data_array" before plotting.
int sample_size
double ref offset
Return 0
Allocates a plot for the real part of a complex data array. The user can also input a reference value. This
value is subtracted from all elements of "data_array" before plotting.
Allocates a plot for the combined elements of the complex data array. The user can also input a reference
value. This value is subtracted from all elements of "data_array" before plotting.
Allocates a plot for "time_array" input. No operation is performed on the array before allocating the plot.
Allows the user to label the plot as well as the plot x and y axis.
Return 0
allocates a plot for "time_array" input. Also performs an fft on the input array. The data is prepared for
plotting. The frequency bin of highest amplitude is considered the reference level (0dB) and all freqency
bins are scaled relative ot this level.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 299
KVD Company Confidential
char *plotname
char *xaxis
char *yaxis
Return 0
Returns the signal-to-noise ratio in dB of a previously calculated fft. The user must provide arguments for
sample rate, and fundamental frequency (test_freq). This function also allows the user to limit the upper
frequency included in the calculation by using the "dig_filter" argument. If no filtering is required, the
dig_filter argument should be set to something gresater than 0.5*sample_rate. Note: that it can ONLY be
used after a call to TDSP:fft
Returns the peak spurious component of the frequency spectrum. Level is relative to TDSP::zero_dbRef
value as previously discussed. Note that it can ONLY be used after a call to TDSP:fft.
Returns the total harmonic distortion in dB of a previously calculated fft. The user must provide arguments
for sample rate, and fundamental frequency (test_freq). This function also allows the user to limit the
upper harmonic included in the calculation by using the "dig_filter" argument. Only harmonics less than
the "dig_filter" argument will be included in the calculation. It can be used ONLY after a call to TDSP:fft
Return double
Returns the RMS value of the input array. note that only "sample_size" number of elements will be
included in the calculation.
Returns the minimum value of the input array. note that only "sample_size" number of elements will be
included in the calculation.
Returns the maximum value of the input array. note that only "sample_size" number of elements will be
included in the calculation.
Return double
Returns the standard deviation of the input array. note that only "sample_size" number of elements will be
included in the calculation.
Returns the variance of the input array. note that only "sample_size" number of elements will be included
in the calculation.
Return double
Performs an element by element multiplication and modifies the elements of "mult_array" with the results
(mult_array[0]=mult_array[0]*data_array[0]). Note that only "sample_size" number of elements will be
modified.
Return void
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 301
KVD Company Confidential
Performs an element by element division and modifies the elements of "div_array" with the results
(div_array[0]=div_array[0]/data_array[0]). Note that only "sample_size" number of elements will be
modified.
Modifies each element of "data_array" by the multiplication factor "factor." Note that only "sample_size"
number of elements will be modified.
Return void
Performs an element by element summation and modifies the elements of "sum_array" with the results
(sum_array[0]=sum_array[0]+data_array[0]). Note that only "sample_size" number of elements will be
modified.
Performs an element by element subtraction and modifies the elements of "sum_array" with the results
(sum_array[0]=sum_array[0]-data_array[0]). Note that only "sample_size" number of elements will be
modified.
Return void
Modifies each element of "data_array" by the summation factor "factor" Note that only "sample_size"
number of elements will be modified.
Return void
If an element of "data_array" is greater than the value of "clipfactor" then the element will be modified to
the value of "clipfactor." Note that only "sample_size" number of elements will be modified.
Divides each array element by the absoulute value of the largest magnitude value in the array. Note that
only "sample_size" number of elements will be modified.
Return void
Logically shifts (left shift = binary multiplicaton) each element of the unsigned "data_array" by the value of
"shiftfactor." Note that only "sample_size" number of elements will be modified.
Logical "AND" operation on each element of the unsigned "data_array" by the value of "andfactor." Note
that only "sample_size" number of elements will be modified.
Logical "OR" operation on each element of the unsigned "data_array" by the value of "orfactor." Note that
only "sample_size" number of elements will be modified.
Arguments unsigned data_array[]
int sample_size
int orfactor
Return void
double TDSP::log10(double x)
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 303
KVD Company Confidential
Arguments double x
Return double
Return double
Computes power spectral density. Breaks data into smaller chunks, runs an fft on those chunks and
averages the result. The results in an output with reduced noise and exposes frequency peaks hidden in
the noise.
Return 0
Calculate Histogram of input and puts into histo array. Returns number of values over the specified number
of bits (1<<bits
Fills "timearray" with ideal sinewave data given all input arguments.
Arguments unsigned timearray[] time domain array with ideal sinewave data
double points number of points
double amplitude sinewave peak amplitude
double offset offset from 0
unsigned cycles number of sinewave cycles
double phase sinewave phase from 0 degrees
Return 0
Fills "timearray" with ideal multitone data given all input arguments.
Arguments unsigned timearray[] time domain array with ideal sinewave data
double points number of points
unsigned tones number of sine tones in the multitone
double amplitude[] array of amplitudes for each corresponding tone
double bin[] array of frequency bins for each corresponding tone
double phase[] array of phase offset for each corresponding tone
double offset waveform offset from 0
Return 0
Fills "timearray" with random noise over the number of desired samples. The noise array is scaled to the
max "amplitude" argument. offset required but is not implemented at this time.
Arguments unsigned timearray[] time domain array with ideal sinewave data
double points number of points
double amplitude array of amplitudes for each corresponding tone
double offset waveform offset from 0
unsigned seed seed for the "random" function
Return 0
Fills "iarray" with quantized value of "darray" If "round" is greater than zero, the elements are rounded up,
otherwise they are truncated.
Return 0
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 305
KVD Company Confidential
Return 0
Clocking
It is necessary to provide a coherent clock setup for these instruments. There are several possible clock
options that will satisfy the need for coherency: the PWS can provide the 'masterclock' for both
instruments, the PWD can provide the 'masterclock' for both instruments, or the digital subsystem (DSPIO)
can provide the 'masterclock' for both instruments. Since most DSP testing is mixed-signal in nature, the
most logical choice will be to use the DSPIO as the master clock for all instrumentation. For this discussion
the assumption is made that the DSPIO will provide an external clock for both PWS and PWD. This
document will not discuss the use of internal PWS and PWD clock generators.
Example
An example can best often illustrate instrument operation. The following example will show basic setup
and operation of the PWS and PWD. For this example the PWS will be setup to source a 1KHz sine wave.
Ideal Conditions
Standard Audio test setup
As always with DSP based test equipment, some assumptions are made for the ideal situation, and then
compromises are made:
This satisfies the max decimation_clk of 12.288MHz. Since the DSP Processor will run well at about
40Mhz, then the DIV ratio will be set to 4, giving roughly 10.24Mhz * 4 = 40.96Mhz master clock. Figure 9.1
shows the relationship between external clock (xclock_in) and the PWD clock.
xclock_in = 40.967742MHz;
The first compromise in DSP testing has been made, the exact ideal master clock of 40.96MHz is not quite
achievable, a close value is chosen.
With this master clock, the sample rate of the PWD will change somewhat from the ideal of 40KS/s. With
an xclock_in of 40.967742Mhz, and a divide ratio (DIV) of 4, the decimation clock will be 40.967742Mhz/4
= 10.241935Mhz. With a decimation (clock division) of 256, the final PWD sample clock will be as follows:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 307
KVD Company Confidential
Fswd = xclock_in/DIV/256:
This is very close to the ideal of 40000Hz, and will allow for frequency analysis out to 20003.78Hz. This will
satisfy the typical audio device specification of 20000Hz. Of course this approach has been simplified for
this example, but is also typical of the approach required for deriving clocks for DSP based systems.
Figure 9.2 shows a simplified relationship between the PWS sample clock and the master clock, in this
case xclock_in.
The sample rate of the PWS is determined by the xclock_in rate and the DSP "DAC" program as follows:
Since we will likely source with the WS at the same rate that we sampled with the WD, the assumption is
made as follows:
Fsws = Fswd = 40,007.56Hz, and since xclock_in is known to be 40.967742MHz, then the following is true:
This seems overly complicated, the logical question is: Why run a DSP program just to source a
waveform? Why not just divide the xclock_in and get the desired sample rate? This is a valid question and
will lead to the next topic - Direct Digital Synthesis. The DSP program is in fact very powerful and allows
the user to store a single nominal waveform (single cycle, full scale amplitude, for example) and use the
DSP program to manipulate frequency and final amplitude.
Ft / Fs = M / N
Where:
Ft = test frequency
This is a basic relationship that will be used for the remainder of the example. This example assumes that
the reader has some DSP test experience. There are several good references that detail these principles.
To continue with the example, the next step is to choose the number of samples that will make up the
source waveform (and typically the sampled waveform as well). Since the principles of Fourier analysis
dictate that we use 2^X number of samples, a good starting point is 1024 samples. To store a single cycle
of the waveform in memory, the following equation is used:
sample = sin(I*2*PI/N);
For the chosen value N=1024, a single cycle of 1024 points will be created. Now we can go back to the
equation:
Ft / Fs = M / N
If we step through the source memory point-by-point we will generate the following frequency:
Ft = Fs*M / N
Ft = 40,007.56*1/1024 = 39.06988 Hz
This is also known as the 'Fourier frequency', typically indicated as Ff . This will also be the frequency
resolution for sine wave generation as well as frequency spectrum analysis. We now have the basis for
completing the equation. Back to the example, the desired test frequency Ft is 1KHz. With the known
frequency resolution of 39.06988Hz, the next step will determine the actual test frequency:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 309
KVD Company Confidential
M = 1000/39.06988 = 25.6 ;
The principles of Fourier analysis state that M and N must be 'mutually prime', in other words M/N can not
be further reduced, or even simpler if N is always even, then M has to be odd. If for example we picked M
= 26, this would reduce as follows:
26 / 1024 = 13 / 512;
This simply states that if we were to generate 26 cycles of the 1024 point waveform, it is the same as
reducing the waveform to 512 points, and generating 13 cycles. Back to the example, the next logical
choice is M=25, this will give the following:
Ft / Fs = M / N ;
Ft = 40007.56 * 25 / 1024 ;
Ft = 976.747Hz ;
The next step is to determine how to generate this test frequency. Without Direct Digital Synthesis it is
certainly not difficult to generate this waveform. The equation that is used to generate the stored waveform
could be modified as follows:
sample = sin(I*2*PI*M/N);
Where M is the number of cycles. This is acceptable, but does not allow for much flexibility. If we needed
several different test frequencies, we would need to store a different waveform for each individual
frequency and amplitude.
sample = sin(I*2*PI/N);
This will allow the user to single step through the waveform memory and generate a sine wave, for our
example parameters this will generate a 39.069Hz signal. The desired test frequency is 25X this number,
and we can easily generate the correct Ff with DDS. The DSP program that is running in the PWS will
allow the user to indicate the memory address 'step rate'. In other words, instead of stepping through
memory point-by-point, we can skip points at a predetermined rate. For example we know that if we step
point-by-point we will generate a 39.069Hz signal. What happens if we skip every other memory location?
We will actually generate 2*39.096Hz = 78.139Hz! So if we go back to the original Fourier equation:
Ft / Fs = M / N ;
M=2
To generate our desired Ft = 976.747Hz, we simply have to cycle through the memory to every 25th
location, and we will generate our desired Ft.
The DSP program that runs in the PWS processor will also allow for us to modify the signal amplitude.
Conclusion
The intent of this document is to show some of the clocking and signal generation techniques used for
DSP test on the KVD test system. The user should understand these techniques prior to test program
generation.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 311
KVD Company Confidential
Waveform Source
There are two current versions of the Waveform Source, the original WS and the PWS (Precision
Waveform Source - originally described as the WS2000).
Functional Description
The KVD Test System is capable of generating arbitrary waveforms using the Waveform Source. This
source is a DSP based instrument comprised of three channels, 2 low frequency and 1 high frequency.
The low frequency ports are fully differential with adjustable offset and choice of 5KHz or 50KHz low pass
filtering. The high speed output is single ended and can be updated at speeds up to 30MS/S. The
waveform memory is 128K X 32 bits.
Control
The WS is controlled by the TI TMS320C32 DSP processor. The rate at which the processor runs
determines the update rate of the source. There are several clocking options for the WS. This clock can
originate internally or come from another system module including the system 12.5MHz clock, DSPIO
module, or WD module. The DSP processor allows for an important capability of the Waveform Source
called Direct Digital Synthesis (DDS). A single sine wave (or square wave) is stored in waveform memory.
This one waveform memory block can be used to source waveforms of varying frequency and amplitude
(including calibration factors) without modifying the waveform memory. This is a powerful feature that
minimizes waveform memory use and simplifies many housekeeping functions that are required of devices
that require many sine wave tests of varying amplitude and frequency.
WS Connections
In order to use the Waveform Source, the proper connections must be made. Below is a list of typical
connections.
Connection Description
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 313
KVD Company Confidential
Connection Description
Pinouts
Connections between the WS module and the Father Card are made through a 33 pin Hypertronics
connector. Below is a listing and description of the connections.
WS->clock (<source>,<destination>);
Setup the sample clock for the WS.
Note: To operate, the WS instrument must have a clock source connected to TICLK.
The input to WS pll is designated REFCK0
the output from WS pll is designated PLLMCLK0.
WS->init ( )
Initialize the WS.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 315
KVD Company Confidential
WS->reset ( )
Reset the WS.
WS->pllbits ( <numerator>,<denominator>,<divisor>)
Set up the WS PLL.
WS->xclkoutfreq (<frequency>);
Return value of WS output clock frequency.
WS->offset ( <ws>,<offset>)
Set the WS output offset voltage.
Effect: Sets the post DAC low-pass filter for the WS channel. The HFWS does not
have a filter option.
Prototype: unsigned filter(WSTYPE ws, WSFILTER fil);
Note: No filtering in the high frequency source. It is strongly recommended that if
filtering is required, the WS is amplitude calibrated with the same filter setting.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 317
KVD Company Confidential
WS->atten (<source>,<attenuation>)
Set the WS output attenuation
Effect: Sets the post DAC signal attenuation. The attenuation settings are 0dB, 20dB,
40dB, and 60dB. There is no attenuation on the high frequency source. The
setting applied is the greatest value which is less than or equal to
<attenuation>.
Prototype: unsigned atten(WSTYPE ws, double atten);
Note: No filtering in the high frequency source. Although it is possible to use nominal
attenuation settings, it is strongly recommended that the WS attenuators be
calibrated at some time during UserClass >LotInit.
WS->store_sine16bit_hs (<address>,<length>,<amp>,<offset>)
Store a hs source waveform.
WS->store_ramp20bit (<address>,<length>,<amplitude>,<offset>)
Store a source waveform.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 319
KVD Company Confidential
Precision WS
The PWS (Precision Waveform Synthesizer) is an improved version of the KVD Arbitrary Waveform
Synthesizer, with updated converters and programmable filters.
The PWS offers two low frequency output channels, each using a 24-bit DAC as the basic building block,
and a high frequency channel offering 16 bit resolution. Waveform memory is 256K 32-bit words, and 256K
of 8-bit NVRAM to store code for the on-board TI DSP processor.
Programmable output filtering for the low frequency channels is provided by a daughter board. Low
frequency output voltage limits are ± 5V, but application circuits can significantly extend that range if
necessary, with a maximum sample clock frequency of 768KHz. The High frequency output channel offers
± 2V, with a maximum sample clock of 30MHz.
Clocking can be internal, or synchronized with other instruments such as the DSPIO Digital Subsystem, or
any of the available Waveform Digitizers.
Number of Output 2
Channels
Resolution 24 bits
Voltage Range ± 5V
Maximum Sample 768Khz
Rate
PWS Commands
Connection
Clocking
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 321
KVD Company Confidential
Filter/Level(DC)
General
short reset(void);
unsigned init(void);
Parameters:
Parameters:
Parameters:
Parameters:
Parameters:
Parameters:
Parameters:
Parameters:
Parameters:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 323
KVD Company Confidential
Parameters:
Parameters:
Parameters:
Parameters:
Note: This is an on-board clocking option. Typically the DSPIO will be used to clock the PWS board, and
it will not be necessary to set this clock.
unsigned dds_reset(void);
Parameters:
None
Parameters:
Note: Changes all programmed clock connections back to the on-board defaults if resetvalue>0. Set this
to 1 before calling PWSx->reset(); if you want to default the DC conditions but leave the clocking
intact.
double xclkoutfreq(void);
Parameters:
None
Returns the value of the external clock output on a PWS board. This is only necessary if the PWS board is
serving as the master clock for other instruments (DSPIO, PWS, PWD etc).
Parameters:
double freq
Note: Must do this so the DDS clocking is set up correctly by having the correct DACLOOP setting
programmed.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 325
KVD Company Confidential
Parameters:
Example:
PWS0->clock(XCLKIN, TICLK);
PWS0->clock(H1, DAC1CLK);
Parameters:
Parameters:
Note: Setting the filval to 0.0 will apply NO FILTER to the PWS output, all other settings will round up to
the next logical choice.
Example:
Filval = 0 NO FILTER
Filval = 1 to 1250 1250Hz LPF
Filval = 1250 to 2500 2500Hz LPF
Filval = 2500 to 5000 5000Hz LPF
Filval = 5000 to 12500 12.5Khz LPF
Filval = 12500 to 25000 25Khz LPF
Filval = 25000 and beyond 50Khz LPF
Parameters:
Parameters:
Note: Sets a PWS output channel to a steady state DC level. This will also stop any TI program that is
running in the PWS DSP processor.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 327
KVD Company Confidential
short reset(void);
Parameters:
None
short init(void);
Parameters:
None
Waveform Digitizer
There are two current versions of the Waveform Digitizer, the original WD and the PWD. The WD is
described first.
Functional Description
The KVD Test System is capable of digitizing arbitrary waveforms using the Waveform Digitizer. The WD is
a DSP based instrument comprised of 2 analog channels, 1 low frequency and 1 high frequency. The
current WD also has a direct digital input 'channel' that can be used to send digital data to memory and the
DSP processor. The low frequency port is fully differential with adjustable offset and choice of 5KHz or
50KHz low pass filtering. The high speed input is single ended and can be sampled at speeds up 30MS/S.
The digital port is currently used for testing CMOS imager devices. The waveform memory is 1M X 32 bits
of SRAM.
The WD is controlled by the on-board TI TMS320C32 DSP processor. The rate at which the processor
runs determines the speed of calculation. There are several clocking options for the WD. This clock can
originate internally or come from another system module including the system 12.5MHz clock, DSPIO
module, or WS module. These clocks will be discussed in detail in a later section.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 329
KVD Company Confidential
WD Connections
In order to use the Waveform Digitizer, the proper connections must be made.
Connection Description
Pinouts
Connections between the WD module and the Father Card are made through a 33 pin Hypertronics
connector. Below is a listing and description of the connections.
Effect: Starts the waveform digitizer. The sample clock must be running.
Prototype: short start(RESOURCE ws, DSPTEST x);
WD->clock (<source>,<destination>);
Set up the sample clock for the WD.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 331
KVD Company Confidential
Effect: Connects the appropriate clock resources for sampling the WD input signal,
running the WD DSP processor, and driving an external clock to other system
resources (WS, DSPIO) for system synchronization.
WD->init
Initialize the WD.
Effect: Allocates the necessary memory for the WD_context structure. This routine is
called during system boot and need not be called by the user. It is called by the
system command UserClass >SystemInit()
Prototype: unsigned init(void);
WD->reset
Reset the WD.
Note: This function is called after each DUT from the system function reset_hardware.
WD->xclkinfreq (<frequency>)
Set the WD input clock frequency.
WD->xclkoutfreq (<frequency>)
Return value of WD output clock frequency.
WD->offset (<source>,<offset>);
Set the WD input offset voltage.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 333
KVD Company Confidential
WD->filter (<source>,<filter>);
Set the WD input filter.
Effect: Sets the pre ADC filter for the appropriate WD channel. There is no filtering or
conditioning of any type in the HFWD path.
Prototype: unsigned filter(WDTYPE wd, WDFILTER fil);
Note: No filtering in the high frequency path. It is strongly recommended that if filtering
is required, the WD is amplitude calibrated with the same filter setting.
WD->gain (<source>,<gain1>,<gain2>)
Set the WD input gain.
Effect: Sets the input gain stages for the WD channel. There are 2 gain stages that are
cascaded together. The final gain setting will be in the range of 1 to 64. Note
there is no gain conditioning for the HFWD input.
Prototype: unsigned gain(RESOURCE ws, double gain1, double gain2);
Note: No gain setting in the high frequency path.
Value range: (less than 2.5MHz) (less than clock rate / 16)
Effect: Sets clock and sample rate for the low frequency WD paths. The clock rate
must not exceed 2.5MHz and the sample rate must be no greater than the clock
rate / 16. The actual setting will be determined by the input clock frequency.
Prototype: unsigned lfadc(double adcclock, double srate);
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 335
KVD Company Confidential
Precision WD
The PWD (Precision Waveform Digitizer) is an improved version of the KVD Waveform Digitizer, with
updated converters and programmable filters.
The PWS offers four low frequency input channels, each using a 20-bit DAC as the basic building block.
Waveform memory is 256K 32-bit words, and 256K of 8-bit NVRAM to store code for the on-board TI DSP
processor. Built-in DSP routines include FFT,SNR,THD,THD+N.
Programmable low-pass filtering for the input channels is provided by two daughter boards, along with
various gain stages. Basic input voltage limits are ± 2.5V, but application circuits can significantly extend
that range if necessary. Maximum sampling frequency is 48KHz.
Clocking can be internal, or synchronized with other instruments such as the DSPIO Digital Subsystem, or
any of the available Waveform Synthesizers.
Gain Selections
Stage 1 1x or 10x
Stage 2 1x,2x,4x or 8x
Stage 3 1x or 16x
Offset Control ± 2.5v 20 bits
AC Instruments Precision WD
Input Differential
Signal to Noise > 100db
Data Acquisition Dedicated State
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 337
KVD Company Confidential
PWD Commands
Connection
Clocking
General
short reset();
short start(pLFWD_Chan channel,short numpts);
short stop();
short wait();
Filter/Level(DC)
Parameters:
Note: Allows the user to connect various tester instruments to a PWD channel input. These resources
include GND, the Keithley meter, MPDS[0], or the interconnect bus (IC1A4).
Parameters:
Connects the input of a WD Channel to the outside world (need to do both for a differential measure).
Parameters:
Parameters:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 339
KVD Company Confidential
Parameters:
Note: This is an on-board clocking option. Typically the DSPIO will be used to clock the PWD board, and
it will not be necessary to set this clock.
short dds_reset();
Parameters:
None
Parameters:
Note: Changes all programmed clock connections back to the on-board defaults if resetvalue>0. Set this
to 1 before calling PWDx->reset(); if you want to default the DC conditions but leave the clocking
intact.
Parameters:
Parameters:
Example:
PWD0->clock(pLFWD_XIN, pLFWD_TICLK);
PWD0->clock(pLFWD_XIN, pLFWD_ADC4CLK);
PWD0->clock(pLFWD_XIN, pLFWD_SMCLK);
Note: There are many clocking options, allowing for configurations that may not make sense; choose
wisely (follow the example).
Parameters:
short reset(void);
Parameters:
None
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 341
KVD Company Confidential
Parameters:
Note: This will start the capture of a number of samples on a PWD channel (assuming the clocks are
running).
short stop(void);
Parameters:
None
Note: This will stop the capture of all PWD channels, even if the clocks are running and the channels are
in the process of storing captured data.
short wait(void);
Parameters:
None
Parameters:
Parameters:
Note: Setting the filval to 0.0 will apply NO FILTER to the PWD input, all other settings will round up to
the next logical choice.
Example:
filval = 0 NO FILTER
filval = 1 to 1250 1250Hz LPF
filval = 1250 to 2500 2500Hz LPF
filval = 2500 to 5000 5000Hz LPF
filval = 5000 to 12500 12.5Khz LPF
filval = 12500 to 25000 25Khz LPF
filval = 25000 and beyond 50Khz LPF
Parameters:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 343
KVD Company Confidential
Parameters:
LOG Object
TLOG
The TLOG class is implemented through the object LOG. This class contains an enormous number of
functions that are useful to the test engineer. Theses functions range from loading run time conditions (bin
files, limits files) to tracking the state of the test flow.
LOG->CurTestNum
Always contains the current test number. Auto incremented after call to KVD->Test command.
unsigned CurTestNum;
LOG->DataToEventLog
Setting this to true redirects datalog strings from the Engineering screen to the CBuilder IDS's Event Log
bool DataToEventLog;
LOG->DisableAlarms
default = false. When set to true, allows the KVD->Test command to determine failures that include source
alarms.
bool DisableAlarms;
LOG->EngineeringMode
Parameter set by reading the Customer Preferences.
bool EngineeringMode;
Description:
When true, this causes the datalogs to show profiling test times.
LOG->plottestnum
Variable to set to activate the automatic plotting of the last measvm statement.
System Software 5.0.5 or Higher— M-Series Test System Programming and Operations 345
KVD Company Confidential
int plottestnum;
LOG->SystemMsgToEventLog
Setting this to true redirects system message strings from the status portion of the main screen to the
CBuilder IDS's Event Log.
bool SystemMsgToEventLog;
LOG->ActiveWaferTesting
Read only property.
Description:
LOG->ApplicationName
Read only property.
Description:
LOG->BadDieCount
Read only property.
Description:
Returns the current total number of failed devices for this test run.
LOG->BinFileName
Read only property.
Description:
LOG->Comment
Read/Write property.
Description:
Sets or Returns the Comment field that appears in the various data files.
LOG->ComputerName
Read only property.
Description:
LOG->DatalogFileName
Read/Write property.
Description:
LOG->DataPath
Read/Write property.
Description:
Sets or Returns the file path used for all data files.
LOG->Default_LOT_DataFileName
Read/Write property.
Description:
Sets or Returns the BASE name applied to all lot data files (HIST, TDA, SUM, and LOG).
LOG->Default_SUBLOT_DataFileName
Read/Write property.
Description:
Sets or Returns the BASE name applied to all sublot data files (HIST, TDA, SUM, and LOG).
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 347
KVD Company Confidential
LOG->DUTSN
Read/Write property.
Description:
Sets or Returns the current serial number for the Device Under Test.
LOG->EnablePrintDatalogFile
Read/Write property.
Description:
Enables (true) and disables (false) the automatic printing of DatalogFile files.
Example:
LOG->EnablePrintHistogramFile
Read/Write property.
Description:
Enables (true) and disables (false) the automatic printing of Histogram files.
Example:
LOG->EnablePrintSummaryFile
Read/Write property.
Description:
Enables (true) and disables (false) the automatic printing of Summary files.
Example:
LOG->EnablePrintTDAFile
Read/Write property.
Description:
Enables (true) and disables (false) the automatic printing of TDA files.
Example:
LOG->FileDatalogAll
Read/Wite property.
Description:
LOG->FileDatalogFails
Read/Wite property.
Description:
LOG->FileDatalogOff
Read/Wite property.
Description:
LOG->FileSampleNum
Read only property.
Description:
When this number is equal to the File Sample Size, a datalog is generated.
LOG->FileSampleSize
Read/Wite property.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 349
KVD Company Confidential
Description:
Use this field to set the sample size rate for device data being logged to the file.
LOG->FirstTestNum
Read only property.
Description:
LOG->FixtureID
Read/Write property.
Description:
Sets or Returns the FixtureID that appears in the various data files.
LOG->GoodDieCount
Read only property.
Description:
Returns the current total number of good devices for this test run.
LOG->HandTestModeActive
Read only property.
Description:
Returns true if the operator has activated the hand test form.
LOG->Job
Read/Write property.
Description:
Sets or Returns the Job Name that appears in the various data files.
LOG->LastDatalogString
Read only property.
Description:
If in NoDataCollection mode, returns the last datalog string produced by the KVD->Test command.
LOG->LastTestNum
Read only property.
Description:
LOG->LibraryVersion
Read only property.
Description:
LOG->LotNumber
Read/Write property.
Description:
Sets or Returns the Lot Number path used for all data files.
LOG->LotNumber
//Set the lot number
LOG->LotNumber="12345678";
//now read it back into a variable
AnsiString lotnum=LOG->LotNumber;
LOG->NoDataCollection
Read/Write property.
Description:
Allows the user to perform tests, but does no record any of the data collected.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 351
KVD Company Confidential
LOG->OperatorID
Read/Write property.
Description:
Sets or Returns the OperatorID that appears in the various data files.
LOG->ParameterFileName
Read only property.
Description:
LOG->RuntimeLevel
Read only property.
Description:
Returns flags that indicate the run time level of the program.
LOG->SavedDatalogFileName
Read only property.
Description:
LOG->ScreenDatalogAll
Read/Wite property.
Description:
LOG->ScreenDatalogFails
Read/Wite property.
Description:
LOG->ScreenDatalogOff
Read/Wite property.
Description:
LOG->ScreenSampleNum
Read only property.
Description:
When this number is equal to the Screen Sample Size, a datalog is generated.
LOG->ScreenSampleSize
Read/Wite property.
Description:
Use this field to set the sample size rate for device data being logged to the screen.
LOG->StartedByKVDLauncher
Indicates true when the application was started by a KVD Launcher app.
LOG->StartLotTime
Read only property.
Description:
Returns the date and time that the lot was started.
LOG->StopFF
Read/Write property.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 353
KVD Company Confidential
Description:
Also known as Fast Binning. Set to true to enable fast binning. Set to false to disable fast binning. Read
this property to determine the fast binning mode.
LOG->TesterID
Read/Write property.
Description:
Sets or Returns the TesterID (ComputerName) that appears in the various data files.
LOG->UploadDataPath
Read/Write property.
Description:
Sets or Returns the path that all data files will be uploaded to.
LOG->UsingCustomDataDLL
Read only property.
Description:
Flag that indicates whether a custom data DLL is being used or not. This field is set only by enabling the
option in the customer preferences tool.
LOG->UsingDeviceHandler
Read only property.
Description:
Flag that indicates whether a device handler/prober DLL is being used or not.
LOG->WaferDescFileName
Read/Write property.
Description:
LOG->WafermapColorsFileName
Read only property.
Description:
LOG->WafermapDescFileName
Read only property.
Description:
LOG->WaferMapX
Read/Write property.
Description:
For Wafer testing only. Returns the last wafer X position reported by the prober.
LOG->WaferMapY
Read only property.
Description:
For Wafer testing only. Returns the last wafer Y position reported by the prober.
LOG->WaferNumber
Read/Write property.
Description:
Sets or Returns the Lot Number path used for all data files.
Example:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 355
KVD Company Confidential
LOG->WaferTestFlow
Indicates true when the application is testing wafers, false for package test see options in Customer
Preferences Tool.
LOG->AddLimitUnit
Adds a new unit to the units array.
Parameters:
AnsiString name
The name of the unit. This is the same name that will be used in the limits file.
double value
Returns:
0 - indicates that the unit could not be added to the list. a value greater than 0 indicates success.
Description:
The user can add their own units (an essentially unlimited number) if they so desire.
The only requirement is that the call to AddLimitUnit occur before you load the limits file, otherwise the load
will fail. KVD suggests that you put the call for AddLimitUnit in your TUser::SystemInit section.
LOG->AddUserComment
Allows the user to add comments that will show up on the data file headers
Parameters:
AnsiString name
The name will be the portion that shows on the left side of the header.
AnsiString desc
Description:
This field allows the engr to add there own comments to the data file headers. It is the responsibility of the
programmer to clear the list. That is, comments added during one wafer will carry to the next wafer unless
cleared.
LOG->ClearUserComments
Clears all previously added comments
void ClearUserComments();
LOG->CurrentBin
Returns the Current bin of the device under test.
Parameters:
short sitenum = 0
Returns:
Returns the current bin for the DUT for the sitenum passed in. Value will be 0 - 63 A value of 0 indicates an
error occurred in a binning process somewhere during the test flow.
Description:
If no sitenum is passed into the function, it defaults to site 0 which is valid for all single site testing.
LOG->DatalogComment
Allows user to send strings to datalog reports.
Parameters:
AnsiString s
Description:
Use this function to enter your own strings/comments into the datalog report. The string is entered at
position when it is called.
LOG->DeleteWaferData
Deletes a previously saved binary wafer map file.
bool DeleteWaferData();
Returns:
Description:
Uses the wafer number, lot number as the filename. The extension is .rtl
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 357
KVD Company Confidential
LOG->DownGrade
Used to downgrade a device from its current PASSING bin to the next PASSING bin. Description:
Parameters:
short sitenum
LOG->ExecuteProgram
Executes an external program specified by the cmd parameter.
Parameters:
HWND hwnd
String cmd
LOG->FindWaferData
Locates a previously saved binary wafer map file.
bool FindWaferData();
Returns:
Description:
Uses the wafer number, lot number as the filename. The extension is .bwm
LOG->GetLimitsEntry
Returns a LIMITS_STRUCT containing all the limits info for this test number.
LOG->GetPassBinSite
Used to retrieve the passbin for one site.
Parameters:
short sitenum = 0
LOG->IsFailing
Used to determine if the DUT is currently failing.
Parameters:
short sitenum = 0
Returns:
LOG->IsPassing
Used to determine if the DUT is currently passing.
Parameters:
short sitenum = 0
Returns:
LOG->test_fail[tn]
Changes made so that the field LOG->test_fail[tn] works as before. Billk is believed to be the only one who
uses it. The problem he was having was that this field was buffered, and yet he reads it/needs it in real
time.
LOG->IsValidBin
Used to determine if the DUT's current bin is valid.
Parameters:
short sitenum = 0
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 359
KVD Company Confidential
Returns:
Returns true if the DUT has a current bin that was listed in the BIN description file
LOG->load_bin_data
Loads a bin description file.
Description:
Bin description files specify the bin numbers, whether they are pass or fail bins and maximum allowed
consecutive fails, or overall fails. Please read the HOW TO file "How to Setup a BIN File" for more
information.
LOG->load_extlimits_data
Function that loads a limits file created with the Extended Limits Editor. Description: This function differs
from the load_limits_data in the sense that it supports files created with the Extended Limits Editor, that is,
it supports multiple limits per test.
Parameters:
AnsiString filename
LOG->load_limits_data
Function that loads a limits file NOT created with the Extended Limits Editor Description: This function
loads limits data created in the older style format. That format was supported by the original Limits Editor,
not the Extended Limits Editor.
Parameters:
AnsiString filename
LOG->load_waferdesc_file
Loads a wafer description file.
Parameters:
AnsiString filename
Returns:
otherwise 0.
Description:
Wafer description files can be generated automatically by using the M310direct tool. These files have the
min and max values for the rows and columns in the map, as well as the map layout for testable die, inked
die, skipped die, and untestable die.
LOG->load_wafermap_colors
Loads a wafer map colors file.
Description:
Wafer map colors files contain the colors used in the wafermap display. For more information on this, see
the HOW TO file, "Creating Wafer Map Description and Color Files".
LOG->LoadCustomerPrefFile
Loads a previously save Customer Preferences Config file.
Parameters:
AnsiString filename
Returns:
Description:
Use the customer preferences tool to configure your options, and then save the file. Then, use this
command to load those preferences.
LOG->TestInProgress
Allows the user to display a TEST IN PROGRESS splash screen with their own message.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 361
KVD Company Confidential
Description:
By sending in a string, the splash screen will be displayed with that string as the message. By sending in
an empty string (""), the splash screen is removed.
LOG->UserGenDatalog
LOG Example 1
Parameters:
REPORT_DESTINATION dest
AnsiString filename = 0
Only valid if destination is TOFILE. Must include path, filename, and extension
Description:
Datalogs are normally generated at LOT end. This function can be called anytime during the program flow
to generate the datalog immediately.
Example:
LOG->UserGenHistogram
User function to generate histograms from program control.
Parameters:
REPORT_DESTINATION dest
AnsiString filename = 0
Only valid if destination is TOFILE. Must include path, filename, and extension
Description:
Histograms are normally generated at LOT end. This function can be called anytime during the program
flow to generate the histogram immediately.
Example:
LOG->UserGenSummary
User function to generate summaries from program control.
void UserGenSummary(REPORT_DESTINATION dest, AnsiString filename = 0);
Parameters:
REPORT_DESTINATION dest
AnsiString filename = 0
Only valid if destination is TOFILE. Must include path, filename, and extension
Description:
Summaries are normally generated at LOT end. This function can be called anytime during the program
flow to generate the summary immediately.
Example:
LOG->UserGenTDA
User function to generate TDA report from program control.
Parameters:
REPORT_DESTINATION dest
AnsiString filename = 0
Only valid if destination is TOFILE. Must include path, filename, and extension.
Description:
TDA reports are normally generated at LOT end. This function can be called anytime during the program
flow to generate the TDA file immediately.
Example:
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 363
KVD Company Confidential
//this line generates the TDA report and send directly to the printer
LOG->UserGenTDA(TOPRINTER);
KVD Object
KVD->UserParamFileName
Contains the filename of the Users Parameters File.
AnsiString UserParamFileName;
KVD->CalibrateAll
Runs the calibration program in automatic mode, which runs all calibrations.
void CalibrateAll();
KVD->CalibrateMenu
Runs the calibration program in normal user mode.
void CalibrateMenu();
Description:
The calibration program runs as normal. The user will need to run the various calibrations and exit the
program before it returns to the calling process.
KVD->DaysSinceLastCal
Returns the number of days since the last calibration was completed.
double DaysSinceLastCal();
KVD->HoursSinceLastCal
Returns the number of hours since the last calibration was completed
double HoursSinceLastCal();
KVD->LoadConfig
Loads a configuration file using the TCT tool.
Parameters:
AnsiString filename
This is the name of the configuration file. You do not need to put in a path or extension.
Returns:
Description:
Different test head configurations can be saved from the TCT. It automatically saves them in the TCT
folder, with a tct_config extension. The test engineer can make sure that their configuration is loaded by
loading it with this command.Normally this is handled by the Setup File Tool .ini file, but can be overridden
by the test engineer.
KVD->ReadLauncherString
Returns strings sent in through the use of KVD Launcher.
Returns:
Description:
This function differs from the function ReadParameterString in that it returns parameter values that were
set up in the KVD Launcher interface. Typically these parameters are the OperatorID and the LotNumber.
KVD->ReadParameterString
Returns the requested parameter from the parameter file.
Returns:
If file does not have the requested parameter, returns ERROR_PARAM_DOES_NOT_EXIST for file.
Description:
This function opens up the parameter file specified by the UserParamFileName. If the file exists, and the
parameter exists, it returns the parameters value as a AnsiString. If the file does not exist, or the parameter
does not exist, it returns an ERROR string (see Return Values).
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 365
KVD Company Confidential
KVD->SelectView
Command that allows the user to select which page is the viewable page on the main form.
Parameters:
int pagenum
An integer that corresponds to the page 0 - Chart View 1 - Engineering View 2 - Test Statistics View 3 -
Wafer Map View.
KVD->Test
Compares the last result to the current test limits.
short Test(void);
Returns:
Description:
This is the routine that is called to verify a pass/fail condition. The SITE->lastresult value is compared to
the limits for the current test number, for a singlesite program. After the compare, the datalog line is
generated and test counters are updated.
KVD->TestNoFail
Compares the last result to the current test limits. DOES NOT GENERATE FAIL INFORMATION.
short TestNoFail(void);
Returns:
Description:
This routine is identical to the Test function, except all fail information is not generated. For more
information, see the Test function, but remember that no fail information is generated.
KVD->tnum
Sets the current test number.
Parameters:
unsigned number
Returns:
Description:
Sets the LOG->CurTestNum variable. This then determines the limits to use for testing.
KVD->UserComment
Adds a comment line to the Engineering View.
System Software 5.0.5 or Higher —M-Series Test System Programming and Operations 367
KVD Company Confidential
Test Head
Test Head enclosure is approximately 14” X 14” X 7” (deep), (36 cm X 36 cm X 18 cm) and weighs
approximately 25 pounds (11Kg) depending on configuration. Two sides may be used for mounting
brackets. Other two sides contain fans.
The customer is responsible for adapting and connecting the test head instruments outwards to
their device under test, using device sockets or probers as needed by the device type. In no
circumstances shall the customer connect an outside source of power inward to the test head
through an external circuit.
Power
The test system requires a protected circuit rated at 16 Amps of 100-240VAC single-phase power., 50 or
60 Hz. The customer must provide overcurrent protection in the form of a circuit breaker or fuse to satisfy
all local regulations.
The AC Power cord is a flexible assembly that extends from the upper rear of the cabinet a minimum of
four feet (122 cm) . The male cord end plug is a NEMA L6-20P standard
Environmental:
The environment must be maintained at 20-30 Degrees Celsius, and 20%-80% non-condensing humidity,
operating altitude less than 6500 ft (2000 m). Calibration will be held within specification for a time period
of one week, or a temperature drift of 3º C., from the previous calibration, provided the system is allowed
30 minutes warm-up time to come to thermal equilibrium with its environment.
System Software 5.0.3 or Higher— M2 Test System Programming and Operations 369
KVD Company Confidential
This data sheet has been carefully checked and is believed to be reliable, however, no responsibility is
assumed for possible inaccuracies or omissions. All specifications are subject to change without notice
System Software 5.0.3 or Higher— M2 Test System Programming and Operations 371
KVD Company Confidential
System Software 5.0.3 or Higher— M2 Test System Programming and Operations 373
KVD Company Confidential
Index
A DMCH[x]->fmt 8-235
AC power 3-50 DMCH[x]->force 8-223
Administrative commands 7-169 DMCH[x]->forceenable 8-223
DMCH[x]->forcemode 8-223
B DMCH[x]->format 8-235
Batteries DMCH[x]->imeter 8-228
Caution 2-41
DMCH[x]->irange 8-227
C DMCH[x]->keepalive 8-237
Cautions 1-31, 2-37 DMCH[x]->l1abus_con 8-231
Chemicals 2-42 DMCH[x]->l1abus_discon 8-232
Clamps 7-137, 7-168 DMCH[x]->ldenable 8-229
Current ranges 7-167 DMCH[x]->load 8-229
Custom data DLLs 6-86 DMCH[x]->loaddisable 8-229
Customer Preferences Tool 6-77 DMCH[x]->measfreq 8-238
DMCH[x]->measvm 8-229
D DMCH[x]->pmuenable 8-226
Datalog Control Page 6-83 DMCH[x]->seti 8-227
Datalogs 6-102, 6-124 DMCH[x]->SetSiteMode 8-222
Devices 1-35 DMCH[x]->setv 8-227
DIGMOD[x]->dcap_read 8-252 DMCH[x]->start 8-235
DIGMOD[x]->dcap_setup 8-252 DMCH[x]->start_measfreq 8-238
DIGMOD[x]->ddrv_load 8-252 DMCH[x]->stop 8-236
DIGMOD[x]->ddrv_setup 8-252 DMCH[x]->tmucon 8-237
DMCH[x]->abus_con 8-230 DMCH[x]->trm 8-226
DMCH[x]->abus_discon 8-231 DMCH[x]->trmenable 8-226
DMCH[x]->cmplevel 8-224 DMCH[x]->tset 8-235
DMCH[x]->cmpstart 8-236 DMCH[x]->vih 8-225
DMCH[x]->cmpstop 8-236 DMCH[x]->vil 8-225
DMCH[x]->dcmp 8-234 DMCH[x]->vmeter 8-228
DMCH[x]->dcomp 8-235 DMCH[x]->voh 8-225
DMCH[x]->dfmt 8-234 DMCH[x]->vol 8-225
DMCH[x]->dig_con 8-230 DMCH[x]->vrange 8-228
DMCH[x]->dig_discon 8-230
DMCH[x]->disable 8-223 E
DMCH[x]->dka 8-237 Electrostatic discharge 2-41
DMCH[x]->dlevel 8-224 Engineering view 6-108
DMCH[x]->dtiming 8-232, 8-233 Ergonomics 2-42
DMCH[x]->dtiming_combine 8-233
F
DMCH[x]->enable 8-222
Force current 7-166
DMCH[x]->enastart 8-236
Force voltage 7-166
DMCH[x]->enastop 8-236
System Software 5.0.3 or Higher —M2 Test System Programming and Operations 375
KVD Company Confidential
System Software 5.0.3 or Higher —M2 Test System Programming and Operations 377
KVD Company Confidential
V
Vector 8-207
void TlogicAnalyzer::Run() 8-264
Voltage ranges 7-136, 7-167
W
Warnings 1-31, 2-37
Waveform Digitizer 9-329
Waveform Digitizer Hypertronics Pinout 9-331
Waveform Source 9-312
System Software 5.0.3 or Higher —M2 Test System Programming and Operations 379
KVD Company Confidential