M2 Test System
M2 Test System
Revision 4.0
For Revision 5.03 or higher Software Library
Copyright © July, 2006 KVD Company, Inc. All rights reserved.
KVD Company, Incorporated
2465 Impala Drive
Carlsbad, CA 92008
Phone 760-931-5085
Fax 760-931-5092
If you have any comments on this manual, please email them to [email protected]
For software bug reports and feature requests, please email [email protected]
Contents-1
M2 Test System Programming and Reference Manual
Contents-2
Table of Contents
Contents-3
M2 Test System Programming and Reference Manual
Contents-4
Table of Contents
Contents-5
M2 Test System Programming and Reference Manual
Contents-6
Table of Contents
VirtualHandlerClass......................................................................................................... 6-58
Test Program Automation................................................................................................ 6-58
Utilization Log File .......................................................................................................... 6-59
Wafer Mapping............................................................................................................... 6-59
Creating a Wafer Description File................................................................................ 6-59
Text Editor Method .............................................................................................. 6-59
M310Direct Method.............................................................................................. 6-60
Creating a Wafer Map Color File ................................................................................. 6-60
Loading the Wafer Description File ............................................................................. 6-61
Loading the Wafer Color File ...................................................................................... 6-61
Enabling Wafer Testing in the Customer Pref Tool ....................................................... 6-61
Delay Table.................................................................................................................... 6-61
send_value .................................................................................................................... 6-61
Setsites.......................................................................................................................... 6-62
Multisite Development..................................................................................................... 6-62
Multisite Testing........................................................................................................ 6-62
Limitations................................................................................................................ 6-64
Group Objects........................................................................................................... 6-64
Data Output Files ...................................................................................................... 6-64
SITE Object Control................................................................................................... 6-64
SITE >lastresult................................................................................................... 6-64
SITE >disable...................................................................................................... 6-65
SITE >enable ...................................................................................................... 6-65
SITE >IsActive .................................................................................................... 6-65
SITE >resetall ..................................................................................................... 6-65
SITE >set_default_sites ....................................................................................... 6-65
SITE >setsites ..................................................................................................... 6-65
SITE >sitemask ................................................................................................... 6-66
Resource Manager .......................................................................................................... 6-66
RMX Implementation............................................................................................ 6-67
Objects Created by the KVD Library ................................................................................. 6-67
BootTester .......................................................................................................... 6-67
K[0 thru 80] ........................................................................................................ 6-68
DDBUSA_TO_DDCH[NUMDDCHANNELS]; .............................................................. 6-68
DDDRV_TO_DDCH[NUMDDCHANNELS];................................................................ 6-68
TH ...................................................................................................................... 6-68
User-defined Forms for Production Operation ................................................................... 6-69
Contents-7
M2 Test System Programming and Reference Manual
Contents-8
Table of Contents
Chapter 8: DC Instruments
MPDCMOD (Octal DUT Source) .......................................................................................... 8-1
MPDCMOD Pictorial ..................................................................................................... 8-1
Functional Description ................................................................................................. 8-1
Physical Description..................................................................................................... 8-2
MPDCMOD Objects...................................................................................................... 8-3
Force Voltage.............................................................................................................. 8-3
Force Current.............................................................................................................. 8-3
Voltage Ranges ........................................................................................................... 8-4
Current Ranges ........................................................................................................... 8-4
Driver Improvements for Increased Reliability Since Release 5.02 ................................... 8-5
Voltage and Current Clamps......................................................................................... 8-5
Kelvin Connections ...................................................................................................... 8-5
Administrative Commands............................................................................................ 8-6
Measure ..................................................................................................................... 8-7
ABUS Connection to Digital Pins ................................................................................... 8-8
New MPDCMOD Functions ........................................................................................... 8-8
MPDCMOD and HPDCMOD Ranging Lockout.................................................................. 8-9
Readback Functions .................................................................................................. 8-10
MPDS[i] >actual_sample_rate............................................................................... 8-10
MPDS[i] >Exists................................................................................................... 8-10
MPDS[i] >mpdsirange .......................................................................................... 8-10
MPDS[i] >mpdsloopcomp ..................................................................................... 8-10
MPDS[i] >mpdsmode ........................................................................................... 8-10
MPDS[i] >mpdsval ............................................................................................... 8-10
MPDS[i] >mpdsvrange ......................................................................................... 8-10
Contents-9
M2 Test System Programming and Reference Manual
Contents-10
Table of Contents
Contents-11
M2 Test System Programming and Reference Manual
Contents-12
Table of Contents
Contents-13
M2 Test System Programming and Reference Manual
Contents-14
Table of Contents
Contents-15
M2 Test System Programming and Reference Manual
Contents-16
Table of Contents
Contents-17
M2 Test System Programming and Reference Manual
Contents-18
Table of Contents
Contents-19
M2 Test System Programming and Reference Manual
Contents-20
Table of Contents
Contents-21
M2 Test System Programming and Reference Manual
Contents-22
Table of Contents
Contents-23
M2 Test System Programming and Reference Manual
Contents-24
List of Figures
Chapter 1: Introduction and Overview
Help Menus.................................................................................................................................... 1-2
Help Window.................................................................................................................................. 1-2
M2 System..................................................................................................................................... 1-4
M2m Cabinet and Manipulator ......................................................................................................... 1-5
Dimensions of the M2m .................................................................................................................. 1-5
List of Figures-1
M2 Test System Programming and Reference Manual
List of Figures-2
List of Figures
List of Figures-3
M2 Test System Programming and Reference Manual
List of Figures-4
List of Figures
List of Figures-5
M2 Test System Programming and Reference Manual
Chapter 8: DC Instruments
MPDCMOD ..................................................................................................................................... 8-1
MPDCMOD DC Sources ................................................................................................................... 8-1
MPDCMOD Block Diagram With Software Commands ........................................................................ 8-2
Test Head Motherboard .................................................................................................................. 8-8
MPDCMOD User Voltmeter With Software Commands ..................................................................... 8-12
MPDCMOD I/O Pinout ................................................................................................................... 8-16
HPDCMOD Pictorial ....................................................................................................................... 8-17
HPDC Module Block Diagram with Software Commands................................................................... 8-18
HPDCMOD I/O Pinout ................................................................................................................... 8-24
Relay Matrix (RMX) Pictorial .......................................................................................................... 8-28
RMX Block Diagram ...................................................................................................................... 8-29
RMX I/O Pinout ............................................................................................................................ 8-35
List of Figures-6
List of Figures
List of Figures-7
M2 Test System Programming and Reference Manual
List of Figures-8
Chapter 1: Introduction and Overview
Purpose of the Manual
The M2 Test System Windows Programming and Operations Manual is intended to be a single reference
for this model of KVD ATE system. It is not designed to be an in-depth reference for the semiconductor
ATE universe, nor should it be used to gain an expert knowledge of mixed-signal DSP principles. Other
resources will be pointed out for obtaining this knowledge.
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 master on-line help file is located under the Start menu->KVD Help->KVD Library Help.
1-1
M2 Test System Programming and Reference Manual
Click on Symbol Reference if necessary to open the list. Then click on Classes to open a list of KVD
classes.
Select a class and open it, then click on members to obtain a list of functions in another window. Clicking
on a function will then display an explanation in the main help window.
This KVD Manual 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.
1-2
Introduction and Overview
Nomenclature
Here is a short list (by no means exhaustive) of acronyms and terms used in this manual which may be
unfamiliar.
• KVD - Kundrouf / Veitas / deHollan, the last names of the founders of the 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
• Borland - Vendor of C++ Builder, 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 manual 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 Manual 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.
1-3
M2 Test System Programming and Reference Manual
System Overview
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.
1-4
Introduction and Overview
Feature Summary
The M2 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.
1-5
M2 Test System Programming and Reference Manual
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 M2 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
CCD Comparators
ADC
RFID DAC
Oscillators
1-6
Introduction and Overview
Telecommunications Interface
Modems
DTMF Automotive
1-7
M2 Test System Programming and Reference Manual
1-8
Chapter 2: Safety and Regulatory Summary
Safety Statement
The general safety information in this summary applies to both Operators 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 manual 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.
Warning! Statements identify conditions or operations that could result in injury or loss of life.
Warning! Maintenance Instructions described in this manual are for use by trained and qualified staff
only. 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.
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.
Operator Safety
The general safety information presented in this summary is meant for both operators and service
personnel. Specific warnings and cautions will be found where they apply, but may not appear in this
summary.
2-1
M2 Test System Programming and Reference Manual
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 Keithley 2000 DMM 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.
Warning! There is a risk of an explosion of 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.
2-2
Safety and Regulatory Summary
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.
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:
2-3
M2 Test System Programming and Reference Manual
Do not operate the test system without this wire being attached securely at each end.
Ergonomic Statement
The KVD M2 test system includes the equipment cabinet, the test head, a CRT 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.
Ionizing Radiation
This system has no ionizing radiation hazards.
2-4
Chapter 3: Unpacking and Installation Guide
Physical Installation
Unpacking and installation will be performed by KVD service engineers or your local representative
distributor. Please do not uncrate or unpack the test system, or discard any packing materials, until the
authorized representative inspects for shipping damage and powers the system up successfully.
The test system weighs less than 500 pounds (225 Kg), so no special arrangements need to be made for
floor strength.
The M2 and M2m systems can pass through doors having 30" openings. Typically no special
arrangements need to be made for door or hallway passages.
Utilities
The test system requires a protected circuit rated at 15 Amps of 115VAC single-phase power. (+/- 10%),
50 or 60 Hz. 230VAC is available as an option. The customer must provide overcurrent protection in the
form of a circuit breaker or fuse to satisfy all local regulations.
Environmental
The environment must be maintained at 20-30 Degrees Celsius, and 20%-80% non-condensing humidity.
3-1
M2 Test System Programming and Reference Manual
3-2
Unpacking and Installation Guide
3-3
M2 Test System Programming and Reference Manual
3-4
Chapter 4: System Hardware
The Test System Cabinet contains the AC PDU, DC Power Supply Assembly, CPU, and the Calibrator
DMM.
The Test Head contains the test instrument boards, the motherboard, and the device-specific Fathercard.
An optional test head manipulator, if present, may be integrated as part of the main Cabinet or as a free-
standing unit.
4-1
M2 Test System Programming and Reference Manual
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.
4-2
System Hardware
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.
All AC power connectors are the international IEC standard for 15 Amp current. Internal relays limit the
PDU supply to 10 Amps for each bank of four output AC receptacles. As long as all four standard elements
of the test system are not plugged into the same bank, this limitation will not be exceeded.
Note: Line Voltage AC Power is totally contained within the Test System Cabinet, and is not brought out
to the Test Head. This enhances safety for the operator and maintenance personnel, as well as
lowering the power frequency noise level in the test head.
4-3
M2 Test System Programming and Reference Manual
4-4
System Hardware
The CPU contains a control circuit for a solid-state relay in 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 Keithley Calibrator measurement lines are routed through the test head cables for convenience.
4-5
M2 Test System Programming and Reference Manual
4-6
System Hardware
The following applies only to the original series of KVD power supplies, not the alternative Power Plus
supplies used in systems with DIGMOD instruments The PowerPlus supply is controlled via a USB
controller board.
Figure 4.10 shows how the DC control signal originates from the PCIDIS board in the CPU, passes
through the Power Monitor board in the Power Supply Assembly, and then goes to the test head. After
passing through the power switch in the test head, it loops through the three test head cables (to ensure
for safety that the test head power goes off if any of the three cables is disconnected) and ends up at the
Solid State Relay in the Power Supply Assembly. This SSR is designed to only turn on when the AC line
voltage is at zero, thus reducing to a minimum the inrush current to and the stress on the supplies.
4-7
M2 Test System Programming and Reference Manual
4-8
System Hardware
CPU Overview
Heavy-duty industrial enclosures are used to house the Pentium CPU, with front-integrated fans and filter
assemblies for maintenance ease.
Packaging
The CPU is slide-mounted in the main cabinet, and can be pulled forward for servicing, or removed for
heavier maintenance. Safety latches are part of the rails, and must be pushed aside to allow total removal.
Often, one latch must be pushed, and the CPU pulled forward slightly to make sure the latch does not lock
again while the other side is being unlatched. This is sometimes a challenging process - please do not
become frustrated.
Inside the CPU chassis are the motherboard, internal storage options, CPU power supply, and KVD add-in
boards.
4-9
M2 Test System Programming and Reference Manual
Motherboard
Various optional and add-in boards are installed by KVD according to customer configuration needs.
These could include video drivers, GPIB, serial communications, handler interface, and alternative network
boards.
Standard KVD boards include the high-speed data communication port to the Test Head. (PCIDIS)
4-10
System Hardware
PCIDIS
The PCIDIS (Personal Computer Interface - Digital Interface Standard) is used to communicate with the
instruments in the test head. The interface card is connected to the test head via a standard 50 pin SCSI
connector. This connector routes four sets of serial output buses and four sets of serial input buses
between the computer and the test head.
4-11
M2 Test System Programming and Reference Manual
The PCIDIS converts the address and data information on the CPU's PCI bus into serial data for
transmission to the test head. The PCIDIS contains four 12.5MHz serial buses for communications with the
test head. The first two serial buses are used for side 0 and 1 of the test head. The remaining two buses
are reserved for future development.
Data written from the computer to test head address 0x100 to 0x1FF is converted to serial words and
transmitted up the side 0 serial bus. Data written to address 0x200 to 0x2FF is transmitted serially through
the side 1 serial bus. Data written to address 0x300 to 0x3FF is converted to serial words and transmitted
to side 0 and side 1 simultaneously.
The PCIDIS card employs the use of field programmable gate arrays (FPGA) in implementing the digital
logic functions necessary to convert the PC parallel bus data to the SCSI serial bus format. The FPGA
resident on the PCIDIS must be loaded, or "booted", before the card can be used.
The legacy parallel handler interface board in the PC was called the HCIF.
The PHLIC card is the replacement for the HCIF card. The reason for this is due to the PC industry
discontinuing the ISA bus standard, which was used for the HCIF. The PHLIC card has many advanced I/
O features that will allow it to control a large variety of handler, probers and laser trimmers. Test programs
will not need to change, and peripheral control will be transparent as to whether the HCIF or PHLIC is in
use.
Features overview:
• PCI bus based for compatibility with future PC mother boards.
• 16 Inputs and 16 outputs, all optically isolated.
• 2 Isolated Interrupt sources for use in dual-site start test pulse capture.
• Isolated +5 Volt 100 mA power supply for driving opto isolators.
4-12
System Hardware
• 37 pin female D connector for easy cable connection, or custom adapters according to customer
preference to emulate other tester cable schemes.
• Complete software compatibility with HCIF handler drivers
• Additional features accessed through PhlicClass.cpp driver class
• PhlicChecker program allows full loopback testing of the card
• PhlicTool allows individual control of all I/O lines for diagnostics
Pending
CPU Features
4-13
M2 Test System Programming and Reference Manual
Peripherals
Communication
Since each customer's configuration may be slightly different, the implementation details are not
documented here.
Power Supplies
There are two series of supplies, depending on the system configuration. Previous to the DIGMOD
instrument availability, all supplies were a combination of linears and switchers mounted to a motherboard.
DIGMOD systems use what's called the PowerPlus supply, with two multiple-output switchers in a cabinet
with a USB controller.
4-14
System Hardware
The main DC Power Supply Assembly is contained in the same industrial housing as used for the CPU.
This allows for the same rack-mounting rails to be used, for ease of maintenance or adjustment.
Behind the left door on the front of the Assembly is a foam air filter, which should be inspected every
month, and cleaned as needed. When the filter is removed, check for proper operation of the one or two
cooling fans.
4-15
M2 Test System Programming and Reference Manual
With the top cover of the Power Supply removed, you can observe the various linear and switcher supplies
installed.
4-16
System Hardware
Distribution
The rear panel of the Power Supply contains connectors for AC power input, three circular connectors for
Test Head power cables, one control and communication cable to the CPU, and one to the Keithley
Calibrator.
Note: All five cables are differently-sized, eliminating any possible cabling errors.
X1 To Test Head
X2 To Test Head
X3 To Test Head
X4 Keithley Calibrator
X5 CPU Control
In the KVD tester, positive voltages are preceded with a P, and negative with an N. Examples: P5V (for
+5V), N12V (for -12V)
If the voltage has a decimal point, as in 5.2V, it is written as 5P2 to ensure that the decimal point is not lost
in multi-generational copying. Example: N5P2V (for -5.2V)
A supply used for analog circuits (with lower noise requirements than digital circuits) will have the suffix F,
standing for "filtered". Example: N15VF (for -15V 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 -20V to
+40V maximum. Not all power supply versions contain these rails.
4-17
M2 Test System Programming and Reference Manual
Fuses
There are various glass cartridge fuses contained inside the Power Supply Assembly in case of failures or
shorts.
4-18
System Hardware
4-19
M2 Test System Programming and Reference Manual
Certain power supplies also contain a resettable overtemperature circuit breaker, to guard against failure
of the cooling fans in the enclosure. If the power supply assembly shuts down, and it is not caused by
missing AC power, or any of the control circuits (test head power switch, front panel power switch, CPU
software control GUI), you should suspect the internal thermal circuit breaker.
Look for it inside the power supply, attached to the 5V supply in location 9 (usually). If tripped, you will
need to manually reset the central button, which will go back in with a click. It is not an automatic resetting
breaker, because it will only trip in case of a fault such as inoperative cooling fans, which you need to take
action inside the power supply to fix.
4-20
System Hardware
There are variations of the power supply assemblies for various customer configurations. All supplies
contain a line filter, SSR (solid-state relay) for remote control, input fuses where the line cord connects to
the rear panel, fan(s) for cooling, and a Power Monitor board that has features designed for future
enhancements to voltage monitoring and diagnostics.
4-21
M2 Test System Programming and Reference Manual
4-22
System Hardware
4-23
M2 Test System Programming and Reference Manual
4-24
System Hardware
4-25
M2 Test System Programming and Reference Manual
For support of new instruments, most importantly the DIGMOD high speed digital subsystem, we offer the
Power Plus power supply assembly, and a required upgrade test head assembly with improved cross-flow
air cooling. The test head contains at least eight fans (four on each side), but some configurations have as
many as 12. If you have an installation using a manipulator mount that could cover the test head side that
used to be blank, please contact KVD service for suggestions about mounting alternatives.
Note: TMU Minimum Rev "D" needed: for new PowerPlus power supply and test head systems.
TMU instruments of at least rev level "D" will be required for this configuration system.
• The obsolete P10V power bus, which was unused in earlier M2 test systems, now carries +24V. The
previous TMU circuit had components touching this power bus that were not rated for 24V, which had
to be removed.
• TMU ECL inputs from the motherboard DSPIO channels have better noise immunity with a modified
pull-up resistor value.
Currently the most used choice is the "PW" emulation mode, although low voltage rail selections such as
the 16V option will be used in the future.
4-26
System Hardware
DC Output Capabilities
Digital Supplies
+12V*: 50A|
-5.2V: 10A
+48V: 7.5A
Analog Supplies
+/- 20V: 8A
+/- 15V: 8A
+24V: 4A
+/- 12V: 1A
Control Features
• USB plug and play control from CPU
• X5 cable from CPU to Power Supply no longer needed.
• Status checking of AC-ready signals
• Remote switching (controlled by TCT - Tester Configuration Tool) between HV and LV instrumentation
supply rails. Selectable from three choices:
• 16V
• 24V
• 40V
Maintainability Features
• +5 and +12 cartridge fuses located inside enclosure. All others accessible behind front door by
maintenance staff.
• All supplies monitored by front panel indicators.
• Heartbeat LED in the "HDD" position of the enclosure will blink when the supply is under positive USB
control.
4-27
M2 Test System Programming and Reference Manual
4-28
System Hardware
Block Diagram
Pending completion.
4-29
M2 Test System Programming and Reference Manual
4-30
System Hardware
4-31
M2 Test System Programming and Reference Manual
4-32
System Hardware
4-33
M2 Test System Programming and Reference Manual
4-34
System Hardware
4-35
M2 Test System Programming and Reference Manual
4-36
System Hardware
This cable connects the Power Supply to the test head, and brings the cal bus and other control signals to
the motherboard.
• VMLO is the voltage cal bus, which various instruments connect to so the Keithley or Agilent DMM can
measure their outputs.
• VMLO4W is the current cal bus, routed to the DMM for measuring current sources.
4-37
M2 Test System Programming and Reference Manual
X2 - Analog DC Power
4-38
System Hardware
This connector carries analog DC power to the motherboard in the test head. SPR pins are spare, for
expansion or future custom use. ONOFFB and ONOFFC are used for the DC control signal, and detect if
this cable is unplugged to shut down the power supply.
X3 - Digital DC Power
This connector carries digital DC power to the test head motherboard. ONOFFD is a pin for the SSR
control signal, and ensures the power supply cannot be powered on if this cable is disconnected.
4-39
M2 Test System Programming and Reference Manual
The cal bus (Calibration Bus) signals are sent from the test head motherboard through the power supply
assembly. A Keithley 2000 or 2002 DMM option uses the X4 cable. If your configuration uses an HP/
Agilent 3458A DMM, a slightly different cable with banana plugs is in use.
4-40
System Hardware
Currently, the only active signal on this connector is the ONOFFA pin, which comes from the CPU PCIDIS
board, routes through many cables and the test head power switch, and ends up at the power supply SSR
to turn it on. If the power supply fails to power up, trace this signal to find the open circuit.
Systems using the PowerPlus supply will not have this cable, since power supply control is entirely USB-
based.
4-41
M2 Test System Programming and Reference Manual
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.
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 as well, so the father card
connections have more reliability than the typical pogo pin contacts.
4-42
System Hardware
Calibrator
For increased accuracy, 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.
Some father cards are designed with independent cable access to the meter, for use in real time test
programming. Some of these tests are sensitive enough that the presence of the cal cable injects noise
into the measurement. Thus when calibration is finished, the cal cable must be removed from the rear of
the Keithley 2002, or the front panel FRONT/REAR switch must be pushed (to select the FRONT inputs)
on a 3458A configuration. Selecting the wrong configuration will cause cal to fail in one case, or yield to fall
in the other case.
The front of the meter contains a series of mode and range setting buttons which provide manual access to
the various meter settings. The Keithley can be used as a standard voltmeter if the user provides the test
leads and presses the Local button which switches the Keithley out of remote mode.
The Keithley uses three inputs for calibration, a ground, a voltage input and a current input.
These three wires create the calibration bus which is routed from the test head through the mainframe
power supply and then to the Keithley. The instrument which is to be calibrated is connected to the
calibration bus and the meter is manipulated via the RS232 or GPIB port to make the appropriate
measurement.
Which port is used is typically set by the factory, and can be modified if necessary in the program called
the Tester Configuration Tool, or TCT. This is documented in the Production Environment chapter.
4-43
M2 Test System Programming and Reference Manual
The DMM acts as a NIST traceable calibrator for the instrumentation in the test head. For detailed
accuracy and drift characteristics, please see the Keithley manual, included with all system shipments.
Resolution 6 digits
Modifications
The Keithley voltmeter does not provide a current input port on the rear panel of the meter, which requires
KVD to remove the connections from the rear panel inputs and short the rear inputs to the front inputs. This
modification allows the use of the rear voltage and ground inputs and the front current input.
Note: Because of this change, the front/rear input switch, located on the front panel of the Keithley,
should be left to the "front" setting at all times. If it is changed, then the DUT sources will pass their
voltage cal, but fail all current range calibrations with zero for readings.
4-44
System Hardware
KVD also installs a separate internal fuseholder for the current cal bus input. In case of a failure to calibrate
all of the DC source's current functions, but the voltage cal is OK, this fuse is a suspect for going open.
Remove the Keithley from the system, then remove its cover, and check the fuse with an ohmmeter. A
proper replacement is 3A fast blow.
4-45
M2 Test System Programming and Reference Manual
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. The signal names of the cal bus are
VMLO for voltage cal, and VMLO4W for current. For the motherboard bus definitions, see “Motherboard
Bus Signal Definitions” on page 4-52.
During operation, the front panel of the Keithley DMM may display the readings as they happen, or they
may be suppressed for speed.
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 Motherboard is partitioned into two symmetrical sets of slots, called sides. SIDES are designed into
the package for convenience, but have nothing to do with the software concept of testing SITES, of which
the KVD can handle 32.
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.
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 a DC source and voltmeter module, a set of digital subsystem modules, a
waveform generator card and a waveform digitizing card.
4-46
System Hardware
Mechanical
Test Head is approximately 14" x 14" x 7" enclosure, with possible fan plenum extensions on certain
variants. The Test Head mechanics allow overhead probe mounting.
4-47
M2 Test System Programming and Reference Manual
Mother Boards
The Motherboard serves as a passive backplane for the test head modules. Located at the bottom of the
test head card cage, the Motherboard is a printed circuit board with up to 24 slots available to hold test
head instrumentation cards. The DC power cable connects directly to the Motherboard from the power
supply assembly located in the main tester cabinet.
The Motherboard as a test head backplane provides two primary functions. First, it connects the power
supply rails from the power connector(s) to the test head instrumentation modules. Secondly, it provides
interconnection traces between certain Motherboard card slots.
This is a test head without instruments, showing the Motherboard at the bottom.
4-48
System Hardware
This is the Motherboard without the enclosure, showing the DIN connectors used to connect to the
instrument boards, along with the symmetrical slot arrangement for the two sides. Slots 0 through 6 on
each side are designed for full-width instruments, using three DIN connectors; slots 7-11 are for single-
width instruments. There is normally a card guide surrounding the center hole, which can be used for
microscope access, or to house the LED illuminator for CMOS Imager test heads.
Test heads have two sides. Side 0 (Zero) is always on the end with the power cables. Side 1 (One) is away
from the power cables.
Side 0, Slot 0 (Zero) is dedicated to the exclusive use of the DISCONT Data Communication board.
4-49
M2 Test System Programming and Reference Manual
The other cable at the left of this photo is the communication cable from the CPU. It appears to be a
standard SCSI cable physically, but the signals are not SCSI. Do not ever plug in a SCSI data chain to this
connector or cable. You can also see the DC power switch to the right of the fan.
4-50
System Hardware
Analog and digital grounds are usually connected together at this point on the Motherboard, since they
need to be tied together somewhere to prevent them from drifting apart, and the system can be operated
and calibrated without a father card or DUT board.
This is a detailed close-up of the DIN connector. Inside the plastic ramp is a gold-plated metallic fork. In
case of a bent male pin on an instrument board, you may find damaged plastic ramps on the female side.
This is one place to observe closely in case you suspect intermittent connections or erratic instrument
behavior.
4-51
M2 Test System Programming and Reference Manual
The digital bus goes to all instrument slots, both large (3 DIN connectors) and small (1 DIN connector). It
carries the data bus from the DISCONT board, the cal bus, and all power rails as well.
4-52
System Hardware
The Interconnect Bus is available for future designs, if a board set is required that needs to communicate
among themselves but not on the main KVD data bus. This is also used in our current DSPIO and
DIGMOD implementation, for master/slave clock distribution and vector address communication.
4-53
M2 Test System Programming and Reference Manual
The Analog Bus is available to carry signals from boards such as DUT Sources to resources such as
digital instruments. This is the method used by DS1 to connect to various digital channels for continuity
tests, using DDBUSA, for instance.
4-54
System Hardware
DISCONT
The Digital Interface Standard Controller (DISCONT) card works in conjunction with the PCIDIS to create
the data communications link between the system computer and the test head.
The DISCONT card acts as the communications liaison between the computer and the test head modules.
The DISCONT accepts the serial data from the PCIDIS via the SCSI cable, decodes it and outputs the
resulting address and data to the appropriate test head module.
In the opposite direction, the DISCONT receives data from the various test head modules, formats the data
for transmission over the SCSI cable, and sends the data to the PCIDIS for processing by the system
computer. The DISCONT board has four distinct serial bus interfaces: two for receiving data from the
PCIDIS and two for sending data back to the PCIDIS.
The DISCONT board allocates one receive and one send bus to each of the two test head sides allowing
for true parallel communications with both test head sides.
The DISCONT also carries small chip fuses, to protect the digital DC power supplies which it passes
through from the motherboard to the father card.
Connections from the DISCONT to the father card are grouped into two 33-pin Hypertronics - one for
power and grounds - the other for bi-directional serial data buses used for controlling relays, loading Xilinx
FPGAs, data converters, and other father card resources.
4-55
M2 Test System Programming and Reference Manual
These are the pin assignments of the DISCONT board to the Fathercard Hypertronics connectors.
4-56
System Hardware
This is the signal definition for the 50-pin connector used from the PCIDIS to the DISCONT board. It is a
SCSI-appearing connector in physical form factor, but note that it is NOT true SCSI.
4-57
M2 Test System Programming and Reference Manual
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 per relay driver.
4-58
System Hardware
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 main bus wires. Generally, one bus wire is allocated for each DC source on each
side.
All resource or device pin connections made to the resource bus are through relays located on the Father
Card. 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.
4-59
M2 Test System Programming and Reference Manual
DC Power Wiring
From the DISCONT board (always slot 0), intended for Fathercard Digital resources:
• P5V (+5V)
• N5P2V (-5.2V)
• P12V (+12V)
From the first DUT Source board (typically Side 0, Slot 1), intended for Father Card Analog resources:
• P12VF (+12V Filtered)
• P15V (+15V)
• N5VF (-5V Filtered)
• N15V (-15V)
• P5VF (+5V Filtered)
• N12VF (-12V Filtered)
Note: Depending on the Power Supply Configuration in your test system (set at the factory for the device
families you will be testing) there are two possible variations of the PHV/NHV rails: [+/- 30V] and
[+40V/-20V]
KVD Fathercard designs typically include monitoring LEDs and test points for all DC power supplies to aid
in quick troubleshooting.
4-60
System Hardware
Fuses
Besides fuses in the Power Supply Assembly in the main test system cabinet, these DC supplies are also
fused on the DISCONT and DCMOD boards, to reduce the risk of Hypertronics pin and Fathercard PC
damage in case of accidental short circuits.
Note: Recent KVD change orders recommend use of 4Amp fuses on all test head instruments, to reduce
nuisance opening. That way, if the father card fuse is a lower value, it will open preferentially
before the instrument fuse on the same voltage, and it is far easier and faster to replace the father
card fuse.
Most Fathercard designs include fuses on the Fathercard, many of them now socketed instead of surface
mount.
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 also investigate the Fathercard, the DISCONT
or MPDCMOD board as appropriate. Spare fuses are available from KVD to avoid the expense of sending
a DISCONT or MPDCMOD board 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.
4-61
M2 Test System Programming and Reference Manual
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.
4-62
System Hardware
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.
Additional Father Card designs created by KVD include versions to test families of power conditioning
devices, data converters, laser-trimmed devices, and CMOS image sensor devices including multi-site.
Schematics of custom father cards are provided as a troubleshooting aid to the customer. Custom
application items have a warranty, but failures are normally handled on a return-to-factory basis due to the
uniqueness of the items. For this reason, customers with particular needs for production uptime should
stock their own spares.
Please contact the factory to discuss any possible requirements you might have for testing new
configurations or device families.
4-63
M2 Test System Programming and Reference Manual
4-64
Chapter 5: Calibration and Maintenance
Safety Warning
Warning! Maintenance Instructions described in this manual 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.
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.
1. Turn off Test Head Power by using the test head rocker switch or the software command icon on the
desktop of the monitor.
2. Remove the Father Card cover if present.
3. Remove the Father Card if present by loosening four captive screws, then carefully pulling up around
its edge. Take care to not tilt the Father Card excessively during removal, to avoid bending
Hypertronics pins on the instruments
4. For full-width instruments (with three DIN motherboard connectors) in slots 0 through 6, use the board
edge ejectors to loosen the board for removal. For single-width instruments in slots 7-11, carefully pull
them out by grasping the edges of the Hypertronics connector body.
1. Inspect the new instrument for bent pins on both the Hypertronics and the DIN connectors to avoid
later damage.
2. Being careful to replace the instrument in the correct slot, insert it without using excessive force.
3. If the instrument is one that has not been present in the test head configuration before (if you are
adding an additional DSPIO, for instance), make sure to use the TCT (Tester Configuration Tool) to
add the instrument to the test head configuration.
4. Install the Father Card, taking care to orient it properly, side 0 and side 1. There are four steel locating
pins on each Father Card to prevent reversal.
5. The four captive screws do not need to be tightened for short-term experiments, just before release of
the tester back to production.
6. Power up the Father Card by reversing your previous method of powering it off.
5-1
M2 Test System Programming and Reference Manual
7. Check DC voltages at the test points on the Father Card if you suspect power supply issues.
8. If you are adding an instrument permanently to the test head configuration, you may need to adjust
power supplies to compensate for the added load. To ensure that the power supply comes up safely
even with an open wire in the cables, the supplies have their force and sense wires shorted inside the
power supply, not remoted to the test head motherboard. This has the side effect of possibly requiring
adjustments in case of load changes. (adding or removing boards permanently)
If necessary due to an accidental short, such as during father card or DUT board debugging, you may
need to replace a surface mount (chip) fuse on an instrument board. Please use only the proper energy-
controlled soldering tools for this purpose, such as a Metcal brand soldering station, and water-soluble
flux, followed by a suitable rinse and drying process. Do not under any circumstances use rosin flux on any
KVD instrument, as permanent contamination and leakage may occur.
Subassembly Replacement
Power Supply
1. Power down.
2. Remove cables with circular connectors from rear panel, plus AC power cord(s).
3. Remove screws from front rack mounting flanges and slide assembly out from the front.
4. Release slide latches on each slide rail by using a flat-bladed screwdriver to press the latch spring to
the OUTSIDE direction. Pulling forward on each side of the supply as you release the latch will reduce
frustration as the latches have a tendency to click back into locking position.
5-2
Calibration and Maintenance
CPU
1. Power down.
2. Remove all cables on the rear of the CPU, plus the AC power cable.
3. Make sure you note which is the mouse and keyboard cable. If not marked well on the rear of the CPU,
the LOWER one is the keyboard, and the UPPER one is the mouse. The CPU will not pass the POST
(Power On Self Test) if these are reversed.
4. Also make note of which is the upper and lower Ethernet network cable if there are more than one, and
keep them separate from the CAT5 network cable we use for the High Speed Link.
5. Remove the CPU in the same way as the Power Supply Assembly.
1. Power down.
2. Remove the X4 round cable from rear of Keithley, as well as the AC power cable, and the RS-232 or
GPIB communications cable, whichever one is present.
3. Remove four mounting screws from the front of the cabinet, and remove the Keithley for repair or
recalibration as required. See Paragraph 5.14 for the recalibration interval requirement.
Note: Some early KVD test systems used a mounting tray to hold the Keithley, which requires the
maintenance engineer to remove an access plate and unscrew the Keithley from below. Contact
KVD if you would like to upgrade to the newer mounting bracket design for ease of future
maintenance.
Preventive Maintenance
Monthly
• Inspect all fans for proper operation: Test Head, Power Supply Assembly, and CPU.
• Clean fan filter pads in Power Supply and CPU
• Check DC Power supplies at the Father Card against the specs given in the following chart. Adjust
voltage only if necessary as trained. Do not adjust current limits.
5-3
M2 Test System Programming and Reference Manual
• Check free space on hard disk to make sure that files have not been allowed to accumulate to the
point where production could be halted by a full disk. Typically this would be a danger if the disk were
above 80% full. Consult with your responsible software staff if this is a recurring issue.
• Calibration and checker results are stored in folders which are not currently cleared out, and could
grow without bound. Especially wasteful of disk space are histograms, which should be cleared out
regularly if not archived, and are not useful unless you're looping a checker. Go to
C:\_kvdco_CustFiles\Calibration, and in a folder for each instrument type, remove the files you do
not wish to retain.
• Ensure that the responsible staff has been performing software backups if not done automatically by
network connection.
5-4
Calibration and Maintenance
Software Backups
If necessary at your site, these should be done according to your local responsible staff's instructions.
1. Open the KVD installation CD, or obtain the newest library release from our FTP site according to
instructions given to your responsible staff.
2. Move the released library, with a name of the form KVDLib0503Release3.exe, to your system's
desktop or other convenient location. This name will change according to the update level of the
release.
Note: Do not attempt to launch or install it directly from the CD-ROM. Errors may result.
Note: If you are installing the "No Tester" version, your CPU must have a licensed copy of the Full Install
of Borland C++ Builder Professional, and the Borland Update Patch (available on the KVD
Windows Support Disk or from the Borland web site.) The "No Tester" library is supported on the
Windows 98, 2000, and XP operating systems only at this time.
5-5
M2 Test System Programming and Reference Manual
You will also need your original Windows installation CD-ROM, and license key, possibly your CPU
Motherboard Installation disk (for motherboard-specific drivers), along with your site copy of the Borland
C++ Builder installation CD-ROM.
5-6
Calibration and Maintenance
Refer to your motherboard manual and CD-ROM for installation instructions and BIOS configuration
settings. Each system shipped from KVD includes the CPU motherboard manufacturer's manual and CD-
ROM, but the exact model and manufacturer may change according to technology improvements and
availability. KVD cannot guarantee consistency of all subassemblies such as this among test systems
shipped at different times. The test systems will perform to published specifications, however, and
interoperability is assured.
Make sure you have all the necessary software and drivers:
• The driver for mother board
• WinXP PCI GPIB driver
• Borland C++ CD
• BCB5ProUpdate1.exe
• Kvd library release
When the PC first boots up and starts to finalize the Windows XP Installation, there will be prompts for the
PC's name and whether you want to configure the PC on a domain. Please ask your MIS people to setup
the network now or skip it and have them do it later.
When you are able to log in to the machine, do so as the administrator account to the local machine.
• The machine name will appear in the Log On dialogue
• If there will be a general account for most users, then you might want to spend some time setting up
the environment.
1. Use the Borland C++ Builder 5 CD from your package to start the install.
2. When you chose the version of C++ you want to install, make sure chose FULL INSTALL.
Note: The key you will need to install both Borland and the Update is included on the Borland license
paperwork that was shipped with the system, or on the CD-ROM.
5-7
M2 Test System Programming and Reference Manual
Configuring Borland
1. When Borland is opened, go to Tools - Editor Options, then Code Insight. Uncheck Code
Completion, Code Parameters, and Tooltip Symbol Insight, then select OK.
2. Open Tools again => Environment Options. Turn on Autosave Options and uncheck Background
Compilation.
3. Start from Tools again and go to Debugger Options then Event Log. Uncheck all under General.
5-8
Calibration and Maintenance
4. Last go to Project => Options => Compiler, select Use Pre-compiled Header.
Assuming the board has been installed physically, just need to install the driver. First run setup.exe file
from folder PCI GPIB WinXP. Follow the instruction and select PCI-GPIB for the board #1, and none for
board #2.
5-9
M2 Test System Programming and Reference Manual
From the Start menu => Programs => gpib-32 library, run config.
Follow the instruction and selection PCI-GPIB for board 0 and none for board 1.
Then from Start menu => Programs => gpib-32 library, run test.
The driver for PCIDIS, PHLIC board and power supply driver are all in the folder C:\_kvdco\PCIDIS_INF.
When Window XP detects this hardware, just point the driver out from the list.
The PowerPlus USB driver may be more tricky, due to not wanting the Plug and Play FTDI Universal Serial
Bus USB driver. If this driver shows up in the Device Manager (due to an unwanted XP Automatic update),
you will need to remove it. One clue that the PowerPlus USB control is not automatically running on a port
and detecting the USB board in the supply is that the Power Control GUI will look like this non-USB-
enabled one:
5-10
Calibration and Maintenance
Then you need to go into the System Device Manager, open the line for Universal Serial Bus controllers,
and delete the item that says USB Serial Converter, if you right click on it, and its properties do NOT say
it's an FTDI -KVD Power Supply Controller.
5-11
M2 Test System Programming and Reference Manual
5-12
Calibration and Maintenance
If you need to update the driver, use the wizard and proceed as follows:
5-13
M2 Test System Programming and Reference Manual
5-14
Calibration and Maintenance
5-15
M2 Test System Programming and Reference Manual
At the end of the process, the Device Manager will display it as "KVD Power Plus", and when you reboot
and launch the power GUI, the heartbeat LED on the supply will flash steadily, and the power GUI will have
this appearance, with a status tab:
5-16
Calibration and Maintenance
For experimenting with new releases, the new Programming Tool->Installation Swapping Tool can
save a few minutes going back and forth.
Note: From 5.03R2 forward, recalibration will not be necessary just because you swap releases, as long
as both the old and new libraries are at 5.03R2 or later. This could save significant time while
running beta experiments. If the cal file format ever changes in the future, the names will also
change, and this may trigger a need for recalibration. Having a stale calibration may also require a
re-cal. But simple library-swapping will not.
Tester versus notester emulation mode is now determined at runtime instead of when the KVD Release
software is installed. 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 notester choice selection has been removed from the install screen, which displays the target
Operating System, the KVD Library number being installed, and you only have two choices.
5-17
M2 Test System Programming and Reference Manual
If you wish to have only the KVD proprietary Image File Viewing Tool installed on an off-line computer,
check the upper box. 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.
The PCIDIS board in the CPU has a modified Xilinx programming file in 5.03R2 (for DIGMOD HSL
support), and the normal warm reboot will not force a Xilinx reload. You must at least once shut the CPU
power off totally, and perform a cold restart.
5-18
Calibration and Maintenance
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.
5-19
M2 Test System Programming and Reference Manual
5-20
Calibration and Maintenance
The image below shows the user has opened the instrument selection menu for a slot by double-clicking
on it.
5-21
M2 Test System Programming and Reference Manual
Similarly, the Power Supply Type, Father Card, and Calibration Meter type can be selected from a pull-
down menu after double-clicking their respective boxes. If your site is using any custom configuration
Father Cards, their choices will appear in this menu. Please ensure you know which is your correct choice
before selecting one. (in other words, don't guess)
There are more choices for calibration meters. Keithley 2002 and HP3458A will offer enhanced accuracy
of calibration for MP and HP instruments than the original Keithley 2000.
The user can also select the disk and path to the XILINX files. The XILINX files are files KVD supplies to
'boot' the FPGAs in the test head. Having this selection as an option allows the pre-release testing of new
files, or the use of previous releases if subtle problems are found.
5-22
Calibration and Maintenance
Shown in the image below, the XILINX files that will be used are on drive C in the folder named
_kvdco\Released Xilinx Files. This is the standard location, and should not be changed without good
reason and instructions from KVD Engineering.
TCT configuration information can be saved to a file with the extension .tct_config, and loaded again using
buttons on the GUI. This can save time removing instruments from the TCT for minimum configuration
troubleshooting, for instance, and for quick restoration to the original config. These .tct_config files can
also be enforced by test program control using the KVD >LoadConfig function.
Notice at the top of the TCT application, there is another TAB labeled "Ports". Clicking on this TAB will
bring up another page that allows the user to change the port used for the calibration voltmeter, and also
the type of port being used.
5-23
M2 Test System Programming and Reference Manual
In this configuration, the interface being used, that is, the interface attached to the Calibration Standard is
the GPIB port. All test systems should use GPIB for this choice, using the primary address of 16 (hex
10), with a secondary address of zero (hex 0).
On testers that are configured to be imager testers using the Tungsten-Halogen illuminator, the lower
portion of this page could be 'enabled' and similar port configurations would be entered. Systems using the
LED illuminators (any version) do not have need for these preferences, and should not be entered. There
is a separate tool for LED illuminator configuration selection, which is documented in the Imager
subsystem manual.
Finally, the very bottom of the TCT tool shows the TCT Revision, Root key, and a Status message area. If
there is ever a problem with TCT information being lost, or corrupted, these two pieces of information along
with any error messages, should be made available to KVD.
5-24
Calibration and Maintenance
Note: Once ANY change has been made to the TCT, on either page, the Update Registry button must be
clicked so that the TCT can save the changes to the Windows Registry.
If the TCT program is exited without an Update Registry being performed, any changes the user made are
lost.
Calibration is the process whereby a real-world instrument, with inaccuracies and other features designed
to make it affordable, is compared to a more accurate standard. This standard can be traceable, which
means its measurements of voltage, current, and so forth, can be ultimately compared to the world's
standards, to make sure that all instruments agree to some degree of certainty. The standards institute for
the United States is the NIST (National Institute of Standards and Technology), which used to be called the
NBS, for National Bureau of Standards.
Calibration makes the instrument more "ideal" by comparing it to a transfer standard, then measuring the
inaccuracies, then compensating in hardware or software before the user ultimately uses the instrument.
The results are confirmed in checks later.
Long experience with real-world devices reveal that most errors are linear, due to built-in component
accuracies. KVD compensations are performed almost exclusively in software, and not using the alternate
technique of hardware adjustment DACs, which would add complexity and cost.
There are two main categories of errors: Offset and Gain, when we discuss the DC source or
measurement sorts of instruments. For digital instruments, there is also the category of errors in the timing
realm, where the difference between ideal and actual is measured by timing circuits instead of voltmeters,
but the theory is very similar.
5-25
M2 Test System Programming and Reference Manual
5-26
Calibration and Maintenance
A Real Instrument
You have offset error when the actual results are not zero when you want them to be zero.
5-27
M2 Test System Programming and Reference Manual
You have gain error when the actual results are not full scale when you want them to be.
Always measure and compensate for offset error first. When you subtract the offset error, component
inaccuracies will still give you gain error. The slope of the ideal/actual line is NOT exactly 45 degrees until
you compensate for gain error.
Calibration Files
Each range of an instrument will have its own offset and gain errors
Each feature of an instrument can be calibrated, both sourcing and measurement functions
Assuming the instrument is linear can save time and complexity in the calibration process.
Calibration may not always be performed at full-scale values, depending on the calibration instrument.
Calibration factors are stored on the hard drive in files, but if you move instruments to new slot locations,
you always need to recalibrate. (Cal files are not currently indexed by instrument serial numbers)
5-28
Calibration and Maintenance
This is an example of a bad set of measurements which could be made by a diagnostic check, and the
interpretation suggests that the root cause might be a low power supply, that drifted out of spec after an
earlier good calibration. All the dots but one are in spec, where the actual is close to the ideal
measurement, and the single rogue measurement is at the high end of the instrument's range. (A possible
power supply fault, or failing instrument. Troubleshooting would involve measuring the power supply, and
then exchanging the instrument.)
Calibration and Checker programs were previously run from one integrated executable program, with a
custom GUI. This presented barriers for ease of updating, segregation of functions, and data
interpretation. For release 5.03, cals and checkers were all rewritten to execute as their own standard test
programs, using the normal production GUI and data storage features, with a wrapper/launcher program
called the Cal & Checker Launcher.
The previous Calibration program is no longer supported, and should be removed from the START Menu
shortcut list and anywhere else you may have a shortcut linked. Use only the Calibration and Checker
Launcher now.
Launch the program via the Start menu, -> Testhead Setup and Calibrate, then KVD Calibration and
Checker Launcher.
5-29
M2 Test System Programming and Reference Manual
When the program launches, there are two tab choices at first, the top one showing fast launch buttons.
There is a single-button CalAll 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
5-30
Calibration and Maintenance
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.
5-31
M2 Test System Programming and Reference Manual
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).
5-32
Calibration and Maintenance
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
Changes were recently made to cal algorithms, meter ranging, and timing to improve headroom between
instrument performance and spec limits. Added in-house options to characterize amplifier thermal drift and
run at tighter limit percentages. New scatter test to characterize aging current range relays, which can be
run as a predictor of future failures and allow preventive maintenance. Scatter test should be run at some
longer interval than the weekly cal, at least once per quarter currently. Recommendations for longer-term
intervals will follow when we have more field data.
Any time KVD changes the calibration file format or algorithms, we now change the name of cal file to
reflect a new revision. Thus old cal files will never be inadvertently read in while running a new release. We
don't anticipate ever needing to clear out old cal files to encourage a new cal to succeed, but some
customers have found it useful. Please contact KVD service if you find yourself in that situation, so we can
consult on the issue.
Initially, launching the calibration utility will open a connection to the Cal meter, either Keithley or HP/
Agilent. If this fails, then you need to troubleshoot either the meter power or communication. Typically
systems are configured using the GPIB port to communicate to the meter, so you must ensure that no one
has changed the front panel defaults. This often happens when the DMM is returned from an outside
calibration lab.
5-33
M2 Test System Programming and Reference Manual
The basic flow is that Voltage features are calibrated first, then current. When calibrating a feature, we use
the instrument to force some value, and then measure it with the DMM using the cal bus. This reading is
used to calibrate the gain and offset for the forcing function. Then we use the A/D converter built into the
instrument to measure the SAME feature. This is used to calculate the measurement side gain and offset.
MPDCMOD Calibration
Here is a sample MPDCMOD cal log file. Note that the software library in use is displayed at the beginning
of the file, to act as an audit trail. In the MPDCMOD cal, we also keep track of a temperature sensor on the
instrument. There is only one per board, not one per channel, but we display it on a per-channel basis so
we can spot temperature drift easily, such as that caused by not allowing enough warm-up time before
starting a cal.
• Tests T200-T205 involve the Voltage Force function, Range 0, on MP DUT Source Channel 0
(MPDS0) MP channels begin at zero for ease of programming software.
• The initial tests on any function are the "RAW" measurements, before any calibration compensation is
done. If these measurements are outside limits, the cal will fail. In this case T200 and T201 are the
pre-cal readings.
• Forcing function cals are performed using the Keithley or HP/Agilent, so you will often see "DMM"
(stands for Digital MultiMeter) in the comments.
• T202 and T203 are the calculated gain and offset numbers for this voltage forcing range on MPDS0.
• T204 and T205 are a post-cal confirmation step, or checker, to make sure that the calculated gain and
offset numbers work properly to obtain in-spec performance from the instrument.
• Tests T206-T211 involve the built-in A/D converter, not the DMM. They ensure that the measurement
circuit is working pre-cal (Tests 206-207), then the system calculates gain and offset numbers for the
measurement circuit (T208-209), and finally, a post-cal checker confirms that the gain and offset are
operating in-spec.
Note: Tests T210-211 display the RESIDUAL error, not the actual measurement. We subtract the
measurement from the ideal number, and display only the difference, which is the reason these
numbers are quite small.
• Since there are four voltage ranges on the MPDCMOD, we repeat this process for Ranges R1, R2,
and R3.
• There are five current ranges on the MPDCMOD, and Tests beginning at T2505 perform the same
process for each of them. First, we measure the raw forcing accuracy with the Keithley, then calculate
gain and offset factors, then use those factors to check the forcing function accuracy. Next, we use the
built in ammeter to measure the same cal points, derive gain and offset numbers, then measure and
display the residual error.
• If any limits are exceeded, the word FAIL will be added to the right end of the cal log line, the cal GUI
cell that contains that cal factor will turn red, and the cal GUI will display a red virtual LED as a
reminder.
• Finally, the voltage and current clamps are calibrated, in this example in Tests T5386-5686.
5-34
Calibration and Maintenance
----------------------------------------------------
---------------BEGIN DATA LOG ----------------------
---------------Start Log Time : 12/30/2005 9:58:58 AM
----------------------------------------------------
----------------------------------------------------
Program ID : C:\_kvdco\Checkers\mp_debug\mp_debug.exe (12/30/05 09:48:52)
Operator ID :
Tester : UC11
Fixture :
Lot ID : NOLOTNUM
Comment :
LimitsFile : C:\_kvdco\Checkers\mp_debug\MP_DEBUG.LIM (12/30/05 09:58:56)
BinFile : C:\_kvdco\Checkers\mp_debug\MP_DEBUG.BIN (12/30/05 09:58:56)
ParametersFile :
LibraryVersion : Version 05_03_Release_1
----------------------------------------------------
DEVICE(s) : 1
S0 T1 0=K2000 1=K2002 2=HP345 1.000000 Code 0.000 2.000
S0 T10 MP0 PreCal Temperature 35.000000 deg 0.000 60.000
S0 T200 MP0 FORCEV0 LO RAW -14.001970 V -16.000 -12.000
S0 T201 MP0 FORCEV0 HI RAW 24.164961 V 22.000 26.000
S0 T202 MP0 FORCEV0 GAIN 1.004393 V 0.500 1.500
S0 T203 MP0 FORCEV0 OFFSET 0.059531 V -2.000 2.000
S0 T204 MP0 FORCEV0 LO CAL -13.995553 V -14.012 -13.988
S0 T205 MP0 FORCEV0 HI CAL 24.001844 V 23.988 24.012
S0 T206 MP0 MEASV0 LO RAW -14.016663 V -16.000 -12.000
S0 T207 MP0 MEASV0 HI RAW 24.041798 V 22.000 26.000
S0 T208 MP0 MEASV0 GAIN 1.001607 V 0.500 1.500
S0 T209 MP0 MEASV0 OFFSET 0.001382 V -2.000 2.000
S0 T210 MP0 MEASV0 LO CAL 0.091788 mV -20.000 20.000
S0 T211 MP0 MEASV0 HI CAL -0.033339 mV -20.000 20.000
S0 T212 MP0 FORCEV1 LO RAW -15.038656 V -16.000 -14.000
S0 T213 MP0 FORCEV1 HI RAW 15.096373 V 14.000 16.000
S0 T214 MP0 FORCEV1 GAIN 1.004501 V 0.500 1.500
S0 T215 MP0 FORCEV1 OFFSET 0.028859 V -1.000 1.000
S0 T216 MP0 FORCEV1 LO CAL -14.999698 V -15.006 -14.994
S0 T217 MP0 FORCEV1 HI CAL 15.000463 V 14.994 15.006
S0 T218 MP0 MEASV1 LO RAW -15.022810 V -16.000 -14.000
S0 T219 MP0 MEASV1 HI RAW 15.025678 V 14.000 16.000
S0 T220 MP0 MEASV1 GAIN 1.001611 V 0.500 1.500
S0 T221 MP0 MEASV1 OFFSET 0.001051 V -1.000 1.000
S0 T222 MP0 MEASV1 LO CAL -0.011940 mV -10.000 10.000
S0 T223 MP0 MEASV1 HI CAL -0.162630 mV -10.000 10.000
5-35
M2 Test System Programming and Reference Manual
MPDCMOD Checker
The checker performs a spec confirmation without running the cal first, on multiple points on each range to
also confirm linearity.
----------------------------------------------------
---------------BEGIN DATA LOG ----------------------
---------------Start Log Time : 12/29/2005 4:34:09 PM
----------------------------------------------------
----------------------------------------------------
Program ID : C:\_kvdco\Checkers\mpdcck\mpdcck.exe (12/29/05 15:09:28)
Operator ID :
Tester : UC11
Fixture :
Lot ID : NOLOTNUM
Comment :
LimitsFile : c:\_kvdco\Checkers\mpdcck\mpdcck.lim (12/29/05 16:34:10)
BinFile : c:\_kvdco\Checkers\mpdcck\mpdcck.bin (12/29/05 16:34:10)
ParametersFile :
LibraryVersion : Version 05_03_Release_1
----------------------------------------------------
DEVICE(s) : 1
S0 T0 MP0 DeltaTemp 1.562500 deg -3.000 3.000
S0 T32 MP0 Dummy 0.000000 deg -1.000 1.000
S0 T65 MP0 Force IR0 -160.013976 mA -160.240 -159.760
S0 T66 MP0 Measure IR0 -160.025818 mA -160.240 -159.760
S0 T67 MP0 Force IR0 -120.000484 mA -120.220 -119.780
S0 T68 MP0 Measure IR0 -119.997051 mA -120.220 -119.780
S0 T69 MP0 Force IR0 0.019074 mA -0.160 0.160
S0 T70 MP0 Measure IR0 0.028518 mA -0.160 0.160
S0 T71 MP0 Force IR0 120.027086 mA 119.780 120.220
S0 T72 MP0 Measure IR0 120.001608 mA 119.780 120.220
S0 T73 MP0 Force IR0 160.019688 mA 159.760 160.240
S0 T74 MP0 Measure IR0 159.987061 mA 159.760 160.240
S0 T75 MP0 Force IR1 -18.005633 mA -18.016 -17.984
S0 T76 MP0 Measure IR1 -18.003014 mA -18.016 -17.984
S0 T77 MP0 Force IR1 -9.000575 mA -9.016 -8.984
S0 T78 MP0 Measure IR1 -8.997614 mA -9.016 -8.984
S0 T79 MP0 Force IR1 0.001242 mA -0.016 0.016
S0 T80 MP0 Measure IR1 0.002418 mA -0.016 0.016
S0 T81 MP0 Force IR1 9.003280 mA 8.984 9.016
S0 T82 MP0 Measure IR1 9.001046 mA 8.984 9.016
S0 T83 MP0 Force IR1 18.004787 mA 17.984 18.016
S0 T84 MP0 Measure IR1 17.999718 mA 17.984 18.016
5-36
Calibration and Maintenance
MPUVM Calibration
The MPDCMOD instrument also contains the floating differential voltmeter also called the UVM. These can
be calibrated separately, but they depend on a valid cal of the MP DUT source being done first, at least
sources 0 and 1 on each board.
In the calibration routine, various offsets are checked for each range, common mode voltage is added to
calibrate the CM effect, and finally, the various ranges are individually calibrated and checked. There are
six UVM ranges, R0-R6, explained in section 8.1.17.
DEVICE(s) : 1
S0 T1 UVM0 VR0 RAW INOFF 0.419935 mV -100.000 100.000
S0 T2 UVM0 VR0 CAL INOFF -21.973327 uV -200.000 200.000
S0 T3 UVM0 VR1 RAW INOFF 0.259407 mV -100.000 100.000
S0 T4 UVM0 VR1 CAL INOFF 19.531846 uV -200.000 200.000
S0 T5 UVM0 VR2 RAW INOFF 0.188604 mV -100.000 100.000
S0 T6 UVM0 VR2 CAL INOFF -15.564440 uV -200.000 200.000
S0 T7 UVM0 VR3 RAW INOFF 0.117496 mV -100.000 100.000
S0 T8 UVM0 VR3 CAL INOFF 13.428144 uV -200.000 200.000
S0 T9 UVM0 VR4 RAW INOFF 0.110935 mV -100.000 100.000
S0 T10 UVM0 VR4 CAL INOFF -0.305185 uV -200.000 200.000
S0 T11 UVM0 VR5 RAW INOFF 0.118526 mV -100.000 100.000
S0 T12 UVM0 VR5 CAL INOFF -14.076662 uV -200.000 200.000
S0 T13 UVM0 VR6 RAW INOFF 0.109161 mV -100.000 100.000
S0 T14 UVM0 VR6 CAL INOFF -12.970367 uV -200.000 200.000
5-37
M2 Test System Programming and Reference Manual
MPUVM Checker
Pending
HPDCMOD Calibration
Pending.
HPDCMOD Checker
Pending.
DSPIO Calibration
Pending.
DIGMOD
Pending.
TMU
Pending.
5-38
Calibration and Maintenance
The calibration software includes a verification process to ensure that the calibration was successful and
accurate. The basic difference in checkers is that:
1. Features of the instruments that are not calibrated can be verified (slew rate, noise, additional source
or measurement values).
2. A calibration is not performed just before the diagnostic is run, so drift between cals can be determined
to verify the calibration interval is suitable.
Diagnostics for custom Father Cards with significant installed base are included under the Checkers menu.
These require the use of matching load boards for full functionality. Future checkers will be linked here as
they are developed.
PHLIC Checker
GPIB Checker
5-39
M2 Test System Programming and Reference Manual
GSI-M310
5-40
Calibration and Maintenance
5-41
M2 Test System Programming and Reference Manual
ESI 2050/2100
5-42
Chapter 6: Development Environment
Software Installation - Offline Emulator
If you have a full Borland C++ Builder license for your portable or office system, you can install the KVD
library on it as well for editing and test compiling. Discussed in the software section, page 5-6.
The book Teach Yourself Borland C++Builder in 21 Days, by Kent Reisdorph and Ken Henderson, Borland
Press/Sams Publishing, ISBN 0-672-31020-1, which can be purchased at many technical book stores and
on-line retailers, contains valuable information on using the debugger, and understanding the IDE and
Borland supplied tools.
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.
KVD also supplies a generic test program shell, which is wrapped in an installation program. Under the
Windows Start menu, Programming Tools, you will find a link to the KVD Generic Application Shell.
6-1
M2 Test System Programming and Reference Manual
By running the installation program, the user can select the location to copy the files needed for a generic
test program. The program shell contains a representative set of all files necessary to build a test program
on the KVD M2 test system.
6-2
Development Environment
The following screen capture shows the files copied by the installation program.
Filename Purpose
ACTests.cpp/h This file is empty, and can be used for ac tests that the engineer writes.
DCTests.cpp/h This file is empty, and can be used for dc tests that the engineer writes.
Connections.cpp/h This file is empty, and can be used to declare and instantiate TConnection
objects.
KVDTestApp.bin This file will contain any bin numbers, comments, and pass/fail information.
This file defines the bin descriptions that appear on the Production View
Screen while testing devices, and the counters for excessive failures.
6-3
M2 Test System Programming and Reference Manual
Filename Purpose
KVDTestApp.cpp/dsk/bpr This is the main project file. The engineer should never edit this file. If the
engineer saves the project under another name, then these three files will
be created with that newly saved name. The .dsk file is the Borland
"desktop" save file, which will preserve your desired pattern of open window
locations and sizes, plus environment options.
RevisionNotes.txt A file for use by the engineer to keep revision history of the test program.
This is only a text file, and does not get compiled.
KVDTestApp.lim Used to declare the limits, units, and the "Bin if Fail" for each test.
UserClass.cpp/h The main starting file for the engineer. This class file has all the entry points
declared that the main system software will access. The test sequence is
located here, as are initialization procedures run at the start of every test
program load time, lot, sublot, and device, plus the cleanup procedures run
at the end of each device, sublot, lot, and test program run. See this
comment from the generic UserClass.cpp file:
//////////////////////////// IMPORTANT /////////////////////////
// This section is the only section available to the user. The
// routines in this section are called from WinMain with the following
// flow
//-------------------------------------------------------
//----SystemInit
//--------LotInit
//------------SubLotInit
// ---------------DeviceInit <--|
//----------------TSeq <--| loops on this until EOT
//----------------DeviceFinish <--|
//------------SubLotFinish
//--------LotFinish
//----SystemFinish
//////////////////////////// IMPORTANT //////////////////////////
The functions listed here have empty templates when you generate a generic test program shell, but the
names are fixed. The KVD Library code depends on these exact function names to operate the mainloop
device testing process. As you can see, various initialization functions are available for you to set up your
own GUIs, data handlers, variables, pattern loads, and so forth, which should not be done once per device.
The trio of functions (DeviceInit, Tseq, DeviceFinish) are performed once per device, and you should keep
any slow processes out of this loop, such as operations that access the network or hard drive.
DeviceFinish is designed to be executed without fail on all devices tested, even ones that abort (skip) out
of the main test sequence Tseq due to a failure, PLUS the Stop on First Fail flag being set.
6-4
Development Environment
This installation program will ask you for a location to put the generic test application code. Select a folder,
and then let the installation run automatically and complete. The test application program file will be named
KVDTestApp, but you can rename this later.
Then run it so you can see that it compiles with no errors and/or warnings, and so you can take a look at
the main KVD screen.
Start up the C++Builder 5.0 compiler. (This should be in the Start, then Programs menu, or else a desktop
shortcut.)
6-5
M2 Test System Programming and Reference Manual
Browse to the location that you selected for the KVD Generic App, and select the KVDTestApp.bpr file.
6-6
Development Environment
Once it is open, you should have the main compiler screen, with the code windows, project windows, and
debug windows, in front of you.
You should take some time to become familiar with the IDE, the integrated development environment. For
now, set a couple of BCB5 (Borland C Builder 5.0) options, and then compile the KVDTestApp. You can
skip the setting of options and go right to the compile section if you choose to. The only options you should
set now are the automatic saving of the editor files, and the desktop files.
To set the auto save of the files, click on the Tools menu item at the top of the BCB5 IDE, and select the
Environment Options. On the dialog box that appears make sure that the two AutoSave options <Editor
Files> and <Project Desktop> are checked. You can also uncheck the box for <Background
Compilation>, since compiling goes so quickly, there is no benefit to running it in the background.
6-7
M2 Test System Programming and Reference Manual
6-8
Development Environment
You should also make sure, to save time during compile & debug sessions, that the use of precompiled
headers is activated. Bring up the Options screen from the Project pulldown menu:
Click the Compiler tab, then the button for Use Precompiled Headers, then type the name
KVDTestApp.csm in the File Name window. (Or your project name if you have renamed it from
KVDTestApp).
Now click on the RUN icon (green right pointing icon) on the IDE (designed to look like the RUN button on
a VCR), or select Run and then Run again on the menu or press Function Key F9. (Many actions have
defined Function Key shortcuts.)
6-9
M2 Test System Programming and Reference Manual
The project should compile with no warnings and no errors if everything has been set up properly. Should
you encounter any errors or warnings at this point, please make note of them and let KVD know of these
so that they can be corrected on future installation setups.
Assuming everything goes according to plan, the main KVD production screen should show up once the
application has been compiled, and executed. You can start the job plan execution, observe datalogs, and
pause its execution if desired.
The Production screens and functions are documented in the Windows Operations Chapter, and are not
repeated here.
6-10
Development Environment
This will add a new unit (CPP and H file) to your project. It has a name of UNIT1. Click on FILE, then SAVE
AS to save it under a more realistic name. The corresponding header file will also be given this name.
Make sure you save it in the same folder as the project.
Now, if you used the KVD Generic Application Shell installation program to create this project, it should
have a header file named KVDTestAppMainHeader that gets included in all the CPP files. Open up this
KVDTestAppMainHeader.h file and add an include for your new units H file. Save this file. In your new
units CPP file, replace the code at the top, which usually looks like this:
//-----------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MyNewUnit.h"
To this
//------THESE NEXT TWO LINES MUST REMAIN THE SAME. ADD ANY CODE AFTER THE #include
"KVDTestAppMainHeader.h"
#pragma hdrstop
The include (in this example) for MyNewUnit.h is now in the KVDTestAppMainHeader.h file.
6-11
M2 Test System Programming and Reference Manual
You'll notice that there are numbered sections (1 through 4). These are the four 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.
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.
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.
3. Step three allows the necessary files extension masks to be selected so that only the appropriate files
are copied. The check boxes on the left side of the file list box select the source code files. The check
boxes on the right side on the file list box are used to select the compiled (or runtime) files. If you are
moving a project from development into production, you would normally select ALL runtime files. If you
also want to include ALL the source code files, click on the ALL button in the Source Code Files group.
At this point you should see all the files in the list. These files are the files to be copied from the source
location to the destination location.
6-12
Development Environment
4. This is the final step. All the files in the files list box will be copied from the source location to the
destination local. You can then use the files that are in the destination location.
Note: The files are copied. If you want to remove the files from the source location, first copy them using
this tool, and then manually delete the source location files.
(In the image below, the Project Manager view for the BCB5 IDE is shown on the left. If this view is not
being displayed on your screen, click on the VIEW, and then PROJECT MANAGER menu items.) This
window should be dockable so it sticks where you wish it to stay. Drag it around by its top bar.
Open the file UserClass.cpp by double clicking on the filename in the PROJECT MANAGER view. The file
should open up to the right of the PROJECT MANAGER view. Scroll down until you get to the function
named TUser::Tseq.
6-13
M2 Test System Programming and Reference Manual
By clicking in the GRAY vertical bar to the left of the editor screen you can set a breakpoint. A breakpoint
will cause the program to suspend running at that point, and allows the test engineer to debug beginning at
that point. When a break point is set, it will change the line the break point is set on to a red highlighted
line.
Now, rerun the program, and once the main Production screen appears, click on the START button, once
the execution has reached this breakpoint, the editor window will appear, and the main screen will be
hidden. At this point in a normal test program, all the other debugging tools could be used.
You could single step through the code, step into a routine, look at data, variables, or use the evaluate/
modify function of the debugger. The image below (except that it will probably be printed in B&W if on
paper) shows a green arrow in the gray vertical column. This is indicating that the program is stopped at
that line in the code. It stops immediately BEFORE executing the instruction. The little blue dots that you
see indicate valid lines of code that break points can be set on.
6-14
Development Environment
Toggle Breakpoint F5
Run to Cursor F4
1. Set the variable KVD->DataToEventLog equal to true using either the Evaluate/Modify window
(CTRL+F7) or by putting it in your code.
2. Enable the Event Log. While in the Borland Cbuilder Environment, click on VIEW, then DEBUG
WINDOWS, and finally EVENT LOG. You should see the Event Log window on the Desktop. You
might want to "dock" it to something that is always visible on the desktop, so that you can view it. Now,
right click in the Event Log window and click on CLEAR EVENTS. This will clear any previously logged
events. Now, right click again in the Event Log window and select PROPERTIES. A Dialog Box
appears, with two "sections". In the MESSAGES sections, you want to make sure that Output
Messages are the ONLY type checked. You might also want the Clear Log on Run also checked so
each time you run the application, any previous messages will be deleted. Now click on OK.
When you run your application, you will see datalog information in this window if the
KVD->DataToEventLog variable is true. If the KVD->DataToEventLog variable is false, no data is sent
to this window.
Another variable, KVD->SystemMsgToEventLog, can also be toggled on (true) or off (false) to redirect
System type messages to the event log.
Note: Ensure that all debug flags such as this are turned OFF before releasing the test program back to
production. Test time is always fastest when features like this are not being used.
6-15
M2 Test System Programming and Reference Manual
The RTI is also a read back tool. That is, it is capable of displaying the status of all boards and resources
in the test head, when the debugger is halted at a breakpoint.
You can change the modes (forceV, forceI) of sources, click on relay state boxes, affect connections,
modify the levels, and take measurements.
Note: The REFRESH button may be used at any time to obtain a fresh readback image of the state of
the hardware instruments. It is not automatically updated when you halt at subsequent breakpoints
unless you press the REFRESH button or the AUTO REFRESH ON box is checked. We
recommend that you do not leave the AUTO REFRESH ON feature permanently on, since the
constant communication to and from the instruments tends to slow down execution speed, and
interfere with expected debugging results. Only turn it on sparingly, and knowing that the updates
are happening constantly. (every 100mS).
6-16
Development Environment
The RTI has many pages specific to either related functions, or boards in the test head.
• DUT Sources and their UVMs
• Digital Resources and Patterns
• Father Card Relays
• DIG Relays
• TMU
• RMX
• System Functions
The MPDCMOD RTI has been split into two tabs to show more sources on one page and also has a button
which starts a continuous measurement loop. Number of measurements averaged for a manual measure
or this continuous loop is also selectable. The second tab contains displays and controls for Ground
Sense, and Acquire Sample Rate. (Enable/Disable control is available, but discouraged because the
control loop goes open when a source is disabled, and offset drift may result in instantaneous spikes when
the source is later enabled.)
6-17
M2 Test System Programming and Reference Manual
You can type in new values, change the state of relays or connections, and make immediate
measurements.
Column Description
FORCE A 'V' indicates that the DS is forcing voltage. An 'I' indicates the DS is forcing
current. This can be changed by simply typing in an 'I' or a 'V', and pressing
return.
VALUE A real value (double) is shown in this column indicating the forcing value. The
user can enter a new value, and press return to set the DS to that value.
IRANGE The active current range is displayed in this column. Press return to set the
range. Other kinds of sources will have alternate choices of ranges.
DOMEAS This column allows the user to make an immediate measurement on the DS.
Place the cursor in the box. Typing in V will measure the voltage on the DS.
Typing in I will measure the current. (Averaged 10 measure strobes on the A/D)
STATE The STATE column shows whether the DS is ON or OFF. Typing in ON or OFF
will change the DS to that state, after return is pressed.
RESULT Any measurement will produce a result, and that result will be displayed in this
column. This column is read only. No inputs are allowed.
ALARM If a measurement has resulted in the DS alarming, then this column will show
that alarm. If the column is empty, the DS is not alarming.
6-18
Development Environment
6-19
M2 Test System Programming and Reference Manual
The MPDCMOD instrument contains a separate differential floating voltmeter, called the UVM. This is its
real time interface page:
You can change the connection points, measurement range, and make immediate measurements.
6-20
Development Environment
In the same way that you can interrogate the state of or change attributes of the MP, you can do the same
for the HP DUT Source.
6-21
M2 Test System Programming and Reference Manual
DSPIO Pins
The Digital Resources page displays the configuration and state of each available Digital pin. This grid will
show between 16 and 32 digital channels. If DSPIO boards are present on both sides of the test head, a
SIDES button group will be displayed which allows the user to toggle between side 0 and side 1 digital.
There is also a Time Set radio group that is available to toggle between the two available time sets.
The grid displays nine columns which contain data for each available digital pin.
Column Description
FORMAT The formats available to the engineer, for each digital pin, are RZ, NRZ, CS,
RO, RZC, CSC, ROC, CLK2, CLK4, CLK8, LOW, and HIGH. A value of
NOFORM indicates that the digital pin has not been programmed with a dfmt
statement. To change the format value, type in a valid format, and press return.
START The start column indicates the start time for edge placement. To change this,
enter a new (double) value, and press return.
STOP The stop column indicates the stop time for edge placement. To change this,
enter a new (double) value, and press return.
STROBE The strobe column indicates the data out strobe time. To change this, enter a
new (double) value, and press return.
6-22
Development Environment
Column Description
VIL The vil column is a DC value that is the level the digital pin uses for a logical 0.
To change this, enter a valid value in the range for digital pin low values, and
press return.
VIH The vih column is a DC value that is the level the digital pin uses for a logical 1.
To change this, enter a valid value in the range for digital pin high values, and
press return.
CMPLEV The cmplev column is a DC value that is the level the digital pin uses for the
comparator value. To change this, enter a valid value in the range for digital
comparator values, and press return.
KA This is the keep alive column. It indicates a 1 or a zero, which are the only two
logical states a pin can be at when a pattern is NOT running. To change this,
enter a 1 or a 0, and press return.
STATE Digital pins can be either enabled (ENA) or disabled (DIS). Enter either ENA or
DIS, and press return to change this value.
The Patterns page actually contains two sub pages beneath it. One page offers the user the patterns that
are loaded so that they can be run and/or edited. The Readback page allows the user to confirm or change
the pattern setup, as well as general pattern timing.
6-23
M2 Test System Programming and Reference Manual
The Patterns/Running page lists all the patterns that are loaded. To select a pattern as the current pattern,
double click on the pattern name in this list. Click on the Execute button to run the current pattern. Click on
the Stop button to halt a pattern (if a pattern is running). The dflag1 and dflag2 buttons implement the
DSPIO dflags command. Clicking on the Update Results button will perform a DSPIO dstatus, and show
whether the pattern is passing, failing, and possible fail address. There is also a Green LED that indicates
the pattern running status. If the LED is on, the pattern is running. If the LED is off, the pattern has halted.
The Readback page shows the user the current setting for DDXTALFREQ (the master clock frequency),
and the T0 rate, which is the pattern burst rate per vector. Also shown is the DSPIO configuration of
Master and Slave, if there are two DSPIO boards on the same side. The Disassemble button shows the
current pattern being pointed to. If the Disassemble button is clicked, the pattern will be read from pattern
memory, and disassembled into source code format.
The Examine button, which has an address entry box next to it, will read back the raw pattern data for the
address in pattern memory. Clicking on the Next button will read the next X addresses, where X is the
number in the entry box next to the Next button.
Finally, clicking Clear will clear the listing of any previous Readback functions.
6-24
Development Environment
On many generic Father Cards built by KVD, there are 80 relay drive registers available to the engineer,
but some may have more. A register may be connected to more than one relay in hardware. They are
typically distributed with 40 relays per side. These relays can be opened or closed through the RTI by
simply clicking on the check box next to the named relay. A check mark in the box indicates that the relay
is closed. An un-checked box indicates that the relay is open.
Note: This page does not apply to custom Father Cards such as those designed for Laser Trim
applications. Future KVD software releases will add RTI support for these custom items.
6-25
M2 Test System Programming and Reference Manual
The digital relays shown on this page actually reside on the DSPIO board. These relays connect the digital
pin to either the analog bus (for DC testing) or to the Digital Driver (for digital functions and patterns).
The above image shows the side 1 Digital relays. If there are DSPIO board(s) on side 0, then there would
also be a side 0 box showing the same relays for the same digital pins. To connect a digital pin to the
driver, or the analog bus, simply click on the check box next to the digital pin. A check mark indicates the
relay is closed (connected). An empty box indicates that the relay is opened (disconnected).
You can also connect the DUT Source DS1 to the analog bus. This is useful, in combination with a digital
pin being connected to the analog bus, to perform DC tests on the digital pin.
6-26
Development Environment
The TMU page, although it looks complicated, it actually fairly straightforward. Each of the boxes (Level,
Enable, DDCHAN, Input, frequency, Interval, and Measure) correspond directly to the TMU command set.
For example, the Level box contains the same fields that the TMU->level command expects. Clicking on a
Set button in any of the boxes issues the corresponding command. Clicking on the Refresh Data button
will read back from the TMU its current state, and those values will be shown in the appropriate boxes. The
TMU Side button group allows the user to toggle between reading/writing a TMU on side 0, or side 1.
6-27
M2 Test System Programming and Reference Manual
DIGMOD Pages
The DIGMOD RTI is more complex and interactive with the pattern editor, and is more fully documented in
Chapter 9: Digital Instruments. Here is a sample screen shot:
6-28
Development Environment
The System Functions page contains buttons that perform more system-wide functions. All the reset
buttons do exactly as they are labeled. They will reset the Resource, and return it to its initial or
unprogrammed state. The system status window shows any messages returned from the system library.
These can include setup messages, boot messages, and possible warnings and/or errors.
The RTI (Real Time Interface) has pages that show various resources:
• MP DUT Sources
• HP DUT Sources
• Digital Pins
If you want to show a different, customized, name of your choice on the RTI than the default resource
name/number, you can. It is very simple. The command is the same for each of the four types, so we will
show the syntax first, then some examples. The command to change the name should be put somewhere
in your code where it only happens once, such as LotInit, SubLotInit, or some routine called at that level.
Syntax:
Resource->setname(new_name);
6-29
M2 Test System Programming and Reference Manual
Examples:
If you are using MPDS[0] as VDD in your test program, you might want the name VDD to appear on the
MPDCMOD page of the RTI instead of MPDS[0]. To do this, add the following statement to your code
MPDS[0]->setname("VDD");
In the case where you create a resource variable named VDD, and want it to also show up as VDD in the
RTI, you would have something like this,
TMPDS* VDD; //just the declaration
…
… some code
VDD = MPDS[0]; //this is where you are making the VDD object equal to MPDS[0]
VDD->setname("VDD"); //before this command, the name was taken from the MPDS[0], which was MPDS[0]
Note: The name change will show up the next time RTI is run. If it is running when the setname
command is executed, the new name won't appear until RTI is shut down and then restarted.
If you do not know how to create setup files that the KVD Launcher uses, please read “Setup File Tool” on
page 7-31, or the Help file in the KVD Setup File Tool after you launch it.
One new entry in the Setup File Tool allows the engineer to specify the location and file for the Borland
Cbuilder Project File (.bpr). With an entry in the setup file for the BPR location, and by selecting
Engineering mode from the Customer Preferences Tool, the KVD Launcher will run Borland CBuilder
and then your test program instead of launching the executable file. This then puts your application in
debug mode, and all break points, watches, etc. can be used just like the normal test application debug
process.
Plot Tool
The KVD Library has built in functions available to allow the Test Engineer to plot data and view the plotted
data using the KVD Plot Tool. The steps necessary to plot your data are outlined below. There are three
main steps that have to be performed:
• Setup the Plot object
• Load data into the Plot object
• View the Plot object
Note that for simple viewing of measurement sample data from a source meter or the UVM, the production
GUI has a quick tool called MeasVM Plot. Please see also the documentation in Chapter 7: Operations
Environment.
6-30
Development Environment
Setting up the plot object involves mainly just allocating the memory for the plot. The number of points
needed must be known before the allocation. Allocating the memory for the plot should happen only once
during a program run, so it is suggested that the allocation occur in the TUser::SystemInit function. The
KVD Library creates eight plot objects, which allows the user to create and use eight different plots. To
allocate memory for one of the eight plots, use the global function:
PlotAllocate (plotnum, plotsize)
where the plotnum is one of the eight plots (0 through 7) and the plotsize is the maximum number of points
that the plot will contain. For example, to allocate plot 0 to display 6000 data points, the plot allocate
function would be
PlotAllocate (0, 6000);
The next step in the plot setup involves setting the title, and the x and y axis labels. Each of the eight plot
objects ( plot[0] through plot[7] ) have fields that can be set that will show up in the Plot Tool display. These
fields are:
• title
• xlabel
• ylabel
• comments
All four fields are character arrays (title, xlabel and ylabel are 50 characters, and the comment is 120
characters). In our example for plot[0], the fields could be set as follows
strcpy( plot[0]->title, "Plot Demo Title");
strcpy( plot[0]->xlabel," index number");
strcpy( plot[0]->ylabel,"data points");
strcpy( plot[0]->comments," This is the comment for Plot Demo");
These fields could be set or changed whenever the user needs to, since, unlike the PlotAllocate command,
they do not involve memory allocation.
Loading the data into one of the eight plot objects is done by calling the setdata function, which is a method
of each of the plot objects. The format of the setdata function is:
setdata ( dataindex, datavalue);
where the dataindex is from 0 to the number of points allocated (minus 1) and the datavalue is a valid
"double" value. So, in our example, to create a one cycle sine wave, you would have a function like this:
const double PI = 3.1415269;
for (int index=0; index<6000; index++)
plot[0]->setdata(index, sin(2*PI*((double)index/6000)));
Here, we are loading plot[0] with 6000 data points. In your own code, you would have whatever data
generation functions you would want to plot.
There is a corresponding function for reading back data from a plot object. Its format is
getdata (index);
which returns the double value for the indexed data point. So, to read back the seventh number stored in
plot[0]'s data array, you would use:
6-31
M2 Test System Programming and Reference Manual
};
On the Windows Start menu, click on Debugging Tools, and then select the KVD Plot Tool. The tool will
open up and display all available plots. The lowest numbered plot (plot[0]) will be the default plot, and it will
be shown automatically. To see any other plots generated, you'll click on the Plot name in the lower right
portion of the Plot Tool. On the far right of the plot tool are all the data points used in the plot. If you place
the mouse cross bars over a particular portion of the plot, you'll see (down at the bottom) the data point
number and the value that corresponds to that point. The plot tool also allows saving and loading of plots,
as well as printing of plots.
The LOG object is a global object created from the TLOG class. The LOG object is used to load in limits
files, bin descriptions files, and wafermap description files.
The KVD object descends from the main production form. Its functions allow the user to test against limits,
setting the current test number, and to send comments to the datalog screen.
The SYS object is related to the PCI data bus interface functions, and allows the user to send low-level
register commands, read timer counters, and set execution delays.
6-32
Development Environment
The SITE object descends from the TSite class. It allows the user to read the results of a measurement, or
other functions that produce results. It also supplies the functions necessary to set up resource site masks
for dc sources, digital, tmu, wd, and ws, useful for multisite programs.
Test programs will categorize devices based on tests that have failed, or not failed. This is called Binning.
The KVD Library supports software bins from 1 to 63. Typically, a Bin 1 is considered a "good" devices, but
this is by convention, and is not a permanent rule. The "bin" a device falls into is based on two things
The two file types (as they pertain to binning) are described below.
LIMITS File
Each test in a test program can have an upper and lower limit for that test, as well as a comment and a fail
bin. Actually, there can be multiple fail bins for the case where a test is being used for downgrading and
categorization. This is documented in the section concerning Disqualify Binning.
Using the Limits file editor, a typical limit file will look like this:
If a test fails in the test program, it will be sent to the Fail Bin for this test. The first column, Tnum, is the
Test Number, and the file does not have to contain these in any particular sorted order. There is no
practical limit on test numbers - increased from 6199 in 5.02.
6-33
M2 Test System Programming and Reference Manual
Tests are measured against the upper (UL) and lower (LL) limits with the command
KVD->Test();
If the KVD->Test() command returns true, it means that the test has failed. If the command returns false, it
means the test has passed. To establish the test number that the command will use to get its limits, you
use the KVD->tnum(number) command, where number is the test number. Looking at the limit table
above, to test against the limits for test number 101, you would do this :
1. KVD->tnum(101);
2. …
3. …
4. …assume some code puts a value in SITE->lastresult.value
5. …
6. …
7. if (KVD->Test()) return(FAIL);
8. …
9. …
10. …more code and tests
11. …
12. …
13. return(PASS);
The above code contains line numbers only for the discussion of them here. In "real" code, the line
numbers do not exist. Line 1 sets the current test number to 101. This means that the limits for test number
101 (-4.2V and -3.8V) will be used for the KVD >Test() command on line 7. What happens when the
KVD->Test() command is executed? The result that is sitting in the variable SITE->lastresult.value will be
compared to the limit's upper and lower values. If the SITE >lastresult.value is less than or equal to the
upper limit AND greater than or equal to the lower limit, the command returns false (meaning it did not fail).
Otherwise, it returns true (meaning it DID fail).
If you do not explicitly set the test number, the KVD->Test() command will automatically increment it by
one from the previous, and the first test is implicitly set to 1 if you do not set another number.
The driver code for the KVD DUT sources (MPDCMOD, and HPDCMOD) automatically places the
average of your measurements in this SITE >lastresult.value variable. Other drivers, such as the current
TMU driver, require you to assign the measurement there deliberately. If you are doing any scaling, math,
or other manipulation on a measurement before testing it against the limits, make sure you assign it to
SITE->lastresult.value before you execute KVD >Test();.
Before returning, if the result does fail, the KVD library code checks to see if the device under test (DUT)
has already failed a previous test. If it has, the library just logs this fail, and returns. If it hasn't previously
failed, the library will set the current BIN equal to the FAIL BIN for this test, and then return. This is how the
fail bin gets set. The setting of the fail bin is locked in, that is, it cannot be changed for this device.
On the next DUT, the current bin is set to the default passing bin until a fail occurs. If no fail ever occurs on
a DUT, then the current bin remains the default passing bin, and after Tuser::Tseq has finished, the device
bins out. So now we know that a FAIL BIN gets assigned based on a TEST NUMBER and a TEST FAIL.
But there is one more place where we have to tell the KVD library where that the FAIL BIN from the limits
file is a FAIL BIN, as opposed to a PASSING BIN. Remember, we only enter the FAIL BIN number in the
limits file. The BIN file tells the library code which bins are passing bins, and which bins are failing bins.
SITE->lastresult.alarm is set true if an instrument sets an alarm, for instance in case of a clamp being
activated or a measurement being overranged. If you wish to have an alarm noticed, you need to change
the default which is to have them ignored.
Example:
LOG->DisableAlarms = false;
6-34
Development Environment
Pending
Pending
Units
The list below contains all the pre-defined unit names and values that are available on the KVD system.
You can define your own custom units as many as you wish) using the LOG >AddLimitUnit function.
Example:
Currently, these need to be defined before you load in your limits file from the hard drive, but this restriction
may be lifted in a subsequent release. You can also define them in a file:
An even better way to add your own units is to place them in a file that the library will add automatically. To
do this, create a text file with the same name as your application and with the extension ".units". So, for
example, if you application is named XXX_YYY.exe, create a text file named XXX_YYY.units. Then, in this
file, make the first line [UNITS] and after that initial line, added a line for each new unit where you specify
the unit name = unit value. So, again in our example using GHz, our ".units" file would look like this:
[UNITS]
GHz = 1e9
This .units text file should then be saved into the same folder as the application. The KVD Library will read
this file when it first creates its own units.
6-35
M2 Test System Programming and Reference Manual
Lux = 1.0
Pix = 1.0
lsb = 1.0
uj = 1.0E-6
Code = 1.0
LSB = 1.0
C = 1.0
[blank] = 1.0
BIN File
The BIN file (extension .bin) contains information that pertains to binning and the display of information on
the production operator's display. It allows the user to specify which bins are passing bins, which bins are
failing bins, comments for each bin, maximum consecutive fails for a bin, and maximum allowed fails for a
bin.
Here, we are designating bin 1 as a pass and bins 2 and 3 as fails. If the command KVD >Test() fails, and
the fail bin is in this list, then the device will be "binned" as a pass or fail based on what is in this file. It is
confusing since the bin entry in the limits file is considered a FAIL BIN. What it really means is that in the
case of a limits fail, the current bin gets downgraded to the FAIL BIN from the limits file. To actually bin the
device as a fail, the corresponding bin in the BIN file must designated as a FAIL type bin.
In addition, PASS bins are displayed as a green bar in the Production Operator's Display, and FAIL bins
are shown in red.
BIN files allow the user to specify which bins are "passing" bins and which bins are "failing" bins. In
addition to these attributes, which MUST be defined for all bins used in the LIMITS file, there are fields
available where the user can specify the maximum consecutive fails allowed for a bin and the maximum
fails allowed for a bin during a lot.
Each field in the BIN file can have the following format. The items in angle brackets "<>"indicate that the
field is mandatory, where as the fields in square brackets "[]"are optional.
<binnum>, <passfail>, <comment>, [maxconsecutive], [maxallowed]
Field Description
binnum The binnum field is just a number, and can be between 1 and 63.
Passfail The passfail field can only have two values : PASS, or FAIL. This field is case
insensitive.
Comment The comment field should contain a short description of the bin. The comment
is used in the BIN summary file, and also on the CHART view of the main
screen.
6-36
Development Environment
Field Description
Maxconsecutive This number is stored in the library, and is an upper limit as to how many
consecutive fails for the binnum can occur before the system stops and requires
the operator to confirm. Whenever a device is binned to a bin number not equal
to binnum, this count is reset to zero.
Maxallowed In the entire run of a LOT, if there are more devices binned to binnum than this
number, testing halts, the operator will be notified, and must confirm to
continue.
The example below does the following. It sets up BIN 1 as a pass bin,. It sets up BIN 2 as a Continuity fail
bin, and only allows 100 consecutive BIN 2's, and 1000 BIN 2's in the lot run.
1, PASS, Good Device
2, FAIL, Continuity Fail, 100, 1000
There is a tool to assist you in creating or editing Bin Files. Launch it by using the Start menu ->
Programming Tools -> Bin Description Editor.
Support has been added for a retest/reprobe signal, issued from the handler or prober instead of a START
signal. If issued, data for the preceding device is removed from the various reports (datalog, summary,
etc.) and the serial number is not incremented.
The Bin Description Editor is enhanced to add a column labeled ReProbeCnt, so you can set an maximum
number of times a reprobe can occur in a bin before halting production and alerting the operator.
6-37
M2 Test System Programming and Reference Manual
There are three steps necessary to set this up in your test program.
The way KVD handles DQ binning is by allowing multiple limits for each test. Up to eight lower and upper
limits can be set for each test. However, you can't use the Limits Editor, since it only handles the single
limit type of tests. You will now have to use the Extended Limits Editor (see the Programming Tools
menu). This editor can handle multiple limits per test. You do not have to set up multiple limits for every
test, only those that can use then to determine the "grade" of the DUT.
Creating the New Limits File Using the Extended Limits Editor
Launch this by selecting the Start menu, then Programming Tools, then the KVD Extended Limits File
Editor. This feature is not supported by the Bin Description Editor. However, the Extended Limits Editor
can open and edit legacy .bin files.
You will have to decide the binning process as a DUT downgrades. To do this, you'll need to set up a BIN
file. Please note that the order of the PASS bins entered into the file is the order the KVD Library will use to
"downgrade" the device. If you need more information on setting up a BIN file, see “Setting up a BIN File”
on page 6-36.
Finally, in your test program, where you would normally call the function
LOG->load_limits_data(filename);
This is because the file format for extended limits files has changed to incorporate the multiple lower and
upper limits for a test.
6-38
Development Environment
When a test program is run that is using DQ binning, the datalog will show a "D#" at the outside edge of the
datalogged line, where the "#" is the number of the bin that the device is downgraded to.
DEVICE(s) : 2
S0 T1 Debug Extended Limits -2.000 V -2.000 2.000 D2
S0 T2 Debug Extended Limits -1.000 V -1.000 1.000
S0 T3 Debug Extended Limits -5.000 V -3.000 3.000 D3 FAIL
Site 0 FAIL Bin 7
Test Time 0.400s
----------------------------------------------------
---------------- END DATA LOG ----------------------
---------------- End Log Time : 3/20/2001 2:11:30 PM
----------------------------------------------------
----------------------------------------------------
If you want to know the bin of the DUT at points throughout your test program, you can use the command:
LOG->CurrentBin();
It will return the actual BIN number of the DUT. If you are just wanting to know if the device is still
considered a PASS by the KVD Library, you can use the command:
LOG->IsPassing();
Is the converse.
One last note. If you have more downgrade limits on any test than you do passing bins, the DUT will bin as
a zero (0), indicating an improper binning condition.
6-39
M2 Test System Programming and Reference Manual
The Bin Setup Tool, whose files are saved with a new extension .btf has been enhanced with additional
columns for new features.
Column Description
Show on Plot Controls whether or not the bin will display a line on the Yield Trend tab on the
Production GUI.
Sublot Alarm % If the alarm % is exceeded (for a fail bin) or goes below (for a pass bin), an
alarm is set. The calculation is performed on all devices in the current Sublot.
Alarm Start The number of devices that alarm calculations are suppressed for at the
beginning of a Sublot, or after an alarm is cleared, to prevent nuisance alarms.
This can be different for each bin, depending on your needs - for instance
continuity issues might be different from process monitoring issues.
Rolling Win% The percentage of the last "n" devices that will cause an alarm.
Rolling Win # The number of devices to use for the rolling window yield calculation. Note this
is the total number of devices tested, not "per site".
6-40
Development Environment
Column Description
Site Delta If the bin is selected to display in the Site Table, this is the required site-to-site
matching percentage. If the lowest to highest site do not match within this delta
%, an alarm will be triggered.
Show Site Table Selects if the bin will be displayed on the Site Data production GUI tab. (The
site-based delta display is separate from the Bin Trend line chart display.
Alarm Message Customizable message per bin to give instructions to the operators.
Require Sprvsr Clear If checked, a supervisor will have to enter the configurable password, AS WELL
AS the operator has to enter their ID, which is a four character MINIMUM code.
Color Configures the color of the line chart for the Bin Trend GUI.
LOG->SetFileDatalogAll(true);
LOG->SetFileDatalogFails(true);
LOG->SetFileDatalogOff(true);
Each datalogging mode can be in one of three states. The "All" state datalogs all tests, whether they pass
or fail, to the destination (Screen or File). The "Fails" mode datalogs only the failing tests to the destination.
And the "Off" mode doesn't allow any test datalogging to be sent to the destination.
An example might help. Let's say that we have a set of tests that we always want datalogged to the File,
regardless of the mode set by the Customer Preferences Tool. Let's further assume that we know we only
want to datalog fails to File outside of this selected test group. To accomplish this, we simply have to add
two statements to the test program.
short TheSpecialTests()
{
LOG->SetFileDatalogAll(true); //sets the File datalogging mode to ALL TESTS
…
…
….tests
…
…
LOG->SetFileDatalogFails(true); //sets the File datalogging mode to FAILS only.
}
One last note. The parameter sent in is a Boolean field, and can be set to "true" or "false". The user should
always set it to "true". Setting it to false performs the exact same action as the OFF mode.
6-41
M2 Test System Programming and Reference Manual
Status Memo
The status memo, a field at the bottom of the Production GUI that can be written to from the test program
with the LOG->StatusLog command, is now a top-down scrolling field to ensure the most recent messages
are always visible.
Fast Logger
flog(ansistring) - A fast logger that allows logging to a C:\_kvdco_CustFiles\flog\ text file. Should only
be used in non-time critical sections. Is always on.
If the destination is TOPRINTER, the filename parameter can be left blank since it will be ignored. If the
TOFILE parameter is sent in, then the filename must be a valid PATH and FILENAME with EXTENSION.
Error Class
Error class is a special class set up to enforce a consistent reporting method for errors and warnings. It
also allows for customer selectable actions based on an error's severity.
Object Name:
ErrorLog
Post
6-42
Development Environment
The Severity level has two purposes. To convey to the operator the level of the problem (if it is a problem).
Also, the customer has the option of how to handle ErrorLog messages based on SeverityLevel. For
example, they can choose to output the slINFO and slWARNING messages to a file, and allow program
flow to continue. They can choose to have slERROR, and slHARDWAREFAIL messages output to the
screen (window) and then terminate the application.
These output and termination options are found in the Customer Preferences Tool.
6-43
M2 Test System Programming and Reference Manual
Example:
ErrorLog->Post(rtMPUVM, slWARNING, "File : %s , Function : %s\n\rVoltage Too
high",__FILE__,__FUNC__);
This message would show the filename and the function that produced the warning message "Voltage too
high".
This exception handler is able to report (in most cases) the source code filename and line number of the
exception. It can also report the call stack (series of events, function calls) that lead up to the exception
being thrown. The user does not need to do anything to use this exception handler. There are only two
requirements. Do not put your code in a try…catch block since that creates a local exception handler
which will catch the exception, and make sure that the Borland project options have full debug enabled. If
an exception is caused by a KVD library routine, please report the exception type, filename, line number,
and any other pertinent information. Here is an example of a divide by zero exception (purposely caused
for this example).
6-44
Development Environment
Correlation Mode
Correlation Mode allows data from a device to be saved, and then at a later time compared to current data.
It also allows the use of a different limits file, bin file, etc.
Initially, the data for a device must be saved. To do this, simple add a call at the end of the TUser::TSeq to
CorrMode->SaveToFile();.
The function, CorrMode->SaveToFile can take a path+filename AnsiString if the user wants to send the
data to a special file. If no filename is provided, then the default filename is the application path +
application executable filename with the extension ".COR".
To use correlation mode using a previously saved COR file, do the following:
CorrMode->Enable(); // you are now in corr mode
//
//load your correlation limits file
//
//load your correlation bin file
CorrMode->LoadFromFile(); //load the default ".COR" file, or you could have a
//path and filename to load
At this point all testing is in correlation mode. All datalogs, test statistics, etc are corr mode data. When you
are done, either exit the program (END LOT) or you can switch back to normal mode by calling
CorrMode->Disable();.
Examples:
//Set the lot number
LOG->LotNumber="12345678";
//now read it back into a variable
AnsiString lotnum=LOG->LotNumber;
LOG->DUTSN // DUT Serial Number
LOG->ApplicationName
LOG->UploadDataPath
LOG->OperatorID
LOG->TesterID
LOG->FixtureID
LOG->Job
LOG->Comment
LOG->WaferNumber
LOG->ComputerName
LOG->StartLotTime
LOG->BinFileName
LOG->ParameterFileName
LOG->LibraryVersion
LOG->WaferMapX
LOG->WaferMapY
LOG->StopFF
LOG->FirstTestNum
LOG->LastTestNum
LOG->GoodDieCount
LOG->BadDieCount
LOG->UsingCustomDataDLL
LOG->UsingDeviceHandler
LOG->ScreenSampleSize
LOG->FileSampleSize
6-45
M2 Test System Programming and Reference Manual
LOG->ScreenSampleNum
LOG->FileSampleNum
LOG->LastDatalogString //If in NoDataCollection mode, returns the last datalog string
produced by the KVD->Test command.
LOG->NoDataCollection
LOG->HandTestModeActive
LOG->ActiveWaferTesting
LOG->RuntimeLevel //Returns flags that indicate the run time level of the program.
//Returns:
// const short RUNTIME_LEVEL_STARTUP = 0;
// const short RUNTIME_LEVEL_SYSTEMINIT = 1;
// const short RUNTIME_LEVEL_LOTINIT = 2;
// const short RUNTIME_LEVEL_SUBLOTINIT = 3;
// const short RUNTIME_LEVEL_DEVICEINIT = 4;
// const short RUNTIME_LEVEL_TSEQ = 5;
// const short RUNTIME_LEVEL_DEVICESHUTDOWN = 6;
// const short RUNTIME_LEVEL_SUBLOTSHUTDOWN = 7;
// const short RUNTIME_LEVEL_LOTSHUTDOWN = 8;
// const short RUNTIME_LEVEL_SYSTEMSHUTDOWN = 9;
LOG->SavedDatalogFileName
LOG->EngineeringMode;
LOG->StartedByKVDLauncher
LOG->WaferTestFlow
LOG->AddUserComment(AnsiString name, AnsiString desc);
LOG->ClearUserComments();
LOG->TestInProgress(AnsiString message=NULL);
High-level Classes
KVD
SYS
SITE
BOOT
Instrument Classes
TRelay, TConnection, TSiteConnection, TGroupConnection and TSConnection
TMPDS, TSiteMPDS, TGroupMPDS
TMPUVM, TSiteMPUVM
THPDS, TSiteHPDS, TGroupHPDS
TDigPin, TSiteDigital, TGroupDigital
TWS, TWD, TPWS, TPWD
TTMU
TMatrixClass
Example:
if (KVD->Test()) return(FAIL);
// tests the result that is in lastresult.value against
//the limits for the current test number
KVD->SetPriority which will change the process priority to PP_HIGH PP_REALTIME or PP_NORMAL.
6-46
Development Environment
The benefit to the engineer is realized when he/she adds trace statements to the test program. Three of
the modules that can be viewed are defined as USER modules, which turn on trace statements that the
test engineer added.
Example:
KVDTRACE->Send(BITFLG_USER0, "This is my user trace message"); //will show the message in trace
view when tracing is enabled.
[BITFLG_USER0 can also be BITFLG_USER1 or BITFLG_USER2]
For developers of handler and/or data DLLs, the same reasoning applies. Using trace statements inside
your DLL code allows those statements to be "watched" while the program is running by switching on the
HandlerDLL or DataDLL switches on the KVD Trace Tool. This can be very helpful when debugging either
a new DLL, or a new test program.
6-47
M2 Test System Programming and Reference Manual
You can save the trace output to a file, and share it with KVD in case of communication issues, especially
with handlers or probers.
Sample:
1 <TskProberMultiPass::OnLotStart> ProberGpibAddress = 5
2 <TskProberMultiPass::OnLotStart> SotDelayTime = 0
3 <TskProberMultiPass::OnLotStart> WaferNumType = 1
4 <TskProberMultiPass::OnLotStart> RetestFlaggedBins = 1
5 <TskProberMultiPass::OnLotStart> UnloadWafer = 0
6 <TskProberMultiPass::OnLotStart> LoadWafer = 0
7 <TskProberMultiPass::OnLotStart> UseProberLotNumbers = 1
8 <TskProberMultiPass::OnLotStart> UseZeroBasedReferences = 1
9 <TskProberMultiPass::OnLotStart> EnableProberAlarms = 0
10 <TskProberMultiPass::OnLotStart> SimulateProber = 0
11 <TskProberMultiPass::OpenWaferStepFile>
12 <TskProberMultiPass::OpenWaferStepFile> WaferStepFile (C:\wintester\sample\sample.csv) opened
13 <TskProberMultiPass::OnLotStart> After TheProber->Clear ()
14 <TskProberMultiPass::OnLotStart> ProberStatus = 0
15 <TskProberMultiPass::GetDieOffsets> Command H (response) = H00 (Prober location #)
16 <TskProberMultiPass::GetDieOffsets> TotalProberSites = 1
17 <TskProberMultiPass::GetDieOffsets> TotalProberSitesMask = 0x0001
18 <TskProberMultiPass::GetLotInfo>
19 <TskProberMultiPass::GetLotInfo> Command V (response) = LOTNUM12345 (Lot Number)
Meter Class
Pending.
6-48
Development Environment
Where "T" is an integer value of the test number to plot. Once the test sequence has triggered that test
with the KVD->Test command, the measvm plot will automatically be displayed.
For example, to plot test number 141, you could enter the command:
LOG->plottestnum=141;
Either into your code, or from the debugger, and you will see something similar to this example screen
shot.
Note that when the plot is showing, the test program is temporarily halted. Closing the plot window allows
the test program to continue. Also, the test number is cleared after it is displayed to prevent continuous
showing of plots. To see a plot for the same test number, or another test number, you'll have to re-enter the
test number to plot.
Instrument Availability
These commands are actually Boolean variables that are set at run time by the KVD Library. The
programmer can use these to determine if the Test Head Configuration has the correct boards for the
application.
pTHC->available.MPDCMOD[num]
pTHC->available.HPDCMOD[num]
pTHC->available.DSPIO[num]
pTHC->available.RMX[num]
pTHC->available.UPLINK[num]
pTHC->available.TMU
pTHC->available.WS
pTHC->available.WD
pTHC->available.PWS[num]
pTHC->available.PWD[num]
If the variable returns true, the instrument is in the test head configuration.
6-49
M2 Test System Programming and Reference Manual
In case your programs make use of this function, you must ensure that you are checking for each of the
three possible digital instruments, not just the DSPIO.
The variables that return true in the presence of the various digital instruments are as follows:
pTHC->available.DSPIO[n]
pTHC->available.DSPIOR4[n]
pTHC->available.DDD8[n]
Fathercard relays have been relatively hard to use in the past, being more of a custom resource than a
system-integrated instrument with dedicated addressing language. The addressing scheme for FC relays
is dependent on the FC board type. There is a new tool that can set the addressing scheme of a FC board,
and this integrated scheme is then specified by the TCT tool, used by the RTI tool, and finally by the test
program.
The FC relays can be named with whatever name the user chooses, and these names appear in the RTI
(Real Time Interface debugging tool) next to a check box that represents the relay. Clicking the check box
on (checked) turns the corresponding relay on. Clicking it off opens the corresponding relay.
Each relay has a numbered "K" object created for use by the test program. To close or open a relay you
can simply issue commands of the form:
K2->close();
K5->open();
Saved files are given the extension .fcr, and stored in the folder C:\_kvdco\FCSetupTool, as they are
meant to be a shared resource for all users of a system, and not tied to any particular test program. We
encourage each customer of custom father cards to develop their own shared definition file.
6-50
Development Environment
Note: Due to component obsolescence, the standard relay driver IC 5832 is no longer readily available.
The replacement 6832 is more sensitive to a short glitch coming out of the father card Xilinx, and
may affect certain new construction customer DUT boards. The glitch can be reduced by a
suppression capacitor (0.01uF on the clock pin), and KVD has included updated Xilinx files to
eliminate it in release 5.03R4 and later.
6-51
M2 Test System Programming and Reference Manual
Some standard files can be imported, such as Digital Pin Connections, Father Card Connections, and
Calibration Connections.
There are two options available when creating connections. Adding in the _TO_ link word, and Auto
Creating reverse connections. Files can also be saved or loaded for later use.
The relay addresses within KVD instruments may be addressed directly, but this is quite risky if you are not
working with full knowledge of the functions involved. For relays located on Father Cards and DUT boards,
you will typically have full control over the schematics and need to address each relay.
6-52
Development Environment
As another example, the name field for the DDCH13 to Digital Driver connection is
DIGITAL, DDCH13
Then the ConTableTool will declare one Array as TConnection* DDBUSA_TO_DDCH[21], and another
array as DIGDRV_TO_DDCH[5]. The individual connections are then implemented using the array
element number assigned under the [] col. In this example, it would be
DDBUSA_TO_DDCH[3]=new TConnection(...);
DDBUSA_TO_DDCH[20]=new TConnection(...);
DIGDRV_TO_DDCH[3]=new TConnection(...);
DIGDRV_TO_DDCH[4]=new TConnection(...);
6-53
M2 Test System Programming and Reference Manual
Use this Menu Item to import a connection table that was originally created for a KVD DOS program. The
ConTableTool will allow the user to select a file to be read in. The tool then looks for a connections[] table
entry. Upon finding one, it will attempt to convert the table into the entries that are expected in the
ConTableTool.
KVD will supply a connection library that contains all digital pin to digital driver, and digital pin to analog
bus connections that reside internal to the KVD system. Because of the possibility of different digital
subsystems, there could be multiple files to choose from. Digital pin connection libraries will have the
extension DCL. See also Placement of Data.
Relays on the Fathercards are pre-defined in a Fathercard Connections Library file. All Fathercard
Connections Library files have the extension "fcl". All Fathercard Connections declare only one address-bit
pair, since they are associated with only one relay.
Some special connections are needed for calibration purposes. These connections will be in a Calibration
Connections library. Again, there could be multiple files based on different test head configurations. The
Calibration Connections library files will have the extension CCL. See also Placement of Data.
Options
At this time there are only two options that are available. Both options affect the CPP and H files that are
created when the Create Connections Button is clicked.
6-54
Development Environment
Default = on
Since the ConTableTool expects Connections names in the format NAMEA, NAMEB , these are
concatenated using the underscore character. This option will use the _TO_ character string to
concatenate the two names. For example, if the Connection Name field has:
THISPOINT, THATPOINT
then the resulting connection that will appear in the CPP and H files (assuming this options is on/checked)
is:
THISPOINT_TO_THATPOINT
If this options is not on (unchecked) then the resulting connection in the CPP and H files will be:
THISPOINT_THATPOINT
Default = off
This option tells the ConTableTool to automatically create two connections for each entry in the table. The
difference between the two connections (for each entry) is that the names get reversed. using the above
example, and assuming the same names and also assuming the Use _TO_ as Link Word option is on, the
CPP and H files will contain connections that look like this:
THISPOINT_TO_THATPOINT
THATPOINT_TO_THISPOINT
This allows the user to use either name to reference the same connection without having to remember the
order of the names.
6-55
M2 Test System Programming and Reference Manual
Creating Connections
This is a partial example of how to create connections:
In this example, there are 8 connections for DDBUSA to DDCH 0 through 7. Notice that the array field ([ ])
contains the array element number. The ConTableTool will define an array big enough to contain all the
individual connections. In this example, a TConnection will be defined as:
TConnection* DDBUSA_TO_DDCH[8]
With these 8 entries, and the address-bit fields defined as you see above, by clicking on the Create
Connections button, and selecting a filename, two files will be created. For this example, if you chose the
filename to be WinConnections.cpp, then both the CPP and H files will be created.
TConnections* DDBUSA_TO_DDCH[8];
// End of Declarations
//
void CreateConnections(void);
#pragma startup CreateConnections()
void CreateConnections()
{
DDBUSA_TO_DDCH[0] = new TConnection( 0x8,0x1, 0x85,0x1, 0x87,0x1, 0x88,0x40);
DDBUSA_TO_DDCH[1] = new TConnection( 0x8,0x1, 0x85,0x2, 0x87,0x2, 0x88,0x40);
DDBUSA_TO_DDCH[2] = new TConnection( 0x8,0x1, 0x85,0x4, 0x87,0x4, 0x88,0x40);
DDBUSA_TO_DDCH[3] = new TConnection( 0x8,0x1, 0x85,0x8, 0x87,0x8, 0x88,0x40);
DDBUSA_TO_DDCH[4] = new TConnection( 0x8,0x1, 0x85,0x10, 0x87,0x10, 0x88,0x80);
DDBUSA_TO_DDCH[5] = new TConnection( 0x8,0x1, 0x85,0x20, 0x87,0x20, 0x88,0x80);
DDBUSA_TO_DDCH[6] = new TConnection( 0x8,0x1, 0x85,0x40, 0x87,0x40, 0x88,0x80);
DDBUSA_TO_DDCH[7] = new TConnection( 0x8,0x1, 0x85,0x80, 0x87,0x80, 0x88,0x80);
}
//end of instantiations
//
void DeleteConnections(void);
#pragma exit DeleteConnections()
void DeleteConnections()
{
delete(DDBUSA_TO_DDCH[0]);
delete(DDBUSA_TO_DDCH[1]);
delete(DDBUSA_TO_DDCH[2]);
delete(DDBUSA_TO_DDCH[3]);
6-56
Development Environment
delete(DDBUSA_TO_DDCH[4]);
delete(DDBUSA_TO_DDCH[5]);
delete(DDBUSA_TO_DDCH[6]);
delete(DDBUSA_TO_DDCH[7]);
}
//end of delete list
Placement Of Data
The placement of the imported entries begins at the cursor row location. That is, if you click on a row
BEFORE selecting this menu item, the ConTableTool will start importing the entries at the selected row. If
data already exists on the row, the user is prompted whether to overwrite the data or to leave it. As an
example, if the user clicks on the 10th row (any column), and then chooses to import a pre-defined file, or
a DOS connections table, the imported data will begin at row 10, and will continue until all data has been
imported, or the maximum number of entries has been reached.
#define USER_NO_ERRORS 0
#include "UserClass.h"
#include "DCTests.h"
#include "ACTests.h"
#include "Resources.h"
#define PATDIR "c:\\"
PATDATA pat_list[] = {
//ID FILENAME BANK LOADFLAG RETESTPAT
// OFFSET LENGTH HALTFLAG
{0, "pat1.BP", 0, 0UL, 34UL, 1, 2, -1},
{1, "pat2.BP", 0, 35UL, 35UL, 1, 2, -1},
{-1, "NOPATT", 0, 0UL, 0UL, 0, 2, -1},
};
///////////////////////////////////////////////////////////////////////
short TUser::SystemInit()
{
LOG->load_limits_data("KVDTestApp.LIM");
LOG->load_bin_data("KVDTestApp.BIN");
return(USER_NO_ERRORS);
}
///////////////////////////////////////////////////////////////////////
short TUser::LotInit()
{
DIG0->patload(pat_list,"c:\\sandbox_sunnyvale\\");
return(USER_NO_ERRORS);
}
///////////////////////////////////////////////////////////////////////
6-57
M2 Test System Programming and Reference Manual
short TUser::SubLotInit()
{
return(USER_NO_ERRORS);
}
///////////////////////////////////////////////////////////////////////
short TUser::DeviceInit()
{
return(USER_NO_ERRORS);
}
///////////////////////////////////////////////////////////////////////
short TUser::TSeq()
{
if (Continuity()) return(FAIL);
if (DATATEST()) return(FAIL);
return(PASS);
}
///////////////////////////////////////////////////////////////////////
short TUser::DeviceFinish()
{
return(1);
}
///////////////////////////////////////////////////////////////////////
short TUser::SubLotFinish()
{
return(USER_NO_ERRORS);
}
///////////////////////////////////////////////////////////////////////
short TUser::LotFinish()
{
return(USER_NO_ERRORS);
}
///////////////////////////////////////////////////////////////////////////
short TUser::SystemFinish()
{
return(USER_NO_ERRORS);
}
VirtualHandlerClass
Class:
TVirtualHandlerClass
Object:
Any Handler DLL object
void TVirtualHandler::: PostLotNumber(HANDLE winhandle, char* lotnum);
void TVirtualHandler:::PostWaferNumber(HANDLE winhandle, char* lotnum);
void TVirtualHandler:::PostEndLot(HANDLE winhandle);
void TVirtualHandler:::PostEndSubLot(HANDLE winhandle);
void TVirtualHandler:::PostWaferMapXY(HANDLE winhandle, int X, int Y);
6-58
Development Environment
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.
Wafer Mapping
This document will detail all the steps that must be performed to wafer map wafers tested in production.
There are currently only two ways to create the wafer description file (WDF). You can do it manually with a
text editor, or, if you are testing wafers on an M310 system, you can you the newest feature of the
M310Direct Tool. I'll first explain the text editor method, and then quickly explain the M310Direct method.
Next, we will enter a line for each row of the wafer map. The following characters should be used for the
following type of die :
• - <dash> for untestable die.
• P for processable die
• I for Ink die
• S for skipped die.
6-59
M2 Test System Programming and Reference Manual
The following lines are just an example. You would have entries that match your wafer.
1
1
74
51
-----------------------------------------------------------------
-----------------------------------------------------------------
----------PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP---------------------
-------PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP------------------
-----PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP----------------
----PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP----------------
--PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP------------
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP-----------
This would continue for all rows on the wafer. This map will be loaded by the command
LOG->load_waferdesc_file(filename);
M310Direct Method
The latest version of M310Direct has a secondary page that pops up once the tool has successfully
connected to the M310. Click on the page to activate it. On this page you simply have to enter the TSU
(M310 trimmer Setup) filename, pick a path and filename of the wafer description file that will be created
and saved by the tool. Once this is done, click on Start. You should see the wafer description information
being generated on the lower part of the window. Once it is complete, it will be saved. If you didn't specify
a filename, you'll be prompted to enter one once the description generation is complete. Also, if you do not
specify a path when specify the output file name, then it will be saved in the root directory of the C drive.
The Wafer map Color File (WCF) specifies the colors that various software bins will show up as on the
wafer map. The first line of this file must always be:
[COLORS]
Underneath this [COLORS] line, the bin number will be associated with a color constant. For example, if
you wanted BIN 1's to show up as bright green, you would want to set it to the color clLime. The entry itself
has a simple format, BIN # = COLOR. Again, as an example, if I did want to set BIN 1's to clLime, one entry
would look like this
[COLORS]
1 = clLime;
So what colors are possible? They are listed below. Please note that the color IS case sensitive.
ClAqua clBlack clBlue
ClDkGray clFuchsia clGray
ClGreen clLime clLtGray
ClMaroon clNavy clOlive
clPurple clRed clSilver
clTeal clWhite clYellow
6-60
Development Environment
Where the filename is the PATH and NAME and EXTENSION of the WDF file.
Where the filename is the PATH and NAME and EXTENSION of the WCF file.
Finally, with a WDF and WCF file loaded, all you have to do is make sure that the Customer Preferences
Tool has the Wafer Test Flow selected. Also, you'll notice right below this the options to SHOW the wafer
map and to load any previous Wafer Data. If data was saved off of a wafer that never completed, and now
the wafer is being restarted, the previous data can be loaded if this option is on.
Delay Table
Due to KVD data bus speed not always being matched by certain father card resources, you may see code
such as the following in an existing, working test program:
////////////////////////////////////////////////////////////////////////
// changes delay_time for signals send to following address from default
// (8ns to 16ns) and resets the value, to enable drivers function properly.
for (int i = 0x27; i <=0x33; i++)
{
delay_table[i]=16;
SYS->send_value_slot(i, 0, 0xb, 0);
}
Just copy this to the LotInit function of any new test program using the same father card. It's magic.
The need for this sort of code will be reduced in future releases - please keep up with KVD Release Notes
to know when.
send_value
Send_value and send_value_slot are very low-level KVD functions to send commands directly to
instrument registers in the absence of higher-level language support. When you see them, it will always be
done by KVD applications engineers to enable a new convenience feature in anticipation of later and more
readable code.
6-61
M2 Test System Programming and Reference Manual
Setsites
Setsites is a function that configures the system software for the expected maximum number of sites in a
multisite program, and where in the test head the resources are. Normally, you will be using a sample
program to copy the proper configuration from.
SITE->setsites( 4, //active sites total
0xF, //active sites at startup mask
1, //dc_sides mask
2, //dd_sides mask
0, //wd_sides mask
0, //ws_sides mask
2, //tmu_sides mask
0); //hpdc_sides mask
Multisite Development
Multisite Testing
Some C++ classes have been configured to make multisite support easier.
There are multisite and group classes for Digital, MPDS, HPDS, and MPUVM classes.
The idea behind these classes is simple. When the user creates an object of one of these classes, they
can pass in up to thirty-two corresponding objects. The position of the objects in the parameter list
represents the site information.
An example best illustrates this. In a program, we could use, for example, MPDS[2] as Vdd for site 0, and
MPDS[10] could be Vdd for site 1. To accomplish this, the user would create a TSiteMPDS object with
these two DUT Sources
TSiteMPDS* Vdd = new TSiteMPDS ( MPDS[2], MPDS[10] );
Note here: The first element in the declaration (constructor) it is assigned as a resource for site 0. The next
DUT Source is the second DUT Source in the list, it is assigned as a site 1 resource.
After creating a Site DUT Source, it is then used the same as a typical DUT Source. Again, using the 2
DUT Source Vdd created above, the voltage could be set to 5.0 volts with this statement:
6-62
Development Environment
Vdd->setv(5.00);
Etc.
These statements would then set MPDS[2] and [10] to 5.00v, or take a measurement on each of the DUT
Sources. However, IF a site has been disabled due to a previous fail on that site, or by the user disabling it
though a call to:
SITE->disable(sitenum)
Then any resource assigned to that disabled site would NOT be issued the command. For example, if site
1 had failed previously, and the command:
Vdd->setv(5.00)
was issued, then MPDS[2] would be set to 5.0 volts, and MPDS[10] would not be set.
This is because of the SITE class' site shutdown procedure. When a site is shutdown, and assigned DUT
Source resources are first set to zero volts, then set to a current range of 20uA, and finally turned off.
One note here about the measurements. When a TSiteMPDS object issues a measvm command (like the
above Vdd->measvm(10)) the results are stored in the SITE->results array according to the site resource
number that was assigned. In this example, the two measurements would be in SITE->results[0] through
SITE->results[1]. When the command KVD->Test() is called, it knows how many sites are being used, and
then compares the matching results (straight from SITE->results) against the limits.
So far, we've only covered the TSiteMPDS class. The other site-based classes have the same site-
resource assignment strategy, and operate the same way when issuing commands, and shutting down
sites.
For example, if a tri-site testing required an SCLK pin, then the programmer could assign three digital pins
for the three sites with this declaration
TSiteDigital* SCLK = new TSiteDigital (DDCH[0][1], DDCH[1][1], DDCH[2][1]);
This would assign DDCH0 on side 1 as the site 0 resource, DDCH1 on side 1 as the site 1 resource, and
DDCH2 on side 1 as the site 2 resource. Then, the format could be set with the following command:
SCLK->dfmt (0, CLK2, 0e-9, 100e-9, 0); //set SCLK to CLK2 format for time set 0
All three pins (if their corresponding site is enabled) will be set to this format.
The site shutdown for the TSiteDigital class simply disables the individual digital pin.
TSiteConnection, allows the user to group Connection objects together into site resources too. This class
requires that the user to create TConnection objects prior to creating the TSiteConnection object, since the
parameter list for the TSiteConnection object requires TConnection objects. An example again best
illustrates this concept.
6-63
M2 Test System Programming and Reference Manual
Let's assume that the user has created three connection objects that will be used to connect or disconnect
a digital pin to the DUT pin. The three connections are for the three sites, and the DUT pin is the SCLK pin.
Let's further assume that the site 0 digital to DUT connection goes through K0, the site 1 connection goes
through K1, and the site 2 connection goes through K2. Then the TConnection objects (this is not the final
TSiteConnection object yet) would look like:
TConnection* DDCH0_TO_SCLK = new TConnection (K[0]); TConnection* DDCH1_TO_SCLK = new TConnection
(K[1]); TConnection* DDCH2_TO_SCLK = new TConnection (K[2]);
The site-based connection that will be used for tri-site testing in this case, would be something like
TSiteConnection* DIG_TO_SCLK = new TSiteConnection (DDCH0_TO_SCLK, DDCH1_TO_SCLK, DDCH2_TO_SCLK);
Or
DIG_TO_SCLK->discon();
Site shutdown for a TSiteConnection object is to discon the corresponding Connections for that site.
Note: To make all this work properly, the SITE object needs to be set up to use the sites correctly. Make
sure that the first two parameters in the call to SITE->setsites takes into account the site
configuration you plan to use. The first parameter is the total number of sites (i.e.; 3 for tri site
testing, 4 for quad site testing, 2 for dual site testing, etc). The second parameter is the MASK for
the enabled sites. For dual this would be 3, for tri-site testing this would be 7, for quad site this
would be 15, etc, etc.
Limitations
All of these classes can take up to thirty-two objects, which means a limit (currently) of 32 site testing.
Group Objects
To go along with multisite objects, you can also define group objects, where functions act on the group as
a whole, but have no operational change due to sites being active or disabled.
Data files (SUM, LOG, HIS, TDA) for multisite operation are available with site-separated data if desired,
with "_sites" appended to the file name, before the .his, .log, .tda, or .sum extension. Normal data files are
still generated using the traditional filenames, containing consolidated data of all sites combined.
SITE >lastresult
Final result is saved in this variable after measurements from, TMPDS, THPDS, TMPUVM classes.
RESULT lastresult;
6-64
Development Environment
SITE >disable
Disables a particular site. Only used in multisite testing.
short disable(short sitenum);
SITE >enable
Enables a particular site. Only used in multisite testing.
short enable(short sitenum);
SITE >IsActive
Returns true is the site passed in is considered ACTIVE.
bool IsActive(unsigned sitenum);
SITE >resetall
short resetall(void);
SITE >set_default_sites
Sets the SITE parameters to the defaults read in through the TCT.
short set_default_sites();
Description:
It is typical that the defaults supplied by the TCT are correct, and so this function is used as the default for
the SITE object created by the library.
SITE >setsites
Allows setting of the SITE parameters. This overrides the default settings.
short setsites(unsigned howmanysites, unsigned siteval, unsigned DCsides, unsigned DDsides, unsigned
WDsides, unsigned WSsides, unsigned TMUsides, unsigned HPDCsides);
Parameters:
unsigned howmanysites
The mask that represents the active DCMOD or MPDCMOD board sides.
unsigned DDsides
6-65
M2 Test System Programming and Reference Manual
unsigned WSsides
The mask that represents the active HPDCMOD board sides Return Values.
Description:
The default site settings are typically used. However, if you need to alter those settings, you can use this
function.
SITE >sitemask
Simple function that converts a sitenum to its mask value.
short sitemask(short sitenum);
Description:
For example, sitenum 0 has a mask of 1, sitenum 1 as a mask of 2, sitenum 2 has a mask of 4, etc.
Resource Manager
In REV503, we have implemented what is known as a resource manager, with object being named
KVDRMan. The purpose of the resource manager is to make it easier to define a user resource "outside"
of the test program. Although code still has to exist inside the test program, the KVDRMan can make it
easier when using groups of resources, or when testing in multi-site mode.
The KVDRMan loads resources from a user defined INI file. This is done through the command
KVDRMan->LoadResMap(filename);
Where "filename" can contain the path and filename of the INI file, or just the filename if the file exists in
the same folder as the application.
The format of the resource file is in normal INI file format. Resources are defined in specific sections based
on the type of resource, and the type of use. All resource will follow a pre-defined format in the file based
on these rules:
Site related resources are always under a sections named [SITE_XXX] where XXX is specific to the
resource type. For example, site related RMX resources, based on the TAllRMX class, are under the
section [SITE_RMX]. Group related resources, which are not tied to any specific sites, will be under a
section named [GROUP_XXX], where the XX again is resource specific. Again, as an example, for RMX's
based on the TAllRMX class, it would be [GROUP_RMX].
Where resource name is a string name that uniquely identifies the resource, and the <pinlist> would be
representative of the resource being defined. As an example, using the RMX resources, a valid resource
would be defined like this:
6-66
Development Environment
[SITE_RMX]
MyMatrix = M0P0, M8P0, M16P0, M24P0
For this example, the resource manager KVDRMan would read in "MyMatrix" as the name to be used for
this RMX resource, and the four MxPy relays defined would be assigned to this resource. Since the
definition is under the [SITE_RMX] section, the resource manager would assign M0P0 to site 0, M8P0 to
site 1, M16P0 to site 2, and M24P0 to site 3.
In the user's application, they initially would make a call to KVDRMan->LoadResMap and pass in as the
lone parameter, the filename of the resource INI file. If, in this example, we had saved the resource file as
"MyResources.INI", then the user would load it with
KVDRMan->LoadResMap("MyResources.INI");
Once the resource file has been loaded by the resource manager, the user then uses a simple command
syntax to create their resource in the application. For RMX, and remembering that the RMX resource is
based on the TAllRMX class, the resource gets created with this command:
TAllRMX* rmxvariable = KVDRMan->RMXFromMap(<rmxresname>);
Where <rmxresname> is the resource name used in the INI file. So in our example, we might do this:
TAllRMX* MATRIX;
MATRIX = KVDRMan->RMXFromMap("MyMatrix");
From this point on, the TAllRMX variable named MATRIX would be used as any TAllRMX variable.
MATRIX->Set();
This would set all four MxPy relays defined for this resource (assuming all four sites are active).
MATRIX->Clear():
This command would clear all four MxPy relays (again, assuming that all four sites are active).
In the event a Set or Clear command is called and a site or sites are in active, then the command is
ignored for the inactive sites. If the resource was defined in the GROUP_XXX section, then the command
is issued for all the defined pins (or relays) regardless of site active states.
RMX Implementation
As explained earlier, the TAllRMX has been implemented in the KVDRMan resource manager. The
TAllRMX encapsulates all available RMX boards in the test configuration. The "MxPy" values have been
implemented to also span across all the available RMX boards in the test configuration. See the TAllRMX
class (or the TAllRMX Class write-up) for valid MxPy values.
6-67
M2 Test System Programming and Reference Manual
Available functions:
boot_all(<confirm>);//where confirm=1 prompts the user before boot
Example:
BootTester->boot_all(1);
Test head relays, for standard (non-custom) Father Cards. Do NOT use these objects for custom father
cards. Future software libraries will include Classes for driving such custom relays.
Available functions:
open();
close();
Example:
K46->close();
DDBUSA_TO_DDCH[NUMDDCHANNELS];
Purpose:
Available functions:
con();
discon();
Example:
DDBUSA_TO_DDCH[6]->con();
DDDRV_TO_DDCH[NUMDDCHANNELS];
Purpose:
Available functions:
con();
discon();
Example:
DDDRV_TO_DDCH[6]->con();
TH
Purpose:
6-68
Development Environment
Available functions:
discont_reset()
dd_reset(); //resets the digital subsystem
fc_reset(); resets the fathercard
tmu_reset();
wd_reset();
ws_reset();
Example:
TH->dd_reset();
Object:
KVD
TKVD::AddUserForm(AnsiString caption, TForm* userform)
6-69
M2 Test System Programming and Reference Manual
6-70
Chapter 7: Operations Environment
Customer Preferences Tool
Launch the Customer Preferences tool from the Start menu, to configure customer-specific options in your
preferred way.
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 four 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.
7-1
M2 Test System Programming and Reference Manual
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 Borland 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.
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.
7-2
Operations Environment
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:
7-3
M2 Test System Programming and Reference Manual
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)
7-4
Operations Environment
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.
7-5
M2 Test System Programming and Reference Manual
Field Description
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 being
used 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.
These are the steps to modify the standard parallel handler/prober driver for your particular requirements.
Current KVD software supports the presence of one configuration file at a time, but this will soon be
expanded to allow easy selection from a menu of various handler models.
1. Build a cable using a 24-pin Amphenol male connector 57-30240 (or equivalent), unless your system
is using a custom interface connector.
2. Edit the file C:\_kvdco\Handlers\GenHCIF.ini (used in KVD Library Releases 5.0.0 and higher).
7-6
Operations Environment
[If this changes in future releases, please follow instructions given in the release notes for that release.]
Do not change the first line at all. Only edit the values to the right of the = sign on each line.
[PARAMETERS]
BIN_SETUP_TIME = 15e-3
EOT_ACTIVE_TIME = 25e-3
BIN_HOLD_TIME = 15e-3
EOT_Active = 0
IsPulsed = 1
ActiveEOTBINLevels = 0
ExpectedSOTLevel = 0
ExpectedEOWLevel = 0
Debugging=0
Explanation of Parameters:
Time that both EOT and BIN lines are active. Starts at the end of the BIN_SETUP_TIME.
BIN_HOLD_TIME
Time after EOT goes from active to inactive, and BIN lines remain active.
EOT_Active
1 means we expect EOT to be active high true, 0 means we expect EOT to be active low true.
IsPulsed
0 means false, the Start Of Test is expected to be a static level. 1 means true, the Start Of Test is pulsed.
(edge sensitive)
ActiveEOTBINLevels
0 means a LOW is considered active true for BIN lines. A 1 means a high is considered active true for BIN
lines.
ExpectedSOTLevel
0 means a low on SOT indicates START OF TEST (low true or low-going logic). 1 means a high on SOT
indicates START OF TEST. (high true or high-going logic).
Debugging
0 means do NOT go into interactive debugging mode. A 1 means to enter debugging mode, which stops
the DLL at various places so signals can be verified.
ExpectedEOWLevel
0 means a low on EOW indicates an End Of Wafer has occurred. 1 means a high on EOW indicates End
Of Wafer. The production software uses this signal to end the current Sublot, perform the desired action for
summaries and datalogging, increment the Sublot (wafer) number by one, and resume testing with a new
Sublot.
BIN_SETUP_TIME is 15mS
7-7
M2 Test System Programming and Reference Manual
EOT_ACTIVE_TIME is 25mS
BIN_HOLD_TIME is 15msS
The KVD will output a low on BIN lines and EOT to bin the device.
7-8
Operations Environment
7-9
M2 Test System Programming and Reference Manual
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.
WAFERS Displays the contents of two cassettes, and allows control over wafer loading
and unloading, alignment, and a clean probe function.
7-10
Operations Environment
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
Driver Commands:
short HANDLER->SetTemperature (unsigned Site, double Temperature);
double HANDLER->GetTemperature (unsigned Site);
short HANDLER->GotoLocation (int X, int Y);
short HANDLER->GetCurrentLocation (int &X, int &Y);
short HANDLER->Contact (unsigned Site);
short HANDLER->Uncontact (unsigned Site);
void HANDLER->writestring(char* TheString)'
char* HANDLER->readstring(void);
short HANDLER->getstatus(void);
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.
7-11
M2 Test System Programming and Reference Manual
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.
Interfacing to a handler or prober can be accomplished in numerous ways. RS-232, GPIB, or Ethernet (via
private networking) are ways to communicate in a complex way with the handler or prober. Please contact
your local KVD applications engineer for assistance designing a software control file (DLL - Dynamically
Linked Library) for your particular model if necessary.
The choice of which DLL to use at any time is a production control issue, for which there is a Preferences
GUI (Graphical User Interface) available to test floor operators. This is documented in “Parallel Handler
Driver Instructions” on page 7-6.
For handlers using a simple parallel interface, KVD provided the optional HCIF board, located in the CPU,
designed to occupy an ISA slot.
7-12
Operations Environment
The HCIF is the hardware board which contains the opto-isolated interface to control the standard parallel
handler/prober port.
The cable from the HCIF to the rear panel of the CPU case plugs into the HCIF board on connector X1, a
26-pin flat cable header. Pin 1 is on the left on this view of the board.
The HCIF contains a SCSI-appearing connector on its mounting bracket - this was used for legacy
systems as the data bus connector to the test head. This function is now handled by the PCIDIS board, so
this connector should never be used.
7-13
M2 Test System Programming and Reference Manual
Note for hardware troubleshooting of this kind of isolated interface: All voltages are referenced to the
floating ground, and pull-ups are sourced by the floating +5V line. If you are using a DMM or oscilloscope
on the signal (bin or start) line only, you will most likely not see the desired signal.
Optional alternatives to this Amphenol connector are available. If installed on your test system,
documentation will be provided by the service engineer. One popular alternative is a DB25 (subminiature D
connector.)
The pinouts for this bracket and cable are included here for reference.
7-14
Operations Environment
From To
HCIF X1 Alternate Cable
24-pin header (DB-25 female)
1 EOT 25 EOT
3 BIN1 1 BIN1
5 BIN2 2 BIN2
7 BIN3 3 BIN3
9 BIN4 4 BIN4
11 BIN5 5 BIN5
7-15
M2 Test System Programming and Reference Manual
From To
HCIF X1 Alternate Cable
24-pin header (DB-25 female)
13 BIN6 6 BIN6
15 BIN7 7 BIN7
17 BIN8 8 BIN8
19 START 10 START
21 BIN9 n/c
23 BIN10 n/c
2 +5 iso 11 +5V
4 +5 iso n/c
10 n/c n/c
12 n/c n/c
14 n/c n/c
16 n/c n/c
18 HIN2/EOW 23 EOW
20 HIN3 n/c
22 HIN4 n/c
24 RETEST n/c
The PHLIC card is the replacement for the obsolete HCIF card. The reason for this is due to the PC
industry discontinuing the ISA bus standard. The HCIF card was based on the ISA system bus. The PHLIC
card has many advanced I/O features that will allow it to control a large variety of handler, probers and
laser trimmers.
7-16
Operations Environment
IDO0 11 EOT 25
IDO1 30 BIN1 1
IDO2 12 BIN2 2
IDO3 31 BIN3 3
IDO4 13 BIN4 4
IDO5 32 BIN5 5
IDO6 14 BIN6 6
IDO7 33 BIN7 7
IDO8 15 BIN8 8
VOUT_ISO 19 +5 11
VIN 10 11
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.
7-17
M2 Test System Programming and Reference Manual
Shown in this image are the 64 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 64 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.
7-18
Operations Environment
In this example, BIN 0's will be sorted to category 4, BIN 1's to category 1, BIN 2's to category 2, and BIN
3 to 13 sorted to category 3. All remaining bins will be sorted to category 4. On this particular handler, the
limit for the handler was 4 sort categories, thus only 4 are used. The only limit to the number of sort
categories used is based on the handler, with the KVD having a limit of 64. (Except for parallel interface
hardware, however, where the limit is 10 category lines.)
7-19
M2 Test System Programming and Reference Manual
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.
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:
KVD->customdata->SetStringParam(100, "C:\\Lot123 Test Data\\KVDTest_Run1_Lot");
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.
7-20
Operations Environment
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.
7-21
M2 Test System Programming and Reference Manual
Defined per customer request, there is an XML DLL available on the Customer Preferences Tool, Custom
Data DLL tab. When selected, XML output is generated in a defined location, XMLDataPath, which you
can place in an INI file C:\_kvdco_CustFiles\Handlers\MXML.ini.
Normally, package testing uses the LOT concept only, and suppresses any mention of SUBLOTS, which
are a wafer-mode term. However, for speed of sending partial yield data to the XML manager host, there is
a Preferences Tool option on the main tab called Package Sublot Limit. If the No Limit box is
unchecked, and a number of devices chosen, then the test system will emit an XML file every "n" devices
(or a number close by the selected number in the case of multi site testing, where the exact number may
not be achievable).
New prober control DLLs provided to handle two-pass wafer testing using XML data transfer between
passes.
This section explains the setup and operation of a probe test cell with XML data output. TSK and TEL
probers are supported currently, and you need to select the "Multipass" version of the prober drivers even
if you are only running single-pass testing.
7-22
Operations Environment
7-23
M2 Test System Programming and Reference Manual
Instructions:
1. Setting up the TEL or TSK prober involves choosing a location for the reference die, multisite control,
and alignment.
There is a tool in beta development that may eliminate most of the work, called WaferFileMaker.exe
located in C:\_kvdco\handlers. Note there is no Start menu shortcut until this is fully tested and
released. Choose the prober type, GPIB address, and other options, then press start on its GUI:
7-24
Operations Environment
-PPPPPPPPPPPPPPPPPPPP-
--PPPPPPPPPPPPPPPPPP--
--PPPPPPPPPPPPPPPPPP--
--PPPPPPPPPPPPPPPPPP--
--PPPPPPPPPPPPPPPPPP--
---PPPPPPPPPPPPPPPP---
---PPPPPPPPPPPPPPPP---
---PPPPPPPPPPPPPPPP---
----PPPPPPPPPPPPPP----
----PPPPPP--PPPPPP----
-----PPPPP--PPPPP-----
-----PPPPP--PPPPP-----
------PPPPPPPPPP------
-------PPPPPPPP-------
--------PPPPPP--------
---------PPPP---------
In this file, the "-12" is the minimum column, and the "-50" is the minimum row. The "11" is the maximum
column, and the 5 is the maximum row. The columns are the wafer "X" and the rows are the wafer "Y".
If you are using "Zero based references", you will need to adjust these values to correct for your actual
reference die location. You will also need to edit the wafermap to display any edge, ink or test die on the
wafer.
As an example of how to adjust the locations, let's say your actual reference die is at X-8, Y12. You would
do the following:
Subtract X-8 from X0 to get an offset of X8.
Subtract Y12 from Y0 to get an offset of Y-12.
Add the X8 and Y-12 offsets to your TSK-provided min and max numbers to get:
-4
-62
19
-12
Edit the wafermap as needed to match your actual wafer, using the following characters:
"-" is a skip die
"P" is a processable (testable) die
"I" is a ink die
"S" is a skip die
"E" is a edge die
"T" is a test pattern
3. In the TSK process, the .csv file should not have to be edited, and it contains entries like this:
S0,P,X8,Y1
S0,P,X9,Y1
S0,P,X10,Y1
S0,P,X11,Y1
S0,P,X12,Y1
S0,P,X13,Y1
S0,P,X14,Y1
S0,P,X15,Y1
S0,P,X18,Y5
S0,P,X17,Y5
S0,P,X16,Y5
S0,P,X15,Y5
S0,P,X14,Y5
S0,P,X13,Y5
S0,P,X12,Y5
S0,P,X11,Y5
S0,P,X10,Y5
S0,P,X9,Y5
S0,P,X8,Y5
7-25
M2 Test System Programming and Reference Manual
S0,P,X7,Y5
S0,P,X6,Y5
S0,P,X5,Y5
S0,P,X4,Y9
S0,P,X5,Y9
S0,P,X6,Y9
S0,P,X7,Y9
S0,P,X8,Y9
S0,P,X9,Y9
This is just a list of the actual prober site 0 index locations to be tested in order. For multisite, there will be
more than one die tested per site 0 index. The "S0,P," is not used at this time and is not required. This file
can be edited to change the index order, or can be created on a per wafer basis using a subroutine. It is
important that each of these locations are within the actual wafer area.
4. There are possibly two setup files (.ini) to configure on the KVD side for prober control for each of the
TELP8 or TSK probers, both located in the folder C:\_kvdco_CustFiles\Handlers.
ProberDieOffsets.ini
ProberMultiPasscfg.ini
For instance, the TskProberMultiPassCfg.ini file in C:\_kvdco_CustFiles\ is the file that configures the
XML based multi pass prober driver. Note XML is only required for multipass operations. Since this file is
contained within CustFiles, it remains unchanged during install of new KVD libraries. This file must be
configured correctly for production to run.
[PARAMETERS]
GpibAddress = 1
WaferNumberType = 1
SotDelayTime = 0e-3
GpibAddress
A value of 0 here disables reading of wafer numbers from the prober. A value of 1 gets wafer numbers.
This is essentially the cassette slot when no OCR is being used. Example: returned wafer number from the
prober is "X123", the KVD wafer number is considered "12".
SotDelayTime
The wait time from when the prober reports "Z-UP" before testing begins. This can be used as a settle time
to allow the probes to make better contact. This will add directly to the test time for every device.
7-26
Operations Environment
UseZeroBasedReferences
When set to "1", all x/y die locations reported are offset to a reference die location of 0,0.
UseProberLotNumbers
When set to "1", lot numbers from the prober are used. When set to "0", launcher lot numbers are used.
RetestFlaggedBins
When set to "1", application bins flagged with LOG->SetProberRetestFlag(int bin) will be retested at the
end of wafer.
LoadWafer
When set to "1", a wafer load "L" command is issued at start of lot.
UnloadWafer
When set to "1", a wafer unload "U" command is issued at end of lot if a wafer is still on the prober chuck.
5. For each test program you are going to run, you will need a Setup File as well. These are not located
in C:\_kvdco_CustFiles, but in the location you have previously chosen for all test program Setup
Files. Use the Start->Customer Support->KVD Setup File Tool to create or edit these .ini files.
In the Setup File Tool, there is a new section for Special Fields:
Each pass will require a different Setup File, containing Special Fields such as the following:
PASS= 1
STEP_NAME= PRE_BAKE
PRODUCT_ID= UC03
In addition, wafer rotation needs to be handled here. Wafer testing can proceed properly between the
prober and the tester without regard to wafer flat orientation, but the Igs database requires the flat location
on the wafer to face "DOWN". This is toward the front of the prober. This can only be in 90 degree
increments and is a clockwise rotation. If on the prober the wafer is being tested with the flat facing
rearward, the rotation in the Special Fields of the setup file would be would be:
Rotate= 180
7-27
M2 Test System Programming and Reference Manual
You can also force the use of a prober .ini file of your own design by the use of the Special Fields feature.
Just add a line like the following, where the full path to your desired .ini is on the right side of the =
character.
HandlerCfgFile=PathAndFilename
[WIP]
LSR = 4998
PRE_LSR = 7398
SAM_LSR = 1000
PRE_BAKE = 7409
PST_BAKE = 7400
PST_BUMP = 7420
INS_BUMP = 1000
RST_BUMP = 7420
INS_SORT = 1000
QC = 6103
PROBE = 7400
[Misc]
XMLDataPath = c:\_kvdco_CustFiles\
XMLDataPath can be a network location, which is recommended for a multiple-tester installation sharing
wafer files.
7-28
Operations Environment
7-29
M2 Test System Programming and Reference Manual
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.
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.
7-30
Operations Environment
Figure 7.24: Launch the Setup File Tool from the Start Menu
7-31
M2 Test System Programming and Reference Manual
First, select the location in which the Setup Files are to be saved:
Choose your favorite 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.
7-32
Operations Environment
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.
7-33
M2 Test System Programming and Reference Manual
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.
7-34
Operations Environment
7-35
M2 Test System Programming and Reference Manual
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.
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.
7-36
Operations Environment
• 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.
7-37
M2 Test System Programming and Reference Manual
Engineering Launcher
As a response to customer request, a hidden Engineering Launcher is available to assist in debugging pre-
released test programs using various setup (.ini) files. These setup files can be located differently from the
standard location which is saved in each tester's Windows registry, for test engineering flexibility. The
Engineering Launcher is located in C:\_kvdco\Launcher and is called EngrLauncher.exe.
It is not linked to any Start menu unless the customer decides this is useful, but KVD recommends it
should be hidden from production operators for confusion reduction.
Unlike the standard KVD Launcher, this launcher does not persist after the test program execution
completes, so it disappears automatically. When run, it brings up a query box to ask where the desired
setup file is located.
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:
KVD TEST DATA LOG
Thu Sep 21 09:45:08 2000
7-38
Operations Environment
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.
KVD LOT TEST SUMMARY REPORT
2/4/2003 5:24:08 PM
The KVD Library now 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.
7-39
M2 Test System Programming and Reference Manual
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.
KVD TEST SUMMARY REPORT
Sat Dec 30 07:55:19 2000
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. 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).
7-40
Operations Environment
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.
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.
KVD TEST HISTOGRAM REPORT
1/21/00 4:29:02 PM
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
| * . |
========================================
0.400 V 1.000 V
7-41
M2 Test System Programming and Reference Manual
| *** |
| *** |
| *** |
| **** |
| **** |
| **** |
| **** |
| ***** |
| ***** |
| ****** |
| ****** |
| ****** |
| ****** |
| ****** |
| ****** |
| ******* |
| ******* |
========================================
-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
7-42
Operations Environment
Notice the three 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.
7-43
M2 Test System Programming and Reference Manual
Engineering View
The Engineering View is nothing more than a datalog screen view that is similar to all tester's datalog
environment. 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.
7-44
Operations Environment
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.
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.
Another tab sheet related feature that was added was the Test Tracking Form, which is accessed from the
KVD Main Display's "Quick Tools" menu. This new form also embeds itself onto the KVD Main Display as
a new tab sheet, and graphs the test result of ONE test with respect to each device tested. That is, the
result of a single test can be graphically displayed as each device is tested, for analyzing drift, jitter, or
process variation. The user can add multiple new Test Tracking forms, and can remove them at will.
7-45
M2 Test System Programming and Reference Manual
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.
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.
7-46
Operations Environment
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:
Summary of throughput times
This is also under the test engineer's control, through the LOG object:
LOG->AddToReport=1.
7-47
M2 Test System Programming and Reference Manual
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.
7-48
Operations Environment
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.
7-49
M2 Test System Programming and Reference Manual
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".
7-50
Operations Environment
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.
7-51
M2 Test System Programming and Reference Manual
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.
7-52
Operations Environment
Pending.
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.
7-53
M2 Test System Programming and Reference Manual
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.
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.
7-54
Operations Environment
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.
7-55
M2 Test System Programming and Reference Manual
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.
7-56
Operations Environment
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.
7-57
M2 Test System Programming and Reference Manual
7-58
Operations Environment
7-59
M2 Test System Programming and Reference Manual
7-60
Chapter 8: DC Instruments
MPDCMOD (Octal DUT Source)
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).
The sources offer four voltage ranges +/- 40V, +/- 20V, +/- 10V and +/- 5V, and five current ranges:
200mA, 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.
8-1
M2 Test System Programming and Reference Manual
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.
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.
8-2
DC Instruments
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");
}
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 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.
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.
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, 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.
Example:
MPDS[1]->seti(0.100);
8-3
M2 Test System Programming and Reference Manual
Voltage Ranges
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 8-9 for an important discussion of the order in which you are
required to perform certain ranging functions.
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
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.
0 200mA mpir_200ma
1 20mA mpir_20ma
2 2mA mpir_2ma
3 20uA mpir_20ua
4 200nA mpir_200na
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.
8-4
DC Instruments
KVD instrument drivers now include make-before-break current range changing. Using the previous break-
before-make algorithm, the driver was slightly faster, but at the risk of opening the current feedback loop
during a range change event. This could cause an internal transient 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
reduced range resistor and relay reliability.
By closing the relay for the new range 200uS before the previous range relay is opened, the open-loop
transients should be eliminated.
Since this change could affect the dynamics of a currently running test program, we offer a backwards
compatibility mode. The default state of this boolean is to force the new behavior of the driver, to
encourage test engineers to requalify their program if necessary, and examine their range changes for hot-
switching events.
To temporarily force the previous driver behavior, define the following variable as extern bool:
IRange502 = true;
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.
Example:
MPDS[1]->vclamp(-4.0,12.0);
MPDS[1]->iclamp(0.50);
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.
Example:
MPDS[1]->on(); //closes both force and sense
MPDS[1]->off(); //opens both force and sense
MPDS[1]->off_force(); //opens force ONLY
MPDS[1]->off_sense(); //OPENS sense only
MPDS[1]->on_force(); //CLOSES force ONLY
MPDS[1]->on_sense(); //closes sense only
MPDS[1]->local_kelvin(); //shorts F & S locally
MPDS[1]->remote_kelvin(); //opens F & S short
8-5
M2 Test System Programming and Reference Manual
Warning! The on and off commands are not electronic enables 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.
Example:
MPDS[1]->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:
MPDS[1]->loopcomp(0); // 0 = fast, 1 = slower
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 any one channel on a board will act upon all channels of that board, and affect
all channels in the system.
The hardware implementation of this is shown on the block diagram in Figure 8.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.
Example:
MPDS[1]->remote_groundsense();
MPDS[1]->local_groundsense();
8-6
DC Instruments
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.), 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.
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.
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.
8-7
M2 Test System Programming and Reference Manual
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, either DSPIO or DIGMOD. Any
digital channel can connect to the ABus by way of a pin-level command or a defined TConnection, and
then you can connect MPDS[0] to the bus or disconnect it from the bus by issuing the following:
Example:
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.
MPUVM objects already had this undocumented 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[n]->start_measvm(num, delay);
MPDS[n]->read_measvm(num);
8-8
DC Instruments
Note: The resulting measurements are available in variables owned by the object: result, result_rms,
result_min, result_max.
There is a ranging lock out 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:
// place the source into force voltage mode
MPDS[1]->setvr(6.5, mpvr_10v); // we are now in vrange 2
MPDS[1]->irange(mpir_20ma); // this is legal, we are now in irange 1
Additionally the acquire rate register applies to ALL sources and the UVM, but can be modified by ANY
source or the UVM.
8-9
M2 Test System Programming and Reference Manual
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:
8-10
DC Instruments
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.
8-11
M2 Test System Programming and Reference Manual
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 +/- 5 V uvmvr_5v
8-12
DC Instruments
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 User 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 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 four typical
UVMs in a test head, numbered MPUVM[0] through MPUVM[3].
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.
8-13
M2 Test System Programming and Reference Manual
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(1,2,+10.0); //se mode,vrange 2,
// 10.0V Offset
is equivalent to
MPUVM[0]->uvmeter(se,uvmvr_2p5v,+10.0);
MPUVM[0]->uvmeter(0,4);
is equivalent to
MPUVM[0]->uvmeter(diff,uvmvr_625mv);
MPUVM[0]->uvmeter(diff,uvmvr_312mv,+7.5);
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.
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);
OR
MPUVM[0]->uvmeter(diff,<range>,[optional commonmode value]);
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
8-14
DC Instruments
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();
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.
8-15
M2 Test System Programming and Reference Manual
Pinouts
8-16
DC Instruments
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 new version is offered with 12 Volt
maximum output. This also requires support in the Tester Configuration Tool, where the new instrument is
called HPDCMODLV. Running calibration or checkers on this board using releases before 5.02 Release 6
will fail.
For Rel 8, minor issues were fixed in the Checker, and in configurations with a mixture of normal and LV
HPDCMOD instruments.
8-17
M2 Test System Programming and Reference Manual
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.
8-18
DC Instruments
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.
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.
Example:
HPDS[1]->seti(0.850);
Voltage Ranges
3 +/- 5V hpvr_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 8-9 for an important discussion of the order in which you are
required to perform certain ranging functions.
8-19
M2 Test System Programming and Reference Manual
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.
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 now include make-before-break current range changing. Using the previous break-
before-make algorithm, the driver was slightly faster, but at the risk of opening the current feedback loop
during a range change event. This could cause an internal transient 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
reduced range resistor and relay reliability.
By closing the relay for the new range 200uS before the previous range relay is opened, the open-loop
transients should be eliminated.
Since this change could affect the dynamics of a currently running test program, we offer a backwards
compatibility mode. The default state of this boolean is to force the new behavior of the driver, to
encourage test engineers to requalify their program if necessary, and examine their range changes for hot-
switching events.
8-20
DC Instruments
To temporarily force the previous driver behavior, define the following variable as extern bool:
IRange502 = true;
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.
Example:
HPDS[1]->vclamp(-4.0,12.0);
HPDS[1]->iclamp(0.50);
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:
HPDS[1]->on(); //closes both force and sense
HPDS[1]->off(); //opens both force and sense
HPDS[1]->off_force(); //opens force ONLY
HPDS[1]->off_sense(); //OPENS sense only
HPDS[1]->on_force(); //CLOSES force ONLY
HPDS[1]->on_sense(); //closes sense only
HPDS[1]->local_kelvin(); //shorts F & S locally
HPDS[1]->remote_kelvin(); //opens F & S short
Administrative Commands
To place an HPDCMOD channel into a known safe state, issue the reset command.
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,
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.
8-21
M2 Test System Programming and Reference Manual
Example:
HPDS[1]->loopcomp(0); // 0 = fast, 1 = slower
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 8.8. 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.
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 255) to average. (More than 255 samples may be programmed, but the behavior of taking
the samples and averaging them is not guaranteed of this writing) 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.
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.
8-22
DC Instruments
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).
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:
8-23
M2 Test System Programming and Reference Manual
HPDS[i] >getname
AnsiString getname();
Description:
Pinouts
Contact KVD applications engineers for assistance and code examples for this sort of use.
8-24
DC Instruments
8-25
M2 Test System Programming and Reference Manual
• Software
• Drivers
• No built-in delays
• No inherent protection against hot-switching
• Totally trusting of the user
• User Code
• The User must be aware of any relay movements
• Relay movements include both close and open
• Take care cleaning up in DeviceFinish because of Stop on First Fail
• KVD Design Philosophy
• Reduce the cost of testing
• Lower tester cost
• Highest possible speed
• High instrument density
• Trusting the Test Engineer
• You know best when you can go fast
• Insert delays only when necessary
• Avoid hot switching events
• Hot Switching
• Closing relays with voltage across them causes inrush current limited only by circuit impedance
• Opening relays with current flowing through them causes voltage spikes, which may damage other
relays or the DUT
• Relay locations:
• Output (force and sense) relays on the instruments
• Current range relays
• Father Card
• DUT board
• KVD Software Drivers
• Could force soft switching, but at the expense of:
• Longer test times
• Glitches
• Unpredictable behavior
• Allow the test engineer to issue a string of commands, and take one delay at the end
• Assume the engineer has a good knowledge of the instrument hardware
• Coto relay specs
• Typically rated for 1.5 A carry current
• Max switched current rating 0.5A
• Lifetime test conditions: 1V/10mA
8-26
DC Instruments
8-27
M2 Test System Programming and Reference Manual
• Use local Kelvin before you turn a source off, if you intend to connect it later and depend on there
not being a glitch.
• Go back to remote kelvin if you need accuracy on a high-current source path.
• Safe techniques for DUT power pins
• When charging the bypass cap for a supply pin, use a high current range.
• Then reduce the range for a leakage measurement after the voltage has stabilized and charging
current has decayed
• Before opening the connect relays for that source, if device supply current is flowing, make sure to
discharge the bypass cap to ground again with adequate delay and a high enough current range.
• If you don't, the bypass cap will be a ticking bomb set to damage the next instrument or DUT that
touches it.
• Other critical considerations
• Clean-up, discharge supplies, and open relays in the function DeviceFinish
• This function is always executed, even if the device bins out early due to Stop on First Fail
• Guarantees that bypass caps and instruments are not left in a charged-up state.
• Helps prevent QA failures from unanticipated conditions
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.
8-28
DC Instruments
8-29
M2 Test System Programming and Reference Manual
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:
RMX0->Set(L0l1, l0p0, l1p2);
Example:
RMX0->Set(L2p0, l2p3);
Example:
RMX0->Clear(l5, l6, l5p5, l6p5);
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.
short Clear(unsigned RMXparam1 = NORMXCON, unsigned RMXparam2 = NORMXCON, unsigned RMXparam3 =
NORMXCON, unsigned RMXparam4 = NORMXCON, unsigned RMXparam5 = NORMXCON, unsigned RMXparam6 =
NORMXCON, unsigned RMXparam7 = NORMXCON, unsigned RMXparam8 = NORMXCON);
Parameters:
unsigned RMXparam1 = NORMXCON
8-30
DC Instruments
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.
short CreateNamedConnection(char* initname, RMXCONNECTIONS RMXparam1 = NORMXCONNECTION,
RMXCONNECTIONS RMXparam2 = NORMXCONNECTION, RMXCONNECTIONS RMXparam3 = NORMXCONNECTION,
RMXCONNECTIONS RMXparam4 = NORMXCONNECTION, RMXCONNECTIONS RMXparam5 = NORMXCONNECTION,
RMXCONNECTIONS RMXparam6 = NORMXCONNECTION, RMXCONNECTIONS RMXparam7 = NORMXCONNECTION,
RMXCONNECTIONS RMXparam8 = NORMXCONNECTION);
Parameters:
char* initname
A character string that will be used with the NSet and NClear commands.
RMXCONNECTIONS RMXparam1 = NORMXCONNECTION
RMXCONNECTIONS RMXparam2 = NORMXCONNECTION
RMXCONNECTIONS RMXparam3 = NORMXCONNECTION
RMXCONNECTIONS RMXparam4 = NORMXCONNECTION
RMXCONNECTIONS RMXparam5 = NORMXCONNECTION
RMXCONNECTIONS RMXparam6 = NORMXCONNECTION
RMXCONNECTIONS RMXparam7 = NORMXCONNECTION
RMXCONNECTIONS RMXparam8 = NORMXCONNECTION
Returns:
-2 = no connections sent in
8-31
M2 Test System Programming and Reference Manual
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.
RMX0 >GetLineStatus
Returns the state of the line relay on the bank of relays.
bool GetLineStatus(unsigned banknum);
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.
bool GetLineToLineStatus(unsigned banknum);
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.
bool GetPinStatus(unsigned banknum, unsigned pinnum);
Parameters:
unsigned banknum
Returns:
8-32
DC Instruments
RMX0 >NClear
Clears (opens) up to 8 relays on a matrix board, referenced by name
short NClear(char* conname);
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
short NSet(char* conname);
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.
short resetline(unsigned line);
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.
8-33
M2 Test System Programming and Reference Manual
Parameters:
unsigned RMXparam1 = NORMXCON
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.
8-34
DC Instruments
8-35
M2 Test System Programming and Reference Manual
8-36
Chapter 9: 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. There are two major architectures of digital resources at KVD, the DSPIO family
(includes DSPIO, DSPIOR4, and DDD8 instruments) and the DIGMOD family (includes DIGMOD16 and
DIGMOD32).
Topics Covered:
• Instrument Block Diagram and Description
• Overview of Digital Test Concepts
• Patterns
• Clocking
• Sequencer commands
• Channel commands
9-1
M2 Test System Programming and Reference Manual
DSPIO Family
Support for DSPIOR4 Instruments
The DSPIO Instrument was redesigned during the production run for improved speed and parts
availability, and the software drivers are slightly different. This requires the TCT (Tester Configuration
Tool) to be filled in by the customer with the locations of any DSPIOR4 versus DSPIO instruments. No
matter which kind of instrument is in a slot, the first instrument in a test head will have the suffix "0", the
second one "1", and so forth. DSPIO and DSPIOR4 instrument MAY be mixed together in a test head, so
long as the TCT is properly configured.
Note: Once the TCT has been configured, and the instruments calibrated, the user programming
language is identical, and no user code changes will be necessary. Moving boards from slot to slot
is a maintenance function, so it will usually be of interest only to maintenance staff which boards
are in which slot. This should be invisible to the test engineer.
The instrument can be distinguished by a label on the board extractor flipper (request stickers from the
factory if yours do not have them) and by the TI voltage regulator heat sink on the right side of the board as
in the photo above.
1. Newer Xilinx Spartan XL technology. This change was made for part availability and also additional
speed in the sequencer.
2. Change from 8 bit to 16 Bit DACs for the pin levels.
3. Temperature/Voltage monitoring circuitry (software language support will follow)
4. Change Drive Delay Lines for higher bandwidth.
As a result of these changes, DSPIOR4 data rate is now 20MHz instead of the published 18MHz spec that
is met by all DSPIO variants.
9-2
Digital Instruments
For certain customer configurations, only 8 digital channels are necessary. For an economical instrument
offering, we provide a de-populated DSPIO instrument called DDD8. Only one of these can exist in a test
head.
This is a TCT option, and no software language changes are required. The calibration program and
various checkers were updated to support the DDD8. Serial send/receive memory was also removed from
the instrument, so this is a pattern-based instrument only.
VIL Range 0 to 5V
Drive Formats RZ, NRZ, CS, RO and their complements, plus HI, LO, MCLK/2, MCLK/
4, MCLK/8
DC Measure Capability Internal switching to DUT Source (DS1 or MPDS[0]) per Pin.
Up to 5 DSPIO Modules can be configured in a KVD Test System for a maximum channel count of 80.
9-3
M2 Test System Programming and Reference Manual
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 DSPIO instrument has 16 output channel drivers to accomplish this. Behind each
channel is as much as 512K of what is called pattern 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.
9-4
Digital Instruments
Data is sent at a rate called the T0 (Tee-Zero) rate, which is also called your pattern 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, 512K words long, and 16 bits wide. (one bit for each
of the 16 pin drivers). DSPIO instruments can be ganged together for wider than 16-bit operation, but we
will limit our discussion to one instrument at a time for now.
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
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
9-5
M2 Test System Programming and Reference Manual
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.
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.
9-6
Digital Instruments
In this diagram, all 16 channels are sending data from the DUT to the DSPIO instrument.
For each T0 time period, the input voltage level is compared to a programmed level (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 mater, you
can enter code X (don't care) or M (mask) and it will be ignored at the fail register.
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.
The vector address that causes the fail to occur is also saved in the Fail Address Register, in case you
wish to know for debugging or to datalog it.
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
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.
9-7
M2 Test System Programming and Reference Manual
This second bank of memory is also 512K words in size per pin, and the data being sent to the DUT is first
sent to a 16-bit shift register. Ignoring the normal pattern memory for now, this is a diagram of the Send
memory being used to source data to the DUT.
The Send memory is loaded with data, usually predefined as an 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: W=LOAD. 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 W=SHIFT 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.
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 W=LOAD 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.
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 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.
9-8
Digital Instruments
In an analogous way to the use of Send/Capture memory data going to the pin drivers, the DSPIO
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, 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 is loaded a bit at a time into the shift register. The pattern file then issues the
command to shift the acquired data: A=SHIFT. Once the data has begun to move 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.
Once a series of bits is captured and arranged as desired in the capture shift register, the command
A=STORE is sent from the pattern vector file, and the word moves into the destination address of the
capture memory. Each A=STORE 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.
9-9
M2 Test System Programming and Reference Manual
All four of the previous concepts are present concurrently in the DSPIO instrument, arranged as in the
following diagram. 512K of pattern memory per pin is loaded with parallel data and control commands, and
512K 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; the
actual memory word is 64 bits wide, and will be explained soon.
9-10
Digital Instruments
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 op codes, for this
purpose. Further details of this language are explained in the section on Patterns, but here is a short
summary.
9-11
M2 Test System Programming and Reference Manual
When testing devices, patterns are executed, or burst, beginning at start addresses noted by labels which
are embedded in the pattern source code. Digital patterns are written in a text-based form, but these are
not usable by the DSPIO 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
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.
; LABEL OP CODE CONDITIONAL ARGUMENT CHANNEL DATA OTHERS
STRT: 0 1 1
JMP (!U1) STRT 0 0 1
1 1 1 W=LOAD
1 W 1 W=SHIFT
1 1 1
HALT 0 0 1
These additional fields exercise the sequencer control and memory control commands. The commands
W=LOAD and W=SHIFT were introduced in the section concerning Send/Capture memory. They will be
more fully explained with examples, in sections to follow. The line beginning with the semicolon (;) is a
comment.
The Label 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 labels is an easier-to-
read technique.
Op codes are the programming language that tell the sequencer to chose another address (perhaps)
other than the next one in order. You can repeat vectors, saving valuable pattern memory space. You can
have conditional op codes, that only operate if some condition is true. And some op codes take
arguments, which are usually the address to go to if the op code involves a jump.
Patterns are compiled using a KVD-supplied software 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 DSPIO 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. It is best if the multiplier can be 32 times T0, but it can be
as little as 4 times T0 or as high as 64. Hardware requirements insist that the Master Clock be between 15
MHz and 72 MHz.
When the instrument comes up in the reset state, it is automatically set to use an internal 40 MHz crystal
oscillator as the Master Clock. This may be perfectly sufficient for many test specifications. An alternate
phase-locked-loop is available in case you need frequencies other than those available by dividing down
the 40 MHz crystal.
9-12
Digital Instruments
The normal condition if you have multiple DSPIO instruments on each side of your test head is that the
lower number instrument (DSPIO0) is the Master, and others are Slaves, meaning that the Master Clock of
DSPIO0 synchronizes all instruments. This can be changed if necessary, since each DSPIO 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 comparator
threshold. You will see the DACs used for this function in the block diagram coming soon.
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.
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 at each boundary of the Master Clock.
So if you use a large multiple of T0 to define your master clock, such as 32, you will be able to place your
edges with the most resolution within your T0 time period. In this case every 1/32 of a T0. This is more fully
explained in the section on data formats.
DSPIO Patterns
DSPIO Patterns define the driver and comparator data, and control the Sequencer function. Each vector
has an independent Op-Code field with the following options supported:
This section provides detailed information about the tool that will convert ASCII vector files into KVD vector
files.
9-13
M2 Test System Programming and Reference Manual
The KVD Editor Compiler is a stand alone vector translation tool that will translate an ASCII pattern file to a
.bp file that can be loaded into the DSPIO 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.
9-14
Digital Instruments
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.
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:
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.
9-15
M2 Test System Programming and Reference Manual
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")
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.
9-16
Digital Instruments
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.)
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)
9-17
M2 Test System Programming and Reference Manual
Note: Each time the loop counter flag is tested, the loop counter is decremented by one.
Pattern Syntax
Timeset Info
Each input vector may contain timeset information. The timeset field should follow the last vector field and
should start with a 'T=' character set. If the input vector contains no timeset, the previous timeset is loaded
into the .bp file for this vector. If the timeset is not defined in the header, an error will result. 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:
In header:
.tset write
.tset read1
MMM LLLL T=write
MMM LLLL (uses the "write" tset)
MMM HHHH T=read1
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.
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.
9-18
Digital Instruments
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:
W=load (or W1=load) ;loads a parallel word to the shift register from memory
W=shift (or W1=shift) ;shifts left all bits in the drive register (DDCH0 = lsb)
A=store (or A1=store) ;stores a parallel word from the shift register to memory
A=shift (or A1=shift) ;shifts left all bits in the capture register (DDCH0=lsb)
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.
9-19
M2 Test System Programming and Reference Manual
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
Compiled Pattern
The second column is the 32-bit (8 byte) control word for the vector. The first 16 bits represent the Fail
Disable bit, TSet select, Negative Offset bit, Shift Register control, Opcode, and Conditional Flag. The
second 16 bits represent the address and control bits of the Operand.
9-20
Digital Instruments
The rest of the file, in this case four columns for 32 DSPIO channels, is the vector data, arranged as
follows:
76543210 15 14 13 12 11 10 9 8 23 22 21 20 19 18 17 16 31 30 29 28 27 26 25 24
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
9-21
M2 Test System Programming and Reference Manual
Pattern Editor
The KVD Pattern editor and compiler has many new features than in previous releases. Starting with rev
5.01, digital pin information (format, timing, and levels) can be set up with the pattern. The timing and the
pattern can then be viewed graphically, as you would see it on a logic analyzer.
This is the code view display of the new Pattern Editor and Compiler Tool, which appears very similar to
the previous tool:
9-22
Digital Instruments
This is the editor, using column edit mode (click the box to activate this mode):
Figure 9.14: Pattern Editor and Compiler Tool - Column Edit Mode
9-23
M2 Test System Programming and Reference Manual
And a GOTO LINE # dialog box, to make it easier to jump around in large pattern files:
9-24
Digital Instruments
This is the new Graphical View, with the vectors increasing horizontally, in contrast to the code view, where
the list of vectors is vertical.
In this Digital Pin Format View, each channel's mnemonic name, format, timing (for each time set) and
level is summarized.
Figure 9.19: Pattern Editor and Compiler Tool - Digital Pin Format View
9-25
M2 Test System Programming and Reference Manual
Finally, if you click the Master Clock Setup button, you will see this tool to aid you in connecting the
various clock sources.
The goal of the pattern tool has changed to more of a comprehensive digital setup tool, since now it can be
used for all digital setups.
Online help has also been added. Complete documentation will be provided in an upcoming manual
release, or contact your KVD Applications Engineer for personal assistance.
• Define PATDATA
• Loading compiled patterns into Pattern memory
• Assigning Pattern Symbols
• Loading Send/Capture Memory if applicable
9-26
Digital Instruments
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;
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.
9-27
M2 Test System Programming and Reference Manual
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.
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.
9-28
Digital Instruments
This is a picture of what your pattern RAM would contain after you loaded the pat_list defined by the
previous example:
Notes:
1. The DSPIO system cannot operate properly with an MCLK less than 15MHz.
2. The DSPIO system cannot operate properly with an MCLK greater than 72MHz (unless you have all
DSPIOR4 instruments, in which case it is 80MHz).
3. The Maximum MCLK to Pattern divide-down ratio is 64, minimum is 4.
• The slowest Pattern rate (t0) is 15Mhz/64 = 234Khz.
• The fastest Pattern rate (t0) is 72Mhz/4 = 18Mhz.
9-29
M2 Test System Programming and Reference Manual
DSPIO instrument commands are issued to the DIG0 object for the first instrument Master and any slaves
can be addressed as DIG1-3. The DIG0 object will also operate correctly for reading back the fail register
for the first 32 channels, even though it crosses a board boundary.
Reset
The reset function initializes the instrument.
Example:
DIG0->reset();
9-30
Digital Instruments
Patload
The patload function loads your predefined pat_list into the pattern memory. Large patterns can take some
time to load, so you should characterize this in your debugging, and add a suitable delay so as to not
continue on prematurely.
Example:
DIG0->patload(pat_list,"c:\\your_test_program\\");
You may define a variable PATDIR to be the second argument, especially if you are loading patterns from
a location other than the folder containing your test program executable.
Patexe
The patexe function bursts your desired pattern at some starting offset address. Typically, you use some
file to assign names to these index numbers and offset addresses.
Example:
DIG0->patexe(<index number>,<offset address>);
The index number is the integer given the pattern file in the loaded pat_list. The offset address is the
beginning relative memory address of the vector at which you wish to begin the burst. However, this is not
very easy to read later, and convention suggests that these be assigned names in some module of your
test program.
The getsym command reads the symbols from the <pattern>.sym file, created by the Pattern Compiler,
and located in the local test program folder.
Then you could issue much easier to read patexe commands of the form:
Example:
DIG0->patexe(SIMPLEPATT, CLK_ON);
9-31
M2 Test System Programming and Reference Manual
Dstop
The dstop function halts any running pattern, whether or not the pattern has halted on its own.
Example:
DIG0->dstop();
Dwait
The dwait function waits for the execution of a running pattern to finish by itself, or timeout. Normally, when
you burst a pattern with patexe, control returns immediately to your C code. If you wish for the pattern to
finish before executing any more code, use dwait. The timeout value is specified by the DIG0-
>dwaittimeout variable, whose default value is 1 second. You need to specify the side of the test head that
you are addressing in this command.
Example:
DIG0->dwait(1);
Failure Results
There are three functions that return information from the fail registers. One is the simple dfail, which
returns a non-zero number if there was any pattern comparator failure in a burst pattern. Note: the fail
pipeline is ten vectors long, so at the end of any pattern where you make a comparison, you need to add at
least ten dummy vectors after the last comparison, in order to flush out the pipeline. These commands take
the test head side as the argument.
Example:
status0=DIG0->dfail(1);
SITE->lastresult.value=status0;
If you need to know the raw address of the first failing vector, use the dfailaddr function.
Example:
addr0=DIG0->dfailaddr(1);
SITE->lastresult.value=addr0; // for datalogging
If you need the list of failing channels in the first failing vector, use the dreadfail function.
Example:
chanfail0=DIG0->dreadfail(1);
SITE->lastresult.value=chanfail0; // for datalogging
Dclr
The dclr function needs to be called to clear the fail flags of all instruments, because the dfail function by
itself does not.
Example:
DIG0->dclr();
9-32
Digital Instruments
Dflags
The dflags function sets the User Flags U1 and or U2. These flags can be used in patterns as conditional
operands for jumps or waits, expecting the user flag to be set from C code or from the debugger outside
the pattern. Using 1 as the argument sets U1, 2 sets U2, and 3 sets both flags. Once set, the conditional
evaluation inside the pattern clears the flags so they can be reused right away in the pattern.
Example:
DIG0->dflags(1);
Example:
DIG0->ddclock(<source>,<destination>);
DIG0->ddclock(OSCCLK,MCLK);
If you are using the PLL to obtain frequencies other than those available from the 40MHz crystal OSCCLK,
you will be entering P, Q, and M parameters to program the PLL. These parameters can be obtained using
the Bitcalc utility, or preferentially through the use of a function we are distributing recently called findpq.
See your KVD applications engineer if you don't already have a copy of this function in your standard local
libraries.
Basically, the PLL will output a frequency that is the input reference frequency (typically 40MHz if you are
using the OSCCLK) * P / Q / 2M, when programmed by the ddpllbits command.
Example:
DIG0->ddpllbits(P,Q,M);
DIG0->ddpllbits(96,60,1); // gives you 64 MHz
dt0t
The dt0t function sets the pattern burst rate for a specified time set. It assumes you have previously
selected a master clock source, and programmed its frequency (if you chose the PLL), and then issued the
command DIG0->set_DDXTALFREQ();. This sets all of the software registers to your desired MCLK
frequency. Then, the dt0t function is what calculates the integer divisor that we are to use to divide down
the Master Clock.
Example:
DIG0->dt0t(<timeset>,<T0 frequency>);
You have two possible timesets, which can be chosen on the fly by the pattern file. The actual edge
placement definitions are handled in the per-channel command dfmt, explained later.
Example:
DIG0->set_DDXTALFREQ();
DIG0->dt0t(0,2e6);
9-33
M2 Test System Programming and Reference Manual
The Master Clock should be chosen as high as possible, to provide the maximum number of edges per T0
period at which the formatter can place timing transitions, and in any event must be between 15MHz and
72 MHz. The minimum divide-down ratio is 4, while the maximum is 64. At ratios above 32, you lose the
use of the second timeset due to command word limitations, so use this feature with care. If you require an
extremely slow T0 time period, you may wish to use vector stretching techniques such as adding op codes
such as RPT 10 or RPT 100 to each vector.
Example:
unsigned ddata[256];
for (int i=0;i<256;i++)
ddata[i]= i;
DIG0->ddrv_load(0L, 256, ddata);
Once loaded with data, the send memory is configured to be the source of data to the send shift register by
the use of the ddrv_setup command. Each W=LOAD command in the pattern file will take data from send
memory beginning at the initial address.
Example:
DIG0->ddrv_setup(0L,256);
The sequencing of memory addresses within send/capture memory is under control of the TI DSP
controller, and can be set up in three major modes. These are explained in a little more detail in a later
section, but almost universally are used in AUTOMODE, which operates at the highest frequencies, and
sequences purely serially through send memory without jumping. When the sequencer comes to the end
of the predefined setup send memory, it wraps back to the beginning address in a repeating fashion.
This command applies to both send and capture memory control, since there is only one TI DSP controller.
Example:
DIG0->dcap_drv_en(AUTOMODE);
If you are also capturing serial data into capture memory, you need to configure the destination memory
region in a similar way, with a start address and vector count. Good practice is to separate the capture
destination region from any send region. A=STORE commands from the pattern file will write words of data
into this setup memory region.
Example:
DIG0->dcap_setup(512L,256);
Once you start the data capture process by bursting a pattern, you will probably want to wait until the
proper number of words have been captured. This command requires the side argument.
Example:
DIG0->dcap_wait(1);
Finally, to reclaim the captured data for use in your code, you use the dcap_read command to fill a
destination data array. The arguments are: side, start address, length, and array name.
9-34
Digital Instruments
Example:
DIG0->dcap_read(1,512L,256,cdata);
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.
9-35
M2 Test System Programming and Reference Manual
Master Clock must be running at least four times faster than your T0 rate. Start and Stop edges can placed
only at the next available transition of the Master Clock, which basically means your edge timing is
rounded up to the next available MC edge. If possible, use a MCLK of 32 times your T0 rate. If you use 64
times, the second time set is unavailable.
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.
Other Formats
• High
• Low
• Master Clock/2
• Master Clock/4
• 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 Electronics
9-36
Digital Instruments
DSPIO channel objects are of the form DDCH[<channel number>][<side>], and of type TDigPin.
Example:
DDCH[1][0]
Multisite Objects
Channel objects may be declared of type TGroupDigital, if you wish to send them commands as a group,
or TSiteDigital, if you are writing a multisite test program. Site-aware objects can be enabled and disabled
when needed by the site management feature of the KVD library.
9-37
M2 Test System Programming and Reference Manual
You should ensure through connection commands that the output relays of the DSPIO channels are
connected to their Hypertronics pins. These will typically be defined in a module like connections.cpp, and
the names are normally similar (but do not need to be identical) to DDDRV_TO_DDCH[1][1]->con();.
To electronically enable or disable the pin driver, you need to issue these commands for any channel of
interest:
Example:
DDCH[1][0]->enable();
DDCH[1][0]->disable();
The dfmt command handles the definition for each of the two possible timesets for each channel. The
arguments are as follows: timeset (0 or 1), format (RZ, NRZ, CS, RO, RZC, CSC, ROC, HIGH, LOW,
CLK2, CLK4, CLK8, NOFORM), start edge timing (delay from beginning of T0), stop edge (delay from
beginning of T0), keepalive (0 or 1).
Example:
DS[1][0]->dfmt(0,NRZ,100e-9,800e-9,0);
Keepalive is a feature of a pin where it may be programmed to continue to generate edges even after a
pattern finished bursting. If the keepalive bit is one, and the data format is such that it generates transitions
even when the data is a continuous one (such as RZ format), then a pin in keepalive mode can be used as
a continuous DUT clock.
Note:Note that the last argument - KEEPALIVE - is NOT a keepalive enable control. KEEPALIVE mode is
always enabled whenever a pattern is not bursting. The argument is only the data (1 or 0) sent to the
formatter during KEEPALIVE time.
The dcomp command handles the definition for each of the two possible timesets for the comparator
strobe time.
Example:
DS[1][0]->dcomp(0,500e-9);
The dlevel command defines the VIL (drive low), VIH (drive high), and [optionally] the comparator level.
KVD comparators are a single-level compare, not a window.
Example:
DS[1][0]->dlevel(0.7,4.5,2.2);
RTI Support
The setname command defines the string that will replace the DDCH object name on the RTI debug
display. For each channel, you can assign meaningful names for use in the test program with a simple
assignment. To also modify the RTI debug display, use setname.
9-38
Digital Instruments
Example:
SCLK = DDCH[8][1]; SCLK->setname("SCLK");
SDATA = DDCH[7][1]; SDATA->setname("SDATA");
INCLK = DDCH[0][1]; INCLK->setname("INCLK");
SDATB = DDCH[24][1]; SDATB->setname("SDATB");
DIG0 >dcap_drv_en
short dcap_drv_en(DIG0TIMODE mode);
DIG0 >dcap_read
short dcap_read(unsigned side, unsigned long cap_adr, unsigned long cap_count, unsigned
cap_data[]);
DIG0 >dcap_setup
short dcap_setup(unsigned long cap_adr, unsigned long cap_count);
DIG0 >dcap_wait
short dcap_wait(unsigned side);
Returns:
DIG0 >dclr
Clears the pattern fail flags for all DSPIO boards.
short dclr();
DIG0 >dconfig
Sets the MASTER/SLAVE configuration of the DSPIO board
unsigned dconfig(DCONFIG config);
DIG0 >dd_xclkinfreq
Returns the xclkin frequency via the array parameter passed in. The values represent the xclkin for each
side.
void dd_xclkinfreq(double freq[]);
DIG0 >dd_xclkoutfreq
Returns the xclkout frequency for both sides. The values are passed back in the array passed in.
void dd_xclkoutfreq(double freq[]);
DIG0 >ddclock
Creates one of several paths that clock generation can be used throughout the system. See the Digital
Clock setup tool to view the possible MUX connections.
unsigned ddclock(DSPCLOCK src, DSPCLOCK dest);
9-39
M2 Test System Programming and Reference Manual
DIG0 >ddpllbits
Function used to set the p, q, and m bits obtained by using bitcalc.
unsigned ddpllbits(unsigned p, unsigned q, unsigned m);
DIG0 >ddrv_load
short ddrv_load(unsigned long drv_adr, unsigned long drv_count, unsigned drv_data[]);
DIG0 >ddrv_load_side
short ddrv_load_side(unsigned side, unsigned long drv_adr, unsigned long drv_count, unsigned
drv_data[]);
DIG0 >ddrv_load_side_mask
short ddrv_load_side_mask(unsigned side_mask, unsigned long drv_adr, unsigned long drv_count,
unsigned drv_data[]);
DIG0 >ddrv_setup
short ddrv_setup(unsigned long drv_adr, unsigned long drv_length);
DIG0 >dfail
Returns a non-zero number indicating a pattern fail on the side selected.
short dfail(unsigned side);
DIG0 >dfailaddr
Returns the RAW address of the last pattern address to cause a fail.
unsigned long dfailaddr(unsigned side);
DIG0 >dflags
Sets the U1, U2, or both flags.
short dflags(unsigned value);
Description:
Patterns can be written with loops that occur, or execution paths that occur based on User flags U1 and
U2. The test program can set these flags at the appropriate time in the test flow with a cal to this function.
DIG0 >dmclkconfig
Sets the master clock configuration.
unsigned dmclkconfig(DMCLKCONFIG mclkconfig);
Parameters:
DMCLKCONFIG mclkconfig
9-40
Digital Instruments
DIG0 >dreadfail
unsigned long dreadfail(unsigned side);
Description:
Can now be called by the individual DIG[x] and return those failed channels for backwards compatibility
DIG[0]->dreadfail will return both DIG[0] and DIG[1] channels.
DIG0 >dstatus
short dstatus(unsigned side);
DIG0 >dstop
Stops any currently running pattern.
short dstop();
DIG0 >dt0t
Set the pattern burst rate (t0) for a specified time set.
unsigned dt0t(unsigned tset, double t0freq);
DIG0 >dwait
Wait for the execution of a pattern to complete, or time out.
short dwait(unsigned side);
Description:
The function waits until it see either the pattern finish, or times out. The time out value is specified by the
DIG0 >dwaittimeout variables value. If the time out happens the pattern fail flag will be set.
DIG0 >dwaitfail
Combines the dwait function and the dfail function into one command.
double dwaitfail(unsigned side);
DIG0 >dwaitnofail
Same as the dwait command, but will not set the dfail flag on pattern time out.
short dwaitnofail(unsigned side);
DIG0 >dxclkena
unsigned dxclkena(unsigned ena);
DIG0 >getsym
Looks in the symbol file generated by the pattern compiler for the address of the symbol.
int getsym(unsigned pattern, AnsiString symbol);
9-41
M2 Test System Programming and Reference Manual
Parameters:
unsigned pattern
The string that corresponds to the symbol. This is the same string as was in the pattern.
Description:
When patterns are compiled with the KVD Pattern compiler, a symbol file is generated with the same name
as the pattern file, but with the .SYM extension. The getsym function looks up the pattern file name and
path that were entered when the patterns were loaded with the patload command. It then looks for the
corresponding SYM file, and then looks in the file for the SYMBOL requested (see second parameter). If
the symbol is found in the file, the address offset of that symbol will then be returned.
DIG0 >patexe
Executes a pattern by index, at a specified offset.
short patexe(unsigned pattern, unsigned offset);
Parameters:
unsigned pattern
A value that is the index number of the pattern in the pat_list loaded.
unsigned offset
Description:
The pattern index refers to the index number in the pat_list loaded in.
DIG0 >patexe_sym
Executes a pattern by index and symbol offset.
int patexe_sym(unsigned pattern, AnsiString symbol);
Parameters:
unsigned pattern
The string that corresponds to the symbol. This is the same string as was in the pattern. symbol.
Description:
This function is the same as calling the getsym command, followed by calling the patexe command.
However, by looking up the symbol from a file before execution, the total execution time is considerably
slower.
9-42
Digital Instruments
DIG0 >patload
Loads an array of patterns.
short patload(PATDATA* pat_list, char* pat_dir);
Parameters:
PATDATA* pat_list
DIG0 >patload1
Loads one pattern specified in the pattern list.
short patload1(PATDATA* pat_list, char* pat_dir, int i);
Parameters:
PATDATA* pat_list
DIG0 >reset
DIG0
short reset(void);
DIG0 >set_DDXTALFREQ
Sets the ddcont->DDXTALFREQ for each side by reading parameters from ddcont->ddclk and ddcont-
>ddclkfreq.
void set_DDXTALFREQ(void);
DDCH[i][1] >dcomp
Sets the comparator strobe time for a specific time set.
short dcomp(unsigned tset, double strobe);
Parameters:
unsigned tset
9-43
M2 Test System Programming and Reference Manual
DDCH[i][1] >dfmt
Command used to format the digital pin timing.
short dfmt(unsigned tset, FORMAT format, double start, double stop, unsigned keepalive);
Parameters:
unsigned tset
RZ, NRZ, CS, RO, RZC, CSC, ROC, HIGH, LOW, CLK2, CLK4, CLK8, NOFORM
double start
DDCH[i][1] >dfmt_long
short dfmt_long(unsigned tset, FORMAT format, double start, double stop, unsigned keepalive);
DDCH[i][1] >disable
Disables the drive capability of the digital pin.
short disable();
Returns:
Always 0.
DDCH[i][1] >dka
Sets the keepalive mode for the digital pin.
short dka(unsigned keepalive);
Returns:
Always 0
Description:
When a digital pattern is NOT running, the digital pin stays at a constant logical state. This state is
determined by the keepalive value. A value of 1 keeps the digital pin at a logical 1 state, a value of 0 keeps
the digital pin at a logical 0 state. The formatting of the digital pin is active when a digital pattern is not
running, and the digital pin is in the keepalive state.
9-44
Digital Instruments
DDCH[i][1] >dlevel
Set the VIL, VIH, and comparator levels for a digital pin.
short dlevel(double lo, double hi, double cmplevel = -1);
Parameters:
double lo
Returns:
DDCH[i][1] >dmatch
Enables match mode for the digital pin.
short dmatch();
Returns:
Always 0
DDCH[i][1] >dstrb
Sets the comparator strobe time, enables the comparator.
short dstrb(unsigned comp, unsigned ena, unsigned tset, double strobe);
DDCH[i][1] >enable
Enables the drive capability of the digital pin.
short enable();
Returns:
Always 0
DDCH[i][1] >getcomplev
Returns the comparator level for the digital pin.
double getcomplev();
DDCH[i][1] >getformat
Returns a FORMAT type indicating the current format of the digital pin.
FORMAT getformat(unsigned tset);
9-45
M2 Test System Programming and Reference Manual
DDCH[i][1] >gethighlev
Return the vih level for the digital pin.
double gethighlev();
DDCH[i][1] >getkeepalive
Returns the current keepalive mode for the digital pin for a particular time set.
unsigned getkeepalive(unsigned tset);
DDCH[i][1] >getlowlev
Returns the vil level for the digital pin.
double getlowlev();
DDCH[i][1] >getname
Returns the display name for the digital pin.
AnsiString getname();
Description:
The Real Time interface uses the digital pin name in its display. The user can read back the name currently
assigned to this dut source.
DDCH[i][1] >getstarttime
Returns the start edge time for the digital pin.
double getstarttime(unsigned tset);
DDCH[i][1] >getstate
Returns true if the digital pin is enabled, false for disabled.
bool getstate();
DDCH[i][1] >getstoptime
Returns the stop edge time for the digital pin.
double getstoptime(unsigned tset);
DDCH[i][1] >getstrobe
Returns the strobe time for a digital pin.
double getstrobe(unsigned tset);
9-46
Digital Instruments
DDCH[i][1] >setname
Sets the display name for this digital pin.
void setname(AnsiString newname);
Description:
The Real Time interface uses the digital pin name in its display. The user can change the name to
something more meaningful.
Below is a procedure taken from a KVD Test Program which performs DSPIO Master Clock Generation,
Format and Timing Specification and Driver/Comparator Voltage Level Selection. The procedure is aptly
named "DDSetupEveryPart". A procedure of this name should exist in every KVD Test Program that uses
the DSPIO. Many Test Programs call these functions many times because changes in Test Frequency,
Format, Timing and Voltage Levels are required.
SetDDLevels(0.0,5.00);
SCLK-> dfmt(0, RZ, t0period/4.0, 3.0*t0period/4.0, 0);
SCLK-> dfmt(1, RZ, t0period/4.0, 3.0*t0period/4.0, 0);
SDATA->dfmt(0, NRZ, 0e-9, t0period/2.0, 1);
SDATA->dfmt(1, NRZ, 0e-9, t0period/2.0, 1);
INCLK->dfmt(0, RZ, 0e-9, t0period/2.0, 0);
INCLK->dfmt(1, RZ, 0e-9, t0period/2.0, 0);
DDCH8_TO_SCLK ->con();
DDCH7_TO_SDATA->con();
DDCH0_TO_INCLK->con();
SCLK->enable();
SDATA->enable();
INCLK->enable();
DIG0->dxclkena(1);
}
void SetDDLevels(double vlo, double vhi) {
double half = (vlo + vhi) / 2.0;
SCLK->dlevel(vlo, vhi, half);
SDATA->dlevel(vlo, vhi, half);
INCLK->dlevel(vlo, vhi, half);
SDATB->dlevel(vlo, vhi, half);
9-47
M2 Test System Programming and Reference Manual
When the DSPIOTI chip is placed into AUTOMODE, the internal state machine takes over and
automatically fills the drive FIFO with data from the TISRAM. This makes the drive data available to the
DRIVE shift-register whenever a LOAD command is issued. Since the state machine is started once the
chip is placed in AUTOMODE it is important that all of the capture and drive registers and address
generators have been set prior to initiating AUTOMODE.
short TEST3(unsigned t) {
unsigned cdata[256];
KVD->tnum(t);
DIG0->ddrv_setup(0L, 256);
DIG1->dcap_setup(512L, 256); // note could have been address 0L
DIG1->dcap_drv_en(AUTOMODE);
DIG0->dcap_drv_en(AUTOMODE);
SYS->del(1e-3);
DIG0->patexe(SND_RCV, CAPTURE_DATA);
DIG1->dcap_wait(1);
DIG1->dcap_read(1, 512L, 256, cdata);
SITE->lastresult.value=cdata[139];
if (KVD->Test())
return(FAIL);
return(PASS);
}
;
;****************************************
;
;DEFINE GROUPS
;--------------------
.chmap SENDDATA = {7,6,5,4,3,2,1,0}
.chmap RECVDATA = {23,22,21,20,19,18,17,16}
.chmap TRIG = {8}
.tset t0
.chdefault HIZ
;****************************************
;
;
;
; SEND RECV
; M M
; S S
; B B
;----------------------------------------
9-48
Digital Instruments
DSPIO Pinouts
9-49
M2 Test System Programming and Reference Manual
Each digital pin on the DSPIO is attached to two separate shift registers. One is the DRIVE shift register
and the other a CAPTURE shift register. These shift registers share a data path to a DSP processor and
memory. The combination of DSP processor, extra memory (TISRAM) and shift registers give the DSPIO
unique capabilities not available with standard pattern-driven digital pins.
The CAPTURE shift register allows data from the compare input to be captured in a parallel or serial
fashion. This captured data can then be passed on to the user's program or to the on-board DSP
processor for further processing. This enables the DSPIO board to perform FFTs and other complex signal
measurements, on captured data, in real time.
The DRIVE shift register gives the digital formatter another source of data. This data can come from the
external memory (TISRAM) or the DSP processor. In many situations this additional data can be used to
save a significant amount of regular pattern vector memory. For example; applications that require testing
serial devices can utilize the DRIVE shift register. Serial drive data can be stored efficiently in the TISRAM
memory, and transferred to the formatter pins, instead of using less efficient pattern vector memory. The
TISRAM memory can also act as a circular buffer. Data representing one cycle of a sine wave can be
stored in the TISRAM, and then shifted out in a continuous loop.
The combination of the DSP processor, TISRAM memory, and the CAPTURE and Drive shift registers
greatly expand the capabilities of the DSPIO.
9-50
Digital Instruments
9-51
M2 Test System Programming and Reference Manual
Capturing data is individually controlled for each channel by the pattern vector. Each channel can either
compare the input data against the pattern vector for a fail or match condition, or it can capture the input in
the shift register.
The pattern vector compare bits, for each channel decode in the following way.
x 00 ignore
V 01 capture data into shift register
L 10 compare to a '0'
H 11 compare to a '1'
While capturing data is controlled individually for each channel, shifting and storing operations act on the
entire shift register and are controlled by the pattern vectors OPCODE. For each vector the user chooses
to hold, shift or store the contents of the CAPTURE shift register. The shift operation initiates a 'left-shift' of
the CAPTURE shift register. The store operation transfers a copy of the shift register contents to the
DSPIOTI chip. Note: the store operation does not effect the contents of the shift register.
9-52
Digital Instruments
The shift register is designed to capture data, and to execute a store or shift operation in the same T0
cycle. In order to accomplish both actions (a capture and a store/shift) in the same T0 cycle, they must
execute at different clock cycles. The shift and store operations execute at a specific clock cycle at the end
of the T0 cycle. Technically, the shift/store operations execute at the start of the next T0 cycle. To allow
time for the shift/store operation, there is a dead zone at the beginning of each T0 cycle where a capture
cannot occur. This dead cycle is only one clock period, the rest of the T0 cycle can then be used to
schedule the capture operation.
The channel input is latched into the CAPTURE shift register on the falling edge of the compare strobe
signal. This allows the user to choose where in the T0 cycle to capture data. The only restriction is that a
capture cannot occur on the first clock of a T0 cycle.
In this example 64 bytes of data are captured from a two channel 8-bit serial ADC (128 bytes total) , and
passed on to the DSPIOTI chip were it is then stored into the TISRAM memory. One channel of the ADC is
connected to the digital pin CH0, and the other ADC channel is connected to digital pin CH8.
Pattern Vector
CHANNEL 15 13 11 09 07 05 03 01
14 12 10 08 06 04 02 00
08 LOADCNT 64 x x x x x x x x x x x x x x x x
09 A=SHIFT REPEAT 7 x x x x x x x C x x x x x x x C
10 A=STORE JMP (!L) 09 x x x x x x x C x x x x x x x C
Where:
'x' don't care
'C' capture data
In step 09, data from the ADC is captured on channels 0 & 8, which correspond to bits 0 & 8 of the
CAPTURE shift register. This data is then 'left-shifted' one bit at the end of the T0 cycle.
After 7 capture and shift operations, step 10 captures the final bit, and the whole 16 bits is stored into the
DSPIOTI chip. The process is then repeated 64 times to capture a total of 128 bytes from the two channel
serial ADC.
9-53
M2 Test System Programming and Reference Manual
For each channel, there are two possible sources of drive data; one is the pattern vector, and the other the
DRIVE shift register. The pattern vector controls which source is used.
The pattern vector drive bits, for each channel decode in the following way.
x 00 Hi Z
W 01 Drive SR data
0 10 Drive '0'
1 11 Drive '1'
The SR bits in the OPCODE word control loading and shifting of the entire DRIVE shift register. The 'hold'
opcode does not effect the DRIVE shift register in any way. The 'shift' opcode executes a single 'left-shift'
(lsb to msb) on the shift register. The 'load' opcode loads the DRIVE shift register with data from the
DSPIOTI. The source of the load data is controlled by the users program and can come from the DSP
processor, the TISRAM or the users program.
The 'load' and 'shift' operations occur at the end of a T0 cycle. Loading the drive shift register must be done
at least one T0 cycle before the data is available to the drive formatter. Data can be loaded or shifted into
the drive shift register on every T0 cycle if needed, the only restriction is that a load of the drive shift
register and a store of the capture shift register cannot occur during the same T0 cycle.
In this example a two channel 8-bit serial DAC is driven by the DRIVE shift-register. 128 bytes of data (64
16-bit words) are supplied by the TISRAM thought the DSPIOTI chip. One channel of the DAC is
connected to the digital pin CH7, and the other DAC channel is connected to digital pin CH15.
Pattern Vector
CHANNEL 15 13 11 09 07 05 03 01
14 12 10 08 06 04 02 00
08 W=LOAD LOADCNT 64 x x x x x x x x x x x x x x x x
09 W=SHIFT REPEAT 7 D x x x x x x x D x x x x x x x
10 W=LOAD JMP (!L) 09 D x x x x x x x D x x x x x x x
Where:
'x' don't care
'W' drive data
In step 08, the DRIVE shift-register is loaded with 16-bits of data from the DSPIOTI chip. In step 09,
channels 7 & 15, drive levels according to the values stored in the DRIVE shift-register. At the end of step
09, the DRIVE shift-register executes a 'left-shift' operation. The drive & shift operation is repeated 7 times,
shifting out the 7 MSB bits of the serial word.
Figure 9.30: Two Channel 8-bit DAC & DRIVE Shift Register
Step 10 drives the final bits, and reloads the DRIVE shift-register with the next word. The entire sequence
is repeated 64 times, transferring 64 bytes of data to each DAC channel.
9-54
Digital Instruments
DSPIOTI Chip
Data is transferred to and from the capture and drive shift registers through the CAPDAT bus. This bus
connects the shift registers and the DSPIOTI chip. The DSPIOTI chip is responsible for storing data from
the capture shift register and loading data into the drive shift register. Since there is only one bus between
the shift registers and the DSPIOTI chip, only one load or store operation can occur per T0 cycle.
There is one FIFO in the DSPIOTI chip for each of the capture and drive shift registers. The DSPIOTI chip
keeps the drive FIFO full, so that data is always available for the drive shift register. Likewise, the DSPIOTI
chip keeps the capture FIFO empty, so that data can always be received from the capture shift register.
Data to keep the drive FIFO full can come from three sources, the DSP processor, the TISRAM or the DIS
interface. Likewise, data from the capture FIFO can be stored in any of these three places.
To accommodate the possibility of three sources, the DSPIOTI chip has three modes of operation.
1. DISMODE; The DIS interface can write to the drive FIFO, read the capture FIFO, and status register,
as well as write to all the internal control registers.
2. TIMODE; TI DSP can write to the drive FIFO, and read from the capture FIFO, and the status register.
3. AUTOMODE, The DSPIOTI chip keeps the drive FIFO full by automatically reading data from the
TISRAM, and keeps the capture FIFO empty by automatically writing captured data to the TISRAM.
DISMODE
In order to communicate with the DSPIOTI chip through the DIS interface, the chip must be in DISMODE.
Once in DISMODE the user has access to all of the internal control registers as well as the FIFO's and
status register. The DIS interface is much slower than the possible drive and capture rates, and is
therefore not usually suitable for data transfer during a pattern. But the ability to put data in the drive FIFO
and read data out of the capture FIFO gives the user a powerful debug tool. Using DISMODE, the user
could control the digital formatter pins independent of the pattern vectors.
9-55
M2 Test System Programming and Reference Manual
TIMODE
In TIMODE the Texas Instruments DSP processor has accesses to the FIFOs and the status register. By
reading the status register, the DSP processor knows the status of the FIFOs and can transfer data in and
out as needed. In some cases at maximum T0 rates, the DSP processor will not be fast enough to
maintain the FIFOs. AUTOMODE must be used at fast T0 rates, to keep the FIFOs from overrunning.
AUTOMODE
In AUTOMODE the DSPIOTI chip takes over the address and data bus, and automatically transfers data in
and out of the TISRAM. In AUTOMODE, one load or store operation is allowed per T0 cycle. This allows
the shift registers to operate at the maximum T0 rate.
In AUTOMODE, there are two address generators, one for storing captured data, and one for reading drive
data. The separate address generators allow for separate address spaces in the TISRAM, so data can be
stored from the capture shift register without affecting the data being transferred into the drive shift
registers.
The drive address generator can operate in a circular mode. Along with specifying the starting address of
the drive data, a count is provided. After reaching the end of the count, the drive address generator is
reloaded with the starting address.
To limit the number of data points captured, a maximum capture counter is used. The user sets the
number of data points to be captured. After this number is reached, data is no longer stored in the
TISRAM, and a flag is set in the status register.
The Data Pattern Memory of the DSPIO is 512K deep by 64 bits wide. Each DSPIO Channel has 4 bits of
pattern data per vector (16 channels per board). There are 16 possible channel states per vector.
Presently, DSPIO patterns make use of 7 Driver/Comparator States. They are:
X HIZ MASK
0 Drive Lo MASK
1 Drive Hi MASK
L HIZ Compare Lo
H HIZ Compare Hi
9-56
Digital Instruments
The Sequencer is the heart of the DSPIO Subsystem. It can be viewed as a custom controller which has a
memory depth of 512K and can operate up to the maximum t0 Vector Rate. (presently 20MHz, the
maximum Vector Rate for a given Master Clock equals Master Clock Freq / 4) The Sequencer has 2
functions. The first is to provide the current vector address to the Data Pattern Memory. The second is to
provide the Time Set Address to the Format/Timing FPGA. The Op-Code field of the Op-Code Memory
has 4 bits. Available Op-Codes are:
Many of the opcode commands can be conditionally executed. The 4-bits of the FLAG field determines,
what flag the opcode will be conditioned on, and the flag's polarity. Most of the flags are cleared when they
are tested or 'used'. The exception to this is the fail 'F' and match 'M' flags. The flags can also be set and
cleared using the FLAGS opcode. The FLAGS opcode can individually set and clear every flag with the
exception of the match and unconditional flags.
4 reserved
9-57
M2 Test System Programming and Reference Manual
FLAG bit-3 sets the flags polarity. So for example if FLAG[3:0] was set to 1101, then the command would
execute only if the loop counter flag 'L' was not set.
The DSPIO shapes and provide "edge placement timing" to the digital waveforms in the Format/Timing
Block. 4 bits of data come from the Data Pattern Memory and are decoded by the Format/Timing Block to
create the proper channel state during each cycle. The per channel Format/Timing generates states for
each cycle. The DSPIO supports the industry standard NRZ, RZ, RO, CS (and their complements, NRZC
not available) plus HIGH, LO, OFF and clock formats (Clock/2, Clock/4, and Clock/8). Timing diagrams of
the most commonly used Drive Formats are shown below.
Patterns
The DSPIO performs digital functional testing in the following manner. The Driver sends input stimulus to
the DUT. It can have 3 states (hi, lo and hiZ). After comparing the DUT output to the Compare Level
the Comparator sends the results to the Format/Timing Block FAIL Logic which will latch the FAIL and
Address if one is present. Comparator Outputs can also be sent to the TMU for parametric time
measurements.
Note: If dynamic loads are required, they must be added to the Father Card, or connect a DUT Source
via DDBUSA.
DSPIO patterns are composed of addresses, opcodes, operands, and channel data. Once started, pattern
execution is controlled by the opcode and operand fields. The opcodes and operands are combined to
form a part of a 32 bit Control word.
9-58
Digital Instruments
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OPERAND[15:0]
FD Fail Disable
OPCODE[3:0] Opcode
FD FAIL DISABLE
When this bit is '0' the fail flag 'F' is set, and the channel fail register is set whenever a fail condition exists.
When this bit is '1' the fail flag and the fail channel register are not set when a fail condition exists. The Fail
Disable bit is used during a match sequence. The match 'M' flag is the inverse of the fail 'F' flag. To wait for
a match condition, the Fail Disable 'FD' bit is set in the opcode. The match condition is true ('M' is set)
when there is no longer a fail condition. The Fail Disable bit allows a match sequence to occur without
setting any fail bits.
9-59
M2 Test System Programming and Reference Manual
0 NOP, WAIT C
1 HALT C
4 REPEAT Count
8 RETURN C
9-60
Digital Instruments
13 NOTE C Register
14 reserved
15 reserved
4 reserved
FLAG bit-3 sets the flags polarity. So for example if FLAG[3:0] was set to 1101, then the command would
execute only if the loop counter flag 'L' was not set.
9-61
M2 Test System Programming and Reference Manual
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.
9-62
Digital Instruments
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.
9-63
M2 Test System Programming and Reference Manual
Block Diagram
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.
9-64
Digital Instruments
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.
9-65
M2 Test System Programming and Reference Manual
To allow the program to auto detect whether the HSL is present and working change the
ModuleInitDigmod() function to ModuleInitDigmod(1) in the LotInit() function.
You must select the highest level DIGMOD16 Xilinx in your TCT for this HSL support, as of Release 2 it will
be DIGMOD16R7. Do not use DIGMOD16 default Xilinx if you desire HSL. Other features included in R7
Xilinx are:
• 5ns Edge placement on the fly
• Full Capture/Send memory support (bi-directional shifting)
• 60MHZ Sequencer operation
• Combine mode
• Fix PEC119 Sequencer Bug (subroutine from page boundary)
• Master/Slave synchronization
For backwards compatibility with legacy test programs, selecting the existing DIGMOD16 Xilinx files in the
TCT (Tester Configuration Tool) will use the existing 12.5MHz lower speed DIS Bus. You can also add the
line useHslAsDefault = false; after DIGMOD initialization in your test program.
The DIGMOD checker includes a test for the presence of the HSL - tests 7, 107, etc.
Cal verification also serves as a specification checker. Other functions are verified in the checker, but
voltage and current accuracy can be verified without a re-calibration by going into the Options tab,
expanding the DIGMOD (16 or 32) selection, expanding the Calibration box, then selecting the Verify box.
Note this verification is currently not in the typical location under the Checker selection.
9-66
Digital Instruments
DIGMOD Programming
Programming the DIGMOD instrument is divided into 4 basic types:
• DIGMOD Pin Definition
• DIGMOD Pin Programming
• DIGMOD Sequencer Definition
• DIGMOD Sequencer Programming
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.
9-67
M2 Test System Programming and Reference Manual
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.
9-68
Digital Instruments
DMCH[x]->SetSiteMode
Example:
DMCH[0]->SetSiteMode(TRUE, 1);
Arguments:
bool _sitemode // TRUE or FALSE
short site // 1-16
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.
short TDMDigPin::enable(unsigned value)
Arguments:
unsigned value // 0=disable 1=enable
9-69
M2 Test System Programming and Reference Manual
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:
unsigned value // 0=pattern 1=static
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:
myGroup->forceenable(1); // 0=hiz 1=drive
short TDMDigPin::forceenable(unsigned value)
Arguments:
unsigned value // 0=hiz 1=drive
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.
Example:
myGroup->force(0); // 0=low 1=high
9-70
Digital Instruments
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:
unsigned value // 0=low 1=high
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:
DMCH[7]->dlevel(0.4, 2.8, 1.0, 1.4);
short TDMDigPin::dlevel (double lo,double hi,double cmplo,double cmphi)
Arguments:
double lo // drive low level
double hi // drive high level
double cmplo // compare low level
double cmphi // compare high level
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:
DMCH[7]->cmplevel(1.0, 1.4); //cmplo, cmphi
short TDMDigPin::cmplevel (double cmplo, double cmphi)
Arguments:
double cmplo // compare low level
double cmphi // compare high level
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)
9-71
M2 Test System Programming and Reference Manual
Arguments:
double vil // drive low level
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:
double vih // drive high level
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:
double cmplo // compare low level
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)
Arguments:
double cmphi // compare high level
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:
double value // termination voltage level
9-72
Digital Instruments
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.
short TDMDigPin::trmenable(unsigned value)
Arguments:
unsigned value // 0=termination off, 1=termination on
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:
myGroup2->pmuenable(1); // 0=pmu disabled, 1=pmu enabled
It is important to note that if the PMU is enabled, the DIGMOD driver is automatically disabled. It is not
possible to have both enabled at the same time.
short TDMDigPin::pmuenable(unsigned value)
Arguments:
unsigned value // 0=pmu disabled, 1=pmu enabled
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:
double value // range -2V to +10V
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)
9-73
M2 Test System Programming and Reference Manual
Arguments:
double value // limits depend on 'irange'
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)
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 current 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)
9-74
Digital Instruments
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:
DMCH[8]->measvm(100); // numsamples 1-1023
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].
double TDMDigPin::measvm(unsigned numsamples)
Arguments:
unsigned numsamples // 1-1023
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:
unsigned value // 0=disable load, 1=enable load
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.
9-75
M2 Test System Programming and Reference Manual
Example:
myPins->load(3, 3.4); // range, voltage
myPins->load(PMU_2KOHM, 3.4);
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.
short TDMDigPin::load(unsigned range,double voltage)
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.
Example:
myPins5->abus_con();
9-76
Digital Instruments
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.
Example:
DMCH[5]->l1abus_con();
short TDMDigPin::l1abus_con(void)
Arguments:
none
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,
9-77
M2 Test System Programming and Reference Manual
50e-9,
0e-9,
80e-9,
60e-9,
70e-9,
0);
Arguments:
unsigned tset // timeset range 0-15
FORMAT format // drive format (see sequencer section)
// available formats:
RZ (return to zero)
RO (return to one)
CS (complement surround)
RZC (RZ complement)
ROC (RO complement)
CSC (CS complement)
HIGH (high)
LOW (low)
CLK2 (2xtimeset rate)
CLK4 (4xtimeset rate)
NRZ (non return to zero)
HIZ (high impedance)
double start // driver start edge
double stop // driver stop edge (ignored for NRZ format)
double enastart// driver enable start edge
double enastop // driver enable stop edge
double cmpstart// compare start edge
double cmpstop // compare stop edge
unsigned dka // keep alive data (0 or 1)
short dtimingT0(unsigned tset,FORMAT format, double start,double stop, double enastart=-1., double
enastop=-1, double cmpstart=-1., double cmpstop=-1., unsigned ka=0xFFFF);
Example:
WE ->dtimingT0(1, RO, 0.1, 0.6 ,0, 1, 0.50, 0.55, 1);
OE ->dtimingT0(1, HIGH, 0.0, 0.6 ,0, 1, 0.50, 0.55, 1);
CE ->dtimingT0(1, RO, 0.0, 0.7 ,0, 1, 0.50, 0.55, 1);
DATA->dtimingT0(1, NRZ, 0.0, 1.0 ,0, 1, 0.50, 0.55, 0);
ADDR->dtimingT0(1, NRZ, 0.0, 1.0 ,0, 1, 0.50, 0.55, 0);
9-78
Digital Instruments
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.
short TDMDigPin::dtiming_combine(unsigned tset,
FORMAT format,
double start,
double stop,
double enastart,
double enastop,
double cmpstart,
double cmpstop,
unsigned dka)
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:
unsigned tset // timeset range 0-15
FORMAT format // drive format (see sequencer section)
// available formats:
RZ (return to zero)
RO (return to one)
CS (complement surround)
RZC (RZ complement)
ROC (RO complement)
CSC (CS complement)
HIGH (high)
LOW (low)
CLK2 (2xtimeset rate)
CLK4 (4xtimeset rate)
NRZ (non return to zero)
HIZ (high impedance)
double start // driver start edge
double stop // driver stop edge (ignored for NRZ format)
unsigned dka // keep alive data (0 or 1)
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:
digbus->dcmp( 3, 40e-9, 60e-9, 70e-9);
9-79
M2 Test System Programming and Reference Manual
Arguments:
unsigned _tset // range = 0-15
double _start // 0-timeset max
double _stop // 0-timeset max (_stop>_start)
double _ioswitch // 0-timeset max
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:
unsigned _tset // range = 0-15
double _start // compare start edge
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:
double value // range = 0-15
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:
FORMAT value // see 'dtiming' for available formats
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:
double value // range=0-timeset rate
9-80
Digital Instruments
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:
double value // range=0-timeset rate
// (must be greater than start)
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:
double value // range=0-timeset rate
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:
double value // range=0-timeset rate (must be greater than the enastart edge)
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:
double value // range=0-timeset rate
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)
9-81
M2 Test System Programming and Reference Manual
Arguments:
double value // range=0-timeset rate (must be greater than cmpstart edge)
DMCH[x]->keepalive
This will set the keepalive data for the current timeset defined by the 'tset' command.
Example:
allpins->keepalive(1); // 0=zero, 1=one
short TDMDigPin::keepalive(unsigned value)
Arguments:
unsigned value // 0=low, 1=high
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:
unsigned value // 0=low, 1=high
unsigned _enable // 0=disabled, 1=enabled
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.
Example:
XCLK->tmucon(DDTMUA, 1);
short TDMDigPin::tmucon(TMUCHAN tchan, unsigned hilo)
Arguments:
TMUCHAN tchan // DDTMUA or DDTMUB
unsigned hilo // 0=low comparator, 1=high comparator
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.
9-82
Digital Instruments
Example:
XCLK->measfreq(DDTMUA, 1, 32, 10e-3);
double TDMDigPin::measfreq(TMUCHAN tchan,
unsigned hilo,
unsigned cycles,
double timeout)
Arguments:
TMUCHAN tchan // DDTMUA or DDTMUB
unsigned hilo // 0=low comparator, 1=high comparator
unsigned cycles // cycles to measure over (2-65535)
double timeout // timeout (default timeout=500e-3)
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:
XCLK->start_measfreq(DDTMUA, 1, 32, 10e-3);
Unsigned start_measfreq(TMUCHAN tchan, unsigned hilo, unsigned cycles, double timeout);
Arguments:
TMUCHAN tchan // DDTMUA or DDTMUB
unsigned hilo // 0=low comparator, 1=high comparator
unsigned cycles // cycles to measure over (2-65535)
double timeout // timeout (default timeout=500e-3)
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.
SYS->del(3.0e-3);
// xtime1 = SYS->read_counter();
LOG->tnum(testnum+0);
DATA->seti(-100e-6);
SITE->lastresult.value = contstatus = DATA->snap();
9-83
M2 Test System Programming and Reference Manual
if (KVD->Test())
return(FAIL);
DATA->setv(0);
contstatus = DATA->snap();
--------------------------------------------------------------------------
SYS->del(3.0e-3);
// xtime1 = SYS->read_counter();
LOG->tnum(testnum);
SITE->lastresult.value = leakstatus = DATA->snap();
if (KVD->Test())
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).
9-84
Digital Instruments
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 must assign boards of a
SEQUENCER group to specific sites.
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:
DIGMOD0 -> site0
DIGMOD1 -> site1
DIGMOD2 -> site2
DIGMOD3 -> site3
void TSEQUENCER::SetSiteMode(bool _sitemode,
short _site0,
short _site1,
short _site2,
short _site3,
short _site4,
short _site5)
Arguments:
bool _sitemode // TRUE or FALSE
short _site0 // 0-5
short _site1 // 0-5
short _site2 // 0-5
short _site3 // 0-5
short _site4 // 0-5
short _site5 // 0-5
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);
9-85
M2 Test System Programming and Reference Manual
Options:
DM_NOTPRESENT - if DIGMOD is not loaded in test head
DM_MASTER - this board will be the master of all boards
DM_SLAVE - this board will sync to the MASTER
DM_INDEPENDENT - will run on its own clock, not a master or slave
DM_INACTIVE - board loaded in test head but not active for device test.
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.
void TSEQUENCER::SetMode(DMMODE _mode0,
DMMODE _mode1,
DMMODE _mode2,
DMMODE _mode3,
DMMODE _mode4,
DMMODE _mode5)
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:
DM_CLK source // following options
// DM_100MHZCLK= on board 100MHZ clock
// DM_PLLCLK = on board PLL clock
// DM_FCINCLK = clock from Fathercard
// DM_XSICLK = not allowed here
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.
9-86
Digital Instruments
Example:
SEQ0->MasterSlave(0);
void TSEQUENCER::MasterSlave(unsigned _master)
Arguments:
unsigned _master // which DIGMOD board is the MASTER
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:
double freq // which DIGMOD board is the MASTER
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:
unsigned timeset // 0-15
double freq // programmed in Hz
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:
unsigned timeset // 0-15
unsigned t0div // 2-128
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.
9-87
M2 Test System Programming and Reference Manual
Example:
SEQ0->keepalive_timeset(6);
short TSEQUENCER::keepalive_timeset(unsigned timeset)
Arguments:
unsigned timeset // 0-15
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:
unsigned value // 1=U1 flag, 2=U2 flag, 3=both
SEQ0->running
Checks to see if a pattern is running or halted.
Example:
short i;
i=SEQ0->running();
If the pattern is running, i=1, if halted i=0.
short TSEQUENCER::running(void)
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:
unsigned __side // tester "side" 0-1
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.
9-88
Digital Instruments
Example:
unsigned xfail=SEQ0->fail();
short TSEQUENCER::dfail(unsigned __side)
Arguments:
unsigned __side // tester "side" 0-1
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.
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)
9-89
M2 Test System Programming and Reference Manual
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:
double timeout// 0-?
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. 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
9-90
Digital Instruments
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:
SEQ0->createpatmap(pat_list, PATDIR, 1);
short TSEQUENCER::patload(PATDATA* pat_list, char* pat_dir, int parallel_flag)
Arguments:
PATDATA* pat_list // listing of patterns to be loaded
char* pat_dir // directory where patterns are located
int parallel_flag // specifies if the same pattern should
// be loaded into multiple DIGMOD
// boards for multisite
SEQ0->patload
Loads a list of patterns that are contained in the pattern list structure. The pattern list structure is detailed
elsewhere in this manual.
Example:
SEQ0->patload(pat_list, PATDIR);
short TSEQUENCER::patload(PATDATA* pat_list, char* pat_dir)
Arguments:
PATDATA* pat_list // listing of patterns to be loaded
char* pat_dir // directory where patterns are located
9-91
M2 Test System Programming and Reference Manual
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:
SEQ0->patload(pat_list, PATDIR, 0xf);
SEQ0->patload(pat_list, PATDIR, 0x3);
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.
short TSEQUENCER::patload(PATDATA* pat_list,
char* pat_dir,
unsigned slotmask)
Arguments:
PATDATA* pat_list // listing of patterns to be loaded
char* pat_dir // directory where patterns are located
unsigned slotmask // mask of DIGMOD boards
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 manual.
Example:
SEQ0->patload_pformat(pat_list, PATDIR);
short TSEQUENCER::patload_pformat(PATDATA* pat_list, char* pat_dir)
Arguments:
PATDATA* pat_list // listing of patterns to be loaded
char* pat_dir // directory where patterns are located
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
short TSEQUENCER::patexe(AnsiString patternname,
AnsiString asymbol)
Arguments:
AnsiString patternname // the pattern name
AnsiString asymbol // starting point represented
// by a label
9-92
Digital Instruments
Arguments:
unsigned pattern // pattern index
AnsiString asymbol // starting point represented by a label
Arguments:
unsigned pattern // pattern index
unsigned offset // starting offset
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:
unsigned startoff[4]; // starting offset array
unsigned PATTERN2=2; // pattern index
unsigned startoff[0]= SEQ0->getsym(PATTERN2, "START0");
unsigned startoff[1]= SEQ0->getsym(PATTERN2, "START1");
unsigned startoff[2]= SEQ0->getsym(PATTERN2, "START2");
unsigned startoff[3]= SEQ0->getsym(PATTERN2, "START3");
SEQ0->patexe_array(PATTERN2, startoff);
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].
short TSEQUENCER::patexe_array(unsigned pattern,
unsigned offset[])
Arguments:
unsigned pattern // pattern index
unsigned offset[] // starting offset array
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);
9-93
M2 Test System Programming and Reference Manual
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.
short TSEQUENCER::patexe_parallel(unsigned pattern,
unsigned offset,
unsigned slotmask)
Arguments:
unsigned pattern // pattern index
unsigned offset // starting offset
unsigned slotmask // board mask
SEQ0->getsym
When patterns are compiled using the KVD Pattern Compiler, a SYM file (patternname.sym) is created.
This file contains all of the patterns 'symbols' also referred to as 'labels', and a relative offset of each
symbol from the beginning of the pattern. If the programmer 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:
unsigned pattern // pattern index
AnsiString symbol // actual label (symbol) in the pattern
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.
Example:
SEQ0->dcap_setup(100, 1024);
Arguments:
unsigned long cap_adr // starting address (0-16M)
unsigned long cap_count // number of captures
// (1-16M-starting address)
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)
9-94
Digital Instruments
Arguments:
unsigned long cap_adr // starting address (0-16M)
unsigned long cap_count // number of captures
// (1-16M-starting address)
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]->dcap_read(1, 100, 1024, cap_data);
short TDIGMOD::dcap_read(unsigned _side, unsigned long cap_adr, unsigned long cap_count, unsigned
cap_data[])
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:
DIGMOD[x]->ddrv_load(1500, 1024, drv_data[]);
short TDIGMOD::ddrv_load(unsigned long drv_adr, unsigned long drv_count, unsigned drv_data[])
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 .bp format. These binary pattern
files contain only relevant pin information, if a pin is not active, or not changing, no information is stored.
The other benefit of the new compiled pattern format is that many new features of DIGMOD are supported.
Some of these new features include:
• Drive/Compare SHIFTR, SHIFTR2 and SHIFTL, SHIFTL2 (previously only SHIFTL)
• Compare for mid level
• Same Cycle Drive/Compare
• No change
• Scope Trigger
9-95
M2 Test System Programming and Reference Manual
The reduction in file size is can be significant. In several example cases, a .bp file required 8.775MB, while
the corresponding .pformat file was just 1.894MB. In another case the file size changed from 2.01MB to
435KB.
The pattern file structure and pattern loading are similar to the previous structure and loading. See the
examples below for details:
Pattern Loading
The loading of .pformat files is very similar to loading .bp files. The significant advantage is that the .bp files
typically included information for only one site. The user was required to specify with a loadmask which
boards would be loaded with the same pattern information.
.pformat Loading:
SEQ0->patload_pformat(pat_list2, PATDIR); //load all pins
9-96
Digital Instruments
In the past it has been necessary to include DIGMOD (and DSPIO) 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 new approach will simplify pin
definition and reduce errors.
[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 "UC06_DMRESOURCES.INI".
9-97
M2 Test System Programming and Reference Manual
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.
There is significant new 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 the DSPIO
tool, and it supports the .pformat channel description structure.
New 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.
• More editable opcodes
• Better navigation and scrolling
9-98
Digital Instruments
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)
• File Info (header info for revision control and size)
• Command Line Interface
• Functions (find label and go to vector)
• Symbols (makes it possible to jump to a symbol)
• Pin Groups (easier display of defined names)
• Static Pins (to display pins not being controlled by vector data)
9-99
M2 Test System Programming and Reference Manual
A graphical view:
9-100
Digital Instruments
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:
9-101
M2 Test System Programming and Reference Manual
There is on-line help available from the top-level menu item HELP.
The Logic Analyzer tool is a component of KVD DM Pattern Editor. This tool is useful when debugging DM
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.
9-102
Digital Instruments
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:
*pins = a group of DIGMOD pins to be displayed in the Logic Analyzer tool.
T0period = the tester cycle of interest
vectors = the number of vectors to be analyzed.
tsmin = the minimum timeset to be analyzed.
tsmax = the maximum timeset to be analyzed.
capmemstart = the starting capture memory location (default = 0x800000)
finediv = the compare strobe step for each capture (default =1 which is ½ MCLK cycle)
9-103
M2 Test System Programming and Reference Manual
void TlogicAnalyzer::Run();
This function should be executed after setting up the Logic Analyzer using the "Setup" function.
9-104
Digital Instruments
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.
9-105
M2 Test System Programming and Reference Manual
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 9.48: Use the Span and Position Sliders to Adjust Resolution
This is a program file block that shows typical C++ steps for using Logic Analyzer:
9-106
Digital Instruments
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.
DIGMOD SHMOO
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.
9-107
M2 Test System Programming and Reference Manual
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.
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.
9-108
Digital Instruments
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
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:
myshmoo ->SetupXAxis(100e-3, 200e-3, 2e-3, "XTitle", "mV", DMCH[0]->vil, saVOLTS);
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);
9-109
M2 Test System Programming and Reference Manual
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;
}
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.
TFORMshmoochild::DisableRepaint = true or false.
TFORMshmoochild::InteractiveMode = true or false.
TFORMshmoochild::SetDelay = <double value>.
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.
9-110
Digital Instruments
{
double xvalue;
double yvalue;
bool ispass;
};
If you specify an [x][y] pair out of range, the return value is NULL.
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.
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.
9-111
M2 Test System Programming and Reference Manual
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.
9-112
Digital Instruments
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).
9-113
M2 Test System Programming and Reference Manual
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.
9-114
Digital Instruments
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.
9-115
M2 Test System Programming and Reference Manual
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.
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.
9-116
Digital Instruments
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.
9-117
M2 Test System Programming and Reference Manual
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).
9-118
Digital Instruments
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.
9-119
M2 Test System Programming and Reference Manual
9-120
Digital Instruments
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->lastresult[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 comparators on the DSPIO instruments, which are
independently programmed).
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).
9-121
M2 Test System Programming and Reference Manual
Example:
TMU0->level(CHANA, 1.0, 1.0);
TMU0->input(CHANA, RISING, CHANA, FALLING);
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
busses as the source of the start and stop events.
Example:
TMU0->ddchan(DDCH4, DDCH11);
TMU0->input(DDTMUA, RISING, DDTMUB, FALLING);
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.
Example:
TMU0->freq(18e3, 250e-3, 100, 1);
An interval measurement involves programming the maximum expected interval time, the timeout, and
number of events to average (between 1-32).
Example:
TMU0->interval(450e-9, 10e-3, 10);
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.
9-122
Digital Instruments
Last, 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 KVD->Test(); you will need to place it in the SITE->lastresult.value variable yourself.
Example:
TMU0->enable(NORMAL, POSITIVE);
TMU0->meas(my_result_variable);
TMU Commands
TMU >ddchan
Sets the TMU's CHANA and CHANB to the digital pin inputs.
unsigned ddchan(TDigPin * etmua, TDigPin * etmub);
Parameters:
TDigPin * etmua
TMU >enable
Enables/resets the TMU trigger before the next measurement.
unsigned enable(TRIG trigg, NEGTIME ntime);
Parameters:
TRIG trigg
9-123
M2 Test System Programming and Reference Manual
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.
unsigned input(TMUCHAN strtch, TMUEDGE strtedge, TMUCHAN stopch, TMUEDGE stopedge);
Parameters:
TMUCHAN strtch
Start channel, can be CHANA or CHANB - this is a TMU channel, not a Digital Pin Channel.
TMUEDGE strtedge
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
Description:
Forces the next TMU measurement to be an interval type measurement between two edges.
9-124
Digital Instruments
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
TMU >meas
Performs the measurement (interval or frequency) and stores the result in the RESULT parameter
unsigned meas(RESULT result[]);
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-125
M2 Test System Programming and Reference Manual
9-126
Chapter 10: AC Instruments
DSP Testing on KVD M2 Test System
This section will discuss the setup that is required for the PWS and PWD DSP instruments. These
instruments allow for the generation and measurement of arbitrary analog waveforms, although we will
primarily discuss techniques for sine wave generation and analysis. Actual KVD test system syntax is
discussed later.
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 10.1 shows the relationship between external clock (xclock_in) and the PWD clock.
10-1
M2 Test System Programming and Reference Manual
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:
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.
10-2
AC Instruments
Figure 10.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:
10-3
M2 Test System Programming and Reference Manual
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:
M = 1000/39.06988 = 25.6 ;
10-4
AC Instruments
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.
10-5
M2 Test System Programming and Reference Manual
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.
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.
10-6
AC Instruments
WS Connections
In order to use the Waveform Source, the proper connections must be made. Below is a list of typical
connections.
Connection Description
10-7
M2 Test System Programming and Reference Manual
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.
10-8
AC Instruments
Effect: Starts a ws waveform. The frequency and amplitude are determined by sample
clock frequency and calibration factors. If frequency is greater than 0, the
function will modify the rate at which the WS waveform RAM is indexed,
otherwise the RAM index will be 1 (necessary for multitone waveforms). The
amplitude will be scaled according to user derived calibration factors.
WS->clock (<source>,<destination>);
Setup the sample clock for the WS.
Effect: Connects the appropriate clock resources for sampling the WS waveform RAM,
running the WS DSP processor, and driving an external clock to other system
resources (WD, DSPIO) for system synchronization.
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.
Effect: Allocates the necessary memory for the WS_context structure. This routine
should only be called once during initialization. It is called by the system
command UserClass >SystemInit().
10-9
M2 Test System Programming and Reference Manual
WS->reset ( )
Reset the WS.
Effect: Resets the WS to a known default state - zero offset, no filtering, default clock
settings (Note DSPCLOCKSETUP structures section). Necessary for proper
booting of the WS. Need not be called when testing devices, only during
initialization (UserClass >SystemInit, UserClass >LotInit),
Note: This function is called after each DUT from the system function reset_hardware.
WS->pllbits ( <numerator>,<denominator>,<divisor>)
Set up the WS PLL.
Effect: Sets the WS pll parameters. It is necessary to setup the WS PLL circuit if the
WS will be used as the master clock source for the test system. The PLL clock
frequency is derived as follows: clock_freq*2*numerator/demominator/
pow(2,divisor).
Effect: If a module other than the WS is the WS clock resource, a call to this function
will set the clock frequency for the WS external clock input. This function does
not set WS hardware.
10-10
AC Instruments
WS->xclkoutfreq (<frequency>);
Return value of WS output clock frequency.
Effect: If the WS is used to clock other system resources (DSPIO, WD) this routine
should be called after a call to pllbits. This returns the output frequency of the
WS external clock in the array <frequency>.
WS->offset ( <ws>,<offset>)
Set the WS output offset voltage.
Effect: Typically the waveform that is generated by the WS does not have a built in DC
offset. If an offset is required, this function will set the appropriate value in the
source output DAC. No waveform RAM modification is required.
Note: the user is required to calibrate the WS offset DAC in UserClass >SystemInit or
UserClass >LotInit
Effect: Sets the post DAC low-pass filter for the WS channel. The HFWS does not
have a filter option.
10-11
M2 Test System Programming and Reference Manual
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>.
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.
Effect: Computes and stores a sine wave in the WS RAM. Note that the amplitude and
offset can be digitally stored as part of the waveform. This is for LF sine wave
generation only. This routine is intended for backwards compatibility only. New
test programs should use the function store_wave20bit, which can store more
complex multi-tone waveforms.
Note: for backwards compatibility only, new programs should use the function
store_wave20bit.
Effect: Computes and stores a single tone or multi-tone sine wave to be generated by
a LFWS channel. The waveform structure must be "initialized" and loaded at
some time during UserClass >SystemInit. This function is capable of computing
and storing multi-tone waveforms.
10-12
AC Instruments
WS->store_sine16bit_hs (<address>,<length>,<amp>,<offset>)
Store a hs source waveform.
Effect: Computes and stores a sine wave in the WS RAM. Note that the amplitude and
offset can be digitally stored as part of the waveform. This is for HF sine wave
generation only.
WS->store_ramp20bit (<address>,<length>,<amplitude>,<offset>)
Store a source waveform.
Effect: Computes and stores a ramp wave in the WS RAM. Note that the amplitude
and offset can be digitally stored as part of the waveform.
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.
10-13
M2 Test System Programming and Reference Manual
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
10-14
AC Instruments
PWS Commands
Connection
void con(PWSCHAN chan);
void con_to_switch_bus(PWSCHAN chan);
void con_to_cal_bus(PWSCHAN chan);
void con_to_l1(PWSCHAN chan);
void con_to_ic(PWSCHAN chan);
void con_to_agnd(PWSCHAN chan);
void discon(PWSCHAN chan = NONE);
void discon_from_agnd(void);
void discon_from_cal_bus(void);
void discon_from_l1(void);
void discon_from_ic(void);
Clocking
unsigned dds_setup(DSPCLOCK ddsnum, double freqval);
unsigned dds_reset(void);
void clock_reset(unsigned resetval);
double xclkoutfreq(void);
void xclkinfreq(double freq);
unsigned clock(DSPCLOCK source,DSPCLOCK dest);
Filter/Level(DC)
unsigned offset(PWSCHAN ws, double offset);
unsigned filter(PWSCHAN channel,double filval);
unsigned atten(PWSCHAN ws,double atten);
unsigned setv(PWSCHAN ws, double val);
10-15
M2 Test System Programming and Reference Manual
General
short reset(void);
unsigned init(void);
Parameters:
PWSCHAN chan // connect a channel (usually PWSCHAN1) to the outside world.
Parameters:
PWSCHAN chan // connect a channel (usually PWSCHAN1) to the switch bus (whatever that is).
Parameters:
PWSCHAN chan // connect a channel to the cal bus (Keithley meter).
Parameters:
PWSCHAN chan // connect a channel to the DC bus, allowing DC measurement with MPDS[0].
Parameters:
PWSCHAN chan // connect a channel to the interconnect bus, internal connections
of different instruments
10-16
AC Instruments
Parameters:
PWSCHAN chan // connect a channel to analog ground
Parameters:
PWSCHAN chan // disconnect a channel from the outside world.
Parameters:
Parameters:
Parameters:
Parameters:
10-17
M2 Test System Programming and Reference Manual
Parameters:
Parameters:
DSPCLOCK ddsnum // DDS1CLK or DDS2CLK
double freqval // sets the clock frequency (up to 45MHz)
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.
Parameters:
None
Parameters:
unsigned resetvalue // either 0 or greater
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.
10-18
AC Instruments
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.
Parameters:
DSPCLOCK source // source = OSCLK2, DISCLK, XCLKIN, H1, DDS1CLK, DDS2CLK
DSPCLOCK dest // destination = DAC1CLK, DAC2CLK, XCLKOUT, TICLK
Example:
PWS0->clock(XCLKIN, TICLK);
PWS0->clock(H1, DAC1CLK);
10-19
M2 Test System Programming and Reference Manual
Parameters:
PWSCHAN ws // PWSCHAN1 or PWSCHAN2
double offset // -5V to +5V
Parameters:
PWSCHAN ws // PWSCHAN1 or PWSCHAN2
double filval // 0 to infinite
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:
PWSCHAN ws // PWSCHAN1 or PWSCHAN2
double atten // value of attenuation
10-20
AC Instruments
Parameters:
PWSCHAN ws // PWSCHAN1 or PWSCHAN2
double val // DC output value
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.
Parameters:
None
Parameters:
None
10-21
M2 Test System Programming and Reference Manual
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.
10-22
AC Instruments
WD Connections
In order to use the Waveform Digitizer, the proper connections must be made.
Connection Description
10-23
M2 Test System Programming and Reference Manual
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.
WD->clock (<source>,<destination>);
Set up the sample clock for the WD.
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.
10-24
AC Instruments
Note: To operate, the WD instrument must have a clock source connected to TICLK
and a clock source connected to LFCLK0.
The input to WD pll is designated REFCK0
the output from WD pll is designated PLLMCLK0.
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()
WD->reset
Reset the WD.
Effect: Resets the WD to a known default state - zero offset, no filtering, default clock
settings. This function is called by the operating system prior to testing each
device. It need not be called by the user.
Note: This function is called after each DUT from the system function reset_hardware.
Effect: Sets the WD pll parameters. It is necessary to set up the WD PLL circuit if the
WD will be used as the master clock source for the KVD test system. The PLL
clock frequency is derived as follows: clock_freq*2*numerator/demominator/
pow(2,divisor).
10-25
M2 Test System Programming and Reference Manual
WD->xclkinfreq (<frequency>)
Set the WD input clock frequency.
Effect: If a module other than the WD is the WD master clock resource, a call to this
function will set the clock frequency for the WD external clock input. This
function does not set WD hardware.
WD->xclkoutfreq (<frequency>)
Return value of WD output clock frequency.
Effect: If the WD is used to clock other system resources (DSPIO, WD) this routine
should be called after a call to pllbits. This returns the output frequency of the
WD external clock in the array <frequency>.
WD->offset (<source>,<offset>);
Set the WD input offset voltage.
Effect: This function will set the appropriate input offset DAC on the WD. A call to this
function may be required if the signal to be digitized is a low-level signal with a
DC component. The signal may need amplification for accurate measurement,
but first the DC component must be removed.
Note: the user is required to calibrate the wd offset DAC in UserClass >SystemInit()
10-26
AC Instruments
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.
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.
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.
10-27
M2 Test System Programming and Reference Manual
Effect: Sets the sample rate for the high frequency WD path.
Note: Actual setting is determined by dividing the input clock frequency with an
integer value.
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.
Resolution 20 bits
10-28
AC Instruments
Gain Selections
Stage 1 1x or 10x
Stage 2 1x,2x,4x or 8x
Stage 3 1x or 16x
Input Differential
10-29
M2 Test System Programming and Reference Manual
PWD Commands
Connection
short instr_con(pLFWD_Instr instr,WD_Input wdinput);
short input_con(WD_Input wdinput);
short instr_discon(pLFWD_Instr instr,WD_Input wdinput);
short input_discon(WD_Input wdinput);
Clocking
short dds_setup(pLFWD_DDS ddsnum, double freqval);
short dds_reset();
void clock_reset(unsigned resetval);
short clock_div(pLFWD_Chan Chan,pLFWD_Div div);
short clock(pLFWD_Clksrc source, pLFWD_Clk dest);
short clockselect(pLFWD_Clk clock, pLFWD_Clksrc source);
General
short reset();
short start(pLFWD_Chan channel,short numpts);
short stop();
short wait();
DSP
short setup_fft(pLFWD_Chan Chan,unsigned numpts);
short fft_exec(pLFWD_Chan Chan,unsigned bin,unsigned points);
short fft(pLFWD_Chan Chan,unsigned points);
double thd(pLFWD_Chan Chan, unsigned fund, unsigned numpts);
double snr(pLFWD_Chan Chan, unsigned fund, unsigned numpts);
double sinad(pLFWD_Chan Chan, unsigned fund, unsigned numpts);
double thd_filter(pLFWD_Chan Chan,
10-30
AC Instruments
unsigned fund,
unsigned numpts,
double fsample,
double ffilt);
double snr_filter(pLFWD_Chan Chan,
unsigned fund,
unsigned numpts,
double fsample,
double ffilt);
double sinad_filter(pLFWD_Chan Chan,
unsigned fund,
unsigned numpts,
double fsample,
double ffilt);
Filter/Level(DC)
short offset (pLFWD_Chan chan, double value);
unsigned filter(pLFWD_Chan channel,double filval);
short gain (pLFWD_Chan chan, pLFWD_Gain value);
double read_wd2000_dc(pLFWD_Chan Chan);
Parameters:
pLFWD_Instr instr // WD_KEITHLEY, WD_AGND, WD_IC1A4, or WD_DUTSRC1
WD_Input wdinput // PWD_WD1P, PWD_WD1N, PWD_WD2P, PWD_WD2N
PWD_WD3P, PWD_WD3N, PWD_WD4P, PWD_WD4N
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:
WD_Input wdinput // PWD_WD1P, PWD_WD1N, PWD_WD2P, PWD_WD2N
PWD_WD3P, PWD_WD3N, PWD_WD4P, PWD_WD4N
Connects the input of a WD Channel to the outside world (need to do both for a differential measure).
10-31
M2 Test System Programming and Reference Manual
Parameters:
pLFWD_Instr instr // WD_KEITHLEY, WD_AGND, WD_IC1A4, or WD_DUTSRC1
WD_Input wdinput // PWD_WD1P, PWD_WD1N, PWD_WD2P, PWD_WD2N
PWD_WD3P, PWD_WD3N, PWD_WD4P, PWD_WD4N
Parameters:
WD_Input wdinput // PWD_WD1P, PWD_WD1N, PWD_WD2P, PWD_WD2N
PWD_WD3P, PWD_WD3N, PWD_WD4P, PWD_WD4N
Parameters:
pLFWD_DDS ddsnum // DDS1_WD, DDS2_WD, DDS3_WD, DDS4_WD
double freqval // sets the clock frequency (up to 45MHz)
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.
Parameters:
None
10-32
AC Instruments
Parameters:
unsigned resetvalue // either 0 or greater
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:
pLFWD_Chan Chan// LFADC1, LFADC2, LFADC3, or LFADC4
pLFWD_Div div// DIV1, DIV2, DIV4, DIV8, DIV16, DIV32, DIV64,
or DIV128
Parameters:
pLFWD_Clksrc source // source = WD_DDS1, WD_DDS2, pLFWD_H1, pLFWD_XIN
pLFWD_Clk dest //dest = ADC1CLK, ADC2CLK, ADC3CLK, ADC4CLK
pLFWD_XOUT, pLFWD_TICLK, or pLFWD_SMCLK
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).
10-33
M2 Test System Programming and Reference Manual
Parameters:
pLFWD_Clk dest //dest = ADC1CLK, ADC2CLK, ADC3CLK, ADC4CLK
pLFWD_XOUT, pLFWD_TICLK, or pLFWD_SMCLK
pLFWD_Clksrc source // source = WD_DDS1, WD_DDS2, pLFWD_H1, pLFWD_XIN
Parameters:
None
Parameters:
pLFWD_Chan channel// LFADC1, LFADC2, LFADC3, LFADC4, LFADC1_4
short numpts // captures a number of samples
Note: This will start the capture of a number of samples on a PWD channel (assuming the clocks are
running).
10-34
AC Instruments
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.
Parameters:
None
Parameters:
pLFWD_Chan instr // LFADC1, LFADC2, LFADC3, LFADC4
unsigned numpts // 64, 128, 256, 512, 1024, 2048, 4096
Note: This function stores important information in the PWD DSP memory, including but not limited to
the following:
1. How many points in the FFT.
2. Where will the data be stored.
3. Which DSP function will be run (FFT in this case).
This function is called by PWDx->fft and PWDx->fft_exec, and does not need to be called by the
user.
10-35
M2 Test System Programming and Reference Manual
Parameters:
pLFWD_Chan instr // LFADC1, LFADC2, LFADC3, LFADC4
unsigned bin // number of cycles (M)
unsigned numpts // 64, 128, 256, 512, 1024, 2048, 4096
Parameters:
pLFWD_Chan instr // LFADC1, LFADC2, LFADC3, LFADC4
unsigned numpts // 64, 128, 256, 512, 1024, 2048, 4096
Parameters:
pLFWD_Chan instr // LFADC1, LFADC2, LFADC3, LFADC4
unsigned fund // fundamental bin (M)
unsigned numpts // 64, 128, 256, 512, 1024, 2048, 4096
Parameters:
pLFWD_Chan instr // LFADC1, LFADC2, LFADC3, LFADC4
unsigned fund // fundamental bin (M)
unsigned numpts // 64, 128, 256, 512, 1024, 2048, 4096
10-36
AC Instruments
Parameters:
pLFWD_Chan instr // LFADC1, LFADC2, LFADC3, LFADC4
unsigned fund // fundamental bin (M)
unsigned numpts // 64, 128, 256, 512, 1024, 2048, 4096
Parameters:
pLFWD_Chan instr // LFADC1, LFADC2, LFADC3, LFADC4
unsigned fund // fundamental bin (M)
unsigned numpts // 64, 128, 256, 512, 1024, 2048, 4096
double fsample // what was the sample frequency??
double ffilt // digital filter frequency (Low Pass)
Note: Returns the thd value of the captured signal, but will filter upper harmonics if required.
Example:
If the sample rate Fs=40Khz and the test frequency was 1Khz, if the ffilt parameter was set to 5000, the
result would include only harmonics 2 (2Khz), 3 (3khz), 4 (4Khz) and 5 (5Khz).
Parameters:
pLFWD_Chan instr // LFADC1, LFADC2, LFADC3, LFADC4
unsigned fund // fundamental bin (M)
unsigned numpts // 64, 128, 256, 512, 1024, 2048, 4096
double fsample // what was the sample frequency??
double ffilt // digital filter frequency (Low Pass)
10-37
M2 Test System Programming and Reference Manual
Note: Returns the snr value of the captured signal, but will filter upper harmonics if required.
Example:
If the sample rate Fs=40Khz and the test frequency was 1Khz, if the ffilt parameter was set to 10000, the
result would include noise from 0Hz-10Khz.
Parameters:
pLFWD_Chan instr // LFADC1, LFADC2, LFADC3, LFADC4
unsigned fund // fundamental bin (M)
unsigned numpts // 64, 128, 256, 512, 1024, 2048, 4096
double fsample // what was the sample frequency??
double ffilt // digital filter frequency (Low Pass)
Note: Returns the snr value of the captured signal, but will filter upper harmonics if required.
Example:
If the sample rate Fs=40Khz and the test frequency was 1Khz, if the ffilt parameter was set to 10000, the
result would include noise from 0Hz-10Khz.
Parameters:
pLFWD_Chan chan // LFADC1, LFADC2, LFADC3 or LFADC4
double value // -5V to +5V
10-38
AC Instruments
Parameters:
pLFWD_Chan chan // LFADC1, LFADC2, LFADC3 or LFADC4
double filval // 0 to infinite
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:
pLFWD_Chan chan // LFADC1, LFADC2, LFADC3 or LFADC4
pLFWD_Gain value // WDGAIN1, WDGAIN2, WDGAIN4, WDGAIN8, WDGAIN16
Parameters:
pLFWD_Chan chan // LFADC1, LFADC2, LFADC3 or LFADC4
10-39
M2 Test System Programming and Reference Manual
Waveforms can be defined and loaded at program initialization time (UserClass::SystemInit). An important
part of the software involves a structure that defines a waveform. This structure of type DSPTEST provides
much information regarding the waveform. The structure DSPTEST is currently defined in kvdwin.h as
follows:
typedef struct {
char descrip[50];
WDTYPE wdsel;
WSTYPE wssel;
WSCHANNEL wschan;
double waveamp;
double waveoff;
unsigned long wavestrt;
unsigned long wavesize;
double wavewait;
unsigned long dacloop;
unsigned long indexreg;
unsigned long digbuff;
unsigned long digsize;
unsigned long digoff;
unsigned long digstart;
double digwait;
unsigned long fltbuff;
TIPROG dacprog;
TIPROG convprog;
TIPROG fftprog;
double fftwait;
unsigned long fftout;
unsigned fund;
unsigned fundskirt;
double adcclk;
double adcsam;
unsigned rel;
DSPCLOCK refck;
unsigned pll_p;
unsigned pll_q;
unsigned pll_m;
WDFILTER wdfil;
double wsoff;
double atten;
WSFILTER wsfil;
double wdoff;
double gain1;
double gain2;
unsigned hsswitch;
unsigned tones;
double bins[10];
double amps[10];
long int dcap_adr;
long int ddrv_adr;
} DSPTEST;
TI DSP Programs
When using the PWS and PWD instruments, it is important to remember that much of the flexibility of these
instruments is derived from the on-board DSP processors. These processors run micro-code that is
necessary to source and measure various types of waveforms.
While it is not necessary for the user to understand the exact content of these programs, it is up to the user
to store these programs in "TI Memory". These programs are run as required, but it is possible that the
user could see a reference to various TI DSP functions in a test program.
Below is a list of the programs necessary for the examples contained in these pages:
10-40
AC Instruments
PWS Programs
NAME: dac25
PWD Programs
NAME: pwdfft
NAME: wd2kconv
TI Memory Locations
Each TI DSP processor has access to its own internal memory as well as on-board memory. The on-board
memory is shared by the TI micro-code and the stored/captured digital representation of a waveform. For
KVD usage the memory is mapped roughly as follows:
PWS Instrument
Size: 512
Size: 256K
10-41
M2 Test System Programming and Reference Manual
PWD Instrument
Size: 512
Size: 256K
10-42
AC Instruments
WS Specific Declarations
Note that this structure defines a waveform in terms of both the waveform source (WS) and waveform
digitizer (WD). The definitions specific to the WS are discussed in this section.
waveoff: Useful for signal generation, allows an offset to be embedded in the waveform,
rather than supplied by the offset DAC.
waveamp: Used mainly with HF source. Allows a c function to derive and store a waveform
of some amplitude. Not used for multi-tone generation. Because the DSP
processor will scale the amplitude value, this should be set to 1 for all LF
waveforms.
dacloop: Used by the DSP. Indicates the number of clocks that will be added to the
sample loop in addition to the number of steps of microcode that already exist.
Only used in the LF sources. The current number of steps in the DSP
microcode for clocking the LFDAC is 20, therefore the data rate for the WS is
determined by the TICLOCK/2/(20 + dacloop).
indexreg: The index rate at which the DSP will step through the waveform. Applies to
LFWS only. The use of indexreg is important for DDS signal generation. For
example if the loaded waveform is a single cycle sine wave of 1000 points, if the
indexreg is set to 1 then running the waveform at 320KS/s a sine wave of
320Hz will be generated. Changing the indexreg to 3 will generate 3*320000/
1000 = 960Hz, etc. Note that for the initial WS application the value of indexreg
is always set to 1 in the defining structure. The actual index is determined at a
later time, this will be discussed in more detail in a later section. Note that for
HF waveforms, this value should always be set to 1.
dacprog: The TIPROGRAM that the WS DSP will run is currently called "DAC". The start
address for the WS TIPROGRAM has been saved for the user in the global
variable ws0_dsp.dacprog.start.
refck: The clock that is selected to run the synthesizer. This clock can be internal
(OSCCLK), system (DISCLK), or external (XCLKIN).
10-43
M2 Test System Programming and Reference Manual
wsoff: The value loaded to the WS offset DAC. Independent of any offset loaded as
part of the waveform. Note that the offset DACS must currently be calibrated as
part of the application. Detail provided in a later section.
atten: Selects the level of attenuation for the WS. Note - the attenuators are calibrated
as part of AC calibration.
bins[ 0..tones-1]: If the waveform is a multi-tone, each tone has an associated bin based on the
sample rate and number of points. Each tones bin must be defined.
amps[ 0..tones-1]: If the waveform is a multi-tone, each tone has an associated amplitude. Each
amps bin must be defined. Note - this amplitude should include a cal factor for
that tone.
10-44
AC Instruments
WD Specific Declarations
The structure declarations that are specific to the WD are discussed in this section.
convprog: The TIPROGRAM run by the WD DSP processor when sampling a signal.
Current program is 'CONVERT'. The start address for this WD TIPROGRAM
has been saved for the user in the global variable ws0_dsp.convprog.start. The
file name for this WD TIPROGRAM has been saved for the user in the global
variable ws0_dsp.convprog.fil.
fftprog: The current TIPROGRAM run by the WD DSP processor when processing a
digitized signal for Fourier analysis. Current program is 'FFT'. The start address
for this WD TIPROGRAM has been saved for the user in the global variable
ws0_dsp.fftprog.start.
fund: The bin of the fundamental frequency to be evaluated by the DSP processor.
Note that the function actest in dspdrv.c will override the fund argument if DDS
is used.
adcclk: The rate at which the LFWD clock will run. Upper limit is 2.5MS/Sec. Note that
this parameter should be passed to the function wdlfadc in file wddrv.c.
adcsam: The rate at which the LFWD or HFWD will sample. Note that this parameter
should be passed to the function wdlfadc or wdhfadc located in file wddrv.c.
wdfil: The value of the filter setting for the LF WD channel. Valid arguments are
WD5KHZ, WD50KHZ, and WDNOFIL. Should be passed to the function wdfilt
in file wddrv.c.
wdoff: The value to be programmed in the WD input offset DAC. Should be passed to
the function wdoff in file wddrv.c.
gain1: The value of gain of the first gain stage of the LFWD. Values are 1,2,4,8. This
value should be passed to the function wdgain in file wddrv.c.
gain2: The value of gain of the second gain stage of the LFWD. Values are 1,2,4,8.
This value should be passed to the function wdgain in file wddrv.c.
digbuff: The starting address in the WD RAM for storing sample data from the digitizer.
This address has been saved for the user in the global variable
ws0_dsp.digbuff.
digoff: An offset value required by the FFT program in addressing the WD RAM for
stored sample data. This address has been saved for the user in the global
variable ws0_dsp.digoff.
digstart: The starting address for the WD TIPROGRAM program for digitizing
waveforms. This address has been saved for the user in the global variable
ws0_dsp.digstart.
10-45
M2 Test System Programming and Reference Manual
fltbuff: The starting address in the WD RAM for storing floating point sample data. This
is data that has been converted from the integer format output from the digitizer
DAC. This address has been saved for the user in the global variable
ws0_dsp.fltbuff. This address is used to designate the starting location of input
data for the FFT calculations.
fftout: The starting address in the WD RAM for storing FFT result data. This address
has been saved for the user in the global variable ws0_dsp.fftout. This address
is used to designate the starting location of output data from the FFT
calculations.
Note that although the structure defines many of the WD sampling parameters, it is up to the user to see
that these parameters are actually set correctly in the WD.
Dspclocksetup
} DSPCLOCKSETUP
Definitions:
pllsetup: Setting this to 1 will setup the PLL on the appropriate board (WS or WD).
Setting to 0 will not setup a PLL.
10-46
AC Instruments
DSPCLOCKSETUP wsclock_reset[] = {
// Settings for 46.08MHZ from DISCLK
{DISCLK, REFCK0, 0, 0, 0, 0},
{PLLMCLK0, TICLK, 1, 94, 51, 0},
{PLLMCLK0, XCLKOUT, 0, 0, 0, 0},
{NOCLOCK, NOCLOCK, -1, 0, 0, 0}
};
Note that the last line (NOCLOCK,NOCLOCK) is necessary to terminate the clock setup.
The structure WD0->clock_reset should be setup in a similar way. Note that there is significant flexibility in
clocking the DSP instruments. The example above illustrates only one of many possible configurations.
There are several methods for providing coherent clocking between the various system modules (DSPIO,
WS, and WD). It is important to note that any one of these modules can provide the "master" clock for the
system. It is equally important to note that once the master clock source has been determined, the user is
responsible for connecting the master clock to each "slaved" module. This connection is differential ECL
for the WD and WS inputs and outputs. The connection is differential LVDS for the DSPIO module. The
hardware connections are made on the Fathercard. Note that it is important to run the module DSP clocks
(TICLK) as fast as possible to insure fastest DSP processing times. The TI internal processor clock can run
as fast as 30MHz (TICLK up to 60Mhz).
An example best illustrates the syntax flow required to insure proper clock coherence and setup.
Clocking Example
For this example assume the following:
1. The WS internal clock is used as the master clock for both the WS and the WD.
2. The system DISCLK (12.5MHz) will be used as the master reference clock.
3. There is a hardwired connection between the WS output clock and the WD input clock on the
Fathercard.
double temp[SIDES];
..
..
WD0->clock(DISCLK, REFCK0); // select 12.5mhz clock as reference to PLL;
WS0->clock(PLLMCLK0, TICLK); // select output of PLL as WS DSP processor clock;
WS0->clock(PLLMCLK0, XCLKOUT); // select output of PLL as external clock out ( to WD)
10-47
M2 Test System Programming and Reference Manual
Here's how the DSP system is set based on the above syntax:
WS XCLKOUT = 46,078,431.3Hz
WD XCLKIN = 46,078,431.3Hz
For this example the WS is sending output at 10 times the rate that the WD is sampling.
10-48
AC Instruments
10-49
M2 Test System Programming and Reference Manual
10-50
AC Instruments
In the past Waveform Generator instruments have typically been represented by a clock source,
controlling logic, waveform memory, and D/A converters. The result was the ability to source a stored
arbitrary waveform from memory. If the device required different test frequencies (Ft), the test engineer
was required to recalculate the correct signal and load the digital representation of this signal into a
different memory block. The more tones required, the larger the memory requirements and housekeeping
task became.
The KVD Waveform Source approaches single-tone sinewave generation differently. With the addition of
an on-board DSP processor, a single stored sinewave can be used to generate signals of varying
amplitude and frequency. This approach is called Direct Digital Synthesis (DDS). With this technique, not
only will the waveform amplitude be corrected at run time, but the frequency can be modified as well.
Memory requirements and housekeeping tasks are greatly reduced. The next several pages illustrate how
DDS works with the Waveform Source.
10-51
M2 Test System Programming and Reference Manual
10-52
AC Instruments
10-53
M2 Test System Programming and Reference Manual
DDS Example
As always Ft/Fs=M/N;
if Fs=319.989Ks/S
N=5120
if indexreg=1:
Ft=Fs*1/N = 62.49Hz
if indexreg=2:
Ft=Fs*2/N = 124.99Hz
etc.
Note: DDS only applies to single-tone sinewaves. Multi-tone signals must be stored individually.
PLL Setup
As discussed in previous sections, each DSP Module (WS, WD, DSPIO) contains an on-board PLL clock
circuit that is capable of supplying clocks both internally and externally. Each PLL circuit is basically the
same. The test engineer must provide information to setup the PLL circuit to produce the desired DSP
system clocks. Since there are constraints on the PLL circuit, it may be necessary to use a utility that
assists in the PLL setup. Functions to do this are available in KVD demonstration programs - please
contact your local apps engineer for samples.
10-54
Chapter 11: Non-Instrument Software
Command Summary
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.
class TLOG : public TKVDNonResource;
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.
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;
11-1
M2 Test System Programming and Reference Manual
LOG >ActiveWaferTesting
Read only property.
__property bool ActiveWaferTesting;
Description:
LOG >ApplicationName
Read only property.
__property AnsiString ApplicationName;
Description:
LOG >BadDieCount
Read only property.
__property unsigned long BadDieCount;
Description:
Returns the current total number of failed devices for this test run.
LOG >BinFileName
Read only property.
__property AnsiString BinFileName;
Description:
LOG >Comment
Read/Write property.
__property AnsiString Comment;
Description:
Sets or Returns the Comment field that appears in the various data files.
LOG >ComputerName
Read only property.
__property AnsiString ComputerName;
Description:
11-2
Non-Instrument Software Command Summary
LOG >DatalogFileName
Read/Write property.
__property AnsiString DatalogFileName;
Description:
LOG >DataPath
Read/Write property.
__property AnsiString DataPath;
Description:
Sets or Returns the file path used for all data files.
LOG >Default_LOT_DataFileName
Read/Write property.
__property AnsiString Default_LOT_DataFileName;
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.
__property AnsiString Default_SUBLOT_DataFileName;
Description:
Sets or Returns the BASE name applied to all sublot data files (HIST, TDA, SUM, and LOG).
LOG >DUTSN
Read/Write property.
__property int DUTSN;
Description:
Sets or Returns the current serial number for the Device Under Test.
LOG >EnablePrintDatalogFile
Read/Write property.
__property bool EnablePrintDatalogFile;
Description:
Enables (true) and disables (false) the automatic printing of DatalogFile files.
11-3
M2 Test System Programming and Reference Manual
Example:
//this example enables automatic printing of DatalogFile files
LOG->DatalogFile=true;
LOG >EnablePrintHistogramFile
Read/Write property.
__property bool EnablePrintHistogramFile;
Description:
Enables (true) and disables (false) the automatic printing of Histogram files.
Example:
//this example enables automatic printing of Histogram files
LOG->EnablePrintHistogramFiles=true;
LOG >EnablePrintSummaryFile
Read/Write property.
__property bool EnablePrintSummaryFile;
Description:
Enables (true) and disables (false) the automatic printing of Summary files.
Example:
//this example enables automatic printing of Summary files
LOG->EnablePrintSummaryFile=true;
LOG >EnablePrintTDAFile
Read/Write property.
__property bool EnablePrintTDAFile;
Description:
Enables (true) and disables (false) the automatic printing of TDA files.
Example:
//this example enables automatic printing of TDA files
LOG->EnablePrintTDAFiles=true;
LOG >FileDatalogAll
Read/Wite property.
__property bool FileDatalogAll;
Description:
11-4
Non-Instrument Software Command Summary
LOG >FileDatalogFails
Read/Wite property.
__property bool FileDatalogFails;
Description:
LOG >FileDatalogOff
Read/Wite property.
__property bool FileDatalogOff;
Description:
LOG >FileSampleNum
Read only property.
__property unsigned FileSampleNum;
Description:
When this number is equal to the File Sample Size, a datalog is generated.
LOG >FileSampleSize
Read/Wite property.
__property unsigned FileSampleSize;
Description:
Use this field to set the sample size rate for device data being logged to the file.
LOG >FirstTestNum
Read only property.
__property unsigned FirstTestNum;
Description:
LOG >FixtureID
Read/Write property.
__property AnsiString FixtureID;
Description:
Sets or Returns the FixtureID that appears in the various data files.
11-5
M2 Test System Programming and Reference Manual
LOG >GoodDieCount
Read only property.
__property unsigned long GoodDieCount;
Description:
Returns the current total number of good devices for this test run.
LOG >HandTestModeActive
Read only property.
__property bool HandTestModeActive;
Description:
Returns true if the operator has activated the hand test form.
LOG >Job
Read/Write property.
__property AnsiString Job;
Description:
Sets or Returns the Job Name that appears in the various data files.
LOG >LastDatalogString
Read only property.
__property AnsiString LastDatalogString;
Description:
If in NoDataCollection mode, returns the last datalog string produced by the KVD->Test command.
LOG >LastTestNum
Read only property.
__property unsigned LastTestNum;
Description:
LOG >LibraryVersion
Read only property.
__property AnsiString LibraryVersion;
Description:
11-6
Non-Instrument Software Command Summary
LOG >LotNumber
Read/Write property.
__property AnsiString LotNumber;
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.
__property bool NoDataCollection;
Description:
Allows the user to perform tests, but does no record any of the data collected.
LOG >OperatorID
Read/Write property.
__property AnsiString OperatorID;
Description:
Sets or Returns the OperatorID that appears in the various data files.
LOG >ParameterFileName
Read only property.
__property AnsiString ParameterFileName;
Description:
LOG >RuntimeLevel
Read only property.
__property short RuntimeLevel;
Description:
Returns flags that indicate the run time level of the program.
11-7
M2 Test System Programming and Reference Manual
LOG >SavedDatalogFileName
Read only property.
__property AnsiString SavedDatalogFileName;
Description:
LOG >ScreenDatalogAll
Read/Wite property.
__property bool ScreenDatalogAll;
Description:
LOG >ScreenDatalogFails
Read/Wite property.
__property bool ScreenDatalogFails;
Description:
LOG >ScreenDatalogOff
Read/Wite property.
__property bool ScreenDatalogOff;
Description:
LOG >ScreenSampleNum
Read only property.
__property unsigned ScreenSampleNum;
Description:
When this number is equal to the Screen Sample Size, a datalog is generated.
LOG >ScreenSampleSize
Read/Wite property.
__property unsigned ScreenSampleSize;
Description:
Use this field to set the sample size rate for device data being logged to the screen.
11-8
Non-Instrument Software Command Summary
LOG >StartedByKVDLauncher
Indicates true when the application was started by a KVD Launcher app.
__property bool StartedByKVDLauncher;
LOG >StartLotTime
Read only property.
__property TDateTime StartLotTime;
Description:
Returns the date and time that the lot was started.
LOG >StopFF
Read/Write property.
__property bool StopFF;
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.
__property AnsiString TesterID;
Description:
Sets or Returns the TesterID (ComputerName) that appears in the various data files.
LOG >UploadDataPath
Read/Write property.
__property AnsiString UploadDataPath;
Description:
Sets or Returns the path that all data files will be uploaded to.
LOG >UsingCustomDataDLL
Read only property.
__property bool UsingCustomDataDLL;
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.
11-9
M2 Test System Programming and Reference Manual
LOG >UsingDeviceHandler
Read only property.
__property bool UsingDeviceHandler;
Description:
Flag that indicates whether a device handler/prober DLL is being used or not.
LOG >WaferDescFileName
Read/Write property.
__property AnsiString WaferDescFileName;
Description:
LOG >WafermapColorsFileName
Read only property.
__property AnsiString WafermapColorsFileName;
Description:
LOG >WafermapDescFileName
Read only property.
__property AnsiString WafermapDescFileName;
Description:
LOG >WaferMapX
Read/Write property.
__property int WaferMapX;
Description:
For Wafer testing only. Returns the last wafer X position reported by the prober.
LOG >WaferMapY
Read only property.
__property int WaferMapY;
Description:
For Wafer testing only. Returns the last wafer Y position reported by the prober.
11-10
Non-Instrument Software Command Summary
LOG >WaferNumber
Read/Write property.
__property AnsiString WaferNumber;
Description:
Sets or Returns the Lot Number path used for all data files.
Example:
//Set the lot number
LOG->WaferNumber="12";
//now read it back into a variable
AnsiString wafnum=LOG->WaferNumber;
LOG >WaferTestFlow
Indicates true when the application is testing wafers, false for package test see options in Customer
Preferences Tool.
__property bool WaferTestFlow;
LOG >AddLimitUnit
Adds a new unit to the units array.
short AddLimitUnit(AnsiString name, double value);
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.
11-11
M2 Test System Programming and Reference Manual
LOG >AddUserComment
Allows the user to add comments that will show up on the data file headers
void AddUserComment(AnsiString name, AnsiString desc);
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.
int CurrentBin(short sitenum = 0);
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.
11-12
Non-Instrument Software Command Summary
LOG >DatalogComment
Allows user to send strings to datalog reports.
void DatalogComment(AnsiString s);
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
LOG >DownGrade
Used to downgrade a device from its current PASSING bin to the next PASSING bin. Description:
short DownGrade(short sitenum);
Parameters:
short sitenum
LOG >ExecuteProgram
Executes an external program specified by the cmd parameter.
HANDLE ExecuteProgram(HWND hwnd, String cmd);
Parameters:
HWND hwnd
11-13
M2 Test System Programming and Reference Manual
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.
LIMITS_STRUCT GetLimitsEntry(unsigned tn);
LOG >GetPassBinSite
Used to retrieve the passbin for one site.
short GetPassBinSite(short sitenum = 0);
Parameters:
short sitenum = 0
LOG >IsFailing
Used to determine if the DUT is currently failing.
bool IsFailing(short sitenum = 0);
Parameters:
short sitenum = 0
Returns:
LOG >IsPassing
Used to determine if the DUT is currently passing.
bool IsPassing(short sitenum = 0);
Parameters:
short sitenum = 0
11-14
Non-Instrument Software Command Summary
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.
bool IsValidBin(short sitenum = 0);
Parameters:
short sitenum = 0
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.
short load_bin_data(AnsiString filename);
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.
short load_extlimits_data(AnsiString filename);
Parameters:
AnsiString filename
11-15
M2 Test System Programming and Reference Manual
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.
short load_limits_data(AnsiString filename);
Parameters:
AnsiString filename
LOG >load_waferdesc_file
Loads a wafer description file.
short load_waferdesc_file(AnsiString filename);
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.
short load_wafermap_colors(AnsiString filename);
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".
11-16
Non-Instrument Software Command Summary
LOG >LoadCustomerPrefFile
Loads a previously save Customer Preferences Config file.
short LoadCustomerPrefFile(AnsiString filename);
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.
void TestInProgress(AnsiString message = NULL);
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
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:
//this line generates the datalog to a file
LOG->UserGenDatalog(TOFILE,"c:\MyDatalog.txt");
//this line generates the datalog and send directly to the printer
LOG->UserGenDatalog(TOPRINTER);
11-17
M2 Test System Programming and Reference Manual
LOG >UserGenHistogram
User function to generate histograms from program control.
void UserGenHistogram(REPORT_DESTINATION dest, AnsiString filename = 0);
Parameters:
REPORT_DESTINATION dest
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:
//this line generates the histogram to a file
LOG->UserGenHistogram(TOFILE,"c:\MyHistogram.txt");
//this line generates the histogram and send directly to the printer
LOG->UserGenHistogram(TOPRINTER);
LOG >UserGenSummary
User function to generate summaries from program control.
void UserGenSummary(REPORT_DESTINATION dest, AnsiString filename = 0);
Parameters:
REPORT_DESTINATION dest
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:
//this line generates the summary to a file
LOG->UserGenSummary(TOFILE,"c:\MySummary.txt");
//this line generates the summary and send directly to the printer
LOG->UserGenSummary(TOPRINTER);
11-18
Non-Instrument Software Command Summary
LOG >UserGenTDA
User function to generate TDA report from program control.
void UserGenTDA(REPORT_DESTINATION dest, AnsiString filename = 0);
Parameters:
REPORT_DESTINATION dest
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:
//this line generates the TDA report to a file
LOG->UserGenTDA(TOFILE,"c:\MyTDA.txt");
//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();
11-19
M2 Test System Programming and Reference Manual
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.
short LoadConfig(AnsiString filename);
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 his configuration is loaded by
loading it with this command.
KVD >ReadLauncherString
Returns strings sent in through the use of KVD Launcher.
AnsiString ReadLauncherString(AnsiString param);
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.
AnsiString ReadParameterString(AnsiString param);
Returns:
11-20
Non-Instrument Software Command Summary
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).
KVD >SelectView
Command that allows the user to select which page is the viewable page on the main form.
void SelectView(int pagenum);
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. 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.
11-21
M2 Test System Programming and Reference Manual
KVD >tnum
Sets the current test number.
short tnum(unsigned 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.
void UserComment(AnsiString s);
Objects: $RELAY$
Description: an object
Arguments: <address>
<bit>
11-22
Non-Instrument Software Command Summary
Command: $RELAY$->close();
Objects: $RELAY$
Description: an object
Arguments: None
Example: K1->close();
Command: $RELAY$->open();
Objects: $RELAY$
Description: an object
Arguments: None
Example: K1->open;
TConnection Constructor
Used to create new Connections.
Objects: $CONNECTION$
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).
11-23
M2 Test System Programming and Reference Manual
Things to Remember: At least one Relay or address/bit pair must be used in the constructor, and
not more than eight Relays or address/bit pairs can be used for one
TConnection object.
Command: $CONNECTION$->con();
Objects: $CONNECTION$
Description: an object
Arguments: None
Example: DS1_TO_DUTPIN2->con();
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.
11-24
Non-Instrument Software Command Summary
Command: $CONNECTION$->discon();
Objects: $CONNECTION$
Description: an object
Arguments: None
Example: DS1_TO_DUTPIN2->discon();
Alternative Forms: discon_side( <side>) Open all the relays in the list, on one side only.
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.
11-25
M2 Test System Programming and Reference Manual
11-26
Appendix A: Detailed Specifications
The latest specifications will be provided here in hard copies of the manual. For ease of updating, they are
not part of this document.
A-1
M2 Test System Programming and Reference Manual
A-2
Appendix B: Release Notes and Updates
Please insert any new Release Notes sent you in this section of the manual for reference.
B-1
M2 Test System Programming and Reference Manual
B-2
Appendix C: Custom Father Cards
Please insert Father Card documentation in this section of the manual for reference.
C-1
M2 Test System Programming and Reference Manual
C-2
Index
A DDCH[i][1] >dstrb 9-45
AC power 4-1 DDCH[i][1] >enable 9-45
Administrative commands 8-21 DDCH[i][1] >getcomplev 9-45
DDCH[i][1] >getformat 9-45
B DDCH[i][1] >gethighlev 9-46
Batteries DDCH[i][1] >getkeepalive 9-46
Caution 2-2
DDCH[i][1] >getlowlev 9-46
Bin Description Editor 6-37
DDCH[i][1] >getname 9-46
Bin Setup Tool 6-40
DDCH[i][1] >getstarttime 9-46
BitCalc 10-54
DDCH[i][1] >getstate 9-46
BootTester 6-67
DDCH[i][1] >getstoptime 9-46
C DDCH[i][1] >getstrobe 9-46
Calibration activities 5-33 DDCH[i][1] >setname 9-47
Calibration files 5-28 DDDRV_TO_DDCH[NUMDDCHANNELS] 6-68
Cautions 1-3, 2-1 DDS 10-51
Chemicals 2-4 Delay Table 6-61
Clamps 8-5, 8-21 Devices 1-6
Clocking 9-29 Dflags 9-33
Comparator Strobe Time 9-38 Diagnostics 5-39
Connections and Relays 6-50 DIG0 >dcap_drv_en 9-39
Connections Table Tool 6-52 DIG0 >dcap_read 9-39
CSV Format 7-20 DIG0 >dcap_setup 9-39
Current ranges 8-20 DIG0 >dcap_wait 9-39
Custom data DLLs 7-20 DIG0 >dclr 9-39
Customer Preferences Tool 7-1 DIG0 >dconfig 9-39
DIG0 >dd_xclkinfreq 9-39
D DIG0 >dd_xclkoutfreq 9-39
Datalog Control Page 7-5 DIG0 >ddclock 9-39
Datalogs 7-38, 7-54 DIG0 >ddpllbits 9-40
DB25 Handler Interface 7-16 DIG0 >ddrv_load 9-40
DC power supply adjustment limits 5-4 DIG0 >ddrv_load_side 9-40
Dclr 9-32 DIG0 >ddrv_load_side_mask 9-40
DDBUSA_TO_DDCH[NUMDDCHANNELS] 6- DIG0 >ddrv_setup 9-40
68 DIG0 >dfail 9-40
DDCH[i][1] >dcomp 9-43
DIG0 >dfailaddr 9-40
DDCH[i][1] >dfmt 9-44
DIG0 >dflags 9-40
DDCH[i][1] >dfmt_long 9-44
DIG0 >dmclkconfig 9-40
DDCH[i][1] >disable 9-44
DIG0 >dreadfail 9-41
DDCH[i][1] >dka 9-44
DIG0 >dstatus 9-41
DDCH[i][1] >dlevel 9-45
DIG0 >dstop 9-41
DDCH[i][1] >dmatch 9-45
Index-1
M2 Test System Programming and Reference Manual
Index-2
Index
Index-3
M2 Test System Programming and Reference Manual
Index-4
Index
Index-5
M2 Test System Programming and Reference Manual
Index-6
Index
Index-7