US20060212838A1 - System and apparatus for in-system programming - Google Patents

System and apparatus for in-system programming Download PDF

Info

Publication number
US20060212838A1
US20060212838A1 US11/347,537 US34753706A US2006212838A1 US 20060212838 A1 US20060212838 A1 US 20060212838A1 US 34753706 A US34753706 A US 34753706A US 2006212838 A1 US2006212838 A1 US 2006212838A1
Authority
US
United States
Prior art keywords
programming
system programmable
programmable devices
isp
devices
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.)
Abandoned
Application number
US11/347,537
Inventor
Daniel Carson
Hans Ashlock
Sidney Fluhrer
Peter Pias
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.)
CheckSum LLC
Original Assignee
CheckSum LLC
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 CheckSum LLC filed Critical CheckSum LLC
Priority to US11/347,537 priority Critical patent/US20060212838A1/en
Priority to CN2006800115314A priority patent/CN101156153B/en
Priority to EP06734696.5A priority patent/EP1846852B1/en
Priority to PCT/US2006/004660 priority patent/WO2006086596A1/en
Assigned to CHECKSUM, LLC reassignment CHECKSUM, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ASHLOCK, HANS FREDERICK, FLUHRER, SIDNEY CLAYTON, CARSON, DANIEL BENJAMIN, PIAS, PETER A.
Publication of US20060212838A1 publication Critical patent/US20060212838A1/en
Priority to US12/362,267 priority patent/US7802021B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]

