Patent Claims for Integrated Testers Richard Barth and James Gasbarro Draft of March 10, 1989 5:49:10 pm PST Test Vector Compression The interface between the tester and the test device requires four bits per cycle to describe the operation the tester is to perform. These bits are: - Force, this is the data value driven to the DUT - Expect, this is the the expected response data from the DUT - Inhibit, disables the output driver of the tester - Mask, disables error generation when the acquired data does not match Expect In the implementation of a single-chip tester it is impractical to store all of these bits in raw form for each pin in each cycle. This is due to the limited die area available for RAM storage. It is also impractical to use off-chip storage in the form of commercial RAMs because of pin bandwidth and board size limitations. The solution is to compress the storage space required for this data. This is achieved by using several different techniques: - sematic combination - mapping - lossless compression The Force and Expect bits are combined using the sematic combination technique. Since these bits are mutually exclusive for the most part, they can be simply combined into a single bit. This reduces the functionality of the tester somewhat, but separate control can be simulated by successive tester cycles. This technique is common in many testers. The storage required for the Mask and Inhibit bits is reduced using a mapping mechanism. During test execution, the drive state and data validity of many pins of the tester are strongly correlated in both space and time. A data bus is an example of both of these points: all pins of the bus switch between drive and sense at the same time, which means that all of the Inhibit and Mask bits have the same value at any instant in time, and they all change value at the same time. Since many of the tester pin drives are static, and there are relatively few groups of dynamic pins, all combinations of Mask and Inhibit can be stored in a small table as shown in Figure 1. This table can be indexed with a small number of bits per vector, thereby greatly reducing the required amount of storage. After applying these two compression methods, there is still considerable redundancy remaining in the test vectors. To further reduce the storage requirements of the test vectors a lossless compression mechanism is employed. This compression technique utilizes off-line compression on a host processor and real-time decompression inside the tester chip. The general technique was originally developed by Ziv and Lempel [3] and was further enhanced by Fiala and Greene [2] as a software means for compressing data. This is the first reduction to practice in hardware of the decompression algorithm. The encoding takes a set of source symbols (vectors) of variable length and maps them into a set of variable length codewords. The compressed stream consists of a sequence of command words interspersed with literal data words. Two types of commands are used: Copy and Literal. The Copy command has two parameters, the length of the run of symbols to be copied, and their position in the history buffer. The Literal command needs only one field: the length of the run of symbols which follow in the compressed stream. When Copy is interpreted, a sequence of source symbols corresponding to the number specified by the length field is transcribed from the history buffer of the decompressor to the output stream. The index of the first symbol in the buffer is indicated by the position field. At the end of each decompressor cycle, the current output symbol of the decompressor is copied into the least recently written location of the history buffer so that the buffer always contains a history of the most recently decompressed data. The block diagram of an architecture which implements these functions is shown in Figure 2. In order to meet the minimum data delivery requirement of one word per clock cycle, the RAM word width must be at least as great as the number of words required for a single Literal command and one word of literal data. Since the Copy and Literal command words are the same length, this guarantees that Copy commands can meet the minimum data delivery requirement as well, since only the command itself is needed to produce an output symbol. There are two outputs of the prefetcher in this scheme, the next command and a literal data word. The command is interpreted by the control logic to determine whether the next decompressed output word should come from the history buffer or the literal data stream. The multiplexor at the output of the history buffer selects between these two alternatives. The control logic decodes the current instruction to determine where the next instruction occurs in the prefetch buffer. Figure 2. Block diagram of decompressor This decompression architecture has more general application beyond testers. Claims should be made in the general context of hardware decompression and then made specific to the problem of testing. Timing Generation See attached paper, "Integrated Pin Electronics for VLSI Functional Testers" for detailed description. Figure 3 shows the circuit used for the Format generator. The Pulse and nPulse inputs are driven by the XOR output of the pulse generator (Figure 2a of the above reference). The Inhibit signal is driven by the Map discussed in the section on Test Vector Compression. Data is the Force Data bit of the test vector and corresponds to Decompressed Data Out in Figure 2. The output signals, DriveHigh and nDriveLow drive the output transistors connected to the DUT pin. The remainder of the signals select the current output format. (This figure should be generalized.) Figure 3. Format circuit The Acquire portion of the pin electronics circuitry is responsible for capturing data from the DUT and determining if it matches the desired response. Both the data value and output voltage level must be checked. In the Force Timing generator, both delay and width timing control are needed, but in the Acquire Timing generator only control of the sample delay timing is necessary. This allows the Acquire Timing generator to be simplified to a single delay line. The input to this delay line is still FCyc/2 as it was for the Force Timing generator. This introduces a problem in that the frequency doubling effect of the XOR gate is not realized, so the delay line output is only half the desired cycle frequency. Since the die area consumed by the sample and comparison circuitry is much smaller than that of a second delay line, the solution to this problem is to simply build two sampling circuits: one which operates on the positive transition of the sample timing clock and one which operates on the negative transition. A beneficial side effect of this technique is that the data at the output of the two comparators is available for a full tester cycle. This greatly simplifies the problem of resynchronizing the data between the sample logic, and the data comparison pipeline. Since the phase of the captured signal is known, an optional pipeline stage clocked at the midpoint of the cycle ensures that the data can be captured at a stable point in the cycle (Figure 4). In the data pipeline, the acquired value is compared with the Expect Data from the test vector. If the comparison fails and the Mask bit from the test vector is not asserted, the external Error bit is asserted for the cycle. Figure 4. Acquisition and synchronization circuit Claims: Pulse generation concept: two delay lines followed by XOR. Method for implementing wide range, high resolution delay line by using three types of delay mechanisms. Compact implementation of the delay generator Correction of pulse edge distortion by Edge Adjust units. Format generator circuit (Figure 3). Use of dual analog sampling latches to acquire data on both clock edges. System Architecture Figure 5. Board level system Figure 5 illustrates the configuration for a 256 pin test system using the Testarossa chip. The system consists of sixteen tester chips, each providing sixteen I/O channels. The chips are arranged in a circular fashion around the central DUT thereby equalizing the lead lengths, while at the same time maintaining a total trace length of less than ten centimeters. This limits the time-of-flight of a signal between DUT and pin electronics to only a few hundred picoseconds, obviating the need for terminated transmission lines. The short trace length also provides a stray load capacitance on the DUT outputs on the order of only a few picofarads. This ensures high-fidelity waveform transmission for both driven and sensed DUT signals with a minimum of signal loading. As illustrated in Figure 5, the number of support components necessary to bind the system together is small, consisting of a few transceivers to buffer the host signals, and the necessary chip select logic for addressing individual tester chips. The only additional logic necessary is that required to generate the reference clock. We want to claim a system structure whereby all real-time signals are contained within a critical radius of the test device [1]. This should be one of the dependent claims for 1 and 2 together as it cannot stand alone. References [1] M. Barber, "Fundamental Timing Problems in Testing MOS VLSI on Modern ATE", IEEE Design and Test, pp. 482-489, August 1984. [2] E. Fiala and D. Greene, "Data Compression with Finite Windows", to appear in CACM, spring 1989. [3] J. Ziv and A. Lempel, "A Universal Algorithm for Sequential Data Compression", IEEE Trans. on Information Theory, Vol. IT-23, No. 3, May 1977. L[ Nectarine figure; type 'Artwork on' to a CommandTool ] Figure 1. Compression through mapping [ Nectarine figure; type 'Artwork on' to a CommandTool ] [ Nectarine figure; type 'Artwork on' to a CommandTool ] [ Nectarine figure; type 'Artwork on' to a CommandTool ] [ Nectarine figure; type 'Artwork on' to a CommandTool ] X'IcenterKKl$$KK K&headIbodyIitem1N=N3NNMMNN NNMMI artworkFigureFitTRUE Interpress Interpress/Xerox/3.0 fjXeroxResearchCMYKK}b[6UG  n;P oduXerox PressFonts Helvetica-MRRXerox PressFonts Helvetica-MRRРkj蠤)Q@ࡣxj,xS.S*pS,4S,2S,2S+RS+RS*rS*rS.S.S,S,S,zS,zS,xS.S*pS,4S,2ST,2S+RST+RS*rST*rS*pSR,4SR-bS@-bS,S$,S,2S$,2SP+RS$+RSP*rS$*rSP,8S",S"*pS",4S",2R,2S +RR+RS *rR*rS *pR,4R,2R,2R+RR+RR*rR*rR*pR,4R¡,2R,2R+RR+RR*rR*rR*pR,4R,2Rd,2R+RRd+RR*rRd*rR*pRb,4Rb+R +R`*R *R`kxj-PS@P`F,0S4S4p*R +R + SȠMapؠ,S̠ Test VectorԠ*QInhibit+QMask,SForce/Expect DatakkgArtwork InterpressBounds810.0 mm xmin 10.0 mm ymin 205.9 mm xmax 76.53208 mm ymax0.3396227 the lineLength .mul 2.811678 .add topLeading 0.3396227 the lineLength .mul 2.811678 .add topIndent 1.405839 mm bottomLeading 0.0 0.2 0.90 backgroundColor the topLeading 6 pt .sub backgroundAscent 1 pt backgroundDescent 2 pt outlineBoxThickness 1 pt outlineBoxBearoffnx88K&&MMKO0.9032258 the lineLength .mul 2.811678 .add topLeading 0.9032258 the lineLength .mul 2.811678 .add topIndent 1.405839 mm bottomLeading 0.0 0.2 0.90 backgroundColor the topLeading 6 pt .sub backgroundAscent 1 pt backgroundDescent 2 pt outlineBoxThickness 1 pt outlineBoxBearoff810.0 mm xmin 10.0 mm ymin 205.9 mm xmax 186.9419 mm ymax Interpress'Interpress/Xerox/3.0 fjXeroxResearchCMYKK}b[6UG  n;P oduXerox PressFonts Helvetica-MRRXerox PressFonts Helvetica-MRRࠤXerox PressFonts Helvetica-MRRРkj蠤ؠ!hXxj##'`((('b'b'`(%%4%&('''`('b4'b&H2'd2&*&*%%%&,ڡ####ʡ#z#z(<((:(:((8'b'b0'`(&&0&'T'R'R'P(T'Rt'R&t&&r'Tr&L&p%L%ء%0J&J&J'TJ'R 'RH& &H& &H& 'T & &D &&%2%2H%0&ʡ&B&B%%ȡ%'l%|%%0z&z(\(8(R\(R'Z)Z'<'X'j<'j&B<&B&<&x&:':&&8%2%2x%0&'j'j8&'lҡ&&С%%%&'jd'jС&d&&d&%d%%hb&Lb%j<%j`$H:%l:#4#x#2#2&J&J`%j%j8&b'b'<'8'<'`':':''8&&`&'%h&L##꡹))X''8')⡹(2(2ࡹ'2'2'0(4%%%&$r%r%,%p%*&(*$$p$D$¡##衹##((ࡹ&&&P(¡&*l&*(%l%(%j&,j&D&&B&B&&@%%h%h&L((ࡹ&J&J&H(꡹&J&J衹%j%j%h&Lʡ%%ȡ%h&L&J&J%j%j%h&L%%$$$%ڡ%x%ءkxj(Ƞ™(x%In%䠢Data\%  Compressed4%Data%Out%Ԡ Decompressedl(DD&End $'T™'T ('縠'Counter$&T(L'LAddress(H` X'̠ Br. Targett&LࠢT `'̠ Read Address t(8 selectionh (8ܠCommandh d( | and prefetch Ġ(HLcontrolX &0 & @(<ܠ(<#PLStorageP#P|VectorPĠ#PBufferP $#̠Write t%LRegister %F %䠢%hH™8 %`F %&$`F &$%4Mux &Lh—Bb&L ؠ%`Buffer@ %pRam0 %X젢HistoryH T$PFDataPtrP %pRam0D%`,Vector@%(\ Compressedx䠢&Lؠ—Bb&Lh%%Ƞx&`F &'t`F 't'4Mux &LT %X $h—Bb ؠ$$ %Р'0 %0 #PHistoryP $#P젢BufferP T%DRegister\ D%H&™& H%D,Register\ %x &(™& 'Cmd %h0%h #Address &=?&ll&'d'd&F&%Literal %F 0%&$F 0&$%䠢Mux \#PLPrefetchP kkgTRUE88K(JMJMfMMM$O0.4649806 the lineLength .mul 2.811678 .add topLeading 0.4649806 the lineLength .mul 2.811678 .add topIndent 1.405839 mm bottomLeading 0.0 0.2 0.90 backgroundColor the topLeading 6 pt .sub backgroundAscent 1 pt backgroundDescent 2 pt outlineBoxThickness 1 pt outlineBoxBearoff810.0 mm xmin 10.0 mm ymin 205.9 mm xmax 101.0897 mm ymax Interpress3Interpress/Xerox/3.0 fjXeroxResearchCMYKK}b[6UG  n;P oduXerox PressFonts Helvetica-MRRXerox PressFonts Helvetica-MRRࠤXerox PressFonts GATES-MRR Xerox PressFonts Helvetica-MRRРkj蠤PP,4bt\xj7f9f7e7\e7e7e7e7$e꡹7"e7"e衹6e6e6e6eҡ7(e74eʡ9pe9e9re9re9he9|e꡹92e92e9ze9ze衹9(e94eڡ9*e9*eء7e7f7Ze7Ze72e72eȡ70e7e¡72e72e7*e7*eȡ7(e74e6e6eС6e6eС5e6e6e6e7el7e6ej7ej7eT7eh7eR7$eR6eL6eX6eL6e6eJ6eJ7"eD7"eP6e,6eH6e,6eH5e*6e*7(e274e28e9,eҡ92e92eء9*e9*eС9(e94eʡ92e92eȡ9e9e9e9eȡ9e9e¡9e9e9(e94e9*e9*e8e8eС8 e9,e92e92e9*e9*e9(e94e92e92e9rel9re8ej9tej9reT9reh92eT92eX9heR9|eR9(eR94eR9*eL9*eP8eL8e8eJ9,eJ92eD92eP9*eD9*eH9ze@9zeP9(eB94eB92e492e@9(e294e29*e,9*e08e,8eH7e,7e7Ze,7Ze72e,72e08e*9,e*70e*7e*72e$72e(7*e$7*e07(e"74e"6e 6e(6e 6e(5e 6e 6d6e92e$92e09*e$9*e(: eZ:,eZ:"eT:"eX9eT9f9eR:$eR:*eL:*eX:"eL:"eP: eJ:,eJ:peB;@eB: e::,e::"e4:"e89e,9e9e,9e9e,9e09e*9e*9e 9e(9(e"94e"92e92e 9(e94e9*e 9*e8e 8e(8e 9,e 7Zd7Ze(7d7e6d7\dҡ6d7d7d7d7d7$d7"d|7"d6dt6d6dt6e6dr6dr92e92e9*e9*e9(e94e92d92e9d9e(9rd9re9e2:$e2:*e,:*e8:"e,:"e0: e*:,e*9d9e09d9e(9d:0dҡ8d9dҡ:pd:|dʡ:zd:zdȡ:xd;@d¡:zd:zd:rd:rdȡ:pd:|d9d9dС9d:0d8d9td9rd9rd9hd9|d92d|92d9zdx9zd9(dz94dz9*dt9*dx8dt8e8dr9,dr7(dj74dj72dd72dh70db7db72d\72d`7*d\7*dh7(dZ74dZ6dT6dp6dT6dp5dR6dR6d06dP7d 7d@6d 7d 6c7c꡹7c7c衹7c7$cҡ6c6cء6c6dP6rc6rdP5c6cʡ7"c7"cС6c6cȡ6rc6rcȡ6pc6c7(c74c92dl92dx9*dl9*dp9(dj94dj92d\92dh9dd9d9dd9dh9db9db9dX9d`9(dZ94dZ9*dT9*dX8dT8dp8dR9,dR92dL92dX9*dL9*dP9(dJ94dJ92d092dH9rd 9rd@8d 9td 8c9tc꡹9rc9rc衹92c92cء9hc9|cҡ9(c94cҡ9*c9*cС8c8dP8c8dP8c9,cʡ7c7d`72c72c92c92cС9*c9*cȡ9zc9zcС9(c94c¡92c92c9(c94c9*c9*c8c8cȡ8c9,c70c7c72c72c7*c7*c7(c74c6c6c5c6c6cx6c7cT7c6cR7cR92c92c9*c9*c9c9d`9c9c9c9c9c9c9(c94c92c92c9(c94c9*c9*c8c9,c92c92c9*c9*c9(c94c92cx92c9rcT9rc8cR9tcR9c<9d9c<9c7c<7c7c:9c:7zc 7zc17hc 7|c 5c 6c 7(b74b5b6b꡹72b72b70b7Gb꡹72b72b衹7*b7*b7(b74b⡹7Zb7Zc7jb7jc7hb7|bʡ5b6bʡ9c9c89c9c9 c9,c9"c 9"c8c 9$c 9c 9c9*c9*c9"c9"c9c 9c 9 c9,c9 b9,b9"b9"b8b9$b꡹9b9c9xb9b꡹9*b9*b9"b9"b衹9 b9,b⡹9b9b衹9 b9,bҡ9"b9"bС8b9$bʡ9b9c9b9bʡ9*b9*bС9"b9"bȡ9 b9,b¡9b9bȡ7b7c87zb7zbȡ7xb7bkxj8dnRZְ6dnRO:dĠ nDriveLowܠ8 eNRZData׀젢5eNRZData젢9bŽ8cnData׈8c̠Inhibit׈Ԡ6dԠnNRZ̠8dԠnNRZְ̠8elNRZְ46elNRZ490cʡʡpc90cʡʡp𠢠90eʡʡpe90eȠʡʡpؠ6cʡʡc6cʡʡ𠢠6d\ʡʡd\6dhʡʡ88dTPulse׈L8e,nPulse׈t5e,Pulset5dTnPulseL8b̠nRT׈Ԡ8b젢nRO׈8e Data׈5e Data5b젢RZ5b̠RTԠ8cTRCְL6cTRCL6d RO6c젢nRC7`c(@x8d RZְ8c젢nRCְ5c DNRZ8c nDNRZ׈5c̠nInhibitԠ5cnData7Eb|i[$:eD DriveHigh\6eʡʡe6eȠʡʡؠ6e$ʡʡe$6e0ʡʡp90d\ʡʡpd\90dhʡʡp890e$ʡʡpe$90e0ʡʡpp:dҙՈࠢ:dҙՈࠢ:dĠҙՈdĠ:dĠҙՈdĠ:e@ҙՈ`:e@ҙՈ`:eDҙՈeD:eDҙՈeD6b젢ҙb젢6b젢ҙb젢6b蠢ҙ6b蠢ҙ9 b젢ҙրb젢9 b젢ҙրb젢9 b蠢ҙր9 b蠢ҙրkkgTRUE88KKMMgd O0.2192308 the lineLength .mul 2.811678 .add topLeading 0.2192308 the lineLength .mul 2.811678 .add topIndent 1.405839 mm bottomLeading 0.0 0.2 0.90 backgroundColor the topLeading 6 pt .sub backgroundAscent 1 pt backgroundDescent 2 pt outlineBoxThickness 1 pt outlineBoxBearoff810.0 mm xmin 10.0 mm ymin 205.9 mm xmax 52.94731 mm ymax InterpressInterpress/Xerox/3.0 fjXeroxResearchCMYKK}b[6UG  n;P oduXerox PressFonts Helvetica-MRRXerox PressFonts HIPPO-MRRXerox PressFonts Helvetica-MRRࠤXerox PressFonts GATES-MRR Xerox PressFonts Helvetica-MRRРkj蠤cNn8H5hmXhxj92n92n7hn94nڡ88n8n9n9nҡ9n9nС9xn9n92n92nء8n8nء8n94n7hn8n88n8n92n92n92n\92np9n\9n8n\8n8nZ94nZ9n<9n9xn:9n:92n,92nX9(n*94n*9*n$9*n(9n$9nX9n"9,n":n:n:8n:tn::n|::n9n|9nС9nz: