US4903199A - Method of increasing the speed of test program execution for testing electrical characteristics of integrated circuits - Google Patents

Method of increasing the speed of test program execution for testing electrical characteristics of integrated circuits Download PDF

Info

Publication number
US4903199A
US4903199A US07/183,195 US18319588A US4903199A US 4903199 A US4903199 A US 4903199A US 18319588 A US18319588 A US 18319588A US 4903199 A US4903199 A US 4903199A
Authority
US
United States
Prior art keywords
statement
test
program
execution
values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US07/183,195
Inventor
W. Russ Keenan
Stephen F. Comen
Robert J. Brainard
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Priority to US07/183,195 priority Critical patent/US4903199A/en
Assigned to TEXAS INSTRUMENTS INCORPORATED reassignment TEXAS INSTRUMENTS INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST. Assignors: BRAINARD, ROBERT J., COMEN, STEPHEN F., KEENAN, W. RUSS
Application granted granted Critical
Publication of US4903199A publication Critical patent/US4903199A/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/316Testing of analog circuits
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/319Tester hardware, i.e. output processing circuits
    • G01R31/31903Tester hardware, i.e. output processing circuits tester configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Definitions

  • This invention relates to test systems for integrated circuits, and more particularly to a method for increasing the speed of interpretive code execution and for changing test codes.
  • An application or high level language is a program written in a form which a user of a computing or test system is familiar, rather than a machine language, and includes a coded instruction stream which is convertible into a plurality of serially executable source statements, selected source statements including one or more operands in the form of symbolic addresses, and other selected source statements requiring conditional or unconditional branches to still another source statement identified by a label.
  • a compiler is a program which operates in a computing system, taking as its input the machine readable instruction stream of a program written in a high level language, to interpret the source statements and produce object code.
  • the object code is suitable for link editing into a load module which is directly executable by the computing system, and generally includes more than one object (machine language) instruction for each source statement.
  • Commonly used high level languages include COBOL, FORTRAN, and BASIC. Each of these high level languages are written with a series of instructions that use English like statements, and in some instances mathematical notations. COBOL and FORTRAN programs are usually complied prior to program execution. BASIC can also be compiled, but in some computers BASIC is interpreted. The interpreter takes each BASIC statement or command and interprets or translates it to a machine language equivalent. The machine language equivalent is executed immediately. No machine language code is generated that can be used again as in a compiled program.
  • the invention is useful in testers for testing integrated circuits and is a method of taking an interpreted language, a language similar to the BASIC language, that is used in device test programs, and after a single execution of a single test loop using a pseudo code representative of the the high level language in which the program is written, TPL (Test Program Language), the pseudo code is restructured to write a table and a short assembly language program that is executed for each successive loop of the test program.
  • TPL Test Program Language
  • the test system consists of several test heads, each controlled by a dedicated processor. Communicators between each test head and a controller is carried out through an I/O interface.
  • the hardware for each test head is memory mapped into local address space of each test head processor board.
  • the method of the invention is herein referred to as Turbo Processing or, Turbo Code, or Turboed.
  • FIG. 1 is a diagram of a typical line of Test Program Language that has been translated into pseudo code
  • FIG. 2 is a diagram of the pseudo code of FIG. 1 that has been restructured according to the present invention.
  • TPL Test Program Language
  • BASIC BASIC- like language developed for use in testing integrated circuits.
  • Turbo code enhances the performance of TPL, allowing certain statements to execute faster in an interpreted environment than is possible in a compiled environment.
  • test head hardware is memory mapped, so accesses to the test head hardware look just like local memory reads and writes;
  • the TPL device test programs execute a single test loop continuously to test a large number of devices;
  • TPL uses a pseudo code representative of each statement to control execution of the statement and is structured to allow the pseudo code to be altered at runtime to change the flow of execution; and
  • a large percentage of the TPL statements compute values which do not change from one execution of the statement to the next, or compute variables which depend only on the selection of an array element where all possible values of the array can be determined the first time the statement is executed.
  • IN:PINS is an array of pin numbers. This statement will program all of the Parametric Measurement Units specified in the array IN:PINS to one volt with 500 milliamps of current;
  • pin cards All values being assigned must be constants.
  • the pin cards must be specified by constants, an entire predefined array, or a predefined subscripted array. Also, if an array is used for the pin card specification, the values in the array may not change between executions of the turboed statement.
  • Turbo code takes advantage of all of the features of the hardware and software to provide very high speed programming of the test head hardware while still maintaining the flexibility of an interpreted language.
  • Turbo code uses the first execution of a statement in an interpreted environment to build a table of address-value pairs corresponding to the values computed by the statement. It then changes the pseudo code of the statement to use a short assembly language routine to write the values in the table to their appropriate addresses, using the memory mapped feature of the test head hardware.
  • each TPL line As each TPL line is loaded, it s translated into pseudo code.
  • the emulator mainline uses this pseudo code while executing the statement. For example, the statement
  • the Test Program Language translator generates a group of records for each line as it is translated (See FIG. 1).
  • the main record is called the parm -- rec. It contains a pointer to the pseudo code translation of the line (parm -- ptr).
  • Each pseudo code record contains a pointer to the next record (next -- parm), the type of the pseudo code parameter (verb parm, hdw parm, etc), and the parameter itself.
  • the parm -- rec also contains a pointer to the actual source code for the statement and a pointer to the interpreter routine which is used for the specified verb (verb -- ptr).
  • the emulator uses the verb pointer to begin processing with the LET verb routine.
  • the LET verb routine checks the parm -- ptr and determines that the first parameter is a hardware parm. It then calls pt -- hardware processing, which determines that the hardware parm is .PMUV and calls PMUV processing.
  • PMUV processing calls a routine which looks for the variable PINS in the symbol table. It then checks the data area to determine all of the values in the array PINS. These logical pin numbers are translated into physical pin numbers to determine the pin boards being programmed in the LET statement.
  • PMUV processing then calls a routine which checks the parameter list, sees the self -- defining constant 3.1V, and returns this value to be programmed as the PMU voltage.
  • the routine is called again and returns the 100 ⁇ A to be programmed for the .PMU current.
  • Each of these values is checked to make sure it is in the proper range and is then calibrated using gain and offset values stored in memory. This result is then translated into a 16 bit value which is written to the pin cards determined by the variable PINS.
  • the values used to program the PMUs are also saved in memory for possible use later.
  • the TURBO software for this simplest case is a short assembly language loop:
  • the first five lines of this routine constitute a fixed overhead each time a turboed statement is executed, and the three line loop is executed once for each value that needs to be written by the routine. Because the test head hardware is memory mapped, no distinction needs to be made between data being saved by the software and data being written to the test head. Also, all error checking and calibration is done by the emulator code the first time the statement is executed and does not need to be repeated. Therefore, only three instructions are executed per value written, plus a small fixed overhead. In most cases, this code will execute faster than would code generated by a compiler since the compiled code needs to do most checking and calibration each time the statement is executed.
  • min and max are constants or variables
  • the comparison is one of .LT, .LE, .NE, .GT, or .GE
  • the function is any function defined in TPL, such as .ADC or .ADCR;
  • n evaluates to -1.
  • the table generated contains (1) the address of the first variable (min); (2) the address of the second variable (max); (3) the type of comparison (LT); (4) a pointer to the function parameter; and (5) the address of the line to be executed if the statement is false.
  • the verb pointer is changed to point to a turbo-if routine.
  • the IF statement must search forward through the test program to find the corresponding ELSE or ENDIF statement when the expression in the IF statement evalutes to false.
  • the turbo-if routine calls the normal interpreter routine to determine the function value, and gets the min and max values from the addresses specified in the table and makes the appropriate comparison. If the comparison is true, execution continues with the next statement. If it is false, the execution is continued at the address stored in the table. This eliminates the overhead of checking the statement syntax, determining the min and max values, and searching ahead for the address to jump to if the expression is false.
  • the print statement is turboed to take care of the special case where the unit number is -1.
  • Output from the PRINT routine can be sent to the terminal, line printer, or several other output ports. This is controlled by the unit number. When the unit number is -1, output is suppressed. This is used mainly in production test programs so that printing of some information can be dynamically controlled.
  • a turbo table is built which contains the address of the variable used in the unit number (n).
  • the verb pointer is then changed to point to a print-turbo routine. This routine checks the value of n. If it is still -1, the rest of the PRINT statement is ignored and execution continues with the next statement. If the value of n has changed, the normal PRINT verb processing is called.

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