Definitions

  • the present invention relates to in-system programming of programmable devices and, in particular, to a system and apparatus for in-system programming of programmable devices at full hardware speed.
  • NVM nonvolatile memory
  • programmable devices include, but are not limited to:
  • PROM Programmable Read-Only Memory
  • PAL Programmable Array Logic and Generic Array Logic
  • EEPROM Electrical Erasable PROM
  • Flash memory and its many relatives are generally used to store instruction codes for microprocessors. Due to their relatively fast programming times, they are also used in many consumer storage applications.
  • microcontrollers contain embedded nonvolatile memories, often including both FLASH and EEPROM memories.
  • the “FPGA” Field-Programmable Gate Array
  • FPGAs occur in endless variety and many kinds of FPGAs are nonvolatile.
  • Some FPGAs are built internally using volatile memory cells rather than nonvolatile cells.
  • an associated nonvolatile memory IC supplies the bits that are loaded into the FPGA's switches.
  • the loading of bits is managed by a processor.
  • the local processor may have additional duties to perform other than programming the FPGA.
  • the FPGA hardware may be used in more than one way during the course of executing various jobs. For example, after a FPGA has served one purpose, the processor can reload it and use it for a different purpose.
  • nonvolatile memory is not strictly limited to digital ICs. There are “analog” ICs that use nonvolatile memory, for example, to hold potentiometer adjustment settings, to provide lookup tables for analog functions, and to hold trim settings for high-precision devices. “Digital” flash memories that hold more than one bit per cell can also be regarded as having an analog basis.
  • “Programmable” integrated circuits are distinct from and different than “nonprogrammable” integrated circuits.
  • “nonprogrammable” integrated circuits are circuits whose configuration is fixed at the time they are manufactured. For example, a great number of “standard” ICs are made from fixed mask sets. These can be purchased from catalogs containing published specifications. “Custom” or “semicustom” ICs are also nonprogrammable. A custom IC is one that is built for a specific purpose for a specific customer. Making a custom IC generally involves making a custom mask that establishes memory contents or logic network at the time the wafer is processed. Such a mask is customer-specified, but is nonetheless fixed. There are masked read-only memories and masked gate arrays, for example, which can be customized by the circuit designer but cannot be altered once they are packaged.
  • programmable integrated circuits may be programmed after they are manufactured.
  • This feature of programmable devices offers many advantages over nonprogrammable devices from the perspective of the people who design and manufacture circuit boards.
  • One advantage is that a read-only memory's contents need not be finalized until late in the manufacturing process, which reduces lead time by making it possible to start board manufacturing before logic designs are fully completed.
  • Another advantage is that a programmable IC makes it possible to introduce engineering changes quickly, while products are in production.
  • programmable ICs allow circuit boards to implement wholly different functionality while remaining identical to one another with respect to procurement and inventory logistics which reduces hardware cost and manufacturing overhead.
  • Programmable devices to be useful, require a mechanism for programming them.
  • a device is called a “prom programmer.”
  • the prom programmer executes algorithms that cause the programming information to be written into the memories in the devices.
  • Raw, unprogrammed devices are brought from stock, programmed, labeled, and either returned to stock or taken to the place where they will be installed into circuit boards.
  • the programming protocols also referred to herein as device algorithms, that are specified by the IC manufacturers may involve high voltages and may involve reading data back out of the device to see when the programming or erasing operation has succeeded.
  • ISP Intelligent System Programming
  • ICs can be specifically designed for ISP.
  • a chip may be generally regarded as an ISP chip if the IC programming protocol involves no damaging voltages and if its programming protocol can be executed successfully in the presence of other components.
  • circuit boards can be designed to allow the in-system programming of ICs that were not originally designed as ISP devices.
  • a given device may be ISP or not ISP based on its original design and on the constraints imposed on it by surrounding components on the board to which it is attached.
  • ISP chips use bus protocols that are standard in the electronics industry, such as “I 2 C” (Inter-IC Communications), “SPI” (Serial Peripheral Interface), “MicroWire,” “JTAG” (Joint Test Action Group), and so forth.
  • I 2 C Inter-IC Communications
  • SPI Serial Peripheral Interface
  • MicroWire MicroWire
  • JTAG Joint Test Action Group
  • ISP greatly simplifies material logistics as well since the programmed parts need not be renumbered, labeled, counted, or depreciated. When the design changes, the stock does not have to be purged and updated.
  • ISP is a rapidly growing segment in the programmable-IC market, estimated to be doubling annually.
  • the ISP advantages have been known for some time, but growth in their use, particularly the combination of ISP with test equipment such as an MDA or ICT, has not matched the growth of the ISP integrated circuit market as a whole.
  • the slow growth of ISP and ISP with testing is the result of the drawbacks existing in current systems. For example, the time taken to perform programming with today's test equipment is not acceptable. Additionally, current test equipment is not capable of managing and/or implementing ISP routines necessary to fully test an ISP device. Still further, existing ISP equipment does not provide the ability to program multiple ISP devices of various types, each potentially requiring a different bus protocol simultaneously.
  • a system for the concurrent programming of a plurality of ISP devices installed on one or more circuit boards may include a host computer with an external bus interface and at least one communication interface located proximally to at least one ISP device on at least one circuit board.
  • the communication interface(s) may be positioned close to the ISP device(s).
  • the system may include a subsidiary processing circuit located proximally to a circuit board containing an ISP device and under control of the host computer.
  • the subsidiary processing circuit may include a bus interface for communication with the host computer, a local processor arranged to receive programs of instructions from the host computer and to store them in its local memory, a local volatile FPGA arranged to receive its program under control of the host computer and local processor, and a wired interface to the communication interface(s).
  • the communication interface(s) and the subsidiary processing circuit may be implemented on separate devices or integrated onto a single device. Additionally, the communication interface and/or the subsidiary processing circuit may be integrated into the host computer.
  • an application software development system for preparing at least one file containing a program of instructions executable by the host computer.
  • the system may also be used to prepare at least one file containing a program of instructions executable by the local processor of the subsidiary processing circuit for programming an ISP device (otherwise referred to as a device algorithm), and at least one file representing an FPGA program to configure a FPGA for generating ISP serial bus transactions (otherwise referred to as a bus algorithm).
  • the system may be used to prepare at least one file representing an array of digital information to be stored in an ISP device installed on a circuit board.
  • the system may also include a runtime software system comprising software elements for transferring information to the subsidiary processing circuit for the purpose of producing signals on its wired interface to a communication interface.
  • the signals may be used to affect the loading of programming information into an ISP chip or into ISP chips installed on the circuit board or circuit boards.
  • one subsidiary processing circuit may program several ISP devices of the same type concurrently via a plurality of communication interfaces.
  • the total time taken to program all of the ISP devices may be the time taken to program the ISP device that takes the longest.
  • the subsidiary processing circuit may be implemented on the same device as one or more of the plurality of communication interfaces.
  • the communication interfaces may be implemented on one or more devices.
  • the host computer may also host an automatic tester and the circuit board may be held in a test fixture that contains contact pins contacting electrical nodes of the circuit board.
  • the subsidiary processing circuit and at least one communication interface may also be mounted in the test fixture and electrical connections between the communication interface and electrical nodes of the circuit board may be effected by contact pins in the fixture.
  • the host computer may also contain a software operating system that controls the automatic tester and that contains a sequence of instructions, which causes the host computer's operating system to launch a second program of instructions.
  • the second program may be used to effect an ISP application for programming ISP devices installed on the circuit board that is held in the test fixture. Additionally, the second program of instructions may contain a sequence of instructions that causes the host computer's operating system to return control to the software system of the automatic tester.
  • an application development system for developing applications for the concurrent programming of multiple ISP devices, including a visual user interface containing selector objects.
  • the system may include a selector object that selects an ISP device type from a library of device types, identifies a data file representing fields of digital information to be programmed into an ISP device, and identifies a word width for ISP devices having more than one word width.
  • the output of the application development process may include at least one file containing a program of instructions executable by the host computer, at least one file containing a program of instructions for a subsidiary processor outside the host computer, and at least one file containing fields of digital information for programming an FPGA to generate an ISP programming protocol.
  • the output of the application development process may include at least one configuration file representing the configuration of the application.
  • the configuration files may include a path name to a file containing information representing an ISP device algorithm, a path name to a file containing information representing an ISP bus algorithm, an information field describing the location and structure of data files containing data to be programmed into the ISP devices, an information field describing devices and ports used for communicating with a subsidiary processing circuit and with elements of said subsidiary processing circuit, and an information field describing the number of ISP devices to be concurrently programmed, the type of those ISP devices, the amount of information to be programmed into each device, and the disposition of error information.
  • the file containing a program of instructions executable by said host computer may be based on a Dynamic Link Library (“DLL”) and the DLL may provide an Application Program Interface (“API”).
  • the API may provide routines including, but not limited to, the method of erasing an ISP device prior to programming it, verifying erasure of an ISP device, programming an ISP device, verifying the ISP after programming it, and returning the ISP device status after an ISP operation.
  • a system for the programming of ISP devices attached to circuit boards in which processing of information is carried out at three processing levels is provided.
  • a host computer programmed to load digital information into a subsidiary processor.
  • a subsidiary processor programmed to execute a device algorithm.
  • an FPGA programmed to execute a bus algorithm.
  • the device algorithm may be selected from a library of device algorithms and the bus algorithm may be selected from a library of bus algorithms.
  • FIG. 1 is a block diagram of a system for in-system programming of programmable devices, in accordance with an embodiment of the present invention
  • FIG. 2 is a block diagram of a detail view of a System PC, configured in accordance with an embodiment of the present invention
  • FIG. 3 is a block diagram of an in-system programming circuit and a communication interface, configured in accordance with an embodiment of the present invention
  • FIG. 4 is a block diagram of a detail view of a in-system programming circuit, configured in accordance with an embodiment of the present invention.
  • FIGS. 5A and 5B are pictorial diagrams of a data entry form provided as part of an application development visual environment, in accordance with an embodiment of the present invention.
  • embodiments of the present invention will be described as operating in association with an automatic test machine. However, embodiments of the present invention are not limited to such a configuration and may be configured to be fully capable of operating independent of an automatic test machine. Accordingly, embodiments of the present invention may be designed for operating with or without the use of an automatic test machine without departing from the spirit and scope of the invention.
  • the obstacles include, but are not limited to:
  • the effect of the bulk is more than cosmetic, as it forces the programming apparatus to be distant from the ISP devices, the parasitic effects of having long wires between the device and the accessory can have a deleterious effect on the performance of the application as a whole.
  • Embodiments of the present invention resolve some, if not all, of these obstacles and thereby provide significant cost advantages to users of ISP.
  • ATE hardware and software is designed first for testing and second (if at all) for programming ISP.
  • ATE machines tend to be analog-only and have no facilities for handling digital information of any kind. In general, most of their work is performed without applying power to the board under test, ruling out ISP work entirely.
  • a digital tester may rely on the tester's native digital stimulus and response system, typically memory-backed channel circuits. Massive amounts of expensive high-speed memory may need to be added to handle the number of patterns or else the tester will take time to repeatedly reload its testhead memory, slowing the operations to a crawl. It is certain that the amount of memory contained in ISP devices will increase over time, so no amount of memory added to an ATE's test head will ever be enough to handle all anticipated future needs.
  • Makers of digital ATE therefore provide specialized accessories and handle ISP programming as an afterthought, as in Raymond, Douglas W., et al., “Non-volatile Programmable Devices and In-Circuit Test,” Paper 33.3 , International Test Conference 1994, IEEE 0-7803-2102-2/94.
  • the ISP accessories available with some digital ATE also interact with only one IC at a time.
  • the processing time is the sum of the processing time for all the ISP chips on the board under test and the throughput is unacceptably slow.
  • the tester must, after all, keep up with the assembly equipment or be taken out of the production line.
  • ATE software system tends to be optimized for letting the user manipulate single bits but not for processing large data files that are organized as words or bytes. Converting the data files into languages made for the ATE can lead to unacceptably long setup and debug periods. It can also adversely affect the handling of changes in data files.
  • one aspect of the present invention is to serve as a fully capable, ISP-oriented, universal prom type programmers that can stand alone or be economically integrated into high-end or low-end ATE. Additionally, embodiments of the present invention are designed to minimize the amount of setup work and may be particularly structured to facilitate the handling of multiple devices. Still further, embodiments of the present invention may be configured to handle data files without having to translate those files into an ATE language.
  • FIG. 1 is a block diagram of an overall ISP test system, configured in accordance with an embodiment of the present invention.
  • the System Personal Computer (“System PC”) 1 controls an ISP circuit 2 (also referred to herein as a subsidiary processing circuit) over an interface 12 .
  • the interface is a Universal Serial Bus 2.0 (“USB”) 12 .
  • USB Universal Serial Bus 2.0
  • any type of communication interface may be used with embodiments of the present invention.
  • a parallel interface, firewire, wireless, infrared, or any other type of interface may be used.
  • the ISP circuit 2 (subsidiary processing circuit) may be integrated into the System PC, thereby eliminating the need for the interface.
  • FIG. 2 is a more detailed view of the System PC 1 , configured in accordance with an embodiment of the present invention.
  • the System PC 1 provides an operating environment for the runtime application 9 and a custom ISP application 8 , two software modules that pass control back and forth.
  • embodiments of the present invention There are two main phases in the operation of embodiments of the present invention, erase operations and verification operations. Status operations may also be performed as part of the Runtime ISP programming. These and other operations may be included in the ISP programming phase. As a whole, embodiments of the present invention are designed to handle one or both phases.
  • an application development visual environment ( FIGS. 5A and 5B ) provides a data entry form 500 in which the developer specifies the type of device to be programmed 501 , the location of the device 503 , the file name of the data file holding data to be written into the device 505 , and other customer-specific device configuration items. Other customer-specific device configuration items may include mode, speed, calibration data, device size, data alignment, and block size.
  • selection of a buffer wiring button 507 provides a wiring arrangement window 510 .
  • the wiring arrangement window identifies the specific connections between the devices bus in the communication interface 3 ( FIG. 1 ).
  • the wiring arrangement may be checked to confirm the accuracy of the physical wiring prior to programming.
  • selection of a Check Wiring button 511 will result in each wiring connection being confirmed according to the wiring arrangement provided in the wiring arrangement window 510 .
  • a user may probe each individual wiring connection, using a wiring probe (not shown) and be provided with an identification of the appropriate wiring connection, as shown in the wiring arrangement window 510 .
  • a user may select a Probe UUT button 513 to activate the probe application and then physically touch a wiring connection with a wiring probe. In response to a wiring connection being touched with a probe, the corresponding wiring connection, as identified in the wiring arrangement window, will be emphasized (e.g., highlighted).
  • the “Device Type” information 501 is used by the System PC to load the appropriate device algorithm 18 ( FIG. 3 ) and bus algorithm 20 files into the ISP circuit 2 for the type of device being programmed.
  • the files are uploaded to memory 19 , such as an Advanced RISC Microprocessor (“ARM”) memory, in ISP circuit 2 by the system ISP DLL 11 at run time.
  • the application development software 10 selects the algorithm files appropriate for the selected device type from libraries of device algorithms 6 ( FIG. 2 ) and bus algorithms 5 ( FIG. 2 ).
  • Embodiments of the present invention are designed such that information for multiple different devices may be provided and those devices programmed concurrently. For example, multiple devices of the same type in communication with any number of buffer circuits may be concurrently programmed. Alternatively, multiple different devices on multiple different boards may be programmed concurrently. In one embodiment of the present invention, up to 24 boards may be programmed concurrently. However, it will be appreciated that this is not the limit of boards that may be programmed with embodiments of the present invention. In particular, by increasing the size of the FPGA 16 ( FIG. 2 ) and adding I/O pins, an unlimited number of boards may be programmed and optionally verified concurrently.
  • the file may be a text-based INI file that is read by the custom ISP application 8 at run time.
  • an API may be used to build a Custom ISP Application 8 . This is an optional step, as a default ISP application may also be used.
  • the custom ISP application 8 may be developed in the C/C++ programming language based on a minimum skeleton program (not shown) and using the functions defined in the API to perform ISP operations.
  • the API may include functions for, among other things (1) initializing the system hardware; (2) loading the custom data file(s) into memory; (3) loading a device algorithm specified by the custom configuration file 13 into the system hardware (ARM7); (4) loading the bus algorithm specified by the configuration file 13 into the system hardware (FPGA); (5) loading the device configuration parameters specified in the custom configuration file into the system hardware (ARM7) to be used by the ISP device algorithm 6 ; and (6) performing program, erase, check, program dynamic data (e.g., serial numbers), and verifying ISP operations on the Device Under Test (“DUT”).
  • the API may also include other functions as well.
  • the API is designed to provide options (steps) based on a user's needs. The number and arrangement of options is limitless and each individual user can design or have designed an API that meets his or her individual needs.
  • the API links with the system Driver (DLL), which is able to communicate with the system hardware via an interface, such as a USB 2.0.
  • the system DLL implements all of the details required for processing user data and controlling the system hardware.
  • the end result of the application development session is the custom ISP application 8 , plus a custom configuration File 13 , which references library files 5 and 6 ( FIG. 1 ) that contain the chosen device algorithm 18 and bus algorithm 20 , and a user data file(s) 7 .
  • the custom ISP application 8 utilizes the functions implemented in the system driver that control the system hardware.
  • Run-time ISP programming occurs when the custom ISP application 8 is executed by the run time application 9 that runs in the System PC 1 .
  • the first time the custom ISP application 8 runs it initiates the hardware setup and follows it immediately by programming the ISP devices. If the hardware has already been set up when the custom ISP application 8 runs, the hardware setup stage may be omitted.
  • custom ISP application 8 In the beginning of the hardware setup phase, files that pertain to that board type are retrieved by the System PC 1 from its mass storage. Ordinarily these files are retrieved at the beginning of a run of boards and need not be retrieved again for each board.
  • the files are loaded into PC memory as custom ISP application 8 and user data 7 .
  • the PC may have other tasks running as well (for example, an ATE task 9 ).
  • the VisMDA software 9 launches custom ISP application 8 at an appropriate time and custom ISP application 8 processes the custom configuration file 13 .
  • the custom ISP application (by calling the appropriate functions in system API) loads the appropriate device and bus Algorithms 18 and 20 , loads the appropriate user 7 , and then executes the appropriate ISP programming steps.
  • the ISP circuit 2 uses an interface chip 14 , such as a Cypress USB 2.0 Interface Chip (“FX2”), to interface its end of the USB link 12 .
  • the ISP circuit may also contain a subsidiary processor 15 , such as an ARM7 chip.
  • the subsidiary processor 15 receives its operating software, the device algorithm 18 , and the bus algorithm 20 from the interface 12 , and stores them in Random Access Memory (“RAM”).
  • the subsidiary processor 15 may also use JTAG to program the FPGA 16 with the bus algorithm 20 .
  • FPGA 16 may be of a type served by a flash memory 17 , in which case the subsidiary processor 15 may store the FPGA code in the flash memory. Because multiple different types of devices may be programmed, the FPGA may include multiple algorithms for interfacing with different types of devices and/or multiple different types of communication interfaces.
  • the data to be stored in the various ISP chips at runtime is transferred to the ISP circuit 2 from the System PC 1 over the interface 12 during runtime ISP programming, but the basic structures only need be set up once for a series of programming operations.
  • the ISP circuit 2 may be integrated with the System PC 1 .
  • a separate board (or set of boards) containing communication interface 3 communicates to the individual ISP chips, each of which is labeled DUT 4 in the drawings.
  • the link 21 from the ISP circuit 2 to the buffer circuit(s) 3 may be, for example, a twisted pair.
  • the buffer circuits may be implemented on one or more buffer boards. If the application requires more than one buffer board, the link 21 is daisy-chained from each buffer board to the next. Additionally, in an alternative embodiment, the buffer circuit(s) 3 may be integrated onto the same board as the ISP circuit 2 .
  • the buffer circuits are located immediately adjacent to the DUTs, providing short wires so as to avoid problems with parasitic lead inductance, capacitance, and transmission line effects.
  • the wires are kept short enough so that the propagation time of a signal on the wires is less than one-half of the edge transition times of the signals being propagated. For example, a signal having a one-nanosecond rise time may be carried in a wire short enough to carry the signal in one-half of a nanosecond.
  • the length of the wire would depend on its characteristic impedance, but would generally be in the neighborhood of five inches.
  • a terminator may be located on the last buffer circuit 3 to prevent signal reflections.
  • subsidiary processor 15 provides data for programming each DUT 4 to FPGA 16 as requested by bus algorithm 18 .
  • FPGA 16 uses bus algorithm 20 , engages in the bus protocol for each of several DUTs 4 , and is the direct cause of writing each data element into each DUT 4 .
  • the DUT it is advantageous to divide the work of programming the DUT in these three processing levels.
  • a host computer 1 programmed to load digital information into a subsidiary processor 15 which may be accomplished by the host computer 1 generating serial bus data streams for communicating with the subsidiary processing circuit (ISP circuit) 2 .
  • a subsidiary processor 15 of the ISP circuit 2 programmed to execute a device algorithm 18 .
  • the device algorithm 18 is selected from a library of device algorithms and is specific to the type of device to be programmed.
  • the device algorithm includes the sequence of steps to be performed, such as erase, program, and verify, for the DUTs.
  • an FPGA 16 programmed to execute a bus algorithm which generates the appropriate bus protocol for the ISP device being programmed.
  • the bus algorithm 20 in the FPGA 16 handles communication to the ISP device(s) 4 at full hardware speed.
  • the bus algorithm might be implemented as a processor subsystem or as a collection of hard-wired logic engines. If the bus algorithm were implemented as a processor subsystem, each operation in the bus algorithm would have to be performed by the execution of an instruction or sequence of instructions in a processor running a program of instructions and may not be carried out as rapidly. If the bus algorithm were implemented as a hardware engine, the flexibility needed for a universal programming appliance would be absent.
  • the subsidiary processor 15 executes the device algorithm 18 , which provides the data element to be written and monitors the bus algorithm for completion of the previous cycle. Subsidiary processor 15 may also maintain a reserve of data to be programmed, making the next data element available to the bus algorithm 20 immediately upon completion of programming the previous one.
  • the data queue would be maintained by the System PC 1 which would bring about a delay in requesting and receiving the data over the external bus 12 connecting the System PC and the ISP circuit.
  • the System PC 1 may be busy with other tasks during ISP programming and might not be able to support the needs of the device algorithm in a timely manner.
  • embodiments of the present invention provide the ability to verify the devices as they are programmed. Typical techniques for verifying devices require that the results be obtained from each programmed device and be read back to a System PC individually. For DUTs with a large number of devices, this verification technique is time consuming and slows the production line to an unacceptable level. Embodiments of the present invention provide the ability to write results from all programmed devices back to the ISP circuit and compare all data with expected results concurrently. Thus, regardless of the number of devices being programmed, the total time consumed in verifying the programming is only equal to the total time it takes to verify the one individual device that takes the longest time to verify.

