Documente Academic
Documente Profesional
Documente Cultură
Legal Notice
No part of this publication may be reproduced or transmitted in any form, or transcribed, stored in a retrieval system, or translated into any language or computer language, in any form or by any meanselectronic, mechanical, magnetic, optical, chemical, manual or otherwise, or distributed to third partieswithout the prior written permission of LTXCredence Corporation. LTX-Credence Corporation makes no representations or warranties with respect to the contents hereof and specifically disclaims any implied warranties of merchantability or fitness for any particular purpose. Furthermore, LTX-Credence reserves the right to revise this publication and to make changes from time to time in the content hereof without obligation of LTX-Credence to notify any person of such revision or changes.
Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Completion Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Related Courses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Course Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Online Pre-Course . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Day 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Day 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Day 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Day 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Day 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Document Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Reader Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Safety Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Caution Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Warning Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Danger Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 - MUX Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
MUX Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description and Key Highlights . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . User Bus Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programming Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . wait.delay_10_us . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Software Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 28 30 30 30 30
Contents
3 - DVI Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
DVI Instrument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description and Key Highlights . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Theory of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Current Direction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Paralleling (Ganging) Two DVIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DVI Guard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DVI-2000 Differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DVI-2000 Current Sourcing Capability . . . . . . . . . . . . . . . . . . . . . . . . . . . . Software Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 35 36 39 41 43 46 46 49
PN: 071-0999-00
Contents
Contents
ovi_Fall Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dvi_Time Lab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dvi_Time Worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dvi_Time Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dut_PropDelay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dut_PropDelay Worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dut_PropDelay Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dut_TrTf Lab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dut_TrTf Worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dut_TrTf Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
206 208 209 210 212 213 214 218 219 220
12 - visualISE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
visualISE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
PN: 071-0999-00
Contents
acs_Amplitude Worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . acs_Amplitude Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . acs_Frequency Lab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . acs_Frequency Worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . acs_Frequency Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . acs_TrnglWv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . acs_TrnglWv Worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . acs_TrnglWv Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . acs_LoadFromFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . acs_LoadFromFile Worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . acs_LoadFromFile Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
261 262 264 265 266 268 269 270 272 273 274
Contents
PN: 071-0999-00
Preface
This manual, along with the visualATE Programming Applications class, is designed to provide the student with the skills required to develop and debug various lab exercises and device tests using the MUX, OVI, DVI, ACS, DDD, PV3, and TMU instruments, along with the Microsoft Visual Studio code debugger and visualISE instrument hardware debugger. Upon completion of the course, students should be able to develop and debug a device test program based on the mentioned instruments. This course is intended for test engineers and product engineers that need to develop and maintain a device test program using the ASL test system.
Prerequisites
Before attending this course, students must have: General knowledge of automated test General knowledge of C, C++, or other high-level programming language Six months test experience
Completion Requirements
Certificates are awarded based upon: Completion of all laboratory assignments Class participation
Related Courses
Other related courses include: visualATE Multisite Programming Online Course ASL 3000 MDI Applications ASL 3000 AWG/AVD Mixed Signal Applications ASL 3000RF and Baseband Applications ASL 1000/3000 Maintenance
Preface
Course Schedule
Online Pre-Course
Hardware and testhead overview visualATE software overview Operator environment Engineering environment
Day 1
AM visualATE directory structure Instrument programming syntax and conventions MUX instrument PM Lab preliminaries System interconnects Simplified start-to-finish steps visualATE How To r1_val r2_val measbusi dvi_DiffMeas LED_test Read the OVI - Octal Voltage/Current Source and TMU - Time Measurement Unit chapters in visualATE 6.1 Programming Guide Hardware overview Software overview Hardware overview Software overview
DVI instrument
Labs
Homework
10
PN: 071-0999-00
Course Schedule
Read the Create and Engineering chapters in visualATE 6.1 Users Guide Read "Datalog Functions" on page 159 Review "ovi_Fall Lab" on page 204
Day 2
AM Datalog statements Simple datalog function call Hardware overview Software overview Hardware overview Software overview OVI instrument
TMU instrument
Visual Studio code debugger PM Labs dut_Continuity dut_VolVoh dut_VilVih ovi_Rise ovi_Fall dvi_Time dut_PropDelay dut_TrTf Read the Create and Engineering chapters in visualATE 6.1 User Guide Read the visualISE chapter in the visualATE 6.1 User Guide Read the PV3 - Pulsed Voltage/Current chapter in the visualATE 6.1 Programming Guide Review "pv3_PulsedI Lab" on page 242
Homework
11
Preface
Day 3
AM PV3 Hardware overview Software overview
visualISE hardware debugger PM Labs pv3_PulsedCurrent pv3_PulsedCurrent and DiffMeas Read the ACS - AC Source chapter in visualATE 6.1 Programming Guide Review "acs_Amplitude Lab" on page 260
Homework
Day 4
AM ACS instrument PM Labs acs_Amplitude acs_Frequency acs_TrnglWv acs_LoadFromFile Read the Create and Engineering chapters in visualATE 6.1 User Guide Read the DDD - Digital Driver and Detector chapter in visualATE 6.1 Programming Guide Review "dut_Icc Lab" on page 292 Hardware overview Software overview
Homework
12
PN: 071-0999-00
Course Schedule
Day 5
AM DDD instrument PM Labs dut_Icc dut_Functional acs_ExtClk Hardware overview Software overview
13
Preface
Document Conventions
Reader Notes
Notes to the reader are identified by the word Note in bold font. Reader notes either precede or follow the information to which they apply, depending on context. NOTE: The bolded Note draws attention to issues other than personnel safety or equipment protection.
Safety Statements
Safety statements in this manual are indicated by a Caution, Warning, or Danger note to alert users about specific types of hazards.
Caution Statement
Caution The caution statement provides information essential to avoiding loss of data, program failure, or equipment damage. This statement is not used for a personal injury hazard. The hazard can only result in property damage or loss. Hazard is not immediate. Safety is contingent upon following the message instructions.
Warning Statement
Warning The warning statement provides information essential to the safety of the operator. Hazard is not immediately accessible. One level of protection is present between a person and the hazard. Hazard can result in personal injury.
14
PN: 071-0999-00
Course Schedule
Danger Statement
Danger The danger statement indicates that an imminent hazard exists. Hazard is immediately accessible. Hazard will result in personal injury. Safety is dependent upon awareness and skill. No safeguards are provided.
15
Preface
Notes
16
PN: 071-0999-00
Objectives
After completing this unit, students should be able to: Discuss the symbols and components used in maintaining safety Learn general electrostatic discharge guidelines
In This Module
______ ______ Instructor Presentation Knowledge Check 15 5 Minutes Minutes
Resources
ASL 1000 Documentation Set ASL 3000 Documentation Set visualATE 6.1 Programming Guide visualATE 6.1 Users Guide
17
These requirements apply to instructions, operators, maintenance, and service for semiconductor test systems and associated apparatus manufactured by LTXCredence Corporation.
18
PN: 071-0999-00
This equipment operates from a power source that applies dangerous voltage between the supply conductors, and between any supply conductor and ground. If the ground connection is interrupted, all accessible conductive parts could render an electric shock. If a power cord is not provided with the product, refer to qualified service personnel. To avoid personal injury, do not remove product covers or panels. Do not operate the product without the covers and panels installed. Refer installation to qualified service personnel. To avoid explosion, do not operate this equipment in an explosive atmosphere unless it has been specifically certified for such operation.
19
Power source
20
PN: 071-0999-00
Static Electricity
Many electronic devices used in test-station circuitry can be damaged by static discharge. Test-station accessories include a static-discharge wrist strap, which the operator or service technician should always wear when working with static-sensitive devices such as circuit boards. Although the wrist strap discharges static buildup, it presents a high impedance to ground to limit the current should the wearer come in contact with a high voltage source. Therefore, despite wearing the strap, it is possible to generate a static charge through improper procedures and retain it long enough to damage the equipment or compromise a device test.
Materials to Avoid
The following materials can damage static-sensitive devices: Polystyrene foam items such as Styrofoam cups and packaging materials Clear plastic bags White or gray packaging foam Clear bubble pack Non-conductive plastic containers such as plastic trays and parts bins Plastic items such as vinyl combs, brushes, and notebooks Transparent tape Clear plastic sheets such as page covers Clear film products such as Kodagraphs Candy wrappers and peanut bags
21
Materials to Use
The following materials can be used with static-sensitive devices: Wood Cotton cloth Pink poly bags Metallized bags Conductive plastics Metal tools Silverstat solder suckers
Fire Protection
Locate fire extinguishers, approved for electrical equipment, within easy reach of the system. If overhead sprinklers are installed in the test area, direct sprinkler heads away from the testhead and power server to minimize water damage in case of fire. For added protection, provide a separate storage area for system documentation, software tapes and disks, and spare parts.
22
PN: 071-0999-00
Fire Protection
Knowledge Check
1. What is ESD?
23
24
PN: 071-0999-00
MUX Instrument
Goal
Understand the MUX instrument and be able to perform simple DC tests.
Objectives
After completing this unit, students should be able to: Describe the MUX instrument hardware Describe the software that supports the MUX instrument
In This Module
______ ______ Instructor Presentation Knowledge Check 1 10 Hour Minutes
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
25
26
MUX_BANK_8_1 MUX_1_BUS9 MUX_8_BUS8
BUS_9 BUS_8
2 - MUX Instrument
MUX_1_1
BANK 1
MUX_8_GND MUX_BANK_1_2 MUX_BANK_7_8 MUX_7_BUS7
BUS_2 BUS_7
MUX_1_2
MUX_1_3
BANK 8
MUX_8_4
MUX_1_4
MUX_2_1
MUX_2_BUS2
BANK 2
MUX_2_GND MUX_BANK_2_3 MUX_3_BUS3
BUS_3 BUS_6
MUX_2_2
BANK 7
MUX_7_4
MUX_2_4
MUX_3_1
BANK 3
MUX_3_2
MUX_3_3
BANK 6
MUX_4_1
BANK 4
MUX_4_GND
MUX_4_2
MUX_4_3
BANK 5
MUX_4_4
PN: 071-0999-00
MUX Instrument
MUX Instrument
This section details the DVI instrument, including: Instrument description Key highlights User Bus Lines Programming Delay Software
27
2 - MUX Instrument
The user accesses the user bus lines through the MUX card. The instruments access the user bus lines through a pre-wired jumper set called WL2 (wire link 2). Not all instruments utilize WL2 and so, not all instruments have access to the user bus lines. The ones that have access are: MUX can access all busses DVI-300 can access busses 2 and 3 DVI-2000 can access busses 2, 3, 4, and 7 DOAL can access busses 9 and 10 TMU has access to bus 8
28
PN: 071-0999-00
MUX Instrument
WL1
P1
P2
WL2
The MUX instrument has no WL2 jumper set, the user bus access is hardwired.
29
2 - MUX Instrument
Programming Delay
Programming the required amount of settling time for the MUX (or any other instrument) can be done using the delay() or wait.delay_10_us() statements.
delay
delay determines the amount of wait time in 1 ms intervals. This statement is
interrupted by Windows background tasks, so the amount of delay is always slightly larger than the requested value. Format: void delay(unsigned short 1ms_intervals); Valid Arguments: 1ms_intervals is an unsigned short number in the range of 1 - 65535. Usage: delay(10); //10ms wait
wait.delay_10_us
wait.delay_10_us determines the amount of wait time in 10 s intervals. This
statement is not interrupted by Windows background tasks. Format: void wait.delay_10_us(unsigned short 10us_intervals); Valid Arguments: 10us_intervals is an unsigned short number in the range of 1 - 65535. Usage: wait.delay_10_us(10); //100us wait
Software Statements
For the software discussion, refer to the MUX - Resource Multiplexer chapter in the visualATE 6.1 Programming Guide.
30
PN: 071-0999-00
MUX Instrument
Knowledge Check
1. What is a MUX card?
31
2 - MUX Instrument
32
PN: 071-0999-00
DVI Instrument
Goal
Understand the DVI instrument and be able to perform simple DC tests.
Objectives
After completing this unit, students should be able to: Describe the DVI instrument hardware Describe the software that supports the DVI instrument
In This Module
______ ______ Instructor Presentation Knowledge Check 1 10 Hour Minutes
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
33
34
CH0 Current DAC 12 BIT COMPARATOR TP INTEGRATOR Power Buffer Current Ranging CH0 Voltage DAC 12 BIT COMPARATOR INTEGRATOR COMPENSATION NETWORK
CHANNEL 0
DATA BUS
3 - DVI Instrument
*
FORCE CH0
DATA BUS
SLOW_MODE
SENSE CH0
VMEAS_CH0
DATA BUS
AGS IMEAS_CH1
*
Sense Buffer Voltage Range Switching
SENSE CH1 TP
SLOW_MODE
DIFFERENTIAL AMPLIFIER
INTEGRATOR
DATA BUS
*
FORCE CH1 TP
INTEGRATOR
DATA BUS
PN: 071-0999-00
CHANNEL 1
DVI Instrument
DVI Instrument
This section details the DVI instrument, including: Instrument description Key highlights Theory of operation Software
Theory of Operation
The DVI has two basic rules of operation: It wants to be a voltage source Programmed current value is never exceeded
35
3 - DVI Instrument
Modes
Figure 5. Rules of OperationCurrent Mode
Voltmeter
S F
1.0 +
1 mA
1K
The DVI attempts to reach the programmed voltage (Rule 1), but it stops increasing voltage when programmed current is achieved (Rule 2). DVI is in Current mode. Figure 6. Rules of OperationVoltage Mode
Voltmeter
S F
2.0V +
200 A
10K
The DVI reaches programmed voltage (Rule 1), if programmed current is not achieved. DVI is in Voltage mode. NOTE: The DVI has no force or clamp commands, so the mode of operation is dependant upon the values programmed and load.
36
PN: 071-0999-00
DVI Instrument
S F
1K
+20 V
Voltmeter
??? + In Figure 7, the other side of the resistor has been connected to +20 V. What is the voltage at the point shown? Applying Rule 2 determines that a maximum of 1 mA can flow through the DVI channel. Ohms law calculates to a 1 V drop across the resistor. Kirchoff's voltage law says that the sum of the voltage drops around any closed loop in the network must equal 0. This means that with 20 V applied and 1 V dropped across the 1 K resistor, the DVI must be dropping the remaining 19 V. In order for the voltage at the shown point to reach 2 V, enough current to create an 18 V drop across the 1 K resistor must be allowed. The current value, in this case, would be 18 mA.
37
3 - DVI Instrument
S F
1K
-5.0 V
Voltmeter
??? + In Figure 8, the other side of the resistor has been connected to -5 V. What is the voltage at the point shown? Rule 2 again determines that a maximum of 1 mA can flow through the DVI channel with the expected -1 V drop across the resistor. Kirchoff's voltage law says the DVI must be dropping the remaining -4 V. In order for the voltage at the shown point to reach 2 V, enough current to create a 7 V drop across the 1 K resistor must be allowed. Why 7 V? Because the difference between -5 and +2 is 7. The current value, in this case, would be 7 mA. Figure 9 shows a real world example on how to use the DVI to power a DUT. Figure 9. DVI ModeReal World Example
DUT Specifications: Vcc = 5.0 Icc = 13 mA Typical 23 mA Maximum Vcc DUT Gnd DVI S DVI F
What would be the DVI voltage and current values to satisfy the example in Figure 9? The first question to ask is, what is the required mode of operation voltage or current? The DUT specification states a fixed Vcc, which then requires the DVI to be in Voltage mode. The programmed voltage value would be 5.0.
38
PN: 071-0999-00
DVI Instrument
The next question is, what would be the programmed current value? The specification states that the DUT Icc can range from a typical value of 13 mA to a maximum value of 23 mA. In order for the DVI to provide this range of current, it must be programmed to some value greater than 23 mA. Setting the current value to 23 mA allows a defective DUT to pass an Icc measurement since a measurement of 23 mA is valid. Providing a larger amount of current than 23 mA allows the DUT to exceed the maximum current listed for Icc and thus fail the measurement. General rule for programming current in this case is DUT specification + %20. This means a value of 23 mA + %20 (4.6 mA) or 27.6 mA would be programmed. Rounding up to 30 mA is acceptable.
Current Direction
In the previous examples of DVI operation, there was no mention of current direction. The following examples illustrate the subject. Current direction in these examples is defined as: Sourcing current or positive current is current going out of the DVI Sinking current or negative current is current going into the DVI
S F
1K
In Figure 10, the A-side of the resistor is at a more positive potential than the B-side. This causes current to flow in the positive direction, going out of the DVI through the resistor to ground.
39
3 - DVI Instrument
S F
A 1K B
+20 V
?
In Figure 11, the B-side of the resistor is more positive than the A-side so current flows in the negative direction, into the DVI (and eventually to ground). All of the previous DVI examples have been using an unsigned or positive programmed current value. The example in Figure 12 shows the use and effects of a negative value. Figure 12. Current DirectionNegative Value Example
S F
1K
The programmed current value is negative in the Figure 12 example. What is the direction of current? The answer is positive. Current direction is not based on the sign of the programmed current value, it is based on the difference in voltage potential between the A-side and B-side (or, the DVI-side and ground-side) of the load. The programmed value is the absolute amount of current that the DVI allows. Does the sign of the current value make a difference? Yes. It is used to select which current calibration factors are applied. The DVI is calibrated through all modes and quadrants of operation including positive and negative current. Ideally, the correction factors for both current directions would be equal. But differences exist due to inherit tolerances of components used in the DVI circuit. The sign used on the programmed current value determines which set of calibration factors (positive or negative) that are applied. Programming a negative current value, when it is known that the direction of current is negative, facilitates the best possible operation and accuracy of the DVI.
40
PN: 071-0999-00
DVI Instrument
The combined current available to the DUT would be 3.9 A with the majority of current supplied by CH1.
41
42
CH0 F CONN_FORCE0
DVI 300
*
1.1k CONN_SENSE0
CH0 FORCE
3 - DVI Instrument
CH0 S
* CH0 GUARD
CH0 SENSE
To/From DUT
10k
DO NOT GROUND THE GUARD ON A DVI 300 because it is always connected and driven.
- DVI 300, controlled by: dvi_x->close/open_relay(CONN_SENSE0/CONN_SENSE1) - DVI 2000, controlled by: dvi_x->close/open_relay(GUARD0/GUARD1)
DVI 2000
CH0 F CONN_FORCE0
CH0 S
CH0 FORCE
1.1k
CH0 SENSE
To/From DUT
CONN_SENSE0
* * CH0 MEAS
CONN_MEAS0
PN: 071-0999-00
10k
CH0 GUARD
GUARD_0
DVI Instrument
DVI Guard
The Guard circuit allows the outside foil (or braid) of a multi-conductor cable to be driven with the same potential that exists on the Sense line, which can reduce the distributed capacitance between the outside foil (or braid) and interior wires. There is also some protection from outside interference. This is different than grounding the outside foil (or braid), which provides protection from outside interference only with no reduction in distributed capacitance. See Figure 13 on page 42.
43
44
TP5 CH0 F CONN_FORCE0
CHANNEL 0
* CH0 FORCE
1.1k CONN_SENSE0
CH0 S
3 - DVI Instrument
CH0 MO D
* *
DVI_EXT_DRV1
TP14
* CH0 SENSE
DVI_EXT_DRV2
10k
CH0 GUARD
BUS_FORCE0
BUS_SENSE0
MO D_CHAN0
CHANNEL_SHO RT
MO D_CHAN1
BUS_SENSE1
*
TP15
BUS_FORCE1
VMEAS_BUS
*
CONN_BUS_MEAS
** ** CH1 GUARD
IMEAS_CH0 VMEAS_CH0
16 BIT ADC
10k
**
VMEAS_CH1
** CH1 SENSE
1.1k IMEAS_CH1 DIFF_MEAS
CONN_SENSE1
** **
*
TP7
CH1 S
CH1 FORCE
* CONTROLLED BY open/close_relay(); ** CONTROLLED BY set_meas_mode();
PN: 071-0999-00
CHANNEL 1
CHANNEL 0
TP2 CH0 F CONN_FORCE0
CH0 S
* CH0 FORCE
* *
DVI_EXT_DRV1
TP4 CONN_SENSE0
CH0 SENSE * *
CONN_MEAS0
DVI_EXT_DRV2
CH0 MEAS
*
BUS_MEAS0
* CH0 GUARD * * * * * * *
GUARD_1
BUS_SENSE0
*
MOD_CHAN1
MOD_CHAN0
CHANNEL_SHORT
BUS_SENSE1
BUS_FORCE1 10k
CH1 GUARD
VMEAS_BUS
TP21
(TO VMEAS_CH1)
*
BUS_MEAS1
*
CONN_BUS_MEAS
** CH1 MEAS
IMEAS_CH0 VMEAS_CH0 VMEAS_CH1
*
CONN_SENSE1
CONN_MEAS1
** ** **
CH1 S
CH1 FORCE
TEMP
DVI Instrument
CHANNEL 1
45
3 - DVI Instrument
DVI-2000 Differences
The DVI-2000 force and sense lines are connected together by a 1.1 k resistor before CONN_FORCE, CONN_SENCE, and CONN_MEAS. The Sense and Measure paths have been separated with each path having its own connect relays. On a DVI-200 or DVI-300, the voltage measure ability was fed by the channel sense input where the channel sense connect relay was individually controlled. On the DVI2000, what was known as the sense connect relay is now controlled by the same bit as the related channel force connect relay. There are now two paths to the voltage measure function: 1. A path connected through a relay called CONN_SENSEx (where x is the channel number) 2. A path connected through a relay called CONN_MEASEx (where x is the channel number). Also, the DVI-2000 now has individual control over the guard connect relay. For more information, see Figure 15 on page 45.
46
PN: 071-0999-00
DVI Instrument
This calculates to 20 W, which does not exceed the 25 W cooling capability of the instrument. Figure 16 represents the maximum continuous current that the board is capable of driving while staying below the maximum power of 25 W. Figure 16. Continuous Current Capability
4.50 4.00 3.50 3.00
I (A)
NOTE: For currents exceeding 2 A, the data represents the combined current for two channels. Using the previous example of 10 V at 0.5 A, the graph (Figure 16) shows that the DVI2000 is capable of delivering this amount of current continuously. Consider the example of driving the same 10 V at 1.25 A. The power consumption of the DVI-2000 would be: Power = (50 V - 10 V) * (1.25 A) This calculates to 50 W, which exceeds the 25 W thermal budget. The implication is that the DVI-2000 must be cycled in such a way that it has time to cool. Since the delivered power exceeds the thermal budge by a factor of 2x, the DVI-2000 must be operated with no more than a 50% duty cycle (25 W/50 W = 50%). For example, if the user wants to deliver 1.25 A at 10 V to the device for 100 ms, the DVI-2000 must then be turned off for 100 msa duty cycle of 50%. If the dissipated power of the DVI-2000 were 100 W, then the duty cycle would be 25% (25 W/100 W = 25%), and so on. Figure 17 takes the original power equation and plots the duty cycle versus board power dissipation.
47
3 - DVI Instrument
100.00
80.00
60.00
40.00
20.00
0.00 0.00 25.00 50.00 75.00 100.00 125.00 150.00 175.00 200.00
A duty cycle of 100% represents continuous current. A power consumption greater than 100 W represents both channels of the DVI-2000 combined to deliver 4 A. The worst-case scenario for per-channel power is driving 2 A into a short circuit, or P = (50 V - 0 V) * 2 A = 100 W. Rearranging this data to represent a more device-centric model, Figure 18 shows the duty cycle in terms of current delivered over multiple voltages.
48
PN: 071-0999-00
DVI Instrument
Figure 18. DVI-2000 Duty Cycle Calculated from the Output Voltage and Current
120.00 100.00 Duty Cycle (%) 80.00 60.00 40.00 20.00 0.00
20 60 00 40 80 20 60 00 40 0. 0. 1. 1. 1. 2. 2. 3. 3. 3. 80
1.8 V 3.3 V 5V 10 V 15 V 24 V 36 V 45 V
I (A)
NOTE: Any current that exceeds 2 A represents both channels of the DVI-2000 combined in order to deliver up to 4 A to the device.
Software Statements
For the software discussion, refer to the DVI - Dual Voltage/Current Source chapter of the visualATE 6.1 Programming Guide.
49
3 - DVI Instrument
Notes
50
PN: 071-0999-00
DVI Instrument
Knowledge Check
1. What are the two basic operating rules for the DVI instrument?
6. What does the minus sign do when used on the DVI programmed current value?
51
3 - DVI Instrument
52
PN: 071-0999-00
Objectives
After completing this unit, students should be able to perform the initial steps required for test hardware development
In This Module
______ Instructor Presentation 1.5 Hours
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
53
Notes
54
PN: 071-0999-00
Test Development
Before beginning the "MUX and DVI Labs" on page 125, students need to: Understand the system interconnects document Understand the Analog Ground Sense concept
System Interconnects
After designing the loadboard circuit, the loadboard itself must be wired. Wiring the board requires the knowledge of where the instruments in the testhead are located at the user test interface (UTI). The ASL 1000 UTI is shown in Figure 19. Figure 19. ASL 1000 UTI
J2
J6
J4
J1
J5
J3
DUT
Gnd
TMU 6 CHA 1
55
The loadboard circuit shown in Figure 20 requires the use of an OVI in slot 1, a DVI in slot 11, and a TMU in slot 6. The document that explains where these instruments appear at the user test interface is called System Interconnects Document and can be found in the ASL 1000 Interconnects and ASL 3000 Interconnects appendixes in the visualATE 6.1 Programming Guide. The System Interconnects Document is organized by slot number. To determine where channel 0 of a DVI in slot 11 appears, read the page containing slot 11. All slots indicate all standard instruments whether or not full functionality can be accessed based upon the slot/path constraint (odd slots, 16 paths to the UTI; even slots, 32 paths). Looking to the left of the desired instrument and function shows the correct UTI connector and pin number (DIN connector for ASL 1000, spring pin block for ASL 3000). Figure 21 relates to an ASL 1000 and shows that DVI 11 CH0 can be found on connector J4, pins B21 and B23. Figure 21. System InterconnectsSlot 11, DVI
Slot 11 Connector -Pin J4-B21 J4-B22 J4-B23 J4-B24 J4-B25 J4-B26 J4-B27 DVI CH0 FORCE CH0 GUARD CH0 SENSE CH1 FORCE CH1 GUARD CH1 SENSE
J2
J6
J4
J1
J5
J3
56
PN: 071-0999-00
Looking on the slot 6 page shows that TMU CHA 1 is located on connector J5, pin C5 as shown in Figure 22. Figure 22. System InterconnectsSlot 6, TMU
Slot 6 Connector-Pin J5-C1 J5-C2 J5-C3 J5-C4 J5-C5 J5-C6 J5-C7 J5-C8 J5-C9 J5-C10
TMU 6 CHA1 - J5.C5
TMU EXT ARM IN TMU CHAN B DUT2 TMU CHAN B DUT1 TMU CHAN A DUT2 TMU CHAN A DUT1 TMU HIZ DUT1 TMU HIZ DUT2 TMU HIZ DUT3 TMU HIZ DUT4
J2
J6
J4
J1
J5
J3
57
Looking on the Slot 1 page shows that OVI CH0 is located on connector J2, pins B23 and B24 and CH3 is located on connector J2, pins B17 and B18 as shown in Figure 23. Figure 23. System InterconnectsSlot 1, OVI
Slot 1 Connector-Pin J2-B17 J2-B19 J2-B21 J2-B23 J2-B18 J2-B20 J2-B22 J2-B24 OVI CH3 CH2 CH1 CH0 CH3 CH2 CH1 CH0 FORCE FORCE FORCE FORCE SENSE SENSE SENSE SENSE
J2
OVI 1 CH3F - J2.B17 OVI 1 CH3S - J2.B18 OVI 1 CH0F - J2.B23 OVI 1 CH0S - J2.B24
J6
J4
J1
J5
J3
58
PN: 071-0999-00
Attaching wires from the connector pins to the related points on the DUT and support components, connects the DUT to the test system instrumentation as shown in Figure 24. Figure 24. DUT Connectors
J2
Vcc
DUT
Gnd
J6
J4
J1
J5
J3
59
S F 1K
??? + -
If either of the ground potentials shift, the meter reading is unstable and inaccurate.
60
PN: 071-0999-00
Figure 26 shows the correct connection of the meter ground to the DUT ground. Should the DUT ground potential shift, the meter will shift also resulting in a stable measurement. Figure 26. Meter Referenced to Voltage of Interest
S F 1K
Voltmeter
??? + This concept of referencing the measurement to the DUT can and should be used when instruments are involved.
61
Figure 27 is essentially the same scenario related in Figure 25. The measurement device is not referenced to the DUT. In this particular case, an A-to-D (A/D) converter is being used in place of a physical meter to perform the measurement. The instrument ground and the DUT ground can be different resulting in an unstable and inaccurate measurement. Figure 27. A/D Ground Not Referenced to DUT
DVI A/D
GND REF
S F
1K
+65V
-65V
DUT on Loadboard
62
PN: 071-0999-00
Good engineering practice is to connect the AGS bus input as close as possible to the DUT ground, if not directly on the DUT ground pin. Figure 28. A/D Ground Referenced to DUT Via Analog Ground Sense Bus
DVI
A/D
GND REF S F 1K
+65V
-65V
DUT on Loadboard
AGS
63
Notes
64
PN: 071-0999-00
Objectives
After completing this unit, students should be able to perform the initial steps required for test solution development
In This Module
______ Instructor Presentation 1.5 Hours
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
65
Notes
66
PN: 071-0999-00
3. Generate source code. 4. Launch Visual Studio: a. Edit the test function code. a. Build the test function(s) and correct any errors. a. Exit Visual Studio. 5. Exit Create mode. At the Engineering menu: 1. Press New. 2. Navigate to the working folder. 3. Select the .lst file. 4. Enter the test program name. In Engineering mode: 1. Insert and modify test function description(s): Enable/disable Pass Parameters Test limits
67
2. Save work into the test program file. 3. Run to verify action. 4. Exit Engineering mode.
68
PN: 071-0999-00
visualATE Icon
Launcher Icon
69
2. Enter the username and password in the Login screen. Use the Tab key to move between fields. Figure 30. visualATE Login Screen
70
PN: 071-0999-00
The opening screen (see Figure 31) controls the user access to various areas within visualATE. A brief description of each button is given in the visualATE Users Guide V6.1. Figure 31. visualATE Opening Screen
71
3. Click the Create button to display a menu of any available lists that already exist on the test system as shown in Figure 32. 4. Click the New button to initiate the List generation process. Figure 32. Available Lists
New Button
72
PN: 071-0999-00
5. Enter the desired name in the Enter a New List Name dialog box (Figure 33) and click the OK button. Figure 33. New List Dialog Box
73
All user code is placed in a sub-directory of the above path, named by the list. For the previous example, the list directory is:
c:\visualATE61\users\lists\test_list
A dialog box (as shown in Figure 34) appears stating that Create automatically inserts the C++ code defining the instrument names and slot locations in the testhead. This code is placed in USER.cpp and USER.h files. 6. Click the OK button to continue. Figure 34. Message Dialog Box
74
PN: 071-0999-00
Figure 35 shows the matrix used to define the instruments (and their slots) referenced in the test function code. Create mode uses this information to generate the instrument names and slot locations. This information is also used to define the required configuration for the current List. Any instrument/slot defined on this matrix is mandatory in any system that this List is loaded. If the required configuration does not match the used systems configuration, error messages are reported and the List may not execute. It is important to select only the instruments that are to be used. Figure 35. List Properties Matrix
75
7. Click on a slots down arrow to display a pull-down menu of instruments. 8. Select the desired instrument from the pull-down menu. Figure 36. Instrument Pull-down Menu
76
PN: 071-0999-00
After completing the used instrument/slot matrix, the Create edit window is displayed. A default test function description is shown. The test function description consists of three areas: Function Name Pass Parameters (name and default values) Test Details (name and default limits)
Test function descriptions are used to: Name and generate the test function source code file Initialize the Pass Parameter data structure Define the test name and default limits
77
Figure 38 depicts how the test function description information is utilized. Figure 38. Test Function Description Information Utilized
Test Function Source Code File : func name.cpp Test Function Name
Pass Parameters and Default Values Pass Parameter Structure Allocation File : function.h Test Names and Default Limit Values
78
PN: 071-0999-00
9. Change the test function name by clicking on the default name. Figure 39. Test Function Name
10. Enter the new name. Figure 40. Test Function NameNew
11. Click anywhere in the test function description to close the Edit box. One Pass Parameter is present by default. Figure 41. Pass Parameter
79
12. To add more Pass Parameters: a. Click the test function to make it active (highlighted). b. Click on the Insert menu and select New Parameter or click the New Parameter button on the toolbar. Figure 42. Insert Pass Parameter
Another default Pass Parameter is inserted. Figure 43. New Pass Parameter
80
PN: 071-0999-00
13. Change the Pass Parameter name by clicking on the default name. Figure 44. Pass Parameter Name
14. Enter the new name. Figure 45. Pass Parameter NameNew
15. Clicking anywhere in the test function description to close the edit box. Figure 46. Close Edit Box
81
16. Change the Pass Parameter default value by clicking on the default value. Figure 47. Pass Parameter Value
17. Change the Pass Parameter default data type by double-clicking on the data type box. Figure 48. Data Type Menu
82
PN: 071-0999-00
18. Select the new data type. Figure 49. Select Data Type
83
19. Change the Pass Parameter scale by clicking on the scale box, and selecting in the desired scale. Figure 51. Pass Parameter Scale
84
PN: 071-0999-00
The new scale is now set. Figure 53. New Scale Set
20. Change the Pass Parameter units text by clicking on the UNIT and entering in the desired text. Figure 54. Pass Parameter Unit Text
85
New unit text is now set. Figure 55. New Unit Text
86
PN: 071-0999-00
21. To add more test details: a. Click on the left side of the default Test Details to place a cursor. a. Click on the Insert menu and select New Subtest. Figure 56. New Subtest Menu Item
87
New test details are now inserted. Figure 57. Inserted Test Details
22. Change the test details name by clicking on the default name and entering in the desired name. Figure 58. Test Details Name
88
PN: 071-0999-00
New name is now entered. Figure 59. New Test Details Name
89
23. Change the Bin1 low limit by clicking on the default value and entering in the desired value. Figure 60. Bin1 Low Limit
New value is now entered. Figure 61. New Bin1 Low Limit
90
PN: 071-0999-00
24. Change the Bin1 high limit value by clicking on the default value and entering in the desired value. Figure 62. Bin1 High Limit
91
92
PN: 071-0999-00
Each test has four limits, arranged as bins 1 through 4. They permit the system to automatically grade the DUT:
1) test_1(bin1 min)(bin1 max) (bin2 min)(bin2 max) (bin3 min)(bin3 max) (bin4 min)(bin4 max)
If the test value falls between the bin 1 limits, then the DUT is passed with a Bin1. Should the DUT fail the bin 1 limits then it is compared with the bin 2 limits (passing = Bin2). Failing bin 2 limits, it is compared to bin 3 limits (passing = Bin3). Failing bin 3 limits, it is compared to bin 4 limits (passing = Bin4). Failing bin 4 limits, the DUT is assigned to a programmed fail bin. If the user only wants one pass bin, then all bin limits are set to Bin1 values:
1) test_145 4 5 4 5 4 5
93
25. Change the test limits scale by clicking on the scale box, and selecting the desired scale. Figure 65. Test Limit Scale
94
PN: 071-0999-00
26. Change the test units text by clicking on the UNIT and entering the desired text. Figure 67. Test Unit Text
95
New unit text is now entered. Figure 68. New Unit Text
96
PN: 071-0999-00
27. To add more test function descriptions: Click on the Insert menu and select New Function Or click the New Function button on the toolbar
97
98
PN: 071-0999-00
28. After inserting all the required test function descriptions and modifying them as needed, instruct Create to generate the visualATE file set. Click on the Source Code menu and select Generate Source Code Or click on the Source Code button on the toolbar
29. An informational message appears reminding the user that all changes must be saved before proceeding. Select Yes to continue. Figure 72. Save and Continue Message
99
30. An informational message appears indicating that source code generation has been completed. Select OK to continue. Figure 73. Source Code Generated
100
PN: 071-0999-00
Figure 74 shows all the files and sub-folders created by the Generate Source Code action. Figure 74. Files and Sub-folder Created by Generate Source Code Action
101
31. Edit the test function source code files after they have been generated. To do so, launch Visual Studio (the editor, compiler and code debugger): a. Click on the Source Code menu and select Launch Visual C++. b. Or click the multi-colored infinity symbol (pretzel) in the Create Edit window shown in Figure 75. Figure 75. Visual Studio Button
102
PN: 071-0999-00
Figure 76 shows a picture of the Visual Studio environment. Figure 76. Visual Studio Environment
Output Window
103
32. Access the test function source codes files by expanding the project sub-folders. Figure 77. Expanded Sub-Folders
104
PN: 071-0999-00
33. Open a particular test function source code file by double-clicking on its reference in the Project directory. Figure 78. Open Source Code
105
Figure 79 shows the actual test function where the user would insert any and all related instrument statements. Figure 79. Test Function
These two lines of code automatically assign this functions particular set of Pass Parameters to the address pointer ours. This relieves the user from remembering the Pass Parameter structure name.
106
PN: 071-0999-00
34. Enter related instrument statements immediately above the last closing brace (}). Figure 80. Instrument Statements
Visual Studio auto-complete feature for Pass Parameters Select the desired one and press Return.
107
Pass Parameter entry is now complete. Figure 81. Pass Parameter Entry
35. After editing is completed, the List .dll file must be built. This is done by clicking the Build Solution button or pressing the F7 key. Figure 82. Build Icon Build button
Compilation/build information is displayed in the output window. Figure 83. Output Window
108
PN: 071-0999-00
A successful build results in no errors displayed in the output window (as shown in Figure 84). 36. Any errors encountered in the Build process must be corrected before the List .dll file is generated. Figure 84. Successful Build and Exiting Visual Studio
Click to Exit
37. Exit the Visual Studio environment by clicking the X button in the upper right corner of the Visual Studio window as shown in Figure 84.
109
Exiting Visual Studio returns the user to the Create Edit window. Figure 85. Exiting Create
Click to Exit
38. Click the X button in the upper right corner of the window to exit the Create Edit window.
110
PN: 071-0999-00
Figure 86 lists the files generated by the Build process and deposited into the Debug folder. Figure 86. Debug Folder
The .dll file contains the executables of all built test functions. This file, however, is not an executable test program. The main reason is that there is no execution order to the test functions. Some other mechanism must be completed to define which test functions are used and run. This missing piece is the test program and is generated in the Engineering environment of visualATE.
111
Engineering Button
Clicking the Engineering button displays a menu of any available test programs that already exist on the test system.
112
PN: 071-0999-00
To initiate the test program generation process: 1. Click the New button on this menu. Figure 88. New Button
New Button
113
3. Select and open the working folder (in this case, test_list). Figure 90. Select Working Folder
114
PN: 071-0999-00
4. The Engineering environment must recognize the desired List. This is done by selecting the list name.lst file that contains relevant test function description information. Figure 92. List FileSelect and Open
115
5. After defining the List to be referenced, a test program file name must be entered. This file is initially empty. Figure 93. Program FolderOpen
6. Enter the desired test program name and click the Save button. The user is moved to the Engineering Program window. Figure 94. Program FolderNew Name
116
PN: 071-0999-00
Figure 95 is a picture of the Engineering Program window. It is empty as no test functions have been referenced yet. The test function execution order is defined in this window. Figure 95. Engineering Program Window
117
7. To insert test function descriptions into the Engineering Program window: a. Click on the Function List button. Figure 96. Function List Button
b. A window opens and displays all test functions in the referenced List. Figure 97. Available Test Functions
118
PN: 071-0999-00
c. Select a test function by clicking on the desired test function and clicking the OK button. Figure 98. Selecting a Test Function
OK Button
119
d. The selected test function appears with all sub-tests and parameters hidden. Figure 99. Selected Test Function
8. Expand the view of the test function description by clicking on the View menu and selecting Expand All Functions. The Show All Parameters, Show All Subtests, and Show All Limits can also be used. Figure 100. View Pull-Down Menu
120
PN: 071-0999-00
Individual test function descriptions may be expanded or collapsed by clicking on their respective banner. Entire test function appears in the Engineering Program window. All values displayed are the default values set in Create. Figure 101. Engineering Program Window
121
9. Click on The Function Enable button to toggle from red to green. This button must be set to green for the test function to execute. 10. Execute the test program by clicking the Run button, and evaluate the action by examining the results displayed in the Engineering Datalog View. The order of the test functions, from top to bottom, is the order in which they execute if enabled. 11. Save the test program by clicking on the File menu and selecting Save. Figure 102. File Pull-Down Menu
122
PN: 071-0999-00
Figure 103 shows the test program file in the Programs subfolder. Figure 103. Test Program File
123
124
PN: 071-0999-00
Objectives
After completing this unit, students should be able to perform the initial steps required for test solution development using the MUX and DVI instruments
In This Module
______ Lab Exercises 2 Hours
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
125
Notes
126
PN: 071-0999-00
Lab Exercise
127
Support Code
The class lab support code for: user.cpp user.h
ModalDialogDescription mdb;
void sync_pulse(unsigned short delay_us) { /* This function uses the I/O port feature of the TMU instrument to generate a 0V->5V->0V signal. A practical use for this function would be to provide a scope trigger so that tester/DUT events could be monitored effectively. The FPGA on the TMU has two ports (IO1, IO2) that can be set as both output or both input. If set as output, they can be driven high/low (5V/0V). If set as input, they can be tested (5V=1 or TRUE, 0V=0 or FALSE). The action of this function is to receive a delay value and then divide it by 10. If the result is less than 1, then the delay variable is forced to 10. This guarantees a minimum delay time of 100us. The TMU I/O ports are then set to output. IO1 is set high, the programmed delay is executed, and then IO1 is set low.
128
PN: 071-0999-00
The resulting signal can be observed on: ASL1000: ASL3000: */ J5.A4 (for slot 6) PB5.C13 (for slot 6) //calculate us
//check delay_us value and force //to 10 if less than 10. //set I/O for output //set IO1 high
tmu_6->clear_control(TMU_SET_IO1);
void datalog(short scale, short test_num, float dlog_val, unsigned short fail_bin, char *notes, test_function& func) { /* This function eases the coding of the datalog statements by combining all aspects into a one-line call: datalog("datalog scaler","test number", "datalog value", "fail bin number", "notes", func); Where: "datalog scaler" is POWER_KILO, POWER_MILLI, etc. "test number" is the test (or "sub-test") number (1, 2, 3, etc.) "datalog value" is the return of a measurement statement or calculation "fail bin number" is the desired fail bin (5-32 for vATE rev 4.8 to 5.2) "notes" is a string of up to 12 characters "func" is to be entered exactly as shown */ func.dlog->power = scale; //set the scale func.dlog->set_test_no(test_num); //set the test number func.dlog->test_val(dlog_val); //pass the value to be checked if (notes) //if notes is true then set string func.dlog->datalog_notes(notes);
129
if (func.dlog->tests[(test_num - 1)].passed_fail==FAILED_TEST)//if the passed func.dlog->set_bin(fail_bin); //value failed, set fail bin #. if (func.dlog->tests[(test_num - 1)].display_results)//see if datalogging is func.dlog->display_results(); //enabled for noted test; if so, output data. } void pulse_IO2(void) { /* This function uses the I/O port feature of the TMU instrument to generate a 0V->5V signal for use in the DUT Prop Delay test. The FPGA on the TMU has two ports (IO1, IO2) that can be set as both output or both input. If set as output, they can be driven high/low (5V/0V). If set as input, they can be tested (5V=1 or TRUE, 0V=0 or FALSE). The TMU I/O outputs have been buffered by two 74AS1004 inverters for drive capability and to maintain positive logic. */ tmu_6->set_control(TMU_OUT_IO); tmu_6->set_control(TMU_SET_IO2); wait.delay_10_us(1); } //wait 10us //set IO2 low //set I/O for output //set IO2 high, drive the DUT
tmu_6->clear_control(TMU_SET_IO2);
void up_IO2(void) { /* This function uses the I/O port feature of the TMU instrument to generate a 0V->5V signal for use in the DUT Tr test. */ tmu_6->set_control(TMU_SET_IO2); wait.delay_10_us(1); } void down_IO2(void) { /* This function uses the I/O port feature of the TMU instrument to generate a 5V->0V signal for use in the DUT Tf test. */ //wait 10us //set IO2 high, drive the DUT
130
PN: 071-0999-00
void set_tmu_io_as_output(void) { /* Whenever the TMU instrument is reset by init(), the I/O pins are set to input. This causes the inputs on the AS1004 buffer to float high enough to register as a "1", which then sets the output active (in the wrong state). Initializing the TMU will require running this function afterwards to guarantee I/O pin status. */ tmu_6->set_control(TMU_OUT_IO); //set I/O for output //set IO1 low //set IO2 low
131
132
PN: 071-0999-00
Lab Loadboard
The loadboard used during labs has the layout shown in Figure 104. Figure 104. Lab Loadboard Layout
J2
C1 0.01uF
74AS1004
DUT
LE D
K1
R3 R2 R1
K2
R4
J6
J4
J1
J5
J3
X = Removed DC Pins
133
134
ACS 5
S1
(6) (8) (5)
r1_val Lab
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0. 1uF
MUX_2_3
CH7
DVI 9
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
MUX 18
DDD 7
CH8
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
DDD 7
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
r1_val Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
135
r1_val Code
void r1_val(test_function& func) { // The two lines below must be the first two in the function. r1_val_params *ours; ours = (r1_val_params *)func.params; //---declare variables used float meas_v, r1_val; //---connect DVI9 F0 to R1 mux_18->close_relay(MUX_1_1); mux_18->close_relay(MUX_1_2); //---connect DVI9 S0 to R1 mux_18->close_relay(MUX_2_1); mux_18->close_relay(MUX_2_4); //---set DVI measure mode dvi_9->set_meas_mode(DVI_CHANNEL_0,DVI_MEASURE_VOLTAGE); //---set DVI values dvi_9->set_current(DVI_CHANNEL_0, ours->i_limit); dvi_9->set_voltage(DVI_CHANNEL_0, ours->v_limit); //---wait for the above to settle... delay(ours->meas_delay); //---perform the measurement meas_v = dvi_9->measure(); //---calculate R1's resistance with a safety net to avoid a divide-by-zero //---crash in case the i_limit Pass Parameter is inadvertently set to zero. if (ours->i_limit == 0) r1_val = 0; else r1_val = meas_v / ours->i_limit; //Ohms's Law...(R=V/I) //---datalog the result-------------------------------------func.dlog->power=POWER_KILO; //set the scale func.dlog->set_test_no(1); //set the test number func.dlog->test_val(r1_val); //pass the value if (func.dlog->tests[func.dlog->current_test].passed_fail == FAILED_TEST) func.dlog->set_bin(5); //check for fail, set fail bin if (func.dlog->tests[func.dlog->current_test].display_results)
136
PN: 071-0999-00
func.dlog->display_results(); //check for datalog, output value //----------------------------------------------------------//---reset DVI9 & MUX18 to default states dvi_9->init(); mux_18->init(); }//r1_val
137
138
ACS 5
S1
(6) (8) (5)
r2_val Lab
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EX T_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0.1uF
MUX_2_3
CH7
DDD 7
CH8
DVI 9 MUX 18
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
DDD 7
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO2
TMU 6 AGS
CH3F
MUX_4_1 MUX_5_BUS5
OVI 1
MUX_5_2 MUX_5_3 MUX_5_4 CH3S
TMU 6 OVI 1
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
r2_val Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
139
r2_val Code
void r2_val(test_function& func) { // The two lines below must be the first two in the function. r2_val_params *ours; ours = (r2_val_params *)func.params;
//---connect DVI9 S0 to R2
//---wait for the above to settle... //---perform the measurement //---calculate R2's resistance with a safety net to avoid a divide-by-zero //---crash in case the i_limit Pass Parameter is inadvertantly set to zero.
140
PN: 071-0999-00
141
142
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
measbusi Lab
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
BUS_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
MUX_2_3
CH7
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DVI 9
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
MUX 18
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
DDD 7
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
PN: 071-0999-00
S0
MUX_4_4
measbusi Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
143
measbusi Code
void measbusi(test_function& func) { // The two lines below must be the first two in the function. measbusi_params *ours; ours = (measbusi_params *)func.params; //---declare variables used float result; //---connect DVI11 CH0 to BUS2 dvi_11->close_relay(BUS_FORCE0); dvi_11->close_relay(BUS_SENSE0); //---connect MUX18 Bank2 to BUS2 mux_18->close_relay(MUX_2_BUS2); //---connect MUX18 Bank2 to GND mux_18->close_relay(MUX_2_GND); //---set DVI11 measurement mode dvi_11->set_meas_mode(DVI_CHANNEL_0, DVI_MEASURE_CURRENT); //---wait for above to settle... delay(ours->meas_delay); //---set DVI11 required levels dvi_11->set_current(DVI_CHANNEL_0, ours->i_limit); dvi_11->set_voltage(DVI_CHANNEL_0, ours->v_limit); //---wait for DVI11 to settle... delay(ours->meas_delay); //---perform measurement result = dvi_11->measure();
144
PN: 071-0999-00
145
146
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO1
(13)
U1F
(11)
U1E
dvi_DiffMeas Lab
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0. 1 Ohm 1%
DVI 11
S1 MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0. 1uF
MUX_2_3
CH7
DVI 9 MUX 18
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
DDD 7
CH8
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
DDD 7
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
dvi_DiffMeas Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
147
dvi_DiffMeas Code
void dvi_DiffMeas(test_function& func) { // The two lines below must be the first two in the function. dvi_DiffMeas_params *ours; ours = (dvi_DiffMeas_params *)func.params; //---declare variables used float meas_null, meas_diff, diff_result; meas_null = 0; //initialize variables to zero meas_diff = 0; diff_result = 0; //---null DVI11 diff circuit------------------------------dvi_11->open_relay(CONN_SENSE0); //isolate the sense inputs dvi_11->open_relay(CONN_SENSE1); wait.delay_10_us(50); //wait for above relays to open //short the sense inputs together
dvi_11->close_relay(CHANNEL_SHORT);
meas_null = dvi_11->measure_average(10); //measure the offset of the diff amp //--------------------------------------------------------//---reconnect DVI11 sense inputs-------------------------dvi_11->open_relay(CHANNEL_SHORT); wait.delay_10_us(50); //wait for above relay to open //connect the sense inputs //close K1 & K2
wait.delay_10_us(50); //wait for above relays to close //--------------------------------------------------------dvi_11->set_diff_range(RANGE_100_MV); //to appropriate range
148
PN: 071-0999-00
ovi_1->set_voltage(OVI_CHANNEL_6, ours->sense0_v, RANGE_1_V); ovi_1->set_current(OVI_CHANNEL_7, 0.001f, RANGE_3_MA); ovi_1->set_voltage(OVI_CHANNEL_7, ours->sense1_v, RANGE_1_V); delay(ours->delay_1ms); //wait for above to settle... //measure the difference
meas_diff = dvi_11->measure_average(10);
//---calculate diff reading-------------------------------diff_result = meas_diff - meas_null; //--------------------------------------------------------//---output measurement via the datalog function call described in User.cpp //datalog("datalog scaler", "test number", "datalog value", "fail bin number", "notes", func); datalog(POWER_MILLI, 1, diff_result, 8, "", func); //---reset OVI1, DVI9 & DVI11 to default states ovi_1->init(); dvi_9->init(); dvi_11->init(); }//dvi_DiffMeas
149
150
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO 1
(13)
U1F
(11)
U1E
LED_test Lab
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S CH5SL CH5FL MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0. 1uF
MUX_2_3
CH7
DVI 9
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
MUX 18
DDD 7
CH8
(5) (9) (10) (11) (7) C2 A3 B3 C3 GND 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
R3
1.2K 5%
MUX_3_2
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO 2
TMU 6 AGS
CH3F
MUX_4_1 MUX_5_BUS5
OVI 1
MUX_5_2 MUX_5_3 MUX_5_4 CH3S
TMU 6 OVI 1
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
LED_test Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
151
LED_test Code
void LED_test(test_function& func) { // The two lines below must be the first two in the function. LED_test_params *ours; ours = (LED_test_params *)func.params; //---declare variables used short i; float float bool step, stepsize; meas_current[200], prgm_voltage[200]; ifFail=FALSE; //create file pointer //allocate arrays
FILE* fp1;
//---error checking---------------------------------------------if (ours->vstop > 5.0) //if stop voltage > 5V... {//---error box setup mdb.SetStatusDialogHasOKButton(1); mdb.SetDialogTopMessage("***Applied stop voltage > 5v***"); mdb.SetDialogBottomMessage("***vstop forced to 5V***"); RunModalDialog(&mdb); ours->vstop = 5.0; ifFail = TRUE; } if (ours->i_limit > 0.01f) //if current > 10mA... {//---error box setup mdb.SetStatusDialogHasOKButton(1); mdb.SetDialogTopMessage("***Applied Max current > 10mA***"); mdb.SetDialogBottomMessage("***Max current forced to 10mA***"); RunModalDialog(&mdb); ours->i_limit = 0.010f; ifFail = TRUE; } if (ours->samples > 199) //if samples > 199... {//---error box setup mdb.SetStatusDialogHasOKButton(1); //output error message //force max current to 10mA //output error message
//force vstop to 5V
152
PN: 071-0999-00
mdb.SetDialogTopMessage("***Supplied samples number > 199***"); mdb.SetDialogBottomMessage("***samples forced to 199***"); RunModalDialog(&mdb); ours->samples = 199; //output error message //force samples to 199
ifFail = TRUE; } //---------------------------------------------------------//---flush the arrays after error check for(i=0; i < ours->samples; i++) { meas_current[i]=0; prgm_voltage[i]=0; } //---connect DVI9 CH0 to LED via MUX18 mux_18->close_relay(MUX_1_1); //connect DVI9 CH0F to LED mux_18->close_relay(MUX_1_4); mux_18->close_relay(MUX_2_4); //connect DVI9 CH0S to LED mux_18->close_relay(MUX_2_3); //---precondition dvi11 dvi_9->set_voltage(DVI_CHANNEL_0, 0.0f); dvi_9->set_current(DVI_CHANNEL_0, ours->i_limit); dvi_9->set_meas_mode(DVI_CHANNEL_0, DVI_MEASURE_CURRENT); delay(ours->delay_1ms); //wait for above to settle...
//---calculate step size stepsize = ((ours->vstop - ours->vstart) / ours->samples); step = ours->vstart;//assign initial start voltage //---do the dance-------------------------------------------for (i=0; i < ours->samples; i++) { dvi_9->set_voltage(DVI_CHANNEL_0, step, VOLT_5_RANGE); //apply new voltage wait.delay_10_us(ours->delay_10us) //wait a bit...
meas_current[i] = dvi_9->measure(); //measure LED current & save prgm_voltage[i] = step; //save programmed voltage. step += stepsize; } //increment voltage value
153
//---------------------------------------------------------//---open the file, setup headers and save data------------fp1=fopen("c:\\asl_nt\\users\\lists\\Class_Project\\programs\\ledtest.txt","w"); fputs("LED Turn-On Current Data\n",fp1); fputs("Voltage \t Current \n",fp1); for (i=0; i < ours->samples; i++) //stuff v & i data into file... fprintf(fp1,"%f \t %f \n", prgm_voltage[i], meas_current[i]); fclose(fp1); //---done and close file----------------------------------//---datalog ifFail status--------------------------------func.dlog->power=POWER_UNIT; //set the scale func.dlog->set_test_no(1); //set the test number if (ifFail) //if TRUE output error, otherwise 0 func.dlog->test_val(999.0f); //pass error value else func.dlog->test_val(0.0f); //pass normal value if (func.dlog->tests[func.dlog->current_test].passed_fail == FAILED_TEST) func.dlog->set_bin(9); //check for fail, set fail bin if (func.dlog->tests[func.dlog->current_test].display_results) func.dlog->display_results(); //check for datalog, output value //----------------------------------------------------------//---set DVI9 & MUX18 to default states dvi_9->init(); mux_18->init(); }//LED_test
154
PN: 071-0999-00
155
Notes
156
PN: 071-0999-00
Datalog Functions
Goal
Familiarity with the visualATE datalog functions.
Objectives
After this unit, students should be able to: Describe the visualATE datalog functions Describe the visualATE datalog statements
In This Module
______ ______ Instructor Presentation Knowledge Check 1 10 Hour Minutes
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
157
7 - Datalog Functions
Notes
158
PN: 071-0999-00
Datalog Functions
This section details the Datalog Statements, including: Statements Simple datalog function call
Arguments: Scale:
POWER_TERA(e12) POWER_GIGA(e9) POWER_MEGA(e6) POWER_KILO(e3) POWER_UNIT(e0, no scaling) POWER_MILLI(e-3) POWER_MICRO(e-6) POWER_NANO(e-9) POWER_PICO(e-12) POWER_FEMTO(e-15) POWER_HEX(HEX)
Usage:
func.dlog->power = POWER_MILLI;
159
7 - Datalog Functions
func.dlog->set_test_no
Selects which limits to use for verification. Figure 110. Verification Limits
Test #1
Test #2
Test #3
Format:
short set_test_no(test_number);
func.dlog->test_val
Passes the test result for comparison against the limits defined by set_test_no(). The type should either be float or unsigned short. The compiler requires explicit casting of the value, if the type is not obvious from the variable. Format:
short test_val( float result );
160
PN: 071-0999-00
func.dlog->tests[ ].passed_fail
Determines if the submitted datalog value passed or failed the comparison against the selected limits. Returns True or False for the test number stated. This function is used in conjunction with func.dlog->set_bin(). Normal usage is to check for a failure, and if True, set the fail bin. The value placed between the brackets ([ ]) is (Test Number - 1) as the array tests begins with element number zero. Format:
func.dlog->tests[short(test_num - 1)].passed_fail;
Arguments: test_num
1 to 999
Usage:
if (func.dlog->tests[5].passed_fail == FAILED_TEST) //test number 6 func.dlog->set_bin(16); //if fail, then bin 16.
func.dlog->set_bin
Sets the fail bin. This function is used in conjunction with func.dlog->tests[ ].passed_fail, which determines if a part has failed. Range is from 5 to 32. Format:
void set_bin(short fail_bin);
Arguments: fail_bin
5 to 32
161
7 - Datalog Functions
func.dlog->tests[ ].display_results
Determines if datalog is enabled for the stated test as represented by (test_num - 1). Returns True or False. This function is used in conjunction with func.dlog->display_results(). Normal usage is to check for enable, and if True, output the results. The value placed between the brackets ([ ]) is (Test Number - 1) as the array tests begins with element number zero. Format:
func.dlog->tests[short(test_num - 1)].display results;
Arguments: test_num
1 to 999
Usage:
if (func.dlog->tests[5].display_results) //test number 6 func.dlog->display_results(); //if datalog on, display results
func.dlog->display_results
Used for historical and compatibility purposes only. By default, data is always displayed. This function is used in conjunction with func.dlog->tests[ ].display_results, which determines if the data logger is enabled. Format:
void display_results(void);
162
PN: 071-0999-00
Where: "datalog scaler" is POWER_KILO, POWER_MILLI, and so on. "test number" is the sub-test number. "value" is the return of a measurement statement or calculation. "fail bin number" is the desired fail bin. func is entered exactly as shown. Example:
dlog(POWER_KILO, 9, result, 17, func);
163
7 - Datalog Functions
Notes
164
PN: 071-0999-00
Knowledge Check
1. The datalog statements are used to do what?
165
7 - Datalog Functions
166
PN: 071-0999-00
OVI Instrument
Goal
Familiarity with the OVI instrument to the level of performing DC tests.
Objectives
After this unit, students should be able to: Describe the OVI instrument hardware Describe the OVI instrument software
In This Module
______ ______ Instructor Presentation Knowledge Check 45 10 Minutes Minutes
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
167
168
CURRENT ** RANGING I CLAMP 10k ** Sense Buffer SUMMING & INT 10k
DATA BUS
8 - OVI Instrument
***
FORCE 0
DATA BUS
SENSE 0
***
FORCE 1
TP2
CH1 V DAC
SENSE 1
**
***
10k 10k **
FORCE 2
TP3
CH2 V DAC
SENSE 2
**
CH2 C DAC
***
10k 10k **
FORCE 3
TP4
CH3 V DAC
SENSE 3
**
***
10k 10k **
FORCE 4
TP5
CH4 V DAC
CH4 C DAC
SENSE 4
**
FORCE 5
TP6 **
CH5 V DAC
CH5 C DAC
SENSE 5
**
FORCE 6 ***
10k 10k TP7
CH6 V DAC
CH6 C DAC
16 BIT ADC
GND REF
DATA BUS
**
SENSE 6
** AGS
CH7 V DAC
***
10k 10k **
FORCE 7
TP8
CH7 C DAC
PN: 071-0999-00
OVI Instrument
OVI Instrument
This section covers the OVI instrument, including: Instrument description Key highlights Theory of operation Software statements
Theory of Operation
The OVI functionally operates in the same way as a DVI. Please refer to the "DVI Instrument" on page 35 for operational rules and examples. For the remainder of the OVI hardware discussion, refer to the OVI - Octal Voltage/ Current Source chapter of the visualATE 6.1 Programming Guide.
Software Statements
For the software discussion, refer to the OVI - Octal Voltage/Current Source chapter of the visualATE 6.1 Programming Guide.
169
8 - OVI Instrument
Notes
170
PN: 071-0999-00
OVI Instrument
Knowledge Check
1. What is the maximum calibrated voltage range of the OVI?
171
8 - OVI Instrument
172
PN: 071-0999-00
TMU Instrument
Goal
Familiarity with the TMU to the level of performing simple timing measurements.
Objectives
After this unit, students should be able to: Describe the TMU instrument hardware Describe the TMU instrument software
In This Module
______ ______ Instructor Presentation Knowledge Check 45 10 Minutes Minutes
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
173
TMU_EXT_DRV3
PN: 071-0999-00
TMU_HIZ_DUT4
I/O REGISTER
174
TP5 ARM COMP START CPU_ARM
EXT_ARM
9 - TMU Instrument
DATA BUS
ARM REF
DATA BUS
TMU_CHAN_A_DUT1
TP2
TTL COUNTER
SLOPE SELECT
RESET 1.5K START TRG REF POS/NEG SLOPE
TP9 TP11
TMU_CHAN_A_DUT2
TMU_CHAN_A_BUS 500
START COMP
STOP COMP
12 BIT A/D
DATA BUS
TMU_CHAN_B_DUT1
TMU_CHAN_B_DUT2
* *
TMU_HIZ_DUT2 2Meg
TMU Instrument
TMU Instrument
This section covers the Time Measurement Unit (TMU) instrument, including: Instrument description Key highlights Theory of operation Software statements
Theory of Operation
For the hardware discussion, refer to Figure 112 on page 174 and to the TMU - Time Measurement Unit chapter of the visualATE 6.1 Programming Guide.
Software Statements
For the software discussion, refer to the TMU - Time Measurement Unit chapter of the visualATE 6.1 Programming Guide.
175
9 - TMU Instrument
Notes
176
PN: 071-0999-00
TMU Instrument
Knowledge Check
1. What is the base resolution of the TMU?
5. What are the two settling times of the TMU input connect relays?
177
9 - TMU Instrument
178
PN: 071-0999-00
10
Objectives
After this unit, students should be able to: Program simple timing measurements using the TMU instrument Program DC tests using the OVI instrument
In This Module
______ Lab Exercise 3 Hours
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
179
Notes
180
PN: 071-0999-00
Lab Exercise
181
182
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D
TP1 TP2
CH6F CH6S S0
(1) (4)
EXT _ARM
C1 0.1uF
PV3 4 PV3 4
CH4FH CH4SH
GND
(12) (10)
U1 GND
S2
TMU 6
IO1
(13)
U1F
(11)
U1E
K1
dut_Continuity Lab
+12V
MUX_BANK_8_1 K2
(1) (4)
K1 & K2 pin 2
R4 0.1 Ohm 1%
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
OVI 1 OVI 1
CH5SL CH5FL
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0.1uF
MUX_2_3
CH7
DVI 9
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
MUX 18
DDD 7
CH8
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
DDD 7
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
dut_Continuity Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____ Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____ Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____ Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____ Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____ Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____
183
dut_Continuity Code
void dut_Continuity(test_function& func) { // The two lines below must be the first two in the function. dut_Continuity_params *ours; ours = (dut_Continuity_params *)func.params; //---delcare variables used float pin_meas[8]; //holds the various pin measurements //---load array w/pin numbers unsigned short ovichnl[4] = {OVI_CHANNEL_0,OVI_CHANNEL_1, OVI_CHANNEL_2,OVI_CHANNEL_3}; short i, j; //loop counters //flush the whole array...
//---disconnect OVI1 from DUT pins for (j = 0; j < 4; j++) ovi_1->disconnect(ovichnl[j]); //---pre-condition OVI channels for (j = 0; j < 4; j++) ovi_1->set_current(ovichnl[j], 200e-6f, RANGE_300_UA);
//200uA
184
PN: 071-0999-00
//---wait for above to settle... delay(ours->delay_1ms); //---do the dance-------------------------------------------for (i = 0, j = 0; i < 6; i+=2, j++)//right now, use only 6 elements (inputs only) { ovi_1->connect(ovichnl[j]); ovi_1->set_meas_mode(ovichnl[j], OVI_MEASURE_CURRENT); //---bottom diode path + & ovi_1->set_voltage(ovichnl[j], 2.0f); wait.delay_10_us(ours->delay_10us); pin_meas[i] = ovi_1->measure(); //wait a bit...
//pin_v+
ovi_1->disconnect(ovichnl[j]); }//---------------------------------------------------------//---loop method of dataloging the results------------------func.dlog->power=POWER_MICRO; //common scale for (i = 0; i < 8; i++) { func.dlog->set_test_no(i + 1); //adjust the value of i func.dlog->test_val(pin_meas[i]); //index into the results array if (func.dlog->tests[func.dlog->current_test].passed_fail == FAILED_TEST) func.dlog->set_bin(32); if (func.dlog->tests[func.dlog->current_test].display_results) func.dlog->display_results(); } //---------------------------------------------------------//---reset instruments ovi_1->init();
185
mux_18->init(); }//dut_Continuity
186
PN: 071-0999-00
Notes
187
188
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO 1
(13)
U1F
(11)
U1E
dut_VolVoh Lab
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0.1uF
MUX_2_3
CH7
DVI 9 MUX 18
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO 2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
dut_VolVoh Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____ Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
189
dut_VolVoh Code
void dut_VolVoh(test_function& func) { // The two lines below must be the first two in the function. dut_VolVoh_params *ours; ours = (dut_VolVoh_params *)func.params; //---declare variables used float dut_vol, dut_voh;
//---connect DVI11 CH0 to DUT Vcc //connect DVI11 CH0F to DUT 16 //connect DVI11 CH0S to DUT 16
//---initial DVI11 & OVI1 current settings dvi_11->set_current(DVI_CHANNEL_0, ours->dut_Icc); ovi_1->set_current(OVI_CHANNEL_0, 1.0e-3f); ovi_1->set_current(OVI_CHANNEL_1, 1.0e-3f); ovi_1->set_current(OVI_CHANNEL_2, 1.0e-3f); delay(ours->delay_1ms); //wait for above to settle
190
PN: 071-0999-00
//---set up OVI1 ch3 for measure ovi_1->set_meas_mode(OVI_CHANNEL_3, OVI_MEASURE_VOLTAGE); //---apply low levels to DUT inputs ovi_1->set_voltage(OVI_CHANNEL_0, 0.8f); ovi_1->set_voltage(OVI_CHANNEL_1, 0.8f); ovi_1->set_voltage(OVI_CHANNEL_2, 0.8f); //DUT A3 low //DUT B3 low //DUT C3 low //sourcing, so positive number
//---set load conditions for Vol ovi_1->set_current(OVI_CHANNEL_3, 8.0e-3f); ovi_1->set_voltage(OVI_CHANNEL_3, 2.0f); wait.delay_10_us(ours->delay_10us); //---measure DUT Vol dut_vol = ovi_1->measure(RANGE_1_V); //---apply high levels to DUT inputs ovi_1->set_voltage(OVI_CHANNEL_0, 2.0f); ovi_1->set_voltage(OVI_CHANNEL_1, 2.0f); ovi_1->set_voltage(OVI_CHANNEL_2, 2.0f); wait.delay_10_us(ours->delay_10us);
//wait a bit...
//wait a bit... //sinking, so engage negative //cal factors with minus sign.
//---set load conditions for Voh ovi_1->set_current(OVI_CHANNEL_3, -400.0e-6f); ovi_1->set_voltage(OVI_CHANNEL_3, 2.0f); wait.delay_10_us(ours->delay_10us); //---measure DUT Voh dut_voh = ovi_1->measure(RANGE_5_V);
//wait a bit...
//---datalog DUT Vol-------------------------------------func.dlog->power = POWER_UNIT; func.dlog->set_test_no(1); func.dlog->test_val(dut_vol); if (func.dlog->tests[func.dlog->current_test].passed_fail == FAILED_TEST) func.dlog->set_bin(5); if (func.dlog->tests[func.dlog->current_test].display_results) func.dlog->display_results();
191
//---datalog DUT Voh-------------------------------------func.dlog->power = POWER_UNIT; func.dlog->set_test_no(2); func.dlog->test_val(dut_voh); if (func.dlog->tests[func.dlog->current_test].passed_fail == FAILED_TEST) func.dlog->set_bin(5); if (func.dlog->tests[func.dlog->current_test].display_results) func.dlog->display_results(); //----------------------------------------------------------//---power down DUT 'gently' dvi_11->set_voltage(DVI_CHANNEL_0, 0.0f); wait.delay_10_us(ours->delay_10us); //---reset instruments ovi_1->init(); dvi_11->init(); mux_18->init(); }//dut_VolVoh
192
PN: 071-0999-00
Notes
193
194
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
dut_VilVih Lab
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO 1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0.1uF
MUX_2_3
CH7
DVI 9 MUX 18
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO 2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
dut_VilVih Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____ Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
195
dut_VilVih Code
void dut_VilVih(test_function& func) { // The two lines below must be the first two in the function. dut_VilVih_params *ours; ours = (dut_VilVih_params *)func.params; //---declare variables used short i; float float dut_vil, dut_vih; step, stepsize, output_v;
//---connect DVI11 CH0 to DUT Vcc //connect DVI11 CH0F to DUT 16 //connect DVI11 CH0S to DUT 16
//---initial DVI11 & OVI1 current settings dvi_11->set_current(DVI_CHANNEL_0, ours->dut_Icc); ovi_1->set_current(OVI_CHANNEL_0, 1.0e-3f); ovi_1->set_current(OVI_CHANNEL_1, 1.0e-3f);
196
PN: 071-0999-00
//---apply Vcc min (4.5) to DUT dvi_11->set_voltage(DVI_CHANNEL_0, ours->dut_Vcc); wait.delay_10_us(ours->delay_10us); //wait a bit...
//---set up OVI1 ch3 for measure ovi_1->set_meas_mode(OVI_CHANNEL_3, OVI_MEASURE_VOLTAGE, RANGE_5_V); //---apply initial levels to DUT inputs ovi_1->set_voltage(OVI_CHANNEL_0, 4.5f); ovi_1->set_voltage(OVI_CHANNEL_1, 4.5f); ovi_1->set_voltage(OVI_CHANNEL_2, 0.0f); //---wait a bit... wait.delay_10_us(ours->delay_10us); //---calculate step size stepsize = ((ours->vstop - ours->vstart) / ours->samples); step = ours->vstart;//assign initial start voltage for ramp-up //---ramp up------------------------------------------------for (i = 0; i < ours->samples; i++) { ovi_1->set_voltage(OVI_CHANNEL_2, step, VOLT_5_RANGE); //apply new voltage wait.delay_10_us(ours->delay_10us); output_v = ovi_1->measure(); //wait a bit... //DUT A3 high (Vcc min value) //DUT B3 high (Vcc min value) //DUT C3 low
if (output_v > 2.5f) //if output is high...(Vcc-2V) { dut_vih = step; //save programmed voltage i = 999;//force loop to quit } step += stepsize; //increment voltage value } //---------------------------------------------------------//---apply Vcc max (5.5) to DUT dvi_11->set_voltage(DVI_CHANNEL_0, 5.5f);
197
//wait a bit...
//---ramp down---------------------------------------------for (i = 0; i < ours->samples; i++) { ovi_1->set_voltage(OVI_CHANNEL_2, step, VOLT_5_RANGE); //apply new voltage wait.delay_10_us(ours->delay_10us); output_v = ovi_1->measure(); //wait a bit...
if (output_v < 0.5f) //if output is low...(500mV) { dut_vil = step; //save programmed voltage i = 999; } step -= stepsize; //decrement voltage value } //---------------------------------------------------------//force loop to quit
198
PN: 071-0999-00
//----------------------------------------------------------//---power down DUT 'gently' dvi_11->set_voltage(DVI_CHANNEL_0, 0.0f); wait.delay_10_us(ours->delay_10us); //---reset instruments dvi_11->init(); mux_18->init(); ovi_1->init(); }//dut_VilVih
199
200
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
ovi_Rise Lab
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO 1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0. 1uF
MUX_2_3
CH7
DVI 9 MUX 18
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO 2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
ovi_Rise Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
201
ovi_Rise Code
void ovi_rise(test_function& func) { // The two lines below must be the first two in the function. ovi_rise_params *ours; ours = (ovi_rise_params *)func.params; //---declare variables used float meas_rtime; //---complete the path between OVI1 CH0 & TMU6 HiZ4 mux_18->close_relay(MUX_8_1); mux_18->close_relay(MUX_8_2); mux_18->close_relay(MUX_8_3); tmu_6->close_relay(TMU_HIZ_DUT4); //---set up tmu_6 for rise time measurement tmu_6->start_trigger_setup(ours->start_trg,POS_SLOPE,TMU_HIZ,TMU_IN_10V); tmu_6->stop_trigger_setup(ours->stop_trg,POS_SLOPE,TMU_HIZ,TMU_IN_10V); //---precondition OVI1 ovi_1->set_current(OVI_CHANNEL_0, 10e-3f); ovi_1->set_voltage(OVI_CHANNEL_0, 0.0f); delay(ours->delay_1ms); tmu_6->arm(); wait.delay_10_us(4); //wait for above to settle...
//wait 40us
//---create rising edge by setting OVI1 CH0 to 10V ovi_1->set_voltage(OVI_CHANNEL_0, 10.0f); wait.delay_10_us(5); //let the OVI transition through the 1V start trigger //default 10ms timeout
//---set up and use datalogger----------------------------------func.dlog->power = POWER_MICRO; //set range to micro func.dlog->set_test_no(1); //set fall time test # to 1 func.dlog->test_val(meas_rtime); //pass test result for rtime if(func.dlog->tests[func.dlog->current_test].passed_fail==FAILED_TEST) func.dlog->set_bin(16); //if fail,bin16 if(func.dlog->tests[func.dlog->current_test].display_results)
202
PN: 071-0999-00
func.dlog->display_results(); //if datalogger on display results //--------------------------------------------------------------//---reset instruments ovi_1->init(); tmu_6->init(); mux_18->init(); }//ovi_rise
203
204
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
ovi_Fall Lab
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0. 1uF
MUX_2_3
CH7
DDD 7
CH2 CH3 CH4 CH5 CH6 CH8
DVI 9
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
MUX 18
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
DDD 7
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO2
TMU 6 AGS
CH3F
MUX_4_1 MUX_5_BUS5
OVI 1
MUX_5_2 MUX_5_3 MUX_5_4 CH3S
TMU 6 OVI 1
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
ovi_Fall Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
205
ovi_Fall Code
void ovi_fall(test_function& func) { // The two lines below must be the first two in the function. ovi_fall_params *ours; ours = (ovi_fall_params *)func.params; //---declare variables used float meas_ftime;
//---precondition OVI1
//wait 40us
//---set up and use datalogger----------------------------------func.dlog->power = POWER_MICRO; //set range to micro func.dlog->set_test_no(1); //set fall time test # to 2 func.dlog->test_val(meas_ftime); //pass test result for ftime if(func.dlog->tests[func.dlog->current_test].passed_fail==FAILED_TEST) func.dlog->set_bin(16);//if fail,bin16
206
PN: 071-0999-00
if(func.dlog->tests[func.dlog->current_test].display_results) func.dlog->display_results(); //if datalogger on display results //--------------------------------------------------------------//---reset OVI1, MUX18 & TMU6 to default states ovi_1->init(); tmu_6->init(); mux_18->init(); }//ovi_fall
207
208
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
dvi_Time Lab
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0. 1uF
MUX_2_3
CH7
DVI 9
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
BUS_3 B US_6
MUX_2_4
MUX 18
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
dvi_Time Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____ Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
209
dvi_Time Code
void dvi_time(test_function& func) { // The two lines below must be the first two in the function. dvi_time_params *ours; ours = (dvi_time_params *)func.params; //---declare variables used float meas_rtime, meas_ftime;
//---complete the path between user busses 3 & 8, DVI11 CH1 and TMU6 CHA
//---set up dvi_11 for rising edge //---set up tmu_6 for rise time measurement
//wait 40 us
210
PN: 071-0999-00
tmu_6->arm(); wait.delay_10_us(4);
//wait 40 us
//---set up and use datalogger----------------------------------func.dlog->power = POWER_MICRO; //set common range to micro //---datalog rise time func.dlog->set_test_no(1); //set rise time test # to 1 func.dlog->test_val(meas_rtime); //pass test result for rtime if(func.dlog->tests[func.dlog->current_test].passed_fail==FAILED_TEST) func.dlog->set_bin(16); //if fail,bin16 if(func.dlog->tests[func.dlog->current_test].display_results) func.dlog->display_results(); //if datalogger on display results //---datalog fall time func.dlog->set_test_no(2); //set fall time test # to 2 func.dlog->test_val(meas_ftime); //pass test result for ftime if(func.dlog->tests[func.dlog->current_test].passed_fail==FAILED_TEST) func.dlog->set_bin(16); //if fail,bin16 if(func.dlog->tests[func.dlog->current_test].display_results) func.dlog->display_results(); //if datalogger on display results //--------------------------------------------------------------//---reset instruments tmu_6->init(); dvi_11->init(); mux_18->init(); }//dvi_time
211
212
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
dut_PropDelay
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO 1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0.1uF
MUX_2_3
CH7
DVI 9 MUX 18
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO 2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
dut_PropDelay Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
213
dut_PropDelay Code
void dut_propDelay(test_function& func) { // The two lines below must be the first two in the function. dut_propDelay_params *ours; ours = (dut_propDelay_params *)func.params; //---declare variables used float dut_pdly;
set_tmu_io_as_output();
//described in User.cpp
//---connect DVI11 CH0 to DUT Vcc //connect DVI11 CH0F to DUT 16 //connect DVI11 CH0S to DUT 16
//---connect TMU to DUT tmu_6->close_relay(TMU_CHAN_A_DUT2); //DUT input tmu_6->close_relay(TMU_HIZ_DUT3); //DUT output //---set up tmu_6 for rise time measurement
214
PN: 071-0999-00
//---initial DVI11 & OVI1 settings dvi_11->set_current(DVI_CHANNEL_0, ours->dut_Icc); ovi_1->set_current(OVI_CHANNEL_0, 1.0e-3f); ovi_1->set_current(OVI_CHANNEL_1, 1.0e-3f); delay(ours->delay_1ms); //wait for above to settle
//---apply Vcc to DUT dvi_11->set_voltage(DVI_CHANNEL_0, ours->dut_Vcc); //---wait a bit... wait.delay_10_us(15); //---apply initial levels to DUT inputs ovi_1->set_voltage(OVI_CHANNEL_0, 5.0f); ovi_1->set_voltage(OVI_CHANNEL_1, 5.0f); //DUT A3 high //DUT B3 high
//---create DUT output edge up_IO2(); //drive TMU IO2 high, described in User.cpp wait.delay_10_us(1); //let the DUT respond //change timeout to 100us
//---set up and use datalogger----------------------------------func.dlog->power = POWER_NANO; //set range to nano func.dlog->set_test_no(1); //set test # to 1 func.dlog->test_val(dut_pdly); //pass test result for ftime if(func.dlog->tests[func.dlog->current_test].passed_fail==FAILED_TEST) func.dlog->set_bin(16); //if fail,bin16 if(func.dlog->tests[func.dlog->current_test].display_results) func.dlog->display_results(); //if datalogger on display results //---------------------------------------------------------------
215
//---power down DUT 'gently' dvi_11->set_voltage(DVI_CHANNEL_0, 0.0f); wait.delay_10_us(15); //---reset instruments dvi_11->init(); ovi_1->init(); mux_18->init(); tmu_6->init(); }//dut_propDelay
216
PN: 071-0999-00
Notes
217
218
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
dut_TrTf Lab
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0.1uF
MUX_2_3
CH7
DVI 9
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
MUX 18
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
dut_TrTf Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____ Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
219
dut_TrTf Code
void dut_TrTf(test_function& func) { // The two lines below must be the first two in the function. dut_TrTf_params *ours; ours = (dut_TrTf_params *)func.params; //---declare variables used float dut_Tr, dut_Tf;
set_tmu_io_as_output();
//described in User.cpp
//---connect DVI11 CH0 to DUT Vcc //connect DVI11 CH0F to DUT 16 //connect DVI11 CH0S to DUT 16
//DUT output
220
PN: 071-0999-00
//---initial DVI11 & OVI1 settings dvi_11->set_current(DVI_CHANNEL_0, ours->dut_Icc); ovi_1->set_current(OVI_CHANNEL_0, 1.0e-3f); ovi_1->set_current(OVI_CHANNEL_1, 1.0e-3f); delay(ours->delay_1ms); //wait for above to settle
//---apply Vcc to DUT dvi_11->set_voltage(DVI_CHANNEL_0, ours->dut_Vcc); //---wait a bit for DUT to stabilize... wait.delay_10_us(20); //---apply initial levels to DUT inputs //DUT A3 high //DUT B3 high
//---create DUT output edge up_IO2(); //drive TMU IO2 high; described in User.cpp wait.delay_10_us(1); //let the DUT respond //change timeout to 200us
//---wait the required 100us... wait.delay_10_us(10); //---arm the TMU tmu_6->arm(); wait.delay_10_us(4);
221
//---create DUT output edge down_IO2(); //drive TMU IO2 low; described in User.cpp wait.delay_10_us(1); //let the DUT respond //change timeout to 200us
//---output Tr/Tf via the datalog function call described in User.cpp //datalog("datalog scaler", "test number", "datalog value", "fail bin number", "notes", func); datalog(POWER_NANO, 1, dut_Tr, 11, "", func); datalog(POWER_NANO, 2, dut_Tf, 11, "", func); //---power down DUT 'gently' dvi_11->set_voltage(DVI_CHANNEL_0, 0.0f); wait.delay_10_us(15); //---reset instruments dvi_11->init(); ovi_1->init(); mux_18->init(); tmu_6->init(); }//dut_TrTf
222
PN: 071-0999-00
11
Code Debugger
Goal
Familiarity with the Visual Studio code debugger.
Objectives
After this unit, students should be able to: Describe the Visual Studio code debugger Setup the the Visual Studio code debugger environment Work with the breakpoints Setup the project proprieties to use the Edit and Continue feature
In This Module
______ Instructor Presentation 1 Hour
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
223
11 - Code Debugger
Notes
224
PN: 071-0999-00
225
11 - Code Debugger
226
PN: 071-0999-00
12
visualISE
Goal
Familiarity with the visualISE hardware debugger.
Objectives
After completing this unit, students should be able to: Describe the visualISE hardware debugger Initiate and use the Auto-Code feature Locate instruments in the UTI using the only system interconnects
In This Module
______ Instructor Presentation 1 Hour
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
227
12 - visualISE
Notes
228
PN: 071-0999-00
visualISE
visualISE is a tool that displays instrument hardware status in a graphical environment. ASL instruments can be directly controlled via this tool (voltages and current can be set, relays manipulated, measurements forced, and so on). visualISE can also capture the statements used to cause instrument changes, allowing the user to copy these statements into their test function source files. visualISE may be run in conjunction with the Visual Studio code debugger to effectively troubleshoot a test function. For the remainder of the visualISE discussion, refer to the visualATE 6.1 User Guide.
229
12 - visualISE
230
PN: 071-0999-00
13
PV3 Instrument
Goal
Familiarity with the PV3 instrument to the level of generating and measuring pulsed currents.
Objectives
After this unit, students should be able to: Describe the PV3 instrument hardware Describe the PV3 instrument software
In This Module
______ ______ Instructor Presentation Knowledge Check 45 10 Minutes Minutes
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
231
10
0.1
TP4
DATA BUS
15 BIT ADC
GND REF
OUT I MEAS
IN
*
V MEAS RANGE OUT V MEAS IN V SENSE
** ** ** ** ** ** ** **
+
DIFF
TEMP MEAS
PN: 071-0999-00
** = FLOATING RETURN
0.03
0.3
30
232
FORCE SWITCHES + + TP13 + + TP16 CONTROL AND DRIVE + TP15 + TP14 + + 7000uF CAPACITO R BANK + + IN OUT TP12 SENSE SWITCHES
13 - PV3 Instrument
DATA BUS
1F
1S
DATA BUS
+ V DRIVE RANGE
2F
2S
3F
3S
DATA BUS
IN
OUT
+ 4F
4S
+65V
5F
5S
SYSTEM GROUND
**
OUT CHARGE MEAS I SENSE IN
**
PV3 Instrument
PV3 Instrument
This section covers the Pulsed Voltage/Current (PV3) instrument, including: Instrument description Key highlights Theory of operation Software statements
233
13 - PV3 Instrument
Theory of Operation
For the hardware discussion, refer to Figure 121 on page 232. The Pulsed Voltage/Current (PV3) instrument is a high current (up to 100 A), single quadrant, floating output supply. This means it can only output positive voltage and positive current (quadrant 1). In order to generate negative voltage and negative current (quadrant 3), the output connections of the PV3 must be swapped in relation to the DUT. The high current is provided by a 7000 F (nominal) capacitor bank that has been charged to a max of +63 V. The ability of the PV3 to deliver current to the DUT is therefore dependant on the amount of time the current is required. A well defined formula is used in determining the length of time an amount of current can be produced given a particular voltage. The floating output aspect is assured by the use of opto-isolators between the inputs to the control circuitries and the rest of the test system. Current flow out to and returning from the DUT, re-circulates within the PV3 output. Care should be taken in observing proper wire gauge, connection integrity, and personnel safety issues when using a high current supply. At the extremes, the PV3 is capable of generating 100 A, 20 V pulses and 50 V, 1 A pulses. Connections from the PV3 to the load are made with force and sense lines. Five sets of these lines are available; five force and 1 sense per set. Discrete power MOSFETs are used as switches in the force and return paths so there are no contacts to fuse during high currents. The voltage and current settings are controlled by 16-bit D to A converters whose outputs are routed through the opto-isolators to the floating control circuit. The voltage and current measurement returns are ranged and routed through the opto-isolators to a system ground referenced, 16-bit (15-bits plus sign) A to D converter. This converter is also used to monitor the voltage charge level on the capacitor bank and the output driver temperature sensor. Power for the floating side of the isolation amplifiers, control loop, and the measurement circuitry is supplied by isolated DC to DC converters. The capacitor bank charging current is fixed at a constant 500 mA and requires approximately 2 seconds (worst case) for full charge. During charging, the capacitor bank is connected to system ground. The PV3 acts much like the DVI and OVI in relation to providing voltage and current to the DUT. It wants to be a voltage source and the programmed current value is never exceeded. This forces consideration of the required DUT voltage for the desired DUT current.
234
PN: 071-0999-00
PV3 Instrument
Constraints
When programming a DUT current value greater than 30 A, the PV3 switches to the 100 A current range automatically and a 300 s max drive on time will be enforced. The PV3 has a maximum DUT voltage of +50. A run-time error message is displayed if the voltage value is programmed greater than 50. High current delivery may require the current_fast() function to maintain integrity of the rising edge of the current pulse.
where: I = DUT current C = PV3 capacitor bank charge value V = difference between the initial capacitor voltage and the DUT's voltage T = duration of the DUT's current pulse Transposing the I and T elements, the formula becomes:
T = C * (V / I)
NOTE: The extra 10 V is required for PV3 circuitry overhead. The following two examples illustrate the calculation. 1. 1.3 A is required at 30 V. To calculate the duration 1.3 A will be available at the required voltage, modify the formula as shown:
T T T T T = = = = = 7mF * ((50V - (30V + 10V)) / 1.3A) 7-3F * ((50 - 40) / 1.3) 7e-3F * (10 / 1.3) 7e-3 * (7.692) 53.84ms
The answer indicates that 1.3 A will be available for 53.84 ms at a voltage of 30V.
235
13 - PV3 Instrument
2. 30 A is required at 20 V. To calculate the duration 30 A will be available at the required voltage, modify the formula as shown:
T T T T T = = = = = 7mF * ((60V - (20V + 10V)) / 30A) 7-3F * ((60 - 30) / 30) 7e-3F * (30 / 30) 7e-3 * (1.0) 7ms
The answer indicates that 30 A will be available for 7ms at a voltage of 20 V. NOTE: In these two examples, the initial capacitor bank voltage value is different. The bank does not require full charge for every situation. It is dependant on the required constant voltage. Typical usage has the capacitor bank fully charging to +63 V.
Software Statements
For the software discussion, refer to the PV3 - Pulsed Voltage/Current Source chapter of the visualATE 6.1 Programming Guide.
236
PN: 071-0999-00
PV3 Instrument
Knowledge Check
1. What are the two basic operating rules for the PV3 instrument?
237
13 - PV3 Instrument
238
PN: 071-0999-00
14
Objectives
After this unit, students should be able to: Program simple pulsed current measurements using the PV3 instrument Program a differential voltage measurement
In This Module
______ Lab Exercise 3 Hours
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
239
Notes
240
PN: 071-0999-00
PV3 Labs
Lab Exercise
PV3 Labs
The PV3 labs includes the following tests: pv3_PulsedI pv3_PulsedInDiffMeas
241
242
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO1
(13)
U1F
(11)
U1E
pv3_PulsedI Lab
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0. 1uF
MUX_2_3
CH7
DDD 7
CH2 CH3 CH4 CH5 CH6 CH8
DVI 9
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
MUX 18
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
DDD 7
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
PV3 Labs
pv3_PulsedI Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____ Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
243
pv3_PulsedI Code
void pv3_PulsedI(test_function& func) { // The two lines below must be the first two in the function. pv3_PulsedI_params *ours; ours = (pv3_PulsedI_params *)func.params; //---declare variables used float result_i, cap_charge_value, calc_time; int timeout = 0;
//***disconnect OVI from resistor**** ovi_1->disconnect(OVI_CHANNEL_6); ovi_1->disconnect(OVI_CHANNEL_7); //*********************************** //***calculate time************************************** if (ours->dut_i > 30.0f) //if on the 100A range, force 300us calc_time = 300e-6f; else calc_time = 7.0e-3 * ((63.0f - (ours->dut_v + 10.0f)) / ours->dut_i); //******************************************************* //---initiate cap bank charging pv3_4->charge_on(); //any previous init() will start cap charging //---close PV3 force and sense switches, connect to DUT pv3_4->close_switch(PV3_HIGH_FORCE_4); pv3_4->close_switch(PV3_HIGH_SENSE_4); pv3_4->close_switch(PV3_LOW_FORCE_5); pv3_4->close_switch(PV3_LOW_SENSE_5); //---set PV3 meas mode to measure cap charge value pv3_4->set_meas_mode(PV3_CHARGE_S); //---wait for above to settle... wait.delay_10_us(50); //500us //---wait for cap bank to charge to full 63 volts cap_charge_value = pv3_4->measure(); //initialize variable while (cap_charge_value < 63.0f && timeout < 2000) //2 seconds max { cap_charge_value = pv3_4->measure(); timeout++; delay(1);
244
PN: 071-0999-00
PV3 Labs
} //---cap bank charged, turn off charging pv3_4->charge_off(); //---set meas mode to measure DUT current pv3_4->set_meas_mode(PV3_MEASURE_CURRENT); //---set the current and voltage levels pv3_4->set_current(ours->dut_i); pv3_4->set_voltage(ours->dut_v); //---set PV3 to fast current to support the higher current values pv3_4->current_fast(); //---wait for above to settle... wait.delay_10_us(50); //500us //***turn PV3 on and measure******************************* pv3_4->drive_on(); wait.delay_10_us(ours->delay_10us); //position where to measure result_i = pv3_4->measure(); //***turn PV3 off****************************************** pv3_4->drive_off(); //---datalog the results datalog(POWER_MILLI, 1, calc_time, 18, "", func); datalog(POWER_MILLI, 2, result_i, 18, "", func); //---reset instruments pv3_4->init(); //opens connect switches, initiates charging ovi_1->init(); //reconnnect relays }//pv3_PulsedI
245
246
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO 1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
pv3_PulsedInDiffMeas Lab
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0. 1uF
MUX_2_3
CH7
DVI 9 MUX 18
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO 2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
PV3 Labs
pv3_PulsedInDiffMeas Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____ Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____ Test Name: ____________________ Limits: min_____ max_____ Scale:_____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
247
pv3_PulsedInDiffMeas Code
void pv3_PulsedInDiffMeas(test_function& func) { // The two lines below must be the first two in the function. pv3_PulsedInDiffMeas_params *ours; ours = (pv3_PulsedInDiffMeas_params *)func.params; //---declare variables used float result_v, result_i, diff_null, cap_charge_value, calc_time; int timeout = 0;
//***disconnect OVI from resistor**** ovi_1->disconnect(OVI_CHANNEL_6); ovi_1->disconnect(OVI_CHANNEL_7); //*********************************** //***calculate time************************************** if (ours->dut_i > 30.0f) //if on the 100A range, force 300us calc_time = 300e-6f; else calc_time = 7.0e-3 * ((63.0f - (ours->dut_v + 10.0f)) / ours->dut_i); //******************************************************* //---initiate cap bank charging pv3_4->charge_on(); //any previous init() will start cap charging //---set up DVI for differential measurement dvi_11->open_relay(CONN_SENSE0); //isolate the sense inputs dvi_11->open_relay(CONN_SENSE1); wait.delay_10_us(50); //wait for relays to open dvi_11->close_relay(CHANNEL_SHORT); //short the sense inputs together dvi_11->set_meas_mode(DVI_CHANNEL_0, DVI_MEASURE_DIFF); dvi_11->set_diff_range(RANGE_10_MV); //select lowest range wait.delay_10_us(50); //wait for above to settle... diff_null = dvi_11->measure_average(10); //measure offset of the DVI diff amp //---reconnect DVI11 sense inputs dvi_11->open_relay(CHANNEL_SHORT); wait.delay_10_us(50); //wait for relay to open
248
PN: 071-0999-00
PV3 Labs
dvi_11->close_relay(CONN_SENSE0); //reconnect the sense inputs dvi_11->close_relay(CONN_SENSE1); //---select appropriate diff vrange if (ours->dut_i > 90.0f) dvi_11->set_diff_range(RANGE_30_V); else dvi_11->set_diff_range(RANGE_10_V); //---connect DVI11 S0 and S1 to DUT dvi_9->close_relay(DVI_EXT_DRV1); //close K1 & K2 wait.delay_10_us(50); //wait for above relays to close //---close PV3 force and sense switches, connect to DUT pv3_4->close_switch(PV3_HIGH_FORCE_4); pv3_4->close_switch(PV3_HIGH_SENSE_4); pv3_4->close_switch(PV3_LOW_FORCE_5); pv3_4->close_switch(PV3_LOW_SENSE_5); //---set PV3 meas mode to measure cap charge value pv3_4->set_meas_mode(PV3_CHARGE_S); //---wait for above to settle... wait.delay_10_us(50); //500us //---wait for cap bank to charge to full 63 volts cap_charge_value = pv3_4->measure(); //initialize variable while (cap_charge_value < 63.0f && timeout < 2000) //2 seconds max { cap_charge_value = pv3_4->measure(); timeout++; delay(1); } //---cap bank charged, turn off charging pv3_4->charge_off(); //---set meas mode to measure DUT current pv3_4->set_meas_mode(PV3_MEASURE_CURRENT); //---set the current and voltage levels pv3_4->set_current(ours->dut_i); pv3_4->set_voltage(ours->dut_v); //---set PV3 to fast current pv3_4->current_fast();
249
//---wait for above to settle... wait.delay_10_us(50); //500us //***turn PV3 on and measure******************************* pv3_4->drive_on(); wait.delay_10_us(ours->delay_10us); result_i = pv3_4->measure(); result_v = dvi_11->measure(); //***turn PV3 off****************************************** pv3_4->drive_off(); //---calculate measured voltage result -= diff_null; //---datalog the results datalog(POWER_MILLI, 1, calc_time, 19, "", func); datalog(POWER_UNIT, 2, result_i, 19, "", func); datalog(POWER_UNIT, 3, result_v, 19, "", func); //---clean up ovi_1->init(); //reconnects ovi relays pv3_4->init(); //opens connect switches, initiates charging dvi_9->init(); //resets relay drivers, opens K1 & K2 dvi_11->init(); //sets both channels back to normal operation }//pv3_PulseInDiffMeas
250
PN: 071-0999-00
15
ACS Instrument
Goal
Familiarity with the ACS instrument to the level of programming simple waveforms and performing RMS measurements.
Objectives
After completing this unit, students should be able to: Describe the ACS instrument software Describe the ACS instrument hardware
In This Module
______ ______ Instructor Presentation Knowledge Check 1.5 30 Hours Minutes
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
251
252
D_SIG_OUT
AMPLITUDE
closed by init();
15 - ACS Instrument
DATA LOAD
TP2 TP3
PRG CLK
TP4 (divided by 10)
ADDR CNTRL
LOOP BACK (1) OFFSET ATTEN 1:10 100 & 500 kHz LPF
D_R_BIT1 B_R_BIT1
SYNC_BIT1
EXT_CLK
D_R_BIT2 B_R_BIT2
D_CLK
SYNC_BIT3
RMS_CH1
D_RMS_CH1
ATTEN 1:10
AC/DC COUPLING
GAIN 1:2:5:10
AC TO RMS
RMS_CH2
D_RMS_CH2
ATTEN 1:10
AC/DC COUPLING
GAIN 1:2:5:10
AC TO RMS
SEL_ADC_IN1
RMS_CH3
D_RMS_CH3
ATTEN 1:10
AC/DC COUPLING
GAIN 1:2:5:10
AC TO RMS
SEL_ADC_IN2
12 BIT A/D
DATA BUS
RMS_CH4
D_RMS_CH4
PN: 071-0999-00
ATTEN 1:10 AC/DC COUPLING
GAIN 1:2:5:10
AC TO RMS
SEL_ADC_IN3
ACS Instrument
ACS Instrument
This section details the ACS instrument, including: Instrument description Key highlights Theory of operation Software discussion
Relay connections on all four outputs Four channels of AC to true RMS conversion 12 bit A/D for measure Relay connections on all inputs
Theory of Operation
For the hardware discussion, refer to Figure 124 on page 252 and to the ACS - AC Source chapter of the visualATE 6.1 Programming Guide.
253
15 - ACS Instrument
Software Statements
For the software discussion, refer to the ACS - AC Source chapter of the visualATE 6.1 Programming Guide.
254
PN: 071-0999-00
ACS Instrument
Knowledge Check
1. What two functions does the ACS support?
255
15 - ACS Instrument
256
PN: 071-0999-00
16
Objectives
After completing this unit, students should be able to program simple waveforms using the ACS instrument
In This Module
______ Lab Exercise 4 Hours
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
257
Notes
258
PN: 071-0999-00
ACS Labs
Lab Exercise
ACS Labs
The ACS labs include the following tests: acs_Amplitude acs_Frequency acs_TrnglWv acs_LoadFromFile
259
260
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO 1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
acs_Amplitude Lab
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0. 1uF
MUX_2_3
CH7
DVI 9 MUX 18
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO 2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
ACS Labs
acs_Amplitude Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
261
acs_Amplitude Code
void acs_Amplitude(test_function& func) { // The two lines below must be the first two in the function. acs_Amplitude_params *ours; ours = (acs_Amplitude_params *)func.params; //---declare variables used float meas_Vrms; acs_5->ldram(ours->frequency); //load frequency //insert 500KHz filter //first... //...0 amplitude next...
acs_5->set_meas_mode(ACS_CHANNEL_4, ACS_5V_RMS_RANGE, ACS_AC_COUPLING); acs_5->start(); //start waveform generator //wait for above to settle...
wait.delay_10_us(ours->delay_10us);
acs_5->set_level(ours->amplitude, ours->offset, ACS_PEAK_LEVEL);//set amplitude delay(ours->delay_1ms); //wait for AWG to come up to full amplitude, //*and* for the RMS converter to settle. meas_Vrms = acs_5->measure(); //perform measurement with default 10 samples //---datalog the result-------------------------------------func.dlog->power = POWER_UNIT; func.dlog->set_test_no(1); func.dlog->test_val(meas_Vrms); if (func.dlog->tests[func.dlog->current_test].passed_fail == FAILED_TEST) func.dlog->set_bin(20); if (func.dlog->tests[func.dlog->current_test].display_results) func.dlog->display_results(); //----------------------------------------------------------//---reset ACS5 to default state acs_5->init();
262
PN: 071-0999-00
ACS Labs
}//acs_Amplitude
263
264
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO 1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
acs_Frequency Lab
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0. 1uF
MUX_2_3
CH7
DVI 9 MUX 18
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO 2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
ACS Labs
acs_Frequency Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
265
acs_Frequency Code
void acs_Frequency(test_function& func) { // The two lines below must be the first two in the function. acs_Frequency_params *ours; ours = (acs_Frequency_params *)func.params; //---declare variables used float meas_freq;
acs_5->start(); delay(1);
acs_5->set_level(ours->amplitude, ours->offset, ACS_PEAK_LEVEL);//set ampltd delay(ours->delay_1ms); tmu_6->arm(); wait.delay_10_us(4); //measure 1/2 cycle //wait for TMU to settle...
266
PN: 071-0999-00
ACS Labs
//---datalog the result-------------------------------------func.dlog->power = POWER_KILO; func.dlog->set_test_no(1); func.dlog->test_val(meas_freq); if (func.dlog->tests[func.dlog->current_test].passed_fail == FAILED_TEST) func.dlog->set_bin(21); if (func.dlog->tests[func.dlog->current_test].display_results) func.dlog->display_results(); //----------------------------------------------------------//---reset ACS5 & TMU6 to default state acs_5->init(); tmu_6->init(); }//acs_Frequency
267
268
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
acs_TrnglWv
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0. 1uF
MUX_2_3
CH7
DVI 9
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
MUX 18
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO2
TMU 6 AGS
CH3F
MUX_4_1 MUX_5_BUS5
OVI 1
MUX_5_2 MUX_5_3 MUX_5_4 CH3S
TMU 6 OVI 1
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
ACS Labs
acs_TrnglWv Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
269
acs_TrnglWv Code
void acs_TrnglWv(test_function& func) { // The two lines below must be the first two in the function. acs_TrnglWv_params *ours; ours = (acs_TrnglWv_params *)func.params; //---declare variables used unsigned short d,i; //d = DAC code, i = loop index d=0; i=0; //make sure the variables are initialized to 0
//---generate data and load ACS memory----------------------for (i = 0; i < 4096; i++) //ramp up { acs_5->load_data(i, (d * 16)); //upshift AWG data to upper 12-bits d++; } i=4095; d=4095; //make sure the variables are initiated to 4095 //increment data
for (i = 4095; i < 8191; i++) //ramp down { acs_5->load_data(i, (d * 16)); //upshift AWG data to upper 12-bits d--; } acs_5->load_data(8190, 2); //add SB1 acs_5->load_data(8191, 1); //add LB //----------------------------------------------------------acs_5->card.clock = CLK_BY_8; //set the Fs to 8MHz //insert 500KHz //filter first... //...0 amplitude next... //decrement data
270
PN: 071-0999-00
ACS Labs
acs_5->start();
//---set a breakpoint and verify output signal with o'scope acs_5->stop(); //stop generating the waveform
//---output dummy info via the datalog function call described in User.cpp //datalog("datalog scaler", "test number", "datalog value", "fail bin number", "notes", func); datalog(POWER_UNIT, 1, 1, 22, "datalog n/a", func); //---reset ACS5 to default state acs_5->init(); }//acs_TrnglWv
271
272
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO 1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
acs_LoadFromFile
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
MUX_2_3
CH7
DVI 9 MUX 18
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO 2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
ACS Labs
acs_LoadFromFile Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
273
acs_LoadFromFile Code
void acs_LoadFromFile(test_function& func) { // The two lines below must be the first two in the function. acs_LoadFromFile_params *ours; ours = (acs_LoadFromFile_params *)func.params; FILE* fp1; //create file pointer a, d, i;
unsigned short d = 0; i = 0;
/* //---generate address and data arrays---------------------unsigned shortwvfrm_addr[8195], wvfrm_data[8195]; for (i = 0; i < 4096; i++) //ramp up { wvfrm_addr[i] = i; wvfrm_data[i] = (d * 16); d++; } d=4095; i=4095; //make sure the variables are initialized to 4095 //ramp down //increment data
for (i = 4095; i < 8191; i++) { wvfrm_addr[i] = i; wvfrm_data[i] = (d * 16); d--; } //decrement data
wvfrm_addr[8190] = 8190; wvfrm_data[8190] = 2; //add SB1 wvfrm_addr[8191] = 8191; wvfrm_data[8191] = 1; //add LB //--------------------------------------------------------//---open the file and save data--------------------------fp1=fopen("c:\\asl_nt\\users\\lists\\vate_class_project\\programs \\ACS_TrnglWv_Data.txt","w"); for (i = 0; i < 8192; i++) //stuff address & data into file...
274
PN: 071-0999-00
ACS Labs
fprintf(fp1,"%d \t %d \n", wvfrm_addr[i], wvfrm_data[i]); //...from arrays. fclose(fp1); //---done and close file----------------------------------*/ //---open the file and read data--------------------------fp1=fopen("c:\\asl_nt\\users\\lists\\vate_class_project\\programs \\ACS_TrnglWv_Data.txt","r"); for (i = 0; i < 8192; i++) //read address & data from file... { fscanf(fp1, "%d \t %d \n", &a, &d); //...into 'a' & 'd'. acs_5->load_data(a, d); } fclose(fp1); //---done and close file----------------------------------//---setup ACS5-------------------------------------------acs_5->card.clock = CLK_BY_8; //set the Fs to 8MHz acs_5->set_path(ACS_BASE_FILTER, ACS_10_VOLT_RANGE); acs_5->set_level(0, 0, ACS_PEAK_LEVEL); acs_5->close_relay(D_SIG_OUT); acs_5->close_relay(D_R_BIT1); delay(1); //insert 500KHz //filter first... //...0 amplitude next... //load read address & data into ACS memory
//wait for above to settle... //start waveform generator //set output level
acs_5->start();
//---set a breakpoint and verify output signal with o'scope acs_5->stop(); //stop generating the waveform
//---output dummy info via the datalog function call described in User.cpp //datalog("datalog scaler", "test number", "datalog value", "fail bin number", "notes", func); datalog(POWER_UNIT, 1, 1, 23, "datalog n/a", func);
275
276
PN: 071-0999-00
17
Objectives
After completing this unit, students should be able to: Describe analog versus digital devices Describe the considerations for creating a simplified digital test
In This Module
______ Instructor Presentation 1 Hour
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
277
X2
AND
278
PN: 071-0999-00
Figure 130 represents an AND gate and its truth table, which describes the gates operation. For this type of digital logic device, the output (C) is True only when both inputs (A and B) are True. Any other combination on the inputs results in the output being False. To functionally test this device, the four combinations of input data must be presented at the proper voltage levels and proper rate. The rate and voltage levels are defined by the DUT specification. The output response of the DUT must be compared with a known quantity to prove proper operation. Comparisons must be done at the voltage levels, defined in the DUT specification. When is the DUT output observed? To illustrate the answer, the truth table is rotated and redrawn as a timing diagram in Figure 131. Figure 131. Truth Table and Timing Diagram
AND Gate Truth Table State 1 State 2 State 3 State 4 State 5 A B C
A 0 0 1 1
B 0 1 0 1
C 0 0 0 1
Testing a digitally oriented device also requires the ability to observe the DUTs output at a precise point in time. If the output is observed before the specified output transition time, good parts may have failed. Consequently, if the output is observed much later than the specified time, bad parts may have passed. The amount of time the above states occupy is known as the period or cycle and defines the data rate.
279
Data is allowed to transition from a low-to-high or from a high-to-low on delayed edges (leading edge, trailing edge) and these time delays are referenced to the beginning of the cycle. Figure 132. Delayed Edges
Leading Edge Trailing Edge
A B C
280
PN: 071-0999-00
18
DDD Instrument
Goal
Familiarity with the DDD hardware and software.
Objectives
After completing this unit, students should be able to: Describe the DDD instrument hardware Describe the software that supports the DDD instrument
In This Module
______ ______ Instructor Presentation Knowledge Check 1 30 Hour Minutes
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
281
282
TRAIL DELAY (TG2) XMIT MEMORY (32K/128K)
CHANNELS 2 THROUGH 8 TRANSMIT
18 - DDD Instrument
REGISTER
PIN DRIVER
CHANNELS 2 THROUGH 8 SW CONTROL HI DRIVE (-5v to +15v) SWITCH CONTROL (8.33 MHz) LO DRIVE (-5v to +5v)
50
CHANNEL 1 OF 8
RECEIVE COMPARATOR
10K
10K
DATA BUS
INDIVIDUAL CHANNEL
PN: 071-0999-00
DDD Instrument
DDD Instrument
This section covers the digital driver/detector (DDD) instrument, including: Instrument description Key highlights Theory of operation Software discussion
Theory of Operation
For the hardware discussion, refer to Figure 133 on page 282. There are two memories in the DDD: One to source data to the DUT (Xmit) One to receive data from the DUT (receive)
Both are clocked by the same source, which can be programmed from 320 kHz to 14 MHz. Data from the Xmit memory is routed to an individual channel where the data edges are delayed and then passed on to the pin driver. The edges are delayed by two timing generators, TG1 and TG2, which affect the leading edge and trailing edge respectively. Both edges must remain with cycle boundaries. The pin driver output levels (high and low) are controlled by two DACs. The High Drive DAC has a range of -5 V to +15 V. The Low Drive DAC has a range of -5 V to +5 V. There is no compile-time check for proper polarity. It is important to maintain proper polarity as intermittent data output result otherwise.
283
18 - DDD Instrument
The pin driver output connects to the user test interface via an analog switch. Data coming from the DUT connects to the channel comparator via another, separate analog switch. The switches are exclusive in typical operation. One is open while the other is closed. The control of the switches is in direct relation to the type of data being sourced from Xmit memory. There are five data characters used to program Xmit memory: 1, 0 (zero), T, Z, and X All data characters are interpreted in real time while the clock is running and data is being output. The first four characters represent Drive data. The pin driver connect switch is closed while the comparator connect switch is opened. The X represents Receive data. With this character, the comparator connect switch is closed and the pin driver connect switch is opened. The ability to change direction of the DDD channel facilitates drive/receive on a cycle basis. The DDD cannot drive and receive within the same cycle. The interpretation of data characters also takes time along with the analog switch action. Therefore, if drive/receive operation is desired, the maximum clock frequency is 8 MHz. Data coming from the DUT is routed to one side of the channel input comparator. The other side of the comparator is connected to the Compare Reference DAC, which has a programmable voltage range of -2 V to +8 V. Should the level from the DUT exceed the compare reference voltage, the comparator output indicates a 1. If the level from the DUT is below the comparator reference, a 0 is indicated. The comparison result is routed to a register that is clocked TG1. The output of the register goes to Receive memory. There is no real-time Expect data comparison, only comparator output collection. A separate examination of Receive memory is required to determine if the DUT passed or failed any particular Test. There is an inherent round trip delay of two clocks: One clock is used to transmit data One clock is used to read data
This results in data being offset by two addresses in Receive memory due to the common clock that drives both Xmit and Receive memories. This effect is known as Pipeline.
284
PN: 071-0999-00
DDD Instrument
Interrogation of Receive memory may be done in two fashions: A direct, physical address memory read A logical vector based read
The vector based read accounts for the inherent pipeline and offsets the read by two addresses. It accepts expect data and returns a True/False based upon the comparison of the read data and expected data. The physical address read does not account for the Pipeline. The user must add at least two addresses to locate the desired data (not considering any delay caused by the DUT). The return of the physical address read is a binary weighted decimal number that represents the 8 digital channels as shown in Figure 134. Figure 134. Eight Digital Channels
DDD Channel Binary Weight 8 128 7 64 T A return of 67 indicates channels 1, 2, and 7 are True 67 = 64 + 2 + 1 6 32 5 16 4 8 3 4 2 2 T 1 1 T
Software Statements
For the software discussion, refer to the DDD - Digital Driver and Detector chapter of the visualATE 6.1 Programming Guide.
285
18 - DDD Instrument
Notes
286
PN: 071-0999-00
DDD Instrument
Knowledge Check
1. How many DDD instruments can reside in an ASL 1000 and with what restrictions?
2. How many DDD instruments can reside in an ASL 3000 and with what restrictions?
3. Both Xmit and Receive memories on the DDD use the same clock. What does this cause?
7. What are the restrictions for setting delay on any one channel?
287
18 - DDD Instrument
288
PN: 071-0999-00
19
Objectives
After completing this unit, students should be able to perform digital tests using the DDD instrument
In This Module
______ Lab Exercise 4.5 Hours
Resources
visualATE 6.1 Programming Guide visualATE 6.1 User Guide
289
Notes
290
PN: 071-0999-00
DDD Labs
Lab Exercise
DDD Labs
The DDD lab includes the following tests: dut_Icc dut_Functional acs_ExtClk
291
292
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
dut_Icc Lab
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO 1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0.1uF
MUX_2_3
CH7
DVI 9 MUX 18
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO 2
TMU 6 AGS
CH3F
MUX_4_1 MUX_5_BUS5
OVI 1
MUX_5_2 MUX_5_3 MUX_5_4 CH3S
TMU 6 OVI 1
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
DDD Labs
dut_Icc Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Test Name: ____________________ Limits: min_____max_____Scale: _____ Unit: _____ Test Name: ____________________ Limits: min_____max_____Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
293
dut_Icc Code
void dut_Icc(test_function& func) { // The two lines below must be the first two in the function. dut_Icc_params *ours; ours = (dut_Icc_params *)func.params; //---declare variables used float icc_minV, icc_maxV; //---generic DDD setup ddd_7->ddd_set_clock_period(ours->period); //set clock period ddd_7->ddd_set_hi_level(ours->hidrv); //set drive high level for Icc maxV ddd_7->ddd_set_lo_level(ours->lodrv); //set drive low level for Icc minV ddd_7->ddd_set_voltage_ref(ours->cmplvl); //n/a in this test ddd_7->ddd_set_no_delay(); //basic cycle transition
//---connect DVI11 CH0 to DUT Vcc //connect DVI11 CH0F to DUT 16 //connect DVI11 CH0S to DUT 16
delay(ours->delay_1ms);
//---set DVI11 CH0 to DUT Vcc level & measure mode to current
294
PN: 071-0999-00
DDD Labs
wait.delay_10_us(ours->delay_10us); //---load pattern data ddd_7->ddd_load_pattern(0, ddd_7->ddd_load_pattern(1, ddd_7->ddd_load_pattern(2, ddd_7->ddd_load_pattern(3, //---set DUT pins to 0v ddd_7->ddd_end_pattern(4); ddd_7->ddd_run_pattern(); wait.delay_10_us(2);
//loop it...
//wait 20us //hold the channels low 1e-3f); ours->lodrv); 1e-3f); ours->lodrv); 1e-3f); ours->lodrv); //wait for above to settle...
ddd_7->ddd_stop_pattern();
wait.delay_10_us(ours->delay_10us); //---make the Iccl measurement icc_minV = dvi_11->measure(); //---load pattern data ddd_7->ddd_load_pattern(0, ddd_7->ddd_load_pattern(1, ddd_7->ddd_load_pattern(2, ddd_7->ddd_load_pattern(3, //---set DUT pins to 4.5v ddd_7->ddd_end_pattern(4); ddd_7->ddd_run_pattern(); wait.delay_10_us(2);
//loop it...
ddd_7->ddd_stop_pattern();
295
//---datalog the results-------------------------------------func.dlog->power = POWER_MILLI; //common range //---datalog icc_minv func.dlog->set_test_no(1); func.dlog->test_val(icc_minV); if (func.dlog->tests[func.dlog->current_test].passed_fail == FAILED_TEST) func.dlog->set_bin(24); if (func.dlog->tests[func.dlog->current_test].display_results) func.dlog->display_results(); //---datalog icc_maxv func.dlog->set_test_no(2); func.dlog->test_val(icc_maxV); if (func.dlog->tests[func.dlog->current_test].passed_fail == FAILED_TEST) func.dlog->set_bin(24); if (func.dlog->tests[func.dlog->current_test].display_results) func.dlog->display_results(); //----------------------------------------------------------//---power down DUT 'gently' dvi_11->set_voltage(DVI_CHANNEL_0, 0.0f); wait.delay_10_us(ours->delay_10us); //---set OVI1, DDD7, DVI11 & MUX18 to default states ovi_1->init(); ddd_7->init(); dvi_11->init(); mux_18->init(); }//dut_Icc
296
PN: 071-0999-00
DDD Labs
Notes
297
298
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
TMU 6
IO1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
dut_Functional Lab
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_ CLK
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0.1uF
MUX_2_3
CH7
DVI 9
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
MUX 18
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
DDD Labs
dut_Functional Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
299
dut_Functional Code
void dut_Functional(test_function& func) { // The two lines below must be the first two in the function. dut_Functional_params *ours; ours = (dut_Functional_params *)func.params; //---declare variables used float lead_delay, trail_delay, strobe_delay; short short short i; compare_result[15]; read_result[15]; //flush the arrays...
//---calculate edge delays lead_delay = ours->period * 0.1f; //10% of period trail_delay = ours->period * 0.90f; //90% of period strobe_delay = ours->period * 0.50f; //50% of period //---generic setup ddd_7->ddd_set_clock_period(ours->period); ddd_7->ddd_set_hi_level(ours->hidrv); ddd_7->ddd_set_lo_level(ours->lodrv); //set clock period
//set drive high level //set drive low level //set compare level
lead_delay, trail_delay); lead_delay, trail_delay); lead_delay, trail_delay); lead_delay, trail_delay); lead_delay, trail_delay); lead_delay, trail_delay); strobe_delay, strobe_delay + 5e-9); strobe_delay, strobe_delay + 5e-9);
300
PN: 071-0999-00
DDD Labs
//---connect DVI11 CH0 to DUT Vcc mux_18->close_relay(MUX_3_1); mux_18->close_relay(MUX_3_3); mux_18->close_relay(MUX_4_4); mux_18->close_relay(MUX_4_2); //---wait for above to settle... delay(ours->delay_1ms); //---set DVI11 CH0 to DUT Vcc level dvi_11->set_current(DVI_CHANNEL_0, ours->dut_Icc); dvi_11->set_voltage(DVI_CHANNEL_0, ours->dut_Vcc); //---wait for DVI11 to settle... wait.delay_10_us(ours->delay_10us); //---set a breakpoint on the following 'run' command and observe the //---free running pattern with a scope. Trigger the scope on DDD CH1. ddd_7->ddd_end_pattern(ours->no_of_vectors); //number of vectors to run ddd_7->ddd_run_pattern(); //---stop the free running pattern ddd_7->ddd_stop_pattern(); //---perform a single run of the pattern from address 0 to 9 ddd_7->ddd_run_pattern(0, 9); //vectors 8 & 9 are run to flush the pipe wait.delay_10_us(ours->delay_10us); //wait for run to complete
//---use the code debugger to observe the 'compare_result' array for (i = 0; i < 9; i++) { compare_result[i] = ddd_7->ddd_compare_pattern("11XXXXXX", i); read_result[i] = ddd_7->ddd_read_pattern(i); } //---output read_result[] info via the datalog function call described in User.cpp
301
//datalog("datalog scaler", "test number", "datalog value", "fail bin number", "notes", func); datalog(POWER_UNIT, 1, read_result[9], 25, "S/B 192", func); //---power down DUT 'gently' dvi_11->set_voltage(DVI_CHANNEL_0, 0.0f); wait.delay_10_us(ours->delay_10us); //---reset instruments ddd_7->init(); dvi_11->init(); mux_18->init(); }//dut_Functional
302
PN: 071-0999-00
DDD Labs
Notes
303
304
ACS 5
S1
(6) (8) (5)
+5V
U1C
(9)
U1 Vcc
U1D CH4FH CH4SH
C1 0.1uF
PV3 4 PV3 4
GND
(12) (10)
U1 GND
S2 HiZ 4 OUT CH4
acs_ExtClk Lab
TMU 6
IO1
(13)
U1F
(11)
U1E
DVI 11 DVI 9
EXT _DRV2
K1
+12V
(K1 & K2 pin 3)
K1 & K2 pin 2
MUX_BANK_8_1
R4 0.1 Ohm 1%
DVI 11
S1 CH7S CH7F MUX_8_1 MUX_1_BUS9
B US_9 BUS _8
DVI 9
CH0F CH0S MUX_8_BUS8 MUX_8_2 MUX_8_GND MUX_8_3 MUX_8_4 MUX_BANK_1_2 MUX_7_1 MUX_2_BUS2
B US_2 B US_7
F0
MUX_1_1
R1
1.2K 5%
MUX_1_2
R2
130K 5%
MUX_1_3
LED
OVI 1 OVI 1
ACS 5
EXT_CL K
MUX_2_2 MUX_2_GND
V cc
(14)
C2 0. 1uF
MUX_2_3
CH7
DVI 9
MUX_7_4 MUX_BANK_6_7 MUX_6_1 MUX_3_BUS3
B US_3 B US_6
MUX_2_4
MUX 18
DDD 7
CH8
(5) (9) (10) C2 A3 B3 3 Y3 (8)
DDD 7
DVI 11
MUX_6_BUS6 MUX_6_2 MUX_6_GND MUX_6_3 MUX_6_4
(4)
F0
MUX_3_1
OVI 1 OVI 1
R3
1.2K 5%
MUX_3_2
(11) (7)
C3 GND
MUX_3_3
DUT
(3) (1)
U1B
U1A
(2)
IO2
TMU 6 AGS
MUX_4_1 MUX_4_BUS4
B US_4 B US_5
CH3F CH3S
OVI 1 OVI 1
TMU 6
CHA 2
MUX_4_2 MUX_5_BUS10
TMU 6
HiZ 3
MUX_4_3
DVI 11
MUX_BANK_4_5
S0
MUX_4_4
PN: 071-0999-00
DDD Labs
acs_ExtClk Worksheet
Test Function Name: ____________________
P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____ P/P: ________________ Type: ________ Value: ______ Scale: _____ Unit: _____
Concept:___________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
305
acs_ExtClk Code
void acs_ExtClk(test_function& func) { // The two lines below must be the first two in the function. acs_ExtClk_params *ours; ours = (acs_ExtClk_params *)func.params; //---generic DDD setup------------------------------------ddd_7->ddd_set_clock_period(ours->period); //set clock period ddd_7->ddd_set_hi_level(ours->hidrv); ddd_7->ddd_set_lo_level(ours->lodrv); ddd_7->ddd_set_no_delay(); //set drive high level //set drive low level
//---load DDD pattern data ddd_7->ddd_load_pattern(0, 500, "XXXXXXX0", "XXXXXXX1"); //---generic ACS setup------------------------------------acs_5->ldram(ours->frequency); //load frequency acs_5->set_path(ACS_BASE_FILTER, ACS_10_VOLT_RANGE); acs_5->set_level(0, 0, ACS_PEAK_LEVEL); acs_5->close_relay(D_SIG_OUT); acs_5->close_relay(D_CLK); delay(1); //insert 500KHz //filter first... //...0 amplitude next...
//---start the ACS with ExtClk----------------------------acs_5->start(ACS_EXT_CLK); //start waveform generator acs_5->set_level(ours->amplitude, 0.0f, ACS_PEAK_LEVEL); delay(1); //let output reach max amplitude //set output level
//---set a breakpoint and verify output signal with o'scope ddd_7->ddd_end_pattern(ours->no_of_vectors); //run enough to output 1 cycle ddd_7->ddd_run_pattern(); //continually loop DDD, continually output sinewave //stop continuous loop
ddd_7->ddd_stop_pattern();
ddd_7->ddd_run_pattern(0, ours->no_of_vectors);//run DDD once, output //one ACS cycle. acs_5->stop(); //stop generating the waveform
306
PN: 071-0999-00
DDD Labs
//---output dummy info via the datalog function call described in User.cpp //datalog("datalog scaler", "test number", "datalog value", "fail bin number", "notes", func); datalog(POWER_UNIT, 1, 1, 26, "datalog n/a", func); //---reset ACS5 & DDD7 to default states acs_5->init(); ddd_7->init(); }//acs_ExtClk
307
308
PN: 071-0999-00
Hardware Foundations
This section includes an overview of: ASL 1000 components ASL 3000 components ASL 1000 / ASL 3000 Differences
309
310
A - Hardware Foundations
Cooling Fans
Slot 1
65 V 50 V 24 V 15 V +12 V 5 V
Voltages are available for the user Voltages are not fused
PN: 071-0999-00
Slot/UTI Relationship - Odd numbered slots have 16 connections to the UTI - Even numbered slots have 32 connections to the UTI 32 Paths 16 Paths
311
A - Hardware Foundations
DC Meter
RF Power Meter*
Computer
(same as ASL 1000)
RF Generator *
MVNA*
RF Generator *
RF Generator *
Testhead
Power Supply
312
PN: 071-0999-00
27
23 21
31
28
Slots 121: ASL 1000 identical Slots 2326 (no odd/even path constraint): MDI Slot 27: CLK4 Slots 28*31 (no odd/even path constraint): AVD/AWG
313
A - Hardware Foundations
Testhead
Number of slots: 30 Slots 1-21 are identical. Slots 23-31 have improved bandwidth and are ASL 1000 compatible. Internal bus lines: Nine uncommitted, plus synchronization and trigger User test interface: 11 each, 108-pin spring pin blocks Fans: 4 x 6 inch fans with filter Switches: User test interface power on/off Base configuration: DVI 9 Load Board Relay control: 64 C-bits
Power Supply
Voltages: Additional +3.3 V Weight: ~150 lbs Adjustments: Individual supply external, adjustable to 5% Lights: LEDs indicating voltage is within 10% of stated value AC power: 208 VAC, 50 A, single phase, 3 wire, 50/60 Hz
314
PN: 071-0999-00
Software Components
This section contains an overview of the software components including: visualATE global view Lists, test functions, and test programs Test solution development contrasts Purpose of Create and Engineering modes visualATE Environment lab
315
B - Software Components
visualATE
Instruments
DUT
316
PN: 071-0999-00
Test Function
A test function is a C-code module containing instrument statements that command the instrumentation to stimulate and measure the response of the DUT.
Lists
A List is a collection of compiled test functions that resides in .dll file, which stands for Dynamic Linked Library. On its own, the List does nothingit is not a test program. There is nothing inside the List to control the execution sequence of the resident test functions.
Test Program
A test program is a file that defines the execution sequence of test functions that reside in a List .dll file and contains the following information: Test functions selection Test functions execution sequence Pass Parameter values Limit values
317
B - Software Components
Visual Studio is used to edit and build the test function source code files into the List dll.
Engineering
Engineering is used to: Select and set the execution order of test functions (in the built List dll) Modify Pass Parameter values Modify Limit values Save this information into a test program .prg file
318
PN: 071-0999-00
Source Files
"Main()" { Continuity(); Icc(); Vol(); Voh(); } Continuity() { <source code> } Icc() { <source code> } Vol() { <source code> } Voh() { <source code> }
...compile...
binary executable
319
320
Source Files
B - Software Components
Voh
Test Program
Instead of "hard coding" the device specific value, the use of Pass Parameters is encouraged.
Determines which List is loaded and sets the execution order of Test Functions in the List.
Pass Parameters are elements of a Structure unique to a Test Function, meaning, every Test Function has its own Structure for storage. The Test Function name is used, in part, to name its Structure.
The address pointer "ours" is reassigned to reference the current Structure when a Test Function is active.
PN: 071-0999-00
(...done in Create)
(...done in Engineering)
Lab Exercise
Lab Procedure
During this portion of the class, the students explore Operator and Engineering modes of visualATE on the ASL test system. Items to be discussed are: Operator Loading and running a test program Examination of the Operator summary and datalog windows Discussion of button functionality Detailed examination of the datalog output Program properties Examination of the program window Discussion of button functionality Insertion and removal of test function descriptions Enabling/disabling test function execution Discussion of button functionality Usage of the single Test histogram Usage of the single test time domain Usage of the X/Y plot
Engineering
321
B - Software Components
Notes
322
PN: 071-0999-00
Software Foundations
This section contains: visualATE directory structure Programming syntax and conventions Instrument pointer definition
Software Foundations
323
C - Software Foundations
users lists
vate class demo
datalog 78xx debug NE57x programs Folder name and .lst name will be the same.
contains datalog files (.dl4) and lot summary files (.ls4) contains Test Function binary files (.obj) and built List file (.dll) contains test program files (.prg) Test Function List support files
324
PN: 071-0999-00
Software Foundations
mux_18->close_relay(MUX_1_1)
Correct programming syntax statement for a MUX card residing in slot 18
mux_18->close_relay(MUX_1_1)
An address pointer described as: Instrument type and slot number
mux_18->close_relay(MUX_1_1)
Read as pointed to, described as: a hyphen and greater than
mux_18->close_relay(MUX_1_1)
Instrument command , typically in lower case
mux_18->close_relay(MUX_1_1)
Command argument, or input to the command
The address pointer shown is not part of visualATE core code. (It is not built into the visualATE system software.) Instrument address pointers are generated every time a List is developed. The address pointers are generated and inserted into code by Create based upon input from the user.
325
C - Software Foundations
The second major step in List development is to define which instruments are used. This is done by filling in the slot selection in the List Properties > Boards matrix as shown in Figure 147. Figure 147. List PropertiesBoards Matrix
326
PN: 071-0999-00
Software Foundations
Filling in the used instruments is done by clicking on the down arrow and choosing a particular instrument as shown in Figure 148. Figure 148. List PropertiesInstrument Selection
Once the instruments have been selected and the OK button is clicked, two very important actions occur: Instrument address pointers are defined and inserted into User.cpp and User.h Required set of instruments is defined and recorded
This recorded instrument requirement is used during test program load to verify compatibility between the target test system and test program instrument usage. It is strongly suggested that only the instruments actually used in the test code be selected. This increases the portability of the final test solution. For example: if an OVI is selected for slot 1, then the target ASL system is required to have an OVI in slot 1 - even if the OVI is never referenced in the test code.
327
C - Software Foundations
Notes
328
PN: 071-0999-00