Disclosed is a method which speeds up interpretive test program code execution and allows rapid changes to the test code. The tester utilized with the present invention uses the interpretive language TPL (Test Program Language) for device test programs. The present invention uses the first execution of a statement in an interpreted environment to build a table of address value pairs corresponding to the values computed by the statement. It then changes the pseudo code of the statement to use a short assembly language routine to write the values in the table fo their appropriate addresses, using the memory mapped features of the test head hardware. This is done by translating each TPL line into pseudo code as it is loaded. The first time a line of code is executed, it builds a table which contains all the values computed and the addresses to which they are written. The next time the statement is executed, the verb pointer points to the turbo software which is executed rather than the TPL statement. Since the test head hardware is memory mapped, no distinction needs to be made between data being saved by the software and data being written to the test head. All error checking and calibration is done by the emulator code the first time the statement is executed and does not need to be repeated thereafter.

Description

FIELD OF THE INVENTION
This invention relates to test systems for integrated circuits, and more particularly to a method for increasing the speed of interpretive code execution and for changing test codes.
DISCUSSION OF THE PRIOR ART
An application or high level language is a program written in a form which a user of a computing or test system is familiar, rather than a machine language, and includes a coded instruction stream which is convertible into a plurality of serially executable source statements, selected source statements including one or more operands in the form of symbolic addresses, and other selected source statements requiring conditional or unconditional branches to still another source statement identified by a label.
A compiler is a program which operates in a computing system, taking as its input the machine readable instruction stream of a program written in a high level language, to interpret the source statements and produce object code. The object code is suitable for link editing into a load module which is directly executable by the computing system, and generally includes more than one object (machine language) instruction for each source statement.
Commonly used high level languages include COBOL, FORTRAN, and BASIC. Each of these high level languages are written with a series of instructions that use English like statements, and in some instances mathematical notations. COBOL and FORTRAN programs are usually complied prior to program execution. BASIC can also be compiled, but in some computers BASIC is interpreted. The interpreter takes each BASIC statement or command and interprets or translates it to a machine language equivalent. The machine language equivalent is executed immediately. No machine language code is generated that can be used again as in a compiled program.
BRIEF DESCRIPTION OF THE INVENTION
The invention is useful in testers for testing integrated circuits and is a method of taking an interpreted language, a language similar to the BASIC language, that is used in device test programs, and after a single execution of a single test loop using a pseudo code representative of the the high level language in which the program is written, TPL (Test Program Language), the pseudo code is restructured to write a table and a short assembly language program that is executed for each successive loop of the test program.
The test system consists of several test heads, each controlled by a dedicated processor. Communicators between each test head and a controller is carried out through an I/O interface. The hardware for each test head is memory mapped into local address space of each test head processor board.
The method of the invention is herein referred to as Turbo Processing or, Turbo Code, or Turboed.
The technical advance represented by the invention as well as the objects thereof will become apparent from the following description of a preferred embodiment of the invention when considered in conjunction with the accompanying drawings, and the novel features set forth in the appended claims.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a diagram of a typical line of Test Program Language that has been translated into pseudo code; and
FIG. 2 is a diagram of the pseudo code of FIG. 1 that has been restructured according to the present invention.
DESCRIPTION OF A PREFERRED EMBODIMENT
The tester utilized with the present invention uses an interpreted language called TPL (Test Program Language) for device test programs. TPL is a BASIC- like language developed for use in testing integrated circuits. Turbo code enhances the performance of TPL, allowing certain statements to execute faster in an interpreted environment than is possible in a compiled environment.
Several factors combine to allow optimal speed in programming the test head hardware on the testers: (1) The test head hardware is memory mapped, so accesses to the test head hardware look just like local memory reads and writes; (2) The TPL device test programs execute a single test loop continuously to test a large number of devices; (3) TPL uses a pseudo code representative of each statement to control execution of the statement and is structured to allow the pseudo code to be altered at runtime to change the flow of execution; and (4) A large percentage of the TPL statements compute values which do not change from one execution of the statement to the next, or compute variables which depend only on the selection of an array element where all possible values of the array can be determined the first time the statement is executed. These include instructions such as:
LET.VCCl=500mV,250mA
which programs the VCCl board on the test head to supply 500 millivolts with a current of 250 milliamps;
LET.PMUV(IN:PINS)=lV,500mA
where IN:PINS is an array of pin numbers. This statement will program all of the Parametric Measurement Units specified in the array IN:PINS to one volt with 500 milliamps of current;
LET.DRVL(IN:PINS(I))=250mV
This will program the `low` driver reference level on the pin board specified in the Ith element of IN:PINS to 250 millivolts.
In the first two statements, the values that are computed and written to the hardware will not change between executions of the statement. In the third, all of the possible values for the statement can be determined by examining all of the values in IN:PINS the first time the statement is executed.
The following TPL statements are examples what can be turboed:
______________________________________                                    
LET var = .ADC( ) or ADC( ): Read selected ADC value                      
  ex: LET reading = .ADC(.VCCl(.ICCl))                                    
PRINT .UNIT(n), . . . where n evaluates to -1;                            
  ex: PRINT .UNIT(P), `Passed IOH test`                                   
TMU: set Time Measurement Unit and read the TMU                           
  ex: TMU .TIMRNG(3nS,.DLYENA(Q(I))),.STOP                                
  (OUT:PINS(I))                                                           
CONVERT: Activate PMU broadcast CONVERT ALL strobe                        
  ex: CONVERT .PMUV(OUT:PINS)                                             
ENABLE: Enable selected board or circuit                                  
  ex: ENABLE .VCCl, .PMU(OUT:PINS)                                        
DISABLE: Disable selected board or circuit                                
  ex: DISABLE .VCCl, .PMU(OUT:PINS)                                       
______________________________________                                    
Constant value, or values that do not change during the test are defined with a LET statement:
______________________________________                                    
LET .hdware( ) = constant values where ".hdware" is one of:               
.CPEDG:   set compare edge delay generator on                             
          pin PWB                                                         
.STEDG:   set start edge delay generator on pin                           
          PWB                                                             
.SPEDG:   set stop edge delay generator on pin                            
          PWB                                                             
.DRVL:    set pin PWB `low` programming driver                            
          reference level                                                 
.DRVH:    set pin PWB `high` programming driver                           
          reference level                                                 