Abstract

Embodiments of the present invention relate to machines that perform in-system programming of programmable devices that are attached to assembled printed circuit boards. In accordance with one aspect, multiple nonvolatile devices may be programmed in a single session at their normal maximum programming speeds. Different nonvolatile devices on a board can receive different data. Data variables can be inserted so that not all boards receive identical data. A master controller sends image files and algorithm information to a subsidiary controller. The subsidiary controller executes a device algorithm, and an FPGA executes a bus algorithm. Embodiments of the present invention can be designed as stand-alone systems or to operate cooperatively with an automatic tester, so that testing and device programming can take place in a single operation using a single fixture to hold the circuit board.

Description

    CROSS-REFERENCE TO RELATED APPLICATION
  • This application claims the benefit of Provisional Application No. 60/651,783, filed Feb. 9, 2005, the benefit of which is hereby claimed under 35 U.S.C. § 119, and which is incorporated herein by reference.
  • FIELD OF THE INVENTION
  • In general, the present invention relates to in-system programming of programmable devices and, in particular, to a system and apparatus for in-system programming of programmable devices at full hardware speed.
  • BACKGROUND
  • “Programmable devices” are integrated circuits that contain nonvolatile memory (“NVM”). There are many kinds in use today, and it is certain that more new kinds will be introduced in the future. Nonvolatile memory is used for many purposes and occurs in many forms in many different kinds of programmable devices. For example, programmable devices include, but are not limited to:
  • 1. “PROM” (Programmable Read-Only Memory) is an example of a programmable nonvolatile device.
  • 2. “PAL” and “GAL” (Programmable Array Logic and Generic Array Logic) have similarly been used for many years to implement simple logic functions and to create replacements for ICs that have become obsolete.
  • 3. “EEPROM” (Electrically Erasable PROM). These types of NVM are most often used for bootstrap loading microprocessors.
  • 4. “Flash memory” and its many relatives are generally used to store instruction codes for microprocessors. Due to their relatively fast programming times, they are also used in many consumer storage applications.
  • 5. Many microcontrollers contain embedded nonvolatile memories, often including both FLASH and EEPROM memories.
  • 6. The “FPGA” (Field-Programmable Gate Array) contains memory cells that control switches and the switches, in turn, establish the logic networks that define the functions of the FPGA. FPGAs occur in endless variety and many kinds of FPGAs are nonvolatile.
  • Some FPGAs are built internally using volatile memory cells rather than nonvolatile cells. In most applications of volatile FPGAs, an associated nonvolatile memory IC supplies the bits that are loaded into the FPGA's switches. In other applications of volatile FPGAs, the loading of bits is managed by a processor. The local processor may have additional duties to perform other than programming the FPGA. Indeed, the FPGA hardware may be used in more than one way during the course of executing various jobs. For example, after a FPGA has served one purpose, the processor can reload it and use it for a different purpose.
  • The use of nonvolatile memory is not strictly limited to digital ICs. There are “analog” ICs that use nonvolatile memory, for example, to hold potentiometer adjustment settings, to provide lookup tables for analog functions, and to hold trim settings for high-precision devices. “Digital” flash memories that hold more than one bit per cell can also be regarded as having an analog basis.
  • “Programmable” integrated circuits are distinct from and different than “nonprogrammable” integrated circuits. In particular, “nonprogrammable” integrated circuits are circuits whose configuration is fixed at the time they are manufactured. For example, a great number of “standard” ICs are made from fixed mask sets. These can be purchased from catalogs containing published specifications. “Custom” or “semicustom” ICs are also nonprogrammable. A custom IC is one that is built for a specific purpose for a specific customer. Making a custom IC generally involves making a custom mask that establishes memory contents or logic network at the time the wafer is processed. Such a mask is customer-specified, but is nonetheless fixed. There are masked read-only memories and masked gate arrays, for example, which can be customized by the circuit designer but cannot be altered once they are packaged.
  • In contrast, programmable integrated circuits may be programmed after they are manufactured. This feature of programmable devices offers many advantages over nonprogrammable devices from the perspective of the people who design and manufacture circuit boards. One advantage is that a read-only memory's contents need not be finalized until late in the manufacturing process, which reduces lead time by making it possible to start board manufacturing before logic designs are fully completed. Another advantage is that a programmable IC makes it possible to introduce engineering changes quickly, while products are in production. Additionally, programmable ICs allow circuit boards to implement wholly different functionality while remaining identical to one another with respect to procurement and inventory logistics which reduces hardware cost and manufacturing overhead.
  • Programmable devices, to be useful, require a mechanism for programming them. Conventionally, such a device is called a “prom programmer.” The prom programmer executes algorithms that cause the programming information to be written into the memories in the devices. Raw, unprogrammed devices are brought from stock, programmed, labeled, and either returned to stock or taken to the place where they will be installed into circuit boards. The programming protocols, also referred to herein as device algorithms, that are specified by the IC manufacturers may involve high voltages and may involve reading data back out of the device to see when the programming or erasing operation has succeeded.
  • “ISP” (In-System Programming) is defined as the act of “programming a component after it has been permanently installed on a circuit board.” ICs can be specifically designed for ISP. A chip may be generally regarded as an ISP chip if the IC programming protocol involves no damaging voltages and if its programming protocol can be executed successfully in the presence of other components. In addition, circuit boards can be designed to allow the in-system programming of ICs that were not originally designed as ISP devices. A given device may be ISP or not ISP based on its original design and on the constraints imposed on it by surrounding components on the board to which it is attached.
  • Most ISP chips use bus protocols that are standard in the electronics industry, such as “I2C” (Inter-IC Communications), “SPI” (Serial Peripheral Interface), “MicroWire,” “JTAG” (Joint Test Action Group), and so forth. The four protocols mentioned above are well known and widely used standards and are known to persons of ordinary skill in the art of electronic design. Other ISPs may use custom designed bus protocols.
  • The advantages of ISP over conventional programmability are considerable. A conventional programmable chip needs to be handled twice, once for programming the chip and a second time for installing the chip on its circuit board.
  • ISP greatly simplifies material logistics as well since the programmed parts need not be renumbered, labeled, counted, or depreciated. When the design changes, the stock does not have to be purged and updated.
  • If ISP activities are combined with automatic testing, further advantages accrue. Loading code into programmable ICs adds value to the board, as the board coming out of test is not identical to the board going in. The test equipment can therefore be seen as a value-added process step in contrast to conventional testing wherein the board under test is tested, but not programmed. The success or failure of the programming operation can be counted as an additional quality assurance test as well. Finally, the testing station is already a required part of the assembly operation. If the testing station carries out the programming and the programming time is not excessive, an additional programming station is not required.
  • People who set up assembly lines for manufacturing printed circuit assemblies have a lot of different kinds of automatic test equipment from which to choose. For the least amount of money, an “MDA” (Manufacturing Defect Analyzer) or low end “ICT” (In-Circuit Tester) capable of detecting solder shorts, making analog measurements, and checking connectivity pin faults on integrated circuits may be obtained. For larger dollar values, complex combinational testers capable of conducting digital function tests and making parametric measurements with board power applied may be obtained. A vast price disparity exists from one end of the “ATE” (Automatic Test Equipment) market spectrum to the other. A so-called “high end” automatic tester may cost 50 times as much as an MDA. Regardless of the price of the machine, the ISP facilities currently available are minimal and are generally not capable of operating at a speed necessary for programming as part of the assembly line.
  • ISP is a rapidly growing segment in the programmable-IC market, estimated to be doubling annually. The ISP advantages have been known for some time, but growth in their use, particularly the combination of ISP with test equipment such as an MDA or ICT, has not matched the growth of the ISP integrated circuit market as a whole. The slow growth of ISP and ISP with testing is the result of the drawbacks existing in current systems. For example, the time taken to perform programming with today's test equipment is not acceptable. Additionally, current test equipment is not capable of managing and/or implementing ISP routines necessary to fully test an ISP device. Still further, existing ISP equipment does not provide the ability to program multiple ISP devices of various types, each potentially requiring a different bus protocol simultaneously.
  • Accordingly, there is a need for a system and apparatus that resolves the drawbacks that exist with typical ISP equipment. Additionally, a system and apparatus that resolves these problems that may be utilized in conjunction with any existing Automatic Test Equipment, including high-end in-circuit tester, low-end manufacturing defect analyzer, or any type of equipment there between, is desirable.
  • SUMMARY
  • According to one aspect of the present invention, a system for the concurrent programming of a plurality of ISP devices installed on one or more circuit boards is provided. The system may include a host computer with an external bus interface and at least one communication interface located proximally to at least one ISP device on at least one circuit board. The communication interface(s) may be positioned close to the ISP device(s). Additionally, the system may include a subsidiary processing circuit located proximally to a circuit board containing an ISP device and under control of the host computer. The subsidiary processing circuit may include a bus interface for communication with the host computer, a local processor arranged to receive programs of instructions from the host computer and to store them in its local memory, a local volatile FPGA arranged to receive its program under control of the host computer and local processor, and a wired interface to the communication interface(s). The communication interface(s) and the subsidiary processing circuit may be implemented on separate devices or integrated onto a single device. Additionally, the communication interface and/or the subsidiary processing circuit may be integrated into the host computer.
  • Still further, an application software development system for preparing at least one file containing a program of instructions executable by the host computer is provided. The system may also be used to prepare at least one file containing a program of instructions executable by the local processor of the subsidiary processing circuit for programming an ISP device (otherwise referred to as a device algorithm), and at least one file representing an FPGA program to configure a FPGA for generating ISP serial bus transactions (otherwise referred to as a bus algorithm). Additionally, the system may be used to prepare at least one file representing an array of digital information to be stored in an ISP device installed on a circuit board.
  • The system may also include a runtime software system comprising software elements for transferring information to the subsidiary processing circuit for the purpose of producing signals on its wired interface to a communication interface. The signals may be used to affect the loading of programming information into an ISP chip or into ISP chips installed on the circuit board or circuit boards.
  • In the system generally described above, one subsidiary processing circuit may program several ISP devices of the same type concurrently via a plurality of communication interfaces. For example, the total time taken to program all of the ISP devices may be the time taken to program the ISP device that takes the longest. Additionally, the subsidiary processing circuit may be implemented on the same device as one or more of the plurality of communication interfaces. Likewise, the communication interfaces may be implemented on one or more devices.
  • Still further, the host computer may also host an automatic tester and the circuit board may be held in a test fixture that contains contact pins contacting electrical nodes of the circuit board. The subsidiary processing circuit and at least one communication interface may also be mounted in the test fixture and electrical connections between the communication interface and electrical nodes of the circuit board may be effected by contact pins in the fixture.
  • The host computer may also contain a software operating system that controls the automatic tester and that contains a sequence of instructions, which causes the host computer's operating system to launch a second program of instructions. The second program may be used to effect an ISP application for programming ISP devices installed on the circuit board that is held in the test fixture. Additionally, the second program of instructions may contain a sequence of instructions that causes the host computer's operating system to return control to the software system of the automatic tester.
  • In accordance with another aspect of the present invention, an application development system for developing applications for the concurrent programming of multiple ISP devices, including a visual user interface containing selector objects, is provided. The system may include a selector object that selects an ISP device type from a library of device types, identifies a data file representing fields of digital information to be programmed into an ISP device, and identifies a word width for ISP devices having more than one word width. The output of the application development process may include at least one file containing a program of instructions executable by the host computer, at least one file containing a program of instructions for a subsidiary processor outside the host computer, and at least one file containing fields of digital information for programming an FPGA to generate an ISP programming protocol.
  • The output of the application development process may include at least one configuration file representing the configuration of the application. For example, the configuration files may include a path name to a file containing information representing an ISP device algorithm, a path name to a file containing information representing an ISP bus algorithm, an information field describing the location and structure of data files containing data to be programmed into the ISP devices, an information field describing devices and ports used for communicating with a subsidiary processing circuit and with elements of said subsidiary processing circuit, and an information field describing the number of ISP devices to be concurrently programmed, the type of those ISP devices, the amount of information to be programmed into each device, and the disposition of error information.
  • In such an application development system, the file containing a program of instructions executable by said host computer may be based on a Dynamic Link Library (“DLL”) and the DLL may provide an Application Program Interface (“API”). The API may provide routines including, but not limited to, the method of erasing an ISP device prior to programming it, verifying erasure of an ISP device, programming an ISP device, verifying the ISP after programming it, and returning the ISP device status after an ISP operation.
  • In accordance with another aspect of the present invention, a system for the programming of ISP devices attached to circuit boards in which processing of information is carried out at three processing levels is provided. At a first processing level is a host computer programmed to load digital information into a subsidiary processor. At a second processing level is a subsidiary processor programmed to execute a device algorithm. Finally, at a third processing level is an FPGA programmed to execute a bus algorithm. Additionally, the device algorithm may be selected from a library of device algorithms and the bus algorithm may be selected from a library of bus algorithms.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
  • FIG. 1 is a block diagram of a system for in-system programming of programmable devices, in accordance with an embodiment of the present invention;
  • FIG. 2 is a block diagram of a detail view of a System PC, configured in accordance with an embodiment of the present invention;
  • FIG. 3 is a block diagram of an in-system programming circuit and a communication interface, configured in accordance with an embodiment of the present invention;
  • FIG. 4 is a block diagram of a detail view of a in-system programming circuit, configured in accordance with an embodiment of the present invention; and
  • FIGS. 5A and 5B are pictorial diagrams of a data entry form provided as part of an application development visual environment, in accordance with an embodiment of the present invention.
  • DETAILED DESCRIPTION
  • For purposes of this discussion, embodiments of the present invention will be described as operating in association with an automatic test machine. However, embodiments of the present invention are not limited to such a configuration and may be configured to be fully capable of operating independent of an automatic test machine. Accordingly, embodiments of the present invention may be designed for operating with or without the use of an automatic test machine without departing from the spirit and scope of the invention.
  • As noted above, today's ATE market has not fully come to grips with the need to program ISP chips during production. There are several identifiable obstacles to easy use of ISP. The obstacles include, but are not limited to:
      • 1. Typical accessories specifically designed to work as accessories to ATE machines do not provide the ease of use that prom programmers provide. ATE application development systems are primarily devoted to the complexities of testing boards. The accessory is designed as an integral part of the ATE. It features an ATE-like application development system, which is to say, it has complexities not usually found in the application system of a conventional prom programmer;
      • 2. Prom programmers are oriented to socketed ICs, do not take advantage of ISP capabilities, and are designed to stand alone, dealing with isolated chips;
      • 3. If a board contains multiple ISP devices, as in a board containing several copies of a simpler board, multiple prom programmers must be integrated, at great expense. Multiple prom programmers integrated together may interfere with each other. The multiple-programmers problem is especially acute if there are ISP devices of different types on the board;
      • 4. The ISP workpiece has a high value as a piece of semi-finished goods compared to the value of its parts prior to assembly. In addition, the semi-finished workpiece occupies a place in a production line representing high capital investment. In high volume assembly operations, the cycle time per assembled board or “takt time” is responsible for a large part of the cost of assembling the circuit board. Speed of programming is therefore far more important in an ISP situation than in a conventional situation where chips have not yet been assembled into an expensive circuit board and a more leisurely off-line programming pace can be tolerated; and
      • 5. Accessories designed for ISP programming tend to be too bulky to include in an ATE test fixture, especially if multiples are required.
  • The effect of the bulk is more than cosmetic, as it forces the programming apparatus to be distant from the ISP devices, the parasitic effects of having long wires between the device and the accessory can have a deleterious effect on the performance of the application as a whole.
  • For all these reasons, therefore, ISP has not yet fully realized its promise. Embodiments of the present invention, as described below, resolve some, if not all, of these obstacles and thereby provide significant cost advantages to users of ISP.
  • Typically, native ATE hardware and software is designed first for testing and second (if at all) for programming ISP. At the low end, ATE machines tend to be analog-only and have no facilities for handling digital information of any kind. In general, most of their work is performed without applying power to the board under test, ruling out ISP work entirely.
  • At the high end, typical ATE machines are designed with a digital focus and apply power to the board under test. They still do not address the needs of ISP well. Indeed, ISP accessories are available for most digital-capable ATE, as discussed in (1) Raymond, Douglas W., et al., “Non-Volatile Programmable Devices and In-Circuit Test,” Paper 33.3, International Test Conference 1994, IEEE 0-7803-2102-2/94; (2) (author not disclosed), “Agilent 3070 In-System Programming (ISP) Family” Agilent, Inc., 5988-4043EN http://we.home.agilent.com/upload/cmc_upload/All/59884043en.pdf; and (3) (author not disclosed), “Onboard Programming Solutions,” Genrad, Inc., GR222-07/2001 http://www.teradyne.com/atd/resource/docs/testStation/gr_ts-222.pdf. However, such systems tend to be constrained in ways that increase their cost or limit their throughput to the point of unusability in high volume production.
  • For example, a digital tester may rely on the tester's native digital stimulus and response system, typically memory-backed channel circuits. Massive amounts of expensive high-speed memory may need to be added to handle the number of patterns or else the tester will take time to repeatedly reload its testhead memory, slowing the operations to a crawl. It is certain that the amount of memory contained in ISP devices will increase over time, so no amount of memory added to an ATE's test head will ever be enough to handle all anticipated future needs.
  • Makers of digital ATE therefore provide specialized accessories and handle ISP programming as an afterthought, as in Raymond, Douglas W., et al., “Non-volatile Programmable Devices and In-Circuit Test,” Paper 33.3, International Test Conference 1994, IEEE 0-7803-2102-2/94. The ISP accessories available with some digital ATE also interact with only one IC at a time. As a result, the processing time is the sum of the processing time for all the ISP chips on the board under test and the throughput is unacceptably slow. The tester must, after all, keep up with the assembly equipment or be taken out of the production line.
  • Application Development for an ISP system built on ATE principles is also a significant chore. An ATE software system tends to be optimized for letting the user manipulate single bits but not for processing large data files that are organized as words or bytes. Converting the data files into languages made for the ATE can lead to unacceptably long setup and debug periods. It can also adversely affect the handling of changes in data files.
  • In contrast to existing ATE and prom programmers, one aspect of the present invention is to serve as a fully capable, ISP-oriented, universal prom type programmers that can stand alone or be economically integrated into high-end or low-end ATE. Additionally, embodiments of the present invention are designed to minimize the amount of setup work and may be particularly structured to facilitate the handling of multiple devices. Still further, embodiments of the present invention may be configured to handle data files without having to translate those files into an ATE language.
  • Additional advantages and capabilities may also be realized with embodiments of the present invention that were not provided in any previous ISP programming system, including, but not limited to:
      • 1. The ability to program any type of ISP device (e.g., serial devices, parallel flash devices, microprocessors, etc.), including those not yet conceived. New bus protocols and new algorithms can be added by simply adding software;
      • 2. The ability to program multiple different devices and or multiple boards containing multiple different devices in a single operation;
      • 3. The ability to pass common data to each ISP device in the group concurrently;
      • 4. The ability to pass device specific data, for example, serial number, date code, or parameters, such as calibration codes, that are computed from measurements taken immediately prior to programming;
      • 5. The ability to exclude from programming any device that has failed a previous electrical test;
      • 6. The ability to provide one common visual interface to the application developer for all types of ISP devices;
      • 7. The hardware can be combined with an ATE in a common test fixture;
      • 8. The software can be launched from a foreign software system, such as an ATE software system; and
      • 9. If embodiments of the invention are used in combination with an ATE test fixture, the board under test need not be equipped with a programming connector which saves cost, board area, and weight in the final product.
  • FIG. 1 is a block diagram of an overall ISP test system, configured in accordance with an embodiment of the present invention. The System Personal Computer (“System PC”) 1 controls an ISP circuit 2 (also referred to herein as a subsidiary processing circuit) over an interface 12. In an embodiment of the present invention the interface is a Universal Serial Bus 2.0 (“USB”) 12. However, any type of communication interface may be used with embodiments of the present invention. For example, a parallel interface, firewire, wireless, infrared, or any other type of interface may be used. In an alternative embodiment, the ISP circuit 2 (subsidiary processing circuit) may be integrated into the System PC, thereby eliminating the need for the interface.
  • FIG. 2 is a more detailed view of the System PC 1, configured in accordance with an embodiment of the present invention. The System PC 1 provides an operating environment for the runtime application 9 and a custom ISP application 8, two software modules that pass control back and forth.
  • There are two main phases in the operation of embodiments of the present invention, erase operations and verification operations. Status operations may also be performed as part of the Runtime ISP programming. These and other operations may be included in the ISP programming phase. As a whole, embodiments of the present invention are designed to handle one or both phases.
  • During application development 10, a user provides information that describes the ISP chips, their wiring connections, and the data files that each ISP chip will receive. In particular, an application development visual environment (FIGS. 5A and 5B) provides a data entry form 500 in which the developer specifies the type of device to be programmed 501, the location of the device 503, the file name of the data file holding data to be written into the device 505, and other customer-specific device configuration items. Other customer-specific device configuration items may include mode, speed, calibration data, device size, data alignment, and block size. For each device, selection of a buffer wiring button 507 provides a wiring arrangement window 510. The wiring arrangement window identifies the specific connections between the devices bus in the communication interface 3 (FIG. 1).
  • In addition to being able to provide the arrangement, the wiring arrangement may be checked to confirm the accuracy of the physical wiring prior to programming. In one embodiment, selection of a Check Wiring button 511 will result in each wiring connection being confirmed according to the wiring arrangement provided in the wiring arrangement window 510. Still further, a user may probe each individual wiring connection, using a wiring probe (not shown) and be provided with an identification of the appropriate wiring connection, as shown in the wiring arrangement window 510. In one embodiment, a user may select a Probe UUT button 513 to activate the probe application and then physically touch a wiring connection with a wiring probe. In response to a wiring connection being touched with a probe, the corresponding wiring connection, as identified in the wiring arrangement window, will be emphasized (e.g., highlighted).
  • One form may be filled out for each device to be programmed and tested. The “Device Type” information 501 is used by the System PC to load the appropriate device algorithm 18 (FIG. 3) and bus algorithm 20 files into the ISP circuit 2 for the type of device being programmed. In particular, the files are uploaded to memory 19, such as an Advanced RISC Microprocessor (“ARM”) memory, in ISP circuit 2 by the system ISP DLL 11 at run time. Based on information received through the application visual environment, the application development software 10 selects the algorithm files appropriate for the selected device type from libraries of device algorithms 6 (FIG. 2) and bus algorithms 5 (FIG. 2).
  • Embodiments of the present invention are designed such that information for multiple different devices may be provided and those devices programmed concurrently. For example, multiple devices of the same type in communication with any number of buffer circuits may be concurrently programmed. Alternatively, multiple different devices on multiple different boards may be programmed concurrently. In one embodiment of the present invention, up to 24 boards may be programmed concurrently. However, it will be appreciated that this is not the limit of boards that may be programmed with embodiments of the present invention. In particular, by increasing the size of the FPGA 16 (FIG. 2) and adding I/O pins, an unlimited number of boards may be programmed and optionally verified concurrently.
  • Providing information into the application visual environment (FIG. 5A) also results in the creation of a custom configuration file 13 (FIG. 2). The file may be a text-based INI file that is read by the custom ISP application 8 at run time.
  • Once the information has been provided via the application visual environment and the custom configuration file 13 created, an API may be used to build a Custom ISP Application 8. This is an optional step, as a default ISP application may also be used.
  • The custom ISP application 8 may be developed in the C/C++ programming language based on a minimum skeleton program (not shown) and using the functions defined in the API to perform ISP operations. The API may include functions for, among other things (1) initializing the system hardware; (2) loading the custom data file(s) into memory; (3) loading a device algorithm specified by the custom configuration file 13 into the system hardware (ARM7); (4) loading the bus algorithm specified by the configuration file 13 into the system hardware (FPGA); (5) loading the device configuration parameters specified in the custom configuration file into the system hardware (ARM7) to be used by the ISP device algorithm 6; and (6) performing program, erase, check, program dynamic data (e.g., serial numbers), and verifying ISP operations on the Device Under Test (“DUT”). The API may also include other functions as well. In general, the API is designed to provide options (steps) based on a user's needs. The number and arrangement of options is limitless and each individual user can design or have designed an API that meets his or her individual needs.
  • The API links with the system Driver (DLL), which is able to communicate with the system hardware via an interface, such as a USB 2.0. The system DLL implements all of the details required for processing user data and controlling the system hardware. The end result of the application development session is the custom ISP application 8, plus a custom configuration File 13, which references library files 5 and 6 (FIG. 1) that contain the chosen device algorithm 18 and bus algorithm 20, and a user data file(s) 7. The custom ISP application 8 utilizes the functions implemented in the system driver that control the system hardware.
  • Run-time ISP programming occurs when the custom ISP application 8 is executed by the run time application 9 that runs in the System PC 1. The first time the custom ISP application 8 runs, it initiates the hardware setup and follows it immediately by programming the ISP devices. If the hardware has already been set up when the custom ISP application 8 runs, the hardware setup stage may be omitted.
  • In the beginning of the hardware setup phase, files that pertain to that board type are retrieved by the System PC 1 from its mass storage. Ordinarily these files are retrieved at the beginning of a run of boards and need not be retrieved again for each board. The files are loaded into PC memory as custom ISP application 8 and user data 7. Note that the PC may have other tasks running as well (for example, an ATE task 9). If an embodiment of the invention is operating in conjunction with an MDA, the VisMDA software 9 launches custom ISP application 8 at an appropriate time and custom ISP application 8 processes the custom configuration file 13. Based on the contents of the custom configuration file 13, the custom ISP application (by calling the appropriate functions in system API) loads the appropriate device and bus Algorithms 18 and 20, loads the appropriate user 7, and then executes the appropriate ISP programming steps.
  • Returning to FIG. 3, the ISP circuit 2 uses an interface chip 14, such as a Cypress USB 2.0 Interface Chip (“FX2”), to interface its end of the USB link 12. The ISP circuit may also contain a subsidiary processor 15, such as an ARM7 chip. The subsidiary processor 15 receives its operating software, the device algorithm 18, and the bus algorithm 20 from the interface 12, and stores them in Random Access Memory (“RAM”). The subsidiary processor 15 may also use JTAG to program the FPGA 16 with the bus algorithm 20. Optionally, FPGA 16 may be of a type served by a flash memory 17, in which case the subsidiary processor 15 may store the FPGA code in the flash memory. Because multiple different types of devices may be programmed, the FPGA may include multiple algorithms for interfacing with different types of devices and/or multiple different types of communication interfaces.
  • The data to be stored in the various ISP chips at runtime is transferred to the ISP circuit 2 from the System PC 1 over the interface 12 during runtime ISP programming, but the basic structures only need be set up once for a series of programming operations. As mentioned above, the ISP circuit 2 may be integrated with the System PC 1.
  • A separate board (or set of boards) containing communication interface 3 communicates to the individual ISP chips, each of which is labeled DUT 4 in the drawings. The link 21 from the ISP circuit 2 to the buffer circuit(s) 3 may be, for example, a twisted pair. The buffer circuits may be implemented on one or more buffer boards. If the application requires more than one buffer board, the link 21 is daisy-chained from each buffer board to the next. Additionally, in an alternative embodiment, the buffer circuit(s) 3 may be integrated onto the same board as the ISP circuit 2.
  • The buffer circuits are located immediately adjacent to the DUTs, providing short wires so as to avoid problems with parasitic lead inductance, capacitance, and transmission line effects. In one embodiment, the wires are kept short enough so that the propagation time of a signal on the wires is less than one-half of the edge transition times of the signals being propagated. For example, a signal having a one-nanosecond rise time may be carried in a wire short enough to carry the signal in one-half of a nanosecond. The length of the wire would depend on its characteristic impedance, but would generally be in the neighborhood of five inches. A terminator may be located on the last buffer circuit 3 to prevent signal reflections.
  • During the ISP Programming phase, subsidiary processor 15 provides data for programming each DUT 4 to FPGA 16 as requested by bus algorithm 18. FPGA 16, using bus algorithm 20, engages in the bus protocol for each of several DUTs 4, and is the direct cause of writing each data element into each DUT 4.
  • It is advantageous to divide the work of programming the DUT in these three processing levels. At the first processing level is a host computer 1 programmed to load digital information into a subsidiary processor 15 which may be accomplished by the host computer 1 generating serial bus data streams for communicating with the subsidiary processing circuit (ISP circuit) 2. At the second processing level is a subsidiary processor 15 of the ISP circuit 2 programmed to execute a device algorithm 18. As described above, the device algorithm 18 is selected from a library of device algorithms and is specific to the type of device to be programmed. The device algorithm, as described, includes the sequence of steps to be performed, such as erase, program, and verify, for the DUTs. At the third processing level is an FPGA 16 programmed to execute a bus algorithm which generates the appropriate bus protocol for the ISP device being programmed. Consider the data elements to be programmed into DUTs 4 as being queued and being programmed one element (a byte or a word, for example) at a time.
  • The bus algorithm 20 in the FPGA 16 handles communication to the ISP device(s) 4 at full hardware speed. Without the FPGA 16, the bus algorithm might be implemented as a processor subsystem or as a collection of hard-wired logic engines. If the bus algorithm were implemented as a processor subsystem, each operation in the bus algorithm would have to be performed by the execution of an instruction or sequence of instructions in a processor running a program of instructions and may not be carried out as rapidly. If the bus algorithm were implemented as a hardware engine, the flexibility needed for a universal programming appliance would be absent.
  • The subsidiary processor 15 executes the device algorithm 18, which provides the data element to be written and monitors the bus algorithm for completion of the previous cycle. Subsidiary processor 15 may also maintain a reserve of data to be programmed, making the next data element available to the bus algorithm 20 immediately upon completion of programming the previous one.
  • Without the subsidiary processor 15, the data queue would be maintained by the System PC 1 which would bring about a delay in requesting and receiving the data over the external bus 12 connecting the System PC and the ISP circuit. In addition, the System PC 1 may be busy with other tasks during ISP programming and might not be able to support the needs of the device algorithm in a timely manner.
  • In addition to providing the ability to program devices at full hardware speed, embodiments of the present invention provide the ability to verify the devices as they are programmed. Typical techniques for verifying devices require that the results be obtained from each programmed device and be read back to a System PC individually. For DUTs with a large number of devices, this verification technique is time consuming and slows the production line to an unacceptable level. Embodiments of the present invention provide the ability to write results from all programmed devices back to the ISP circuit and compare all data with expected results concurrently. Thus, regardless of the number of devices being programmed, the total time consumed in verifying the programming is only equal to the total time it takes to verify the one individual device that takes the longest time to verify.
  • While the embodiments of the present invention have been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the invention.

