Presently preferred embodiments are described below in conjunction with the appended drawing figures, wherein like reference numerals refer to like elements in the various figures, and wherein:
The ICT 100 may be designed to test a printed circuit board (PCB) 102 or a circuit board panel that includes more than one PCB, such as the circuit board panel 200 described with reference to
The computer 108 includes a processor, data storage, and machine language instructions stored in the data storage executable by the processor as is well known in the art. The computer 108 is not limited to having any particular type of processor, data storage, or instruction format. The computer 108 may select a test application dedicated to a particular type of circuit board design. Generally, the test application drives information to the test head 106.
The test head 106 receives the information from the computer 108 and responds by driving a number of test pins 110 on the test head 106, including those test pins 110 that provide data and address information to the test fixture 104. The test fixture 104 includes contacts 112 aligned with at least some of the test pins 110, which are routed to corresponding spring probes 114. The spring probes 114 are positioned in such a manner so that when the PCB 102 or the circuit board panel 200 is placed on the test fixture 104, the spring probes 114 establish contact with various test pads (not shown) located at a bottom surface of the PCB 102 or the circuit board panel 200. These test pads are routed to various pins of the components attached to the PCB 102 or the circuit board panel 200.
The processor in the computer 108 may be a vector processor, which facilitates testing the PCB 102 or the circuit board panel 200. The vector processor generates an input that is sent to the PCB 102 or the circuit board panel 200, and in response, the vector processor expects a particular output from the PCB 102 or the circuit board panel 200. If the vector processor receives the expected output, then that particular test pattern may be considered as a passing test. Otherwise, the vector processor may identify a test failure, which may indicate that there is a problem with the PCB 102 or the circuit board panel 200. While the vector processor provides efficient testing of the PCB 102 or the circuit board panel 200, this type of processor is unable to make a decision.
The ICT 100 may also be used to program memory components on the PCB 102 or the circuit board panel 200. For example, the ICT 100 may be used to program flash devices located on the PCB 102 or the circuit board panel 200. Generally, the ICT 100 sends programming commands to the flash device, applies the address and data to be programmed, and then polls to verify completion of the programming. Typically, each flash device type has specific instructions for programming that is provided to the ICT 100.
It would be beneficial to implement a parallel programming device that programs all of the flash devices contained on the PCBs located on the circuit board panel 200 (e.g., units under test (UUT)) substantially simultaneously. A multiple-module ICT may have a bus for carrying signals from a specific module to the UUTs that the module tests. Specific flash devices may have failed one or more standard ICT tests and may not be capable of being programmed. The failed flash device should not be programmed. Thus, the parallel programming device should be capable of disabling the programming of specific flash devices if they have failed ICT testing. Additionally, the flash devices that are not programmed should not impede the programming of the other flash devices.
Preferably, the test fixture 104 is designed to have an additional connector (not shown) that the parallel programming devices 300 can connect to. As a result, the parallel programming devices 300 may be described as a “plug-in” device, which may be easily inserted and removed from the test fixture 104 without impacting the operation of the ICT machine. The connecter may be wired to the spring probes 114, which are connected to the contacts 112 in the test fixture 104.
While
As seen in
The parallel programming devices 300 are engaged prior to starting the process to program the flash devices. The individual parallel programming devices 300 apply signaling from the ICT machine bus to the flash device on the UUT as appropriate.
If any of the flash devices (UUT 2, UUT 3, or UUT 4 in this example) did not pass ICT testing and/or do not require programming, the parallel programming device 300 does not connect that UUT to the bus. This prevents the flash device from being programmed as well as protects the bus from possible shorts or device problems associated with that UUT.
As described, the parallel programming devices 300 drive signals from the ICT machine to the UUTs that have flash devices that have passed ICT testing. If more than one UUT has flash devices that have failed ICT testing, the corresponding parallel programming devices 300 do not drive the signals to the those UUTs. As a result, there are numerous combinations of flash devices that are parallel programmed by the parallel programming devices 300 based on which flash devices have passed ICT testing.
Typically, the determination of when the flash program can proceed to the next address and data is determined by a response from the flash device indicating that it has complete its programming. There are two common methods to determine when a flash device has completed an operation: 1) use a hardware signal commonly referred to as the ready busy signal; and 2) directly read the status register of the flash device itself.
To implement the Ready Busy Method, the ready busy line may be pulled low when the flash device is performing an operation and returned to the high state when the operation is complete. By waiting for the ready busy line to return high, the parallel programming device 300 may determine when the next address and data programming can occur. The parallel programming device 300 may include logic to tie together the ready busy lines from all of the flash devices being programmed. The single output of this logic signals that all flash devices have completed an operation and are ready for the next operation.
To implement the Status Register Method, the parallel program device 300 reads the status register by incorporating a microprocessor or a logic device to communicate with the flash devices and then respond through the same ready busy interface described above. When each program operation starts, the processor may pull the same line that is connected to the ready busy line low. When the status register reports that the flash device has completed its operation, the microprocessor or logic device can pull the ready busy line high. This essentially provides similar signaling to the programming source as the Ready Busy Method and, as a result, the programming code may be substantially the same.
To select either the Ready Busy Method or the Status Register Method for a particular flash device, a jumper on the hardware or a signal may be used to identify which method to use. The microprocessor or logic device may process this signal or jumper setting, and respond accordingly.
Additionally, the parallel processing device 300 may have a different design that provides substantially the same functionality. For example, if all of the UUTs have known good flash devices, the microprocessor 802 and/or the buffers 804-808 may be unnecessary. Instead, a direct wire connection between the primary bus interface 810 and the secondary bus interface 812 may be used.
The microprocessor 802 controls the operation of the parallel processing device 300. The microprocessor 802 obtains signals from the ICT machine via the ICT bus connector 814 and the primary bus interface 810. The signals may indicate that the parallel processing device 300 should either enable or disable the buffers 804-808. When the buffers 804-808 are enabled, the microprocessor 802 may allow signaling from the ICT machine to program flash devices connected to the UUT connector 816 via the secondary bus interface 812. The microprocessor 802 may allow access to the UUT until the parallel programming of the flash devices is completed.
By using multiple parallel processing devices 300 in parallel, the ICT machine can program flash devices in parallel, thus, dividing the flash time per device by the number of devices in parallel. While theoretically there may be no limit as to the number of parallel processing devices 300 that can be implemented in parallel, the test fixture 104 may have connection and/or space limitations, which may limit the number of flash devices that can be programmed at the same time.
The set of parallel processing devices 300 allows the flash devices to be programmed at substantially the same time without additional resources from the ICT machine. The following example is described using an HP/Agilent 3070 two-module machine, which is capable of testing and flashing two boards in parallel. If the circuit board panel 200 has ten boards and the flash time per device is 15 seconds, the HP/Agilent 3070 two-module machine requires 75 seconds to program all ten devices: ten devices programmed two at a time. By using the parallel processing devices 300 in the test fixture 104, the HP/Agilent 3070 can flash all ten boards in parallel in 15 seconds. As a result, the time to program the flash devices has been dramatically reduced without having to add additional modules to the HP/Agilent tester.
Other methods of parallel programming may also be used and the invention is not limited to the bus-type methodology described. For example, the ICT machine may transfer program code to each of the parallel programming devices 300 in a sequential manner. In this way, several parallel programming devices 300 may program flash devices at approximately the same time, although the start time of the programming may be delayed by the program transfer time.
It should be understood that the illustrated embodiments are examples only and should not be taken as limiting the scope of the present invention. For example, while the flash programmer 300 has been described herein with reference to the HP/Agilent ICT, the flash programmer 300 can be implemented with other ICTs, such as the ICTs manufactured by Teradyne, Genrad, and others. The claims should not be read as limited to the described order or elements unless stated to that effect. Therefore, all embodiments that come within the scope and spirit of the following claims and equivalents thereto are claimed as the invention.
The present patent application claims priority under 35 U.S.C. § 119(e) to U.S. Provisional Patent Application Ser. No. 60/797,716, which was filed May 4, 2006. The full disclosure of U.S. Provisional Patent Application Ser. No. 60/797,716 is incorporated herein by reference. This application is related to the following concurrently filed U.S. Applications, which are incorporated by reference herein: U.S. patent application Ser. No. ______; filed on Jun. 15, 2006, entitled “Programming Method for Write Buffer and Double Word Flash Programming,” to Amidon et al.; andU.S. patent application serial No. ______; filed on Jun. 15, 2006, entitled “Flash Programmer for Programming NAND Flash and NOR/NAND Combined Flash,” to Amidon et. al.
Number | Date | Country | |
---|---|---|---|
60797716 | May 2006 | US |