.DRVP:    set pin PWB PAL programming receiver                            
          reference level                                                 
.RCVL:    set pin PWB `low` programming receiver                          
          reference level                                                 
.RCVH:    set pin PWB `high` programming receiver                         
          reference level                                                 
.IOL:     set sourcing current for pin PWB                                
.IOH:     set sinking current for pin PWB                                 
.VTH:     set programmable load threshold on pin PWB                      
.PINFMT:  set pin PWB format for drivers                                  
.PMUV:    program voltage for Parametric Measurement                      
          Units                                                           
.PMUI:    program current for Parametric Measurement                      
          Units                                                           
.RLY:     set relays on pin PWB                                           
.HOTRLY:  set relays on pin PWB when drivers, PMU or                      
          PLOAD are enabled                                               
.TPER:    set system period generator period                              
.VCC1:    program voltage and current to VCC1 board                       
.VCC2:    program voltage and current to VCC2 board                       
          ex: LET .VCC1 = 1V, 500 mA                                      
           LET .DRVL(IN:PINS) = 250 mV                                    
______________________________________                                    
All values being assigned must be constants. For pin-card related functions, the pin cards must be specified by constants, an entire predefined array, or a predefined subscripted array. Also, if an array is used for the pin card specification, the values in the array may not change between executions of the turboed statement.
Turbo code takes advantage of all of the features of the hardware and software to provide very high speed programming of the test head hardware while still maintaining the flexibility of an interpreted language. Turbo code uses the first execution of a statement in an interpreted environment to build a table of address-value pairs corresponding to the values computed by the statement. It then changes the pseudo code of the statement to use a short assembly language routine to write the values in the table to their appropriate addresses, using the memory mapped feature of the test head hardware.
As each TPL line is loaded, it s translated into pseudo code. The emulator mainline uses this pseudo code while executing the statement. For example, the statement
LET.PMUV(PINS)=3.1V, 100UA
is translated into the pseudo code illustrated in FIG. 1.
The Test Program Language translator generates a group of records for each line as it is translated (See FIG. 1). The main record is called the parm-- rec. It contains a pointer to the pseudo code translation of the line (parm-- ptr). Each pseudo code record contains a pointer to the next record (next-- parm), the type of the pseudo code parameter (verb parm, hdw parm, etc), and the parameter itself. The parm-- rec also contains a pointer to the actual source code for the statement and a pointer to the interpreter routine which is used for the specified verb (verb-- ptr).
When this statement is executed, the emulator uses the verb pointer to begin processing with the LET verb routine. The LET verb routine checks the parm-- ptr and determines that the first parameter is a hardware parm. It then calls pt-- hardware processing, which determines that the hardware parm is .PMUV and calls PMUV processing. PMUV processing calls a routine which looks for the variable PINS in the symbol table. It then checks the data area to determine all of the values in the array PINS. These logical pin numbers are translated into physical pin numbers to determine the pin boards being programmed in the LET statement. PMUV processing then calls a routine which checks the parameter list, sees the self-- defining constant 3.1V, and returns this value to be programmed as the PMU voltage.
Since the parameter list is not empty, the routine is called again and returns the 100μA to be programmed for the .PMU current. Each of these values is checked to make sure it is in the proper range and is then calibrated using gain and offset values stored in memory. This result is then translated into a 16 bit value which is written to the pin cards determined by the variable PINS. The values used to program the PMUs are also saved in memory for possible use later.
When this code is turboed, the first execution of the statement follows the same steps as above. However, when the PMUV processing writes the values to the hardware, it also builds a table which contains all of the values computed and the addresses to which they are written. The pseudo code for the statement is then restructured as shown in FIG. 2.
The next time the statement is executed, the verb pointer points to the TURBO software, so this is executed instead of the LET verb processing. The TURBO software for this simplest case is a short assembly language loop:
______________________________________                                    
      MOVE.L    (A5),A1    Get address of turbo table                     
      ADDQ.L    #6,A1      Point A1 to the number of                      
                           entries                                        
      MOVE.W    (A1),D1    Load number of entries                         
      SUBI.W    #1,D1      Subtract 1 for use as a loop                   
                           counter                                        
      ADDQ.L    #2,(A1)    Point A1 at beginning of                       
                           array                                          
LOOP: MOVE.L    (A1)+,A0   Get address of write                           
      MOVE.W    (A1)+,(A0) Write value                                    
      DBF       D1,LOOP    Branch until done                              
______________________________________                                    
The first five lines of this routine constitute a fixed overhead each time a turboed statement is executed, and the three line loop is executed once for each value that needs to be written by the routine. Because the test head hardware is memory mapped, no distinction needs to be made between data being saved by the software and data being written to the test head. Also, all error checking and calibration is done by the emulator code the first time the statement is executed and does not need to be repeated. Therefore, only three instructions are executed per value written, plus a small fixed overhead. In most cases, this code will execute faster than would code generated by a compiler since the compiled code needs to do most checking and calibration each time the statement is executed.
A slight variation of this is used for statements using subscripted arrays, such as
LET.PMUV(PINS)(I)=3.1V, 100uA
In this case, the first time the statement is executed, all of the possible values of I can be determined since the array must have been declared with a specified dimension and assigned values prior to use. Therefore, PMUV processing can determine the values that need to be written for all possible values of I and build a turbo table which contains all of these values as well as the address of the variable I. The turbo execution routine will then load the value of I and use it as an offset into the turbo table to load the proper values.
This method of building tables of address-value pairs is useful in a large number of typical Test Program Language statements, but there are other types of statements which require a different strategy to be turboed. In these cases, the first execution of the statement is used to do most of the applicable error checking and to build a table to be used in subsequent executions of the statements, but the table that is built has a different format depending upon the statement being executed. These statements include:
IF min .LT function .LT max
where min and max are constants or variables, the comparison is one of .LT, .LE, .NE, .GT, or .GE, and the function is any function defined in TPL, such as .ADC or .ADCR; and
PRINT .UNIT(n), expression
where n evaluates to -1.
For the IF statement, the table generated contains (1) the address of the first variable (min); (2) the address of the second variable (max); (3) the type of comparison (LT); (4) a pointer to the function parameter; and (5) the address of the line to be executed if the statement is false. The verb pointer is changed to point to a turbo-if routine. Normally, the IF statement must search forward through the test program to find the corresponding ELSE or ENDIF statement when the expression in the IF statement evalutes to false. The turbo-if routine calls the normal interpreter routine to determine the function value, and gets the min and max values from the addresses specified in the table and makes the appropriate comparison. If the comparison is true, execution continues with the next statement. If it is false, the execution is continued at the address stored in the table. This eliminates the overhead of checking the statement syntax, determining the min and max values, and searching ahead for the address to jump to if the expression is false.
The print statement is turboed to take care of the special case where the unit number is -1. Output from the PRINT routine can be sent to the terminal, line printer, or several other output ports. This is controlled by the unit number. When the unit number is -1, output is suppressed. This is used mainly in production test programs so that printing of some information can be dynamically controlled.
When a PRINT statement is executed and the unit number is -1, a turbo table is built which contains the address of the variable used in the unit number (n). The verb pointer is then changed to point to a print-turbo routine. This routine checks the value of n. If it is still -1, the rest of the PRINT statement is ignored and execution continues with the next statement. If the value of n has changed, the normal PRINT verb processing is called.
Implementing Turbo code on the tester showed statements executed four to twenty times faster after being turboed. Overall, 54% of the instructions executed when testing a good device using a SN74AS00 device test program can be turboed thus increasing the speed of test program execution. The device test time for this program is 234 milliseconds with turbo disabled and 63 milliseconds with turbo enabled.