Claims (23)

1. An apparatus for concurrently programming a plurality of in-system programmable devices connected to a circuit board, comprising:
a host computer; and
a communication interface in communication with the host computer and positioned near at least one of the plurality of in-system programmable devices connected to the circuit board; wherein the apparatus is capable of in-system programming of the plurality of in-system programmable devices and wherein at least two of the plurality of in-system programmable devices are different.
2. The apparatus of claim 1, further comprising:
a subsidiary processing circuit located proximally to the circuit board for receiving programming for the plurality of in-system programmable devices and for transferring the programming to the communication interface for in-system programming of the plurality of communication devices.
3. The apparatus of claim 2, wherein the programming is stored in a memory located on the subsidiary processing circuit.
4. The apparatus of claim 2, wherein the subsidiary processing circuit is part of the host computer.
5. The apparatus of claim 2, wherein the subsidiary processing circuit is part of the communication interface.
6. The apparatus of claim 1, wherein the host computer includes an application development system configured to interface with a user to receive device specific information for use in in-system programming of the plurality of in-system programmable devices.
7. The apparatus of claim 1, wherein the total time taken to program the plurality of in-system programmable devices is approximately the time taken to program the in-system programmable device that takes the longest amount of time to program.
8. The apparatus of claim 1, wherein the apparatus is configured as part of an automatic test equipment.
9. A computer-readable medium having computer executable components for developing applications for the concurrent programming of a plurality of in-system programmable devices, comprising:
a selector component configured to select an in-system programmable device type, identify a data file representing files of digital information to be programmed into at least one of the plurality of in-system programmable devices; and
a programming generation component for generating programming instructions for use in programming at least one of the plurality in-system programmable devices.
10. The computer-readable medium of claim 9, wherein the programming instructions include:
executable instructions for programming at least one of the plurality of in-system programmable devices;
subsidiary programming instructions configured for use by a subsidiary processing circuit; and
programming information for use in generating an in-system programmable protocol.
11. The computer-readable medium of claim 10, wherein the programming instructions further include:
a configuration file including information representing an in-system programmable device algorithm.
12. An apparatus for communicating with a plurality of in-system programmable devices located on at least one circuit board, comprising:
a communication interface positioned near the plurality of in-system programmable devices and configured to communicate with the plurality of in-system programmable devices;
a communication controller connected to the communication interface and configured to control communication with the plurality of in-system programmable devices; and
wherein the apparatus is configured to concurrently program the plurality of in-system programmable devices located on the at least one circuit board during manufacture of the circuit board.
13. The apparatus of claim 12, wherein the apparatus may be used to program any type of in-system programmable device.
14. The apparatus of claim 12, wherein the communication controller is capable of programming the plurality of in-system programmable devices concurrent; and wherein at least two of the in-system programmable devices require different programming.
15. The apparatus of claim 12, wherein the plurality of in-system programmable devices are located on a plurality of circuit boards.
16. The apparatus of claim 12, wherein the communication controller is capable, via the communication interface, to pass common data to the plurality of in-system programmable devices concurrently.
17. The apparatus of claim 12, wherein the communication controller is capable, via the communication interface, to pass device specific data to respective in-system programmable devices.
18. The apparatus of claim 12, further comprising:
a in-system programmable device tester for testing the plurality of in-system programmable devices, wherein the communication interface may exclude from programming any of the plurality of in-system programmable devices that did not satisfy a test.
19. A method for providing information regarding a plurality of in-system programmable devices located on a circuit board, comprising:
receiving an identification of in-system programmable device specific information;
determining the device specific information; and
providing a representation of a wiring arrangement between the plurality of in-system programmable devices and a communication interface.
20. The method of claim 19, further comprising:
receiving a indication of a wiring connection between the communication interface and an in-system programmable device; and
providing an indication of the represented wiring arrangement for the connection.
21. The method of claim 20, wherein the indication is providing by a probe placed on the connection.
22. The method of claim 19, wherein the device specific information is provided by a custom configuration file.
23. The method of claim 19, wherein the device specific information is used to determine the appropriate device algorithm and bus algorithm for use in programming at least one of the in-system programmable devices.
US11/347,537 2005-02-09 2006-02-02 System and apparatus for in-system programming Abandoned US20060212838A1 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US11/347,537 US20060212838A1 (en) 2005-02-09 2006-02-02 System and apparatus for in-system programming
CN2006800115314A CN101156153B (en) 2005-02-09 2006-02-09 System and apparatus for in-system programming
EP06734696.5A EP1846852B1 (en) 2005-02-09 2006-02-09 System and apparatus for in-system programming
PCT/US2006/004660 WO2006086596A1 (en) 2005-02-09 2006-02-09 System and appartaus for in-system programming
US12/362,267 US7802021B2 (en) 2005-02-09 2009-01-29 System and apparatus for in-system programming

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US65178305P 2005-02-09 2005-02-09
US11/347,537 US20060212838A1 (en) 2005-02-09 2006-02-02 System and apparatus for in-system programming

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/362,267 Division US7802021B2 (en) 2005-02-09 2009-01-29 System and apparatus for in-system programming

