This invention relates generally to the field testing digital electronic circuits and more specifically to generating test input for a circuit.
Circuits are tested in order to detect defects of the circuits. Some circuit testers, however, are not sufficiently fast or wide to test high speed circuit components. Consequently, testing circuits has posed challenges.
In accordance with the present invention, disadvantages and problems associated with previous techniques for testing digital electronic circuits may be reduced or eliminated.
According to one embodiment of the present invention, generating test input includes initializing a current pseudo-random value at a test input generator coupled to a circuit component. Write data is received from the circuit component. The following are repeated to generate next pseudo-random values as test input. The current pseudo-random value and the write data are retrieved. A next pseudo-random value is generated from the current pseudo-random value and the write data according to a generation function. The next pseudo-random value is transferred to the circuit component as the test input.
Certain embodiments of the invention may provide one or more technical advantages. A technical advantage of one embodiment may be that a test input generator may generate test input for circuit components using data received from the circuit components. The test input generator may provide high speed predictably pseudo-random test input to the circuit components.
Certain embodiments of the invention may include none, some, or all of the above technical advantages. One or more other technical advantages may be readily apparent to one skilled in the art from the figures, descriptions, and claims included herein.
For a more complete understanding of the present invention and its features and advantages, reference is now made to the following description, taken in conjunction with the accompanying drawings, in which:
Embodiments of the present invention and its advantages are best understood by referring to
According to the embodiment, circuit 20 includes one or more pins 30. Pins 30 may be used to couple an external tester to circuit 20 to test circuit 20. Typically, however, an external tester may not be able to run at a sufficiently high speed to test circuit 20. Test input generator 22 may provide test input of a higher speed than the speed of test input provided by an external tester. Pins 30 are coupled to a pad ring 32. A random access memory (RAM) clock circuit 34 supplies a RAM clock signal to test input generator 22 and circuit components 24. The RAM clock signal may have a frequency of, for example, approximately 0 to 600 MHz.
Test input generator 22 generates predictably pseudo-random output that may be used as test input to generate test patterns for circuit components 24. According to one embodiment, the pseudo-random output comprises pseudo-random values that include CRC values. The test input is generated using data received from circuit components 24. Test input generator 22 includes a write register 46, a read register 48, a cyclic redundancy check (CRC) generator 42, and a reset circuit 44. Write register 46 stores write data received from circuit components 24. Read register 48 stores a read value comprising a CRC value received from CRC generator 42. CRC generator 42 generates a CRC value from write data stored in write register and a CRC value stored in read register 48. CRC generator 42 is described in more detail with reference to
Reset circuit 44 may be programmed to send a zero value to CRC function circuit 42. According to one embodiment, if CRC function circuit 42 receives a zero value, it yields a function output that results in a zero CRC value until write data is received from write register 46. Once write data is received, non-zero CRC values may be generated.
A write bus 50 transfers write data from circuit components 24 to test input generator 22. A read bus 52 transfers a CRC value from test input generator 22 to circuit components 24. The CRC value is used to provide test input to test circuit components 24.
Circuit components 24 may include one or more components that receive test input from test input generator 22 and generate a test output 60. Circuit components 24 may include, for example, a computational random access memory (CRAM), a processor, or any logic comprising any suitable combination of hardware and/or software that produces and expects values. Test output 60 comprises data generated by circuit components 24 in response to the test input received from test input generator 22.
A simulator 62 provides simulated output 64 that simulates test output 60 of a desired circuit component 24, such as a circuit component 24 free from defects. Simulator 62 may comprise, for example, a Verilog simulator. A comparator 66 compares test output 60 with simulated output 64. Ideally, test output 60 matches simulated output 64.
where CRCt(i) is the ith bit of CRC value CRCt, and WD(i) is the ith bit of write data WD.
The generation function defined by Equation (1) may be expressed as Equations (2):
CRC+1(00)=CRCt(21)XORWD(00)
CRC+1(01)=CRCt(16)XORWD(01)
CRC+1(02)=CRCt(17)XORWD(02)
CRC+1(03)=CRCt(18)XORWD(03)
CRC+1(04)=CRCt(19)XORWD(04)
CRC+1(05)=CRCt(20)XORWD(05)XORCRCt(18)
CRC+1(06)=CRCt(21)XORWD(06)
CRC+1(07)=CRCt(22)XORWD(07)
CRC+1(08)=CRCt(29)XORWD(08)
CRC+1(09)=CRCt(24)XORWD(09)
CRC+1(10)=CRCt(25)XORWD(10)
CRC+1(11)=CRCt(26)XORWD(11)
CRC+1(12)=CRCt(27)XORWD(12)
CRC+1(13)=CRCt(28)XORWD(12)XORCRCt(26)
CRCt+1(14)=CRCt(29)XORWD(14)
CRCt+1(15)=CRCt(31)XORWD(15)
CRCt+1(16)=CRCt(00)XORWD(16)
CRCt+1(17)=CRCt(01)XORWD(17)
CRCt+1(18)=CRCt(02)XORWD(18)
CRCt+1(19)=CRCt(03)XORWD(19)
CRCt+1(20)=CRCt(04)XORWD(20)
CRCt+1(21)=CRCt(05)XORWD(21)
CRCt+1(22)=CRCt(06)XORWD(22)
CRCt+1(23)=CRCt(07)XORWD(23)
CRCt+1(24)=CRCt(08)XORWD(24)
CRCt+1(25)=CRCt(09)XORWD(25)
CRCt+1(26)=CRCt(10)XORWD(26)
CRCt+1(27)=CRCt(11)XORWD(27)
CRCt+1(28)=CRCt(12)XORWD(28)
CRCt+1(29)=CRCt(13)XORWD(29)
CRCt+1(30)=CRCt(14)XORWD(30)
CRCt+1(31)=CRCt(15)XORWD(31) (2)
The generation function may, however, comprise any suitable function. For example, the generation function may comprise a function of the current pseudo-random value, a reset value, the write data, and one or more non-data control signals
According to one embodiment, CRC bit generator 70 includes an XOR gate 74. XOR gate 74 performs an XOR operation on CRC bit value CRCt(j) received from read register 48 and write data WD(i) received from write register 46. A multiplexer 76 transmits information from either pin 30a or XOR gate 74 in accordance with a CRC enable signal 78. If CRC enable signal 78 indicates that a CRC bit value is to be calculated, multiplexer 76 transmits a signal from XOR gate 74. If CRC enable signal indicates that a CRC bit value is not to be calculated, multiplexer 76 transmits the signal from pin 30a. A flip-flop circuit 80 receives previous CRC write data from multiplexer 76. The previous CRC write data is used to generate a next CRCt+1(i) bit value.
An XOR gate 82 performs an XOR operation on next CRC bit value CRCt+1(i) from flip-flop 80 and write data WD(i+16) from write registers 46. A multiplexer 84 transmits values from either pin 30b or XOR gate 30 in accordance with CRC enable signal 78. If CRC enable signal 78 indicates that a CRC bit value is to be computed, multiplexer 84 transmits the value from XOR gate 82. If CRC enable signal 78 indicates that a CRC bit value is not to be determined, multiplexer 84 transmits the value from pin 30b. A flip-flop 86 receives the value from multiplexer 84 and RAM clock circuit 34 and generates a next CRC bit value CRCt+1 (i+16).
According to one embodiment, CRC bit generator 70 determines the CRC bit values according to Equation (2). To calculate CRC bit iε{0,8} according to Expression (3):
CRCt(j)XORWD(i) (3)
XOR gate 74 performs an XOR operation on CRC bit value CRCt(j), where j=i+21, and write data WD(i).
To calculate CRC bit value iE{1, . . . 4, 6, 7, 9, . . . , 12, 14} according to Expression (4):
CRCt(j)XORWD(i) (4)
XOR gate 74 performs an XOR operation on CRC bit value CRCt(j), where j=i+15, and write data WD(i).
To calculate CRC bit value iε{5,13} according to Expression (5):
CRCt(j)XORWD(i)XORCRC(i+13) (5)
XOR gate 74 receives CRC bit value CRCt(j) that is the result of an XOR operation performed on CRC bit values CRCt(i+15) and CRCt(i+13) by a previous CRC bit generator 70. XOR gate 74 performs an XOR operation on the result and write data WD(i).
To compute CRC bit value iε{15, . . . , 31} according to Expression (6):
CRCt(i+16)XORWD(i) (6)
XOR gate 82 performs an XOR operation on CRC bit value CRCt+1(i) and write data WD(i+16) to compute CRC bit value CRCt+1(i+16).
A current CRC value is retrieved from read register 48 at step 104. The write data is retrieved from write register 46 at step 106. At step 108, CRC generator 42 generates a next CRC value from the write data and the current CRC value. The next CRC value is sent to circuit components 24 at step 109.
If there is a next cycle at step 110, the method proceeds to step 112 to determine if a reset has been activated. If a reset has been activated, the method proceeds to step 114, where the CRC value is set to zero, and then proceeds to step 116. If a reset has not been activated, the method proceeds directly to step 116 to determine whether next write data has been received from circuit components 24. If next write data has been received, the method proceeds to step 118, where write register 46 stores the next write data. After the next write data is stored, the method returns to step 104. If next write data has not been received at step 116, the method returns directly to step 104, where the CRC value is retrieved.
If there is no next cycle at step 110, the method proceeds to step 120, where test output 60 from circuit components 24 is reported. Test output 60 may be reported substantially simultaneously as CRC values are generated at step 108. Simulated output 64 is received at comparator 66 at step 122. Comparator 66 compares test output 60 and simulated output 64 at step 124. Circuit components 24 are evaluated in response to the comparison at step 126. After evaluating circuit components 24, the method terminates. Some of the steps may be omitted or others added without departing from the scope of the invention.
Certain embodiments of the invention may provide one or more technical advantages. A technical advantage of one embodiment may be that a test input generator may generate test input for circuit components using data received from the circuit components. The test input generator may provide high speed predictably pseudo-random test input to the circuit components.
Although an embodiment of the invention and its advantages are described in detail, a person skilled in the art could make various alterations, additions, and omissions without departing from the spirit and scope of the present invention as defined by the appended claims.
| Number | Name | Date | Kind |
|---|---|---|---|
| 4771429 | Davis et al. | Sep 1988 | A |
| 5258936 | Gallup et al. | Nov 1993 | A |
| 5369648 | Nelson | Nov 1994 | A |
| 5383143 | Crouch et al. | Jan 1995 | A |
| 5416783 | Broseghini et al. | May 1995 | A |
| 5610926 | Marris | Mar 1997 | A |
| 5619512 | Kawashima et al. | Apr 1997 | A |
| 5787094 | Cecchi et al. | Jul 1998 | A |
| 6393594 | Anderson et al. | May 2002 | B1 |
| 6438722 | Bailey et al. | Aug 2002 | B1 |
| 6530057 | Kimmitt | Mar 2003 | B1 |
| 6701476 | Pouya et al. | Mar 2004 | B2 |
| 6766493 | Hoffman et al. | Jul 2004 | B1 |
| 6807646 | Williams et al. | Oct 2004 | B1 |
| 7197681 | Dervisoglu et al. | Mar 2007 | B2 |