Claims (11)

What is claimed:
1. A method of increasing the speed of test program execution performed by a computer, the computer being part of a test system having a processor controlled test head and in which the test program executes a single test loop continuously to test a large number of semiconductor devices the test program having one or more program statements, and, the computer performing a first execution of at least some of the program statements of the test program, including the steps of:
changing each program statement into a pseudo code;
using the first execution of each program statement of the test program in an interpreted environment to build a table of values and addresses for the values computed or used by the statement; and
changing the pseudo code of each statement to execute a new routine which uses the computed values.
2. The method according to claim 1, wherein the table created on the first execution of the program statement contains a set of address-value pairs corresponding to the values computed by the statement, and the routine used on subsequent executions writes each value of said table to its appropriate address.
3. The method according to claim 1, wherein the step of using the first execution of each program statement further comprises the step of:
placing the addresses of the values computed by the routine into the table of values.
4. The method according to claim 2, wherein the table of values contains a set of address-value pairs corresponding to all possible values of an array, each address-value pair having a subscript dependent upon its position in the array, and the set of address-value pair selected depending upon its array subscript.
5. A method of increasing the speed of test program execution performed by a computer, the computer being part of a test system having a processor controlled test head and in which the test program executes a single test loop continuously to test a large number of semiconductor devices, the test program having one or more program statements, and, the computer performing a first execution of at least some of the program statements of the test program, including the steps of:
changing each program statement into a pseudo code;
using the first execution of each program statement of the test program in an interpreted environment to build a table of address-value pairs corresponding to values computed by the statement; and
changing the pseudo code of each statement to use a short assembly language routine to write each value in said table to its appropriate address.
6. The method according to claim 5, wherein said test system has a memory map feature, and said test head hardware is memory mapped by the memory map feature and the memory map feature is used to write each value in said table to its appropriate address.
7. The method of claim 5, wherein the test program has a flow of execution, and, wherein the pseudo code structure of each program statement is structured to allow the pseudo code to be altered at runtime to change the flow of execution.
8. The method according to claim 5, wherein a plurality of the program statements compute values which do not change from one execution of the statement to the next and compute variables which depend only on the selection of an array element where all possible values of the array can be determined during first execution of the statement.
9. The method according to claim 5, executing the program loop once for each value that needs to be written by the routine.
10. The method of claim 5, including the step of error checking and calibration at first execution of a code statement.
11. The method according to claim 5, wherein only three instructions are executed per value computed plus a fixed number of overheated statements.
US07/183,195 1988-04-19 1988-04-19 Method of increasing the speed of test program execution for testing electrical characteristics of integrated circuits Expired - Lifetime US4903199A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US07/183,195 US4903199A (en) 1988-04-19 1988-04-19 Method of increasing the speed of test program execution for testing electrical characteristics of integrated circuits

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/183,195 US4903199A (en) 1988-04-19 1988-04-19 Method of increasing the speed of test program execution for testing electrical characteristics of integrated circuits