Publications (1)

Publication Number Publication Date
US20060212838A1 true US20060212838A1 (en) 2006-09-21

Family

ID=36282590

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/347,537 Abandoned US20060212838A1 (en) 2005-02-09 2006-02-02 System and apparatus for in-system programming
US12/362,267 Active US7802021B2 (en) 2005-02-09 2009-01-29 System and apparatus for in-system programming

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/362,267 Active US7802021B2 (en) 2005-02-09 2009-01-29 System and apparatus for in-system programming

Country Status (4)

Country Link
US (2) US20060212838A1 (en)
EP (1) EP1846852B1 (en)
CN (1) CN101156153B (en)
WO (1) WO2006086596A1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070258298A1 (en) * 2006-05-04 2007-11-08 Westell Technologies, Inc. Parallel programming of flash memory during in-circuit test
US20080082695A1 (en) * 2006-09-29 2008-04-03 Broadcom Corporation Virtual interface to the PoE device through an expanded registered map in a networking device such as a PHY
US8058911B1 (en) 2007-03-12 2011-11-15 Cypress Semiconductor Corporation Programmable power supervisor
US8060661B1 (en) 2007-03-27 2011-11-15 Cypress Semiconductor Corporation Interface circuit and method for programming or communicating with an integrated circuit via a power supply pin
US20130224534A1 (en) * 2012-02-24 2013-08-29 MAGNA Battery Systems GmbH & Co OG Battery control device
US20140223402A1 (en) * 2011-10-20 2014-08-07 Zuken Inc. Multi-Board Design Apparatus, Multi-Board Design Method, Program and Computer-Readable Recording Medium

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7733659B2 (en) * 2006-08-18 2010-06-08 Delphi Technologies, Inc. Lightweight audio system for automotive applications and method
IT1400628B1 (en) * 2010-06-17 2013-06-14 Smh Technologies S R L EQUIPMENT AND PROCEDURE FOR THE PROGRAMMING OF ELECTRONIC DEVICES.
US8516176B1 (en) 2012-10-11 2013-08-20 Google Inc. Gang programming of devices
US9952276B2 (en) * 2013-02-21 2018-04-24 Advantest Corporation Tester with mixed protocol engine in a FPGA block
KR102444694B1 (en) * 2015-08-26 2022-09-20 에스케이하이닉스 주식회사 Memory system and operation method for the same
CN106528920B (en) * 2016-09-27 2019-07-26 京微齐力(北京)科技有限公司 A kind of process mapping method cascading look-up table
CN106950875B (en) * 2017-03-17 2023-05-23 科芯(天津)生态农业科技有限公司 Embedded programmer and tooling system thereof
CN108495043B (en) * 2018-04-28 2020-08-07 Oppo广东移动通信有限公司 Image data processing method and related device
EP3983883A1 (en) 2019-06-11 2022-04-20 SMH Technologies S.r.l. Apparatus for the programming of electronic devices

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5329179A (en) * 1992-10-05 1994-07-12 Lattice Semiconductor Corporation Arrangement for parallel programming of in-system programmable IC logical devices
US5590305A (en) * 1994-03-28 1996-12-31 Altera Corporation Programming circuits and techniques for programming logic
US5999014A (en) * 1997-09-17 1999-12-07 Xilinx, Inc. Method for concurrently programming or accessing a plurality of in-system-programmable logic devices
US6049870A (en) * 1996-11-26 2000-04-11 Play, Inc. System and method for identifying and configuring modules within a digital electronic device
US20030098710A1 (en) * 2001-10-29 2003-05-29 Dale Wong Programmable interface for field programmable gate array cores
US20040001432A1 (en) * 2002-06-28 2004-01-01 Douglas Albert Wescott Embedding a JTAG host controller into an FPGA design
US6918027B2 (en) * 2001-07-30 2005-07-12 Hewlett-Packard Development Company, L.P. System and method for in-system programming through an on-system JTAG bridge of programmable logic devices on multiple circuit boards of a system
US7127708B2 (en) * 2002-03-28 2006-10-24 Lucent Technologies Inc. Concurrent in-system programming of programmable devices

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5635855A (en) * 1995-07-21 1997-06-03 Lattice Semiconductor Corporation Method for simultaneous programming of in-system programmable integrated circuits
US5751163A (en) * 1996-04-16 1998-05-12 Lattice Semiconductor Corporation Parallel programming of in-system (ISP) programmable devices using an automatic tester
SG74611A1 (en) * 1997-02-14 2000-08-22 Canon Kk Data communication apparatus and method
US6023570A (en) * 1998-02-13 2000-02-08 Lattice Semiconductor Corp. Sequential and simultaneous manufacturing programming of multiple in-system programmable systems through a data network
US6459297B1 (en) * 1999-09-20 2002-10-01 Ag Communication Systems Corporation System for programming field programmable devices
US6622272B1 (en) * 2000-03-10 2003-09-16 Teradyne, Inc. Automatic test equipment methods and apparatus for interfacing with an external device
US6507213B1 (en) * 2001-03-15 2003-01-14 Cypress Semiconductor Corp. Parallel configuration method and/or architecture for PLDs or FPGAs
US20030023793A1 (en) * 2001-07-30 2003-01-30 Mantey Paul J. Method and apparatus for in-system programming through a common connection point of programmable logic devices on multiple circuit boards of a system
US7032045B2 (en) * 2001-09-18 2006-04-18 Invensys Systems, Inc. Multi-protocol bus device
US6714040B1 (en) * 2002-06-03 2004-03-30 Xilinx, Inc. Automated boundary-scan chain composition method using a device database and access mechanism for storing and retrieving situation-dependent operation options

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5329179A (en) * 1992-10-05 1994-07-12 Lattice Semiconductor Corporation Arrangement for parallel programming of in-system programmable IC logical devices
US5590305A (en) * 1994-03-28 1996-12-31 Altera Corporation Programming circuits and techniques for programming logic
US6049870A (en) * 1996-11-26 2000-04-11 Play, Inc. System and method for identifying and configuring modules within a digital electronic device
US5999014A (en) * 1997-09-17 1999-12-07 Xilinx, Inc. Method for concurrently programming or accessing a plurality of in-system-programmable logic devices
US6918027B2 (en) * 2001-07-30 2005-07-12 Hewlett-Packard Development Company, L.P. System and method for in-system programming through an on-system JTAG bridge of programmable logic devices on multiple circuit boards of a system
US20030098710A1 (en) * 2001-10-29 2003-05-29 Dale Wong Programmable interface for field programmable gate array cores
US6888371B2 (en) * 2001-10-29 2005-05-03 Leopard Logic, Inc. Programmable interface for field programmable gate array cores
US7127708B2 (en) * 2002-03-28 2006-10-24 Lucent Technologies Inc. Concurrent in-system programming of programmable devices
US20040001432A1 (en) * 2002-06-28 2004-01-01 Douglas Albert Wescott Embedding a JTAG host controller into an FPGA design

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070258298A1 (en) * 2006-05-04 2007-11-08 Westell Technologies, Inc. Parallel programming of flash memory during in-circuit test
US20080082695A1 (en) * 2006-09-29 2008-04-03 Broadcom Corporation Virtual interface to the PoE device through an expanded registered map in a networking device such as a PHY
US8806064B2 (en) * 2006-09-29 2014-08-12 Broadcom Corporation Virtual interface to the PoE device through an expanded registered map in a networking device such as a PHY
US8089306B1 (en) 2007-03-12 2012-01-03 Cypress Semiconductor Corporation Intelligent voltage regulator
US8766662B1 (en) 2007-03-12 2014-07-01 Cypress Semiconductor Corporation Integrity checking of configuration data of programmable device
US8072247B1 (en) 2007-03-12 2011-12-06 Cypress Semiconductor Corporation Programmable voltage regulator
US8058910B1 (en) 2007-03-12 2011-11-15 Cypress Semiconductor Corporation Intelligent power supervisor
US8125243B1 (en) 2007-03-12 2012-02-28 Cypress Semiconductor Corporation Integrity checking of configurable data of programmable device
US8269531B1 (en) 2007-03-12 2012-09-18 Cypress Semiconductor Corporation Programmable power supervisor
US8278978B1 (en) 2007-03-12 2012-10-02 Cypress Semiconductor Corporation Programmable voltage regulator
US8471609B1 (en) 2007-03-12 2013-06-25 Luciano Processing L.L.C. Intelligent power supervisor
US8510584B1 (en) 2007-03-12 2013-08-13 Luciano Processing L.L.C. Ultra low power sleep mode
US11237578B2 (en) 2007-03-12 2022-02-01 Tamiras Per Pte. Ltd., Llc Intelligent voltage regulator
US8680902B1 (en) 2007-03-12 2014-03-25 Luciano Processing L.L.C. Programmable power supervisor
US10545519B2 (en) 2007-03-12 2020-01-28 Tamiras Per Pte. Ltd., Llc Intelligent voltage regulator
US8769177B1 (en) 2007-03-12 2014-07-01 Cypress Semiconductor Corporation Interrupt latency reduction
US8786357B1 (en) 2007-03-12 2014-07-22 Luciano Processing L.L.C. Intelligent voltage regulator
US10162774B2 (en) 2007-03-12 2018-12-25 Tamiras Per Pte. Ltd., Llc Intelligent voltage regulator
US8058911B1 (en) 2007-03-12 2011-11-15 Cypress Semiconductor Corporation Programmable power supervisor
US9588916B1 (en) 2007-03-12 2017-03-07 Cypress Semiconductor Corporation Interrupt latency reduction
US9143027B2 (en) 2007-03-12 2015-09-22 Luciano Processing L.L.C. Intelligent power supervisor
US9429964B2 (en) 2007-03-12 2016-08-30 Tamiras Per Pte. Ltd., Llc Intelligent voltage regulator
US8060661B1 (en) 2007-03-27 2011-11-15 Cypress Semiconductor Corporation Interface circuit and method for programming or communicating with an integrated circuit via a power supply pin
US9047435B2 (en) * 2011-10-20 2015-06-02 Zuken Inc. Multi-board design apparatus, multi-board design method, program and computer-readable recording medium
US20140223402A1 (en) * 2011-10-20 2014-08-07 Zuken Inc. Multi-Board Design Apparatus, Multi-Board Design Method, Program and Computer-Readable Recording Medium
US9231233B2 (en) * 2012-02-24 2016-01-05 Samsung Sdi Co., Ltd. Battery control device
US20130224534A1 (en) * 2012-02-24 2013-08-29 MAGNA Battery Systems GmbH & Co OG Battery control device