Publications (1)

Publication Number Publication Date
US4903199A true US4903199A (en) 1990-02-20

Family

ID=22671845

Family Applications (1)

Application Number Title Priority Date Filing Date
US07/183,195 Expired - Lifetime US4903199A (en) 1988-04-19 1988-04-19 Method of increasing the speed of test program execution for testing electrical characteristics of integrated circuits

Country Status (1)

Country Link
US (1) US4903199A (en)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0388077A2 (en) * 1989-03-15 1990-09-19 Texas Instruments Incorporated Method of optimizing the execution speed of an interpreted test language
US5150048A (en) * 1990-09-12 1992-09-22 Hewlett-Packard Company General purpose, reconfigurable system for processing serial bit streams
US5668947A (en) * 1996-04-18 1997-09-16 Allen-Bradley Company, Inc. Microprocessor self-test apparatus and method
US5928334A (en) * 1997-03-28 1999-07-27 International Business Machines Corporation Hardware verification tool for multiprocessors
US6091897A (en) * 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US20020170030A1 (en) * 2001-05-09 2002-11-14 Halcomb Herbert Wayne Method and apparatus for emulating a processor
US6618853B1 (en) * 1998-10-10 2003-09-09 Advantest Corporation Program production system for semiconductor tester
US20040044988A1 (en) * 2002-08-29 2004-03-04 Schene Christopher Robin Generation of compiled code for simulator speed up
US20090055803A1 (en) * 2005-05-20 2009-02-26 Advantest Corporation Semiconductor test program debug device
US9740601B2 (en) 2015-12-01 2017-08-22 International Business Machines Corporation Globalization testing management service configuration
US9767011B2 (en) 2015-12-01 2017-09-19 International Business Machines Corporation Globalization testing management using a set of globalization testing operations
US10157057B2 (en) 2016-08-01 2018-12-18 Syntel, Inc. Method and apparatus of segment flow trace analysis

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4339819A (en) * 1980-06-17 1982-07-13 Zehntel, Inc. Programmable sequence generator for in-circuit digital testing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4339819A (en) * 1980-06-17 1982-07-13 Zehntel, Inc. Programmable sequence generator for in-circuit digital testing

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0388077A3 (en) * 1989-03-15 1993-10-13 Texas Instruments Incorporated Method of optimizing the execution speed of an interpreted test language
EP0388077A2 (en) * 1989-03-15 1990-09-19 Texas Instruments Incorporated Method of optimizing the execution speed of an interpreted test language
US5150048A (en) * 1990-09-12 1992-09-22 Hewlett-Packard Company General purpose, reconfigurable system for processing serial bit streams
US6502237B1 (en) 1996-01-29 2002-12-31 Compaq Information Technologies Group, L.P. Method and apparatus for performing binary translation method and apparatus for performing binary translation
US6091897A (en) * 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US5668947A (en) * 1996-04-18 1997-09-16 Allen-Bradley Company, Inc. Microprocessor self-test apparatus and method
US5928334A (en) * 1997-03-28 1999-07-27 International Business Machines Corporation Hardware verification tool for multiprocessors
US6285974B1 (en) 1997-03-28 2001-09-04 International Business Machines Corporation Hardware verification tool for multiprocessors
US6618853B1 (en) * 1998-10-10 2003-09-09 Advantest Corporation Program production system for semiconductor tester
US20020170030A1 (en) * 2001-05-09 2002-11-14 Halcomb Herbert Wayne Method and apparatus for emulating a processor
US7072824B2 (en) * 2001-05-09 2006-07-04 Lucent Technologies Inc. Method and apparatus for emulating a processor
US20040044988A1 (en) * 2002-08-29 2004-03-04 Schene Christopher Robin Generation of compiled code for simulator speed up
US20090055803A1 (en) * 2005-05-20 2009-02-26 Advantest Corporation Semiconductor test program debug device
US8132161B2 (en) * 2005-05-20 2012-03-06 Advantest Corporation Semiconductor test program debug device
US9740601B2 (en) 2015-12-01 2017-08-22 International Business Machines Corporation Globalization testing management service configuration
US9767011B2 (en) 2015-12-01 2017-09-19 International Business Machines Corporation Globalization testing management using a set of globalization testing operations
US10157057B2 (en) 2016-08-01 2018-12-18 Syntel, Inc. Method and apparatus of segment flow trace analysis

Similar Documents

Publication Publication Date Title
US4903199A (en) Method of increasing the speed of test program execution for testing electrical characteristics of integrated circuits
US4636940A (en) Logic analyzer using source program or other user defined symbols in the trace specification and the trace listing
US9672133B2 (en) Systems and methods for debugging applications using dual code generation
US5608867A (en) Debugging system using virtual storage means, a normal bus cycle and a debugging bus cycle
CN109144515B (en) Off-line simulation method and device for DCS graphical algorithm configuration
US5974255A (en) Method for state-based oriented testing
US5963566A (en) Application specific integrated circuit chip and method of testing same
US6415436B1 (en) Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler
US20240095436A1 (en) Method and device for automatic verification of pin multiplexing
EP3973388A1 (en) Stack traces using shadow stack
CN111813670A (en) Non-invasive MC/DC coverage statistical analysis method
EP0354654B1 (en) Method and apparatus for marking emulation analysis states
US20050091028A1 (en) Simulator and simulation method
CN105824750A (en) Soft breakpoint simulation method during NorFlash program space debugging
US5610927A (en) Integrated circuit control
CN117149209A (en) Code increment compiling method and device, computer equipment and storage medium
US7770147B1 (en) Automatic generators for verilog programming
CN109144849A (en) A kind of embedded software adjusting, measuring method
EP0388077A2 (en) Method of optimizing the execution speed of an interpreted test language
CN114201375A (en) Method and device for acquiring code instruction consumption in hardware environment
US5671431A (en) Method for processing user program on a parallel computer system by inserting a tag during compiling
US20050261857A1 (en) System and method for linking and loading compiled pattern data
KR970011897B1 (en) Words interpretating device
JPH05297911A (en) Sequence control circuit for sequence controller
US20040078656A1 (en) Method of saving/restoring processor state after entering/exiting debug mode

Legal Events

Date Code Title Description
AS Assignment

Owner name: TEXAS INSTRUMENTS INCORPORATED, 13500 NORTH CENTRA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST.;ASSIGNORS:KEENAN, W. RUSS;COMEN, STEPHEN F.;BRAINARD, ROBERT J.;REEL/FRAME:004871/0882

Effective date: 19880418

Owner name: TEXAS INSTRUMENTS INCORPORATED,TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KEENAN, W. RUSS;COMEN, STEPHEN F.;BRAINARD, ROBERT J.;REEL/FRAME:004871/0882

Effective date: 19880418

STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12