Also Published As

Publication number Publication date
US7802021B2 (en) 2010-09-21
EP1846852B1 (en) 2019-05-08
CN101156153B (en) 2012-05-09
US20090138841A1 (en) 2009-05-28
EP1846852A1 (en) 2007-10-24
CN101156153A (en) 2008-04-02
WO2006086596A1 (en) 2006-08-17

Similar Documents

Publication Publication Date Title
US7802021B2 (en) System and apparatus for in-system programming
US6425109B1 (en) High level automatic core configuration
US6389558B1 (en) Embedded logic analyzer for a programmable logic device
US6704889B2 (en) Enhanced embedded logic analyzer
US6247147B1 (en) Enhanced embedded logic analyzer
KR100366963B1 (en) Semiconductor device simulating apparatus and semiconductor test program dubugging apparatus using it
US8122445B2 (en) Processing system capable of downloading firmware code and being tested at same site during MP phase
US20020116168A1 (en) Method and system for design verification of electronic circuits
US20090119542A1 (en) System, method, and program product for simulating test equipment
CN106680698B (en) Multi-station rapid configuration device for FPGA test and configuration method thereof
US20090119084A1 (en) System, method, and program product for simulating test equipment
EP0747717A2 (en) Method and apparatus of testing an integrated circuit device
US7073109B2 (en) Method and system for graphical pin assignment and/or verification
US6442725B1 (en) System and method for intelligent analysis probe
CN107273249B (en) Mainboard test method, processor and mainboard test system
US9057765B2 (en) Scan compression ratio based on fault density
US6681357B2 (en) MISR simulation tool for memory BIST application
US20030212517A1 (en) Method for testing an electronic component; computer program product, computer readable medium, and computer embodying the method; and method for downloading the program embodying the method
US6125460A (en) Method for testing semiconductor device having embedded nonvolatile memory
EP1233341A1 (en) Embedded logic analyser
US6598176B1 (en) Apparatus for estimating microcontroller and method thereof
US6871154B2 (en) Method and apparatus for automatically configuring and/or inserting chip resources for manufacturing tests
US7130787B1 (en) Functional replicator of a specific integrated circuit and its use as an emulation device
CN117234831B (en) Chip function test method and system based on multi-core CPU
US8516322B1 (en) Automatic test pattern generation system for programmable logic devices

Legal Events

Date Code Title Description
AS Assignment

Owner name: CHECKSUM, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CARSON, DANIEL BENJAMIN;ASHLOCK, HANS FREDERICK;FLUHRER, SIDNEY CLAYTON;AND OTHERS;REEL/FRAME:017410/0047;SIGNING DATES FROM 20060126 TO 20060127

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION