US6208162B1 - Technique for preconditioning I/Os during reconfiguration - Google Patents

Technique for preconditioning I/Os during reconfiguration Download PDF

Info

Publication number
US6208162B1
US6208162B1 US09/026,885 US2688598A US6208162B1 US 6208162 B1 US6208162 B1 US 6208162B1 US 2688598 A US2688598 A US 2688598A US 6208162 B1 US6208162 B1 US 6208162B1
Authority
US
United States
Prior art keywords
integrated circuit
user
register
input
programmable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US09/026,885
Inventor
Vincent T. Bocchino
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.)
Altera Corp
Original Assignee
Altera Corp
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 Altera Corp filed Critical Altera Corp
Priority to US09/026,885 priority Critical patent/US6208162B1/en
Application granted granted Critical
Publication of US6208162B1 publication Critical patent/US6208162B1/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17772Structural details of configuration resources for powering on or off
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • H03K19/17744Structural details of routing resources for input/output signals
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources

Definitions

  • the present invention relates to the field of programming or configuring programmable integrated circuits. More specifically, the present invention provides a technique for preconditioning or predefining the outputs of a programmable integrated circuit before the integrated circuit is programmed or configured.
  • Programmable, or reconfigurable, integrated circuits are well known to those in the electronic art.
  • Programmable integrated circuits include RAM memories, SRAM memories, EEPROM memories, Flash memories, programmable logic devices (PLDs), and many others.
  • programmable logic devices are also well known to those in the electronic art.
  • Such programmable logic devices are also commonly referred as PALs (Programmable Array Logic), PLAs (Programmable Logic Arrays), FPLAs (Field Programmable Logic Arrays), EPLDs (Erasable Programmable Logic Devices), EEPLDs (Electrically Erasable Programmable Logic Devices), LCAs (Logic Cell Arrays), FPGAs (Field Programmable Gate Arrays), and the like.
  • PALs Programmable Array Logic
  • PLAs Programmable Logic Arrays
  • FPLAs Field Programmable Logic Arrays
  • EPLDs Erasable Programmable Logic Devices
  • EEPLDs Electrical Erasable Programm
  • Programmable integrated circuits are programmed and reprogrammed (or reconfigured) to store particular data or perform a particular function.
  • EEPROMs may be programmed to store a data for a digital system.
  • EEPROMs may be (electrically) erased and reprogrammed many times, as needed, to store different or additional data.
  • serial EPROMs may be programmed to hold data for configuring PLDs.
  • Serial EPROMs may be reprogrammed, as needed, for configuring the PLDs differently.
  • PLDs are generally known in which many LABs are provided in a two-dimensional array. Further, PLDS have an array of intersecting signal conductors for programmably selecting and conducting logic signals to, from, and between the LABs. LABs contain a number of individual programmable logic elements (LEs) which provide relatively elementary logic functions such as NAND, NOR, and exclusive OR. PLDs are programmed to provide particular logic functions. PLDs may be reconfigured many times to provide additional or different logic functions.
  • LEs individual programmable logic elements
  • Programmable integrated circuits are typically reprogrammed in a reconfiguration mode.
  • data is inputted into the integrated circuit to indicate the configuration of the logic elements, LABS, interconnect, and other components. This data may be input in different forms such as parallel bits or serial bits.
  • the outputs (which may include bidirectional I/Os) of the device will typically be in undefined states. For example, the outputs (and I/Os) may be logic high, logic low, or even at high impedance.
  • the programmable integrated circuit may potentially damage itself or other components when it is being configured.
  • the outputs of the programmable integrated circuit may be in states, possibly undefined, that may conflict with the devices, sources, or other components that are coupled to those outputs.
  • states possibly undefined, that may conflict with the devices, sources, or other components that are coupled to those outputs.
  • an output of the programmable integrated circuit may become shorted with another component, which may result in serious damage to the devices.
  • ISP programming is a technique where a programmable integrated circuit is configured or programmed while resident in the system (e.g., remains a component in a digital system).
  • the programmable integrated circuit need not be removed from the circuit board.
  • ISP programming allows greater flexibility when reprogramming programmable circuits. For example, the configuration information in a programmable circuit may be upgraded as needed without requiring the removal and installation of components, or disassembly of the system. In fact, the programmable circuit may be reconfigured while the rest of the system is in normal operation.
  • a programmable integrated circuit is resident on a printed circuit board (PCB) of a digital system.
  • the programmable integrated circuit may even be soldered to the board.
  • the programmable integrated circuit will be programmed while it remains on the PCB.
  • the programmable integrated circuit may not be easily isolated or decoupled from the other components of the system.
  • damage may result to the programmable integrated circuit itself or other components in the system.
  • an improved technique for configuring and programming programmable integrated circuits is needed, especially a technique where a user can specify the output and I/O states before configuring the device.
  • the present invention is a technique for configuring programmable integrated circuits.
  • the technique involves preconditioning or predefining the outputs and I/Os of a programmable integrated circuit before the device is programmed or reconfigured.
  • the technique may be implemented in conformance with the IEEE 1149.1 boundary scan architecture standard.
  • the technique may use-standard IEEE 1149.1 instructions.
  • the technique may be used with ISP programming.
  • a user may precondition or define the state of the outputs, I/Os, and pads (or pins) before entering the reconfiguration or programming mode. More specifically, the user selects the states of the particular outputs and I/Os. For example, the outputs and I/Os may drive high, low, or be at a high impedance. The user loads this data into the reconfiguration path circuitry of programmable integrated circuit. In the reconfiguration mode, the outputs and I/Os will be at the user-specified, user-selected, defined states. The device may be programmed in the reconfiguration mode.
  • the reconfiguration circuitry of the present invention includes a tristate buffer coupled to a pad.
  • the tristate buffer is fed by a data path multiplexer, which selects between a normal data path of the integrated circuit and a reconfiguration data path.
  • the normal data path of the integrated circuit is generally selected.
  • the reconfiguration data path is selected.
  • the reconfiguration data path provides the user-selected data, which is used to determine the output state during the reconfiguration mode.
  • a control node of the tristate buffer is coupled to a tristate multiplexer.
  • the control node controls whether the tristate buffer is enabled or disabled. When enabled, data will be output through the tristate buffer to the pad. When disabled, the tristate buffer will provide a high impedance or tristate the pad.
  • the tristate multiplexer During normal operation, the tristate multiplexer generally selects a normal tristate path for controlling the tristate buffer. During the reconfiguration mode, the tristate multiplexer selects the reconfiguration tristate path. The reconfiguration tristate path provides the user-selected data for controlling the tristate buffer, which is used to determine whether the tristate buffer is enabled or disabled.
  • the method of reconfiguring a programmable integrated circuit of the present includes the following steps: providing a user-selected input to the programmable integrated circuit; passing the user-selected input to a pad when the programmable integrated circuit is being reconfigured; and reconfiguring the programmable integrated circuit.
  • a circuit which embodies the preconditioning technique of the present invention includes: a pad; a tristate buffer, coupled to the pad; and a first multiplexer, coupled through the tristate buffer to the pad, where the first multiplexer selects between a data path input and a user-selected data path input.
  • the circuit may further include: a second multiplexer, coupled to a control node of the tristate buffer, where the second multiplexer selects between a tristate path input and a user-selected tristate path input; and a reconfiguration signal, coupled to the first multiplexer and the second multiplexer, for indicating when the programmable integrated circuit is in a reconfigure mode.
  • the first multiplexer of this circuit of the present invention couples the user-selected data path input to the tristate buffer and the second multiplexer couples the user-selected tristate path input to the control node of the tristate buffer.
  • FIG. 1 is a block diagram of a digital system incorporating a programmable logic device integrated circuit
  • FIG. 2 is a block diagram showing the overall architecture of a programmable logic device
  • FIG. 3 is a simplified block diagram of a logic array block (LAB) of a programmable logic device
  • FIG. 4 is a schematic of an embodiment of the present invention.
  • FIG. 5 is a schematic of an embodiment of the present invention which conforms to the IEEE 1149.1 standard.
  • FIG. 6 is a flow diagram illustrating a technique of the present invention.
  • FIG. 1 shows a block diagram of a digital system within which the present invention may be embodied.
  • a processing unit 101 is coupled to a memory 105 and an I/O 111 and incorporates a programmable logic device (PLD) 121 .
  • PLD 121 may be specially coupled to memory 105 through connection 131 and to I/O 111 through connection 135 .
  • the system may be a programmed digital computer system, digital signal processing system, specialized digital switching network, or other processing system.
  • the system may be a general purpose computer, a special purpose computer (such as telecommunications equipment) optimized for an application-specific task such as programming PLD 121 , or a combination of a general purpose computer and auxiliary special purpose hardware.
  • Processing unit 101 may direct data to an appropriate system component for processing or storage, execute a program stored in memory 105 or input using I/O 111 , or other similar function.
  • Processing unit 101 may be a central processing unit (CPU), microprocessor, floating point coprocessor, graphics coprocessor, hardware controller, microcontroller, programmable logic device programmed for use as a controller, or other processing unit.
  • CPU central processing unit
  • PLDs 121 may control the logical operations of the system.
  • processing unit 101 may even be a computer system.
  • source code may be stored in memory 105 , compiled into machine language, and executed by processing unit 101 .
  • Processing unit 101 need not contain a CPU and in one embodiment, instructions may be executed by one or more PLDs 121 . Instead of storing source code in memory 105 , only the machine language representation of the source code, without the source code, may be stored in memory 105 for execution by processing unit 101 .
  • Memory 105 may be a random access memory (RAM), read only memory (ROM), fixed or flexible disk media, PC Card flash disk memory, tape, or any other storage retrieval means, or any combination of these storage retrieval means.
  • Processing unit 101 uses I/O 111 to provide an input and output path for user interaction.
  • a user may input logical functions to be programmed into programmable logic device 121 .
  • I/O 111 may be a keyboard, mouse, track ball, digitizing tablet, text or graphical display, touch screen, pen tablet, printer, or other input or output means, or any combination of these means.
  • I/O 111 includes a printer used for printing a hard copy of any processing unit 101 output.
  • a user may print a copy of a document prepared using a word processing program executed using processing unit 101 .
  • a user may print out a copy of the source code or a listing of the logical functions contained within PLD 121 .
  • PLD 121 may serve many different purposes within the system in FIG. 1 .
  • PLD 121 may be a logical building block of processing unit 101 , supporting its internal and external operations.
  • PLD 121 is programmed to implement the logical functions necessary to carry on its particular role in system operation.
  • FIG. 2 shows a six-by-six two-dimensional array of thirty-six logic array blocks (LABs) 200 .
  • LAB 200 is a physically grouped set of logical resources that is configured or programmed to perform logical functions.
  • the internal architecture of a LAB will be described in more detail below in connection with FIG. 3 .
  • PLDs may contain any arbitrary number of LABS, more or less than the PLD 121 shown in FIG. 2 .
  • LABs 200 need not be organized in a square matrix; for example, the array may be organized in a five-by-seven or a twenty-by-seventy matrix of LABs.
  • LAB 200 has inputs and outputs (not shown) which may or may not be programmably connected to a global interconnect structure, comprising an array of global horizontal interconnects (GHs) 210 and global vertical interconnects (GVs) 220 . Although shown as single lines in FIG. 2, each GH 210 and GV 220 line represents a plurality of signal conductors. The inputs and outputs of LAB 200 are programmably connectable to an adjacent GH 210 and an adjacent GV 220 . Utilizing GH 210 and GV 220 interconnects, multiple LABs 200 may be connected and combined to implement larger, more complex logic functions than can be realized using a single LAB 200 .
  • GHs global horizontal interconnects
  • GVs global vertical interconnects
  • GH 210 and GV 220 conductors may or may not be programmably connectable at intersections 225 of these conductors. Moreover, GH 210 and GV 220 conductors may make multiple connections to other GH 210 and GV 220 conductors. Various GH 210 and GV 220 conductors may be programmably connected together to create a signal path from a LAB 200 at one location on PLD 121 to another LAB 200 at another location on PLD 121 . Furthermore, an output signal from one LAB 200 can be directed into the inputs of one or more LABs 200 . Also, using the global interconnect, signals from a LAB 200 can be fed back into the same LAB 200 .
  • GH 210 conductors are programmably connectable to a selection of GV 220 conductors.
  • GH 210 and GV 220 conductors may be specifically used for passing signal in a specific direction, such as input or output, but not both.
  • the PLD architecture in FIG. 2 further shows at the peripheries of the chip, input-output drivers 230 .
  • Input-output drivers 230 are for interfacing the PLD to external, off-chip circuitry.
  • FIG. 2 shows thirty-two input-output drivers 230 ; however, a PLD may contain any number of input-output output drivers, more or less than the number depicted.
  • Each input-output driver 230 is configurable for use as an input driver, output driver, or bidirectional driver.
  • An input driver takes signals from outside the chip and interfaces them to on-chip circuitry.
  • An output drive takes internal signals and interfaces them to the outside world.
  • a bidirectional driver performs the functions of both a input driver and an output driver.
  • a bidirectional drive has a high-impedance mode which allows the driver to interface with a bidirectional bus.
  • a PLD may have dedicated input drivers and dedicated output driver, as well as special “fast” input drivers and the like.
  • input-output drivers 230 are programmably connectable to adjacent GH 210 and GV 220 conductors. Using GH 210 and GV 220 conductors, input-output drivers 230 are programmably connectable to any LAB 200 . Input-output drivers 230 facilitate the transfer of data between LABs 200 and external, off-chip circuitry. For example, off-chip logic signals from other chips may be coupled through input-output drivers 230 to drive one or more LABs 200 . Based on these off-chip inputs and the logical functions programmed into LABs 200 , LABs 200 will generate output signals that are coupled through the global interconnect to input-output drivers 230 for interfacing with off-chip circuitry.
  • FIG. 3 shows a simplified block diagram of LAB 200 of FIG. 2 .
  • LAB 200 is comprised of a varying number of logic elements (LEs) 300 , sometimes referred to as “logic cells,” and a local (or internal) interconnect structure 310 .
  • LEs logic elements
  • LAB 200 has eight LEs 300 , but LAB 200 may have any number of LEs, more or less than eight.
  • LAB 200 has two “banks” of eight LEs for a total of sixteen LEs, where each bank has separate inputs, outputs, control signals, and carry chains.
  • LE 300 is the smallest logical building block of a PLD. Signals external to the LAB, such as from GHs 210 and GVs 220 , are programmably connected to LE 300 through local interconnect structure 310 , although LE 300 may be implemented in many architectures other than those shown in FIGS. 1-3.
  • LE 300 of the present invention incorporates a function generator that is configurable to provide a logical function of a number of variables, such a four-variable Boolean operation.
  • LE 300 also provides support for sequential and registered functions using, for example, D flip-flops. Logic functions may also be performed using lookup tables, AND-OR arrays, product terms, and multiplexers, to name a few.
  • LE 300 provides combinatorial and registered outputs that are connectable to the GHs 210 and GVs 220 , outside LAB 200 . Furthermore, the outputs from LE 300 may be internally fed back into local interconnect structure 310 ; through local interconnect structure 310 , an output from one LE 300 may be programmably connected to the inputs of other LEs 300 , without using the global interconnect structure's GHs 210 and GVs 220 .
  • Local interconnect structure 310 allows short-distance interconnection of LEs, without utilizing the limited global resources, GHs 210 and GVs 220 . Through local interconnect structure 310 and local feedback, LEs 300 are programmably connectable to form larger, more complex logical functions than can be realized using a single LE 300 . Furthermore, because of its reduced size and shorter length, local interconnect structure 310 has reduced parasitics compared to the global interconnection structure. Consequently, local interconnect structure 310 generally allows signals to propagate faster than through the global interconnect structure.
  • FIG. 4 is a block diagram illustrating a circuit implementation of the preconditioning scheme of the present invention.
  • the preconditioning scheme of the present invention is a technique for predefining or preconditioning the outputs of a programmable integrated circuit before the integrated circuit is configured in a reconfiguration mode.
  • the technique is applicable to programmable logic devices, as well as other types of programmable and configurable integrated circuits including EPROMs, EEPROMs, CLAs, FPGAS, and many others.
  • the outputs will typically be in unchangeable or undefined states.
  • the outputs may be logic high, logic low, or even at high impedance. Since the user generally does not and can not control the state of the outputs during reconfiguration mode, the programmable integrated circuit may potentially damage itself or other components when it is being configured.
  • the outputs of the programmable integrated circuit may be states, possibly undefined, that may conflict with the devices, sources, or other components that are coupled to those outputs. For example, an output of the integrated circuit may become shorted with another component during the reconfiguration mode, which may result in serious damage to the devices.
  • ISP programming is a technique where a programmable integrated circuit is configured or programmed while resident in the system. ISP programming allows greater flexibility when reprogramming programmable circuits. For example, the configuration information in a programmable integrated circuit may be upgraded as needed without requiring the removal and installation of components, or disassembly of the system.
  • a programmable integrated circuit is resident on a printed circuit board (PCB) of a digital system.
  • the programmable integrated circuit may even be soldered to the board.
  • the programmable integrated circuit will be programmed while it remains on the PCB.
  • the programmable integrated circuit may not be easily isolated or decoupled from the other components of the system.
  • damage may result to the programmable integrated circuit itself or other components in the system.
  • the present invention may be used to prevent these problems.
  • a user may precondition or predefine an output of the programmable integrated circuit before entering the reconfiguration mode. Then, the output will be at an expected or desired state, thus avoiding the problems discussed above.
  • the circuit configuration shown in FIG. 4 will typically be used in the output path of the integrated circuit.
  • the output is tristateable.
  • the output may not be tristateable, and the circuitry may be modified appropriately.
  • the circuitry in FIG. 4 may be part of an output buffer, input-output (bidirectional) buffer, bus driver, and other similar circuits.
  • this circuitry may be used to implement the input-output drivers of a programmable logic device as shown in FIG. 2 .
  • a multiplexer 410 selects between a data path input line 420 and a user-selected input line 425 .
  • Multiplexer 410 is controlled by a control line 430 .
  • Signals may be provided on data path input line 420 for output from the integrated circuit.
  • data path input line 420 may be programmably coupled to the LABs, LEs, GVs, GHs, and other components.
  • Control line 430 is used for selecting between the multiplexer inputs 420 and 425 .
  • Control line 430 will be typically coupled to a signal indicating whether the programmable integrated circuit is in a normal operation mode or a reconfiguration mode.
  • a programmable logic device for example, will perform the logic functions for which it has been configured. While during reconfiguration mode, the programmable logic device may be reconfigured or reprogrammed so that it may perform different or additional logic functions.
  • control line 430 selects to pass a signal on data path input line 420 to a multiplexer output.
  • control line 430 selects to pass a signal on user-selected input line 425 to the multiplexer output.
  • User-selected input line 425 contains the data to be output during the reconfiguration mode.
  • User-selected input line 425 may be driven from various sources. For example, user-selected input line 425 may be driven by a LAB, LE, GH or GV, or input pin of a programmable logic device. User-selected input line 425 may also be coupled to a storage block 435 as shown in FIG. 4 . Storage block 435 will hold the data which will be output during the reconfiguration mode. Storage block 435 may be a register, flip-flop, memory cell, or other component used to store data. In a preferred embodiment, storage block 435 is a register.
  • multiplexer 410 output may be driven directly to a pad 440 .
  • multiplexer 410 output is driven through a tristate buffer 445 to pad 440 .
  • Tristate buffer 445 may be enabled or disabled. When enabled, tristate buffer 445 outputs data at its input to 440 . When disabled, tristate buffer 445 provides a high impedance (or tristate) at pad 440 . Tristate buffer 445 provides additional functionality by allowing pad 440 to be tristated. For example, when tristated, pad 440 may be coupled to a bidirectional bus and used as an input.
  • Tristate buffer 445 is controlled by a way of a multiplexer 450 . Based on a signal on control line 430 , multiplexer 450 selectively couples either a tristate control input 455 or a user-selected tristate input 460 to a control line 465 of tristate buffer 455 . For example, if control line 430 is high, user-selected tristate input 460 controls tristate buffer 445 . If control line 430 is low, tristate control input 455 controls tristate buffer 445 .
  • tristate control input 455 of multiplexer 450 will typically be selected to control the operation of tristate buffer 445 .
  • tristate control input 455 may be programmably coupled to various sources including LABs, LEs, GHs, GVs, and pads for controlling the tristate output of tristate buffer 445 .
  • user-selected tristate input 460 will typically be selected to control the operation of tristate buffer 445 .
  • User-selected tristate input 460 may come from sources similar to that used for user-selected input line 425 .
  • user-selected tristate input 460 may be driven by a LAB, LE, GH or GV, or input pin of a programmable logic device.
  • User-selected tristate input 460 may also be coupled to a storage block 470 .
  • Storage block 470 will hold the data which will determine whether tristate buffer 445 is enabled or disabled during reconfiguration mode.
  • Storage block 470 may be register, flip-flop, memory cell, or other component used to store data. In a preferred embodiment, storage block 470 is a register.
  • the circuitry of the present invention may be used to predefine or precondition the input-output pads, outputs, and I/Os of an integrated circuit during reconfiguration or reprogramming. This will avoid and prevent the problems described above. For example, using the present invention, the user may decide to tristate certain pads, drive high on certain pads, or drive low on certain pads.
  • the present invention allows a user to clearly define the states of the outputs during reconfiguration.
  • the outputs When entering the reconfiguration mode, the outputs will be in known states.
  • the user can ensure that the states of the outputs will not conflict or contend with other components. This avoids the problem of potentially damaging the programmable integrated circuit itself or other components in the system. As discussed above, this is especially useful for ISP programming.
  • user-selected input line 425 and user-selected tristate input 460 are driven to a known state before the reconfiguration mode. For example, to drive pad 440 high, user-selected input line 425 and user-selected tristate input 460 are driven high. Accordingly, in the reconfiguration mode, control line 430 will be high, and the user-selected inputs 425 and 460 are passed to tristate buffer 445 . Tristate buffer 445 is enabled and pad 440 will be a logic high.
  • a logic low may be driven to pad 440 by driving user-selected input line 425 low and user-selected tristate input 460 high before reconfiguring.
  • user-selected tristate input 460 should be driven low and user-selected input line 425 may be driven high or low (don't care).
  • Storage blocks 435 and 470 may be used to store the user-selected data for lines 425 and 460 .
  • the data for these storage blocks may be input into the device in many different ways. For example, data may be input into storage blocks 435 and 470 directly, serially, in parallel, cascaded through other devices, via GHs and GVs, via LABs and LEs, through dedicated pins, and many other ways.
  • storage blocks 435 and 470 are part of a shift register. A user may specify user-selected data by serially loading and shifting this data into the appropriate storage blocks. Then, this data will control the output of the programmable integrated circuit during the reconfiguration mode.
  • output and input-output blocks may include the circuitry of the present invention.
  • the user-selected data may be loaded in a shift register fashion by cascading and serpentining the data through the plurality of storage blocks.
  • FIG. 5 shows another embodiment of the present invention.
  • the circuity shown in FIG. 5 implements the present invention and also conforms to IEEE Standard 1149.1 (hereinafter “IEEE 1149.1”).
  • IEEE 1149.1 The IEEE 1149.1 standard is described in IEEE Standard Test Access Port and Boundary-Scan Architecture, which is incorporated herein by reference. Since IEEE 1149.1 described what is known as a boundary scan architecture, the circuitry shown in FIG. 5 may also be referred to as a boundary scan cell.
  • IEEE 1149.1 was also developed in part by the Joint Test Action Group (JTAG), and was also adopted as a JTAG standard. A brief description of IEEE 1149.1 is given here, sufficient for understanding the invention. For a more detailed discussion, please refer to the IEEE 1149.1documentation.
  • JTAG Joint Test Action Group
  • IEEE 1149.1 provides guidelines for device testing at the board level.
  • IEEE 1149.1 provides standard instructions and functionality for testing integrated circuits. For example, some pins of an integrated circuit may be dedicated for receiving these IEEE 1149.1 instructions. The instructions can be used to exercise particular features such as checking the input and output paths, among others, of the integrated circuit.
  • the circuitry shown in FIG. 5 conforms to and provides the functionality of the IEEE 1149.1 standard. Furthermore, by using standard IEEE 1149.1 instructions, the circuitry in FIG. 5 may also be used to implement a preconditioning scheme of the present invention.
  • This circuitry is coupled to a pad 501 , which may be used to output data from the integrated circuit. Furthermore, in cases when pad 501 is coupled to an input-output block, pad 501 may also be used to input data into the integrated circuit through input data line 503 . Hence, pad 501 would be used bidirectionally. Furthermore, input data line 503 may also be used to feedback output data from the integrated circuit.
  • the output circuitry is tristateable.
  • a tristate buffer 506 which may be enabled or disabled, is coupled to pad 501 . When enabled, tristate buffer 506 drives a data output to pad 501 . When disabled, tristate buffer 506 will tristate pad 501 , placing pad 501 at a high impedance.
  • Tristate buffer 506 is coupled to a data path multiplexer 509 and a tristate path multiplexer 512 .
  • Data path multiplexer 509 provides data for output to pad 501 while tristate path multiplexer 512 provides data for controlling tristate buffer 506 .
  • Data path multiplexer 509 selects between a data path input line 515 and a user-selected data input line 518 .
  • data path input line 515 typically provides data for output from internally within the integrated circuit.
  • data path input line 518 may be programmably coupled to programmable interconnect lines, GHs, GVs, LABs, LEs, programmable cells, and other components.
  • a control node 521 controls the selection of multiplexers 509 and 512 .
  • control 521 is coupled to a NOR gate 524 having inputs for an EXTEST signal and a RECONFIG signal.
  • NOR gate 524 is shown controlling both multiplexers 509 and 512 , the multiplexers 509 and 519 may be individually controlled by gates and circuitry in other embodiments.
  • equivalent logic may be used without using NOR gates. For example, NAND, AND, OR, XOR, inverters, product terms, and combinations of these may be used to implement the logic to control multiplexers 509 and 512 .
  • control node 521 may also be controlled by way of programmable cells such as RAM, SRAM, EEPROM, EPROM, ROM, antifuse, and others.
  • User-selected data input line 518 provides for IEEE 1149.1 functionality. User-selected data input line 518 also provides for the output preconditioning functionality of the present invention.
  • Boundary scan register 531 is sometimes referred to as a capture register.
  • Multiplexer 527 selects between data path input line 515 and an SDIN input.
  • a control node of multiplexer 527 is coupled to a SHIFT signal for controlling multiplexer selection.
  • Boundary scan register 531 and update register 535 are typically D-type registers, although other types of registers such as T, J-K, and S-R may be used.
  • An output of multiplexer 527 is coupled to an input of boundary scan register 531 .
  • Boundary scan register 531 is clocked using a CLOCK signal.
  • boundary scan register 531 may be cleared, which may occur asynchronously, using a CLEAR signal. In other embodiments of the present invention, boundary scan register 531 may not include a clear feature.
  • An output of boundary scan register 531 is coupled to an input of update register 535 .
  • Update register 535 is clocked using an UPDATE signal.
  • An output of update register 535 is coupled to data path input line 518 .
  • Tristate multiplexer 512 is coupled to a tristate control node of tristate buffer 506 .
  • the tristate control node which uses active low logic, controls whether tristate buffer 504 is enabled or disabled. For example, when the tristate control node is low, tristate buffer 506 will be enabled. When tristate control node is high, tristate buffer 506 is disabled.
  • Tristate multiplexer 512 selects from a tristate path input 538 and a user-selected tristate input 542 .
  • Tristate path input 538 is typically coupled internally within the integrated circuit for controlling tristate buffer 506 operation.
  • a programmable logic device may be programmably coupled to programmable interconnect lines, GHs, GVs, LABs, LEs, programmable cells, and other components.
  • User-selected tristate input 542 generally provides IEEE 1149.1 functionality. User-selected tristate input 542 also provides for the output preconditioning functionality of the present invention.
  • Boundary scan register 548 is sometimes referred to as a capture register.
  • Multiplexer 545 selects between tristate path input 538 and the output of boundary scan register 531 .
  • a control node of multiplexer 545 is coupled to the SHIFT signal for controlling multiplexer selection.
  • Boundary scan register 548 and update register 551 are typically D-type registers, although other types of registers such as T, J-K, and S-R may be used.
  • An output of multiplexer 545 is coupled to an input of boundary scan register 548 .
  • Boundary scan register 548 is clocked using the CLOCK signal.
  • boundary scan register 548 may be cleared, which may occur asynchronously, using the CLEAR signal.
  • boundary scan register 548 may not include the clear feature.
  • An output of boundary scan register 548 is coupled to an input of update register 551 .
  • Update register 551 is clocked using the UPDATE signal.
  • An output of update register 551 is coupled to tristate path input 542 .
  • Input data line 503 may be selectively coupled through a multiplexer 554 to a boundary scan register 557 .
  • the output of boundary scan register 548 may also be selectively coupled through multiplexer 554 to boundary scan register 554 .
  • Multiplexer 554 is controlled by the SHIFT signal.
  • Boundary scan register 557 is clocked using the CLOCK signal. Boundary scan register 557 may be cleared, which may occur asynchronously, using the CLEAR signal.
  • An output of boundary scan register 557 is coupled it SDOUT, which is typically for a serial data output.
  • the circuit shown in FIG. 5 conforms to the IEEE 1149.1 standard.
  • the circuitry may be used to provide IEEE 1149.1 functionality and also precondition the outputs during reconfiguration.
  • the EXTEST signal and RECONFIG signal are used to indicate the particular mode operation. For example, typically during normal operation, the EXTEST signal and RECONFIG signal are logic low. Then, the boundary scan architecture circuitry will be effectively bypassed. And data path input 515 and tristate path input 538 are used to determine and control the output. When exercising the boundary scan features of IEEE 1149.1, EXTEST will be logic high, thus enabling these functions to be performed. IEEE 1149.1 functions are described in IEEE Standard Test Access Port and Boundary-Scan Architecture document discussed above.
  • RECONFIG signal will be logic high during reconfiguration mode. Then, multiplexers 509 and 512 will select registers 535 and 551 , respectively, to determine and control the output.
  • the preconditioning technique of the present invention may be implemented using IEEE 1149.1 conventions.
  • FIG. 6 shows of flowchart of an implementation of the present invention using the circuitry in FIG. 5 .
  • a user preloads boundary scan registers 531 and 548 with user-selected data.
  • this may be accomplished using a “preload” instruction.
  • the user will input data, and this user-selected data will determine the preconditioned state of a particular output.
  • data may be preloaded through SDIN.
  • SHIFT is set to a logic high. This configures boundary scan registers 531 , 548 , and 557 to be linked serially in a serpentine fashion.
  • data may be clocked into boundary scan registers 548 , 531 , and 557 serially in a shift register fashion.
  • a plurality of boundary scan cells of FIG. 5 may be used. There may be a boundary scan cell of FIG. 5 associated with each pad 501 . Accordingly, the boundary scan registers of these cells of the integrated circuit may be linked in serial serpentine fashion. For example, the SDOUT output of a first boundary scan cell may be linked to the SDIN output of a second boundary scan cell, and so forth. Data may be loaded and clocked into the boundary scan registers of the integrated circuit in a serial shift register fashion.
  • boundary scan register 548 The data loaded into boundary scan register 548 will determine whether tristate buffer 506 is enabled or disabled. For example, if a logic low is loaded into boundary scan register 548 , then tristate buffer 506 will be enabled. On the other hand, if a logic high is loaded into boundary scan register 548 , then tristate buffer 506 will be disabled.
  • boundary scan register 531 The data loaded into boundary scan register 531 will determine whether the output will drive high or low at pad 501 when tristate buffer 506 is enabled. For example, if a logic low is loaded into boundary scan register 531 , then the output at pad 501 will be a low. On the other hand, if a logic high is loaded into boundary scan register 531 , then the output at pad 501 will be a high.
  • boundary scan register 531 , 548 , and 557 are cleared using the CLEAR signal before user-selected data is preloaded.
  • tristate buffer 506 is enabled to pass a logic low. Consequently, a low will be provided at pad 501 .
  • This feature handles cases where the user does not wish to precondition pad 501 .
  • This feature may also be used to provide backwards compatibility to previous generation programmable integrated circuits which do not permit the preconditioning technique of the present invention. By clearing the boundary scan registers, this ensures that the state of pad 510 will be low unless the user preloads the registers with other data. This provides a known state at pad 510 .
  • a step 620 the data stored in boundary scan registers 531 and 548 are transferred into update registers 535 and 551 , respectively.
  • this may be accomplished using an “update” instruction. More specifically, data clocked into boundary scan registers 531 and 548 in step 610 are output and coupled to the inputs of update registers 535 and 551 . Then, this data is clocked into update registers 535 and 551 in response to the UPDATE signal.
  • a step 630 the integrated circuit is placed into the reconfiguration mode. This may be accomplished using a “reconfiguration” instruction.
  • the RECONFIG signal will be set to a logic high.
  • a step 635 the user-selected data is provided to precondition, preconfigure, or predefine pad 501 to the user-defined defined state.
  • multiplexers 509 and 512 will couple update registers 535 and 551 to the input and control node, respectively, of tristate buffer 506 .
  • pad 501 will be at the user-defined state (i.e., logic high, logic low, or tristate).
  • the integrated circuit may be reconfigured, programmed, or reprogrammed.
  • the programmable integrated circuit may be programmed using various techniques. As discussed above, because the states of the pads may be preconditioned before the reconfiguration mode, this prevents possible damage (e.g., from shorts, etc.) to the integrated circuit part itself and the system and other components. This is especially useful for an in-system programming environment.
  • the reconfiguration mode is exited, and the device may be used to provide the newly configured functions.

Abstract

A technique for configuring programmable integrated circuits. The technique involves preconditioning or predefining the outputs and I/Os of a programmable integrated circuit before the device is programmed or reconfigured. When the device is programmed, the outputs and I/Os of the programmable integrated circuit will be driven to the preconditioned or predefined states. The technique may be implemented in conformance with the IEEE 1149.1 boundary scan architecture standard. Standard IEEE 1149.1 instructions may be used. The technique may also be used during in-system programming of programmable integrated circuits.

Description

This application is a continuation of U.S. patent application Ser. No. 08/014,953, filed May 9, 1996, which claims the benefit of U.S. Provisional Application No. 60/014,953 filed Apr. 5, 1996, both of which are incorporated herein by reference.
BACKGROUND OF THE INVENTION
The present invention relates to the field of programming or configuring programmable integrated circuits. More specifically, the present invention provides a technique for preconditioning or predefining the outputs of a programmable integrated circuit before the integrated circuit is programmed or configured.
Programmable, or reconfigurable, integrated circuits are well known to those in the electronic art. Programmable integrated circuits include RAM memories, SRAM memories, EEPROM memories, Flash memories, programmable logic devices (PLDs), and many others. In particular, programmable logic devices are also well known to those in the electronic art. Such programmable logic devices are also commonly referred as PALs (Programmable Array Logic), PLAs (Programmable Logic Arrays), FPLAs (Field Programmable Logic Arrays), EPLDs (Erasable Programmable Logic Devices), EEPLDs (Electrically Erasable Programmable Logic Devices), LCAs (Logic Cell Arrays), FPGAs (Field Programmable Gate Arrays), and the like. Such devices are used in a wide array of applications where it is desirable to program standard, off-the-shelf devices for a specific application.
Programmable integrated circuits are programmed and reprogrammed (or reconfigured) to store particular data or perform a particular function. For example, EEPROMs may be programmed to store a data for a digital system. EEPROMs may be (electrically) erased and reprogrammed many times, as needed, to store different or additional data. Furthermore, serial EPROMs may be programmed to hold data for configuring PLDs. Serial EPROMs may be reprogrammed, as needed, for configuring the PLDs differently.
As a further example, PLDs are generally known in which many LABs are provided in a two-dimensional array. Further, PLDS have an array of intersecting signal conductors for programmably selecting and conducting logic signals to, from, and between the LABs. LABs contain a number of individual programmable logic elements (LEs) which provide relatively elementary logic functions such as NAND, NOR, and exclusive OR. PLDs are programmed to provide particular logic functions. PLDs may be reconfigured many times to provide additional or different logic functions.
While such programmable integrated circuits have met with substantial success, such devices also meet with certain limitations, especially during the programming of such devices. Programmable integrated circuits are typically reprogrammed in a reconfiguration mode. In the reconfiguration mode, data is inputted into the integrated circuit to indicate the configuration of the logic elements, LABS, interconnect, and other components. This data may be input in different forms such as parallel bits or serial bits. In the reconfiguration mode, the outputs (which may include bidirectional I/Os) of the device will typically be in undefined states. For example, the outputs (and I/Os) may be logic high, logic low, or even at high impedance.
Furthermore, since the user generally does not and cannot control the state of the outputs during reconfiguration mode, the programmable integrated circuit may potentially damage itself or other components when it is being configured.
In particular, when entering the reconfiguration mode, the outputs of the programmable integrated circuit may be in states, possibly undefined, that may conflict with the devices, sources, or other components that are coupled to those outputs. For example, during the reconfiguration mode, an output of the programmable integrated circuit may become shorted with another component, which may result in serious damage to the devices.
This problem may be especially significant in the situation of in-system programming (ISP). ISP programming is a technique where a programmable integrated circuit is configured or programmed while resident in the system (e.g., remains a component in a digital system). The programmable integrated circuit need not be removed from the circuit board. ISP programming allows greater flexibility when reprogramming programmable circuits. For example, the configuration information in a programmable circuit may be upgraded as needed without requiring the removal and installation of components, or disassembly of the system. In fact, the programmable circuit may be reconfigured while the rest of the system is in normal operation.
Potential problems, however, may arise when using ISP programming. For example, a programmable integrated circuit is resident on a printed circuit board (PCB) of a digital system. The programmable integrated circuit may even be soldered to the board. During ISP programming, the programmable integrated circuit will be programmed while it remains on the PCB. Thus, during ISP programming, the programmable integrated circuit may not be easily isolated or decoupled from the other components of the system. Hence, because the outputs may be at undefined or unexpected states, damage may result to the programmable integrated circuit itself or other components in the system.
As can be seen, an improved technique for configuring and programming programmable integrated circuits is needed, especially a technique where a user can specify the output and I/O states before configuring the device.
SUMMARY OF THE INVENTION
The present invention is a technique for configuring programmable integrated circuits. The technique involves preconditioning or predefining the outputs and I/Os of a programmable integrated circuit before the device is programmed or reconfigured. The technique may be implemented in conformance with the IEEE 1149.1 boundary scan architecture standard. The technique may use-standard IEEE 1149.1 instructions. The technique may be used with ISP programming.
Using the technique of the present invention, a user may precondition or define the state of the outputs, I/Os, and pads (or pins) before entering the reconfiguration or programming mode. More specifically, the user selects the states of the particular outputs and I/Os. For example, the outputs and I/Os may drive high, low, or be at a high impedance. The user loads this data into the reconfiguration path circuitry of programmable integrated circuit. In the reconfiguration mode, the outputs and I/Os will be at the user-specified, user-selected, defined states. The device may be programmed in the reconfiguration mode.
In an embodiment, the reconfiguration circuitry of the present invention includes a tristate buffer coupled to a pad. The tristate buffer is fed by a data path multiplexer, which selects between a normal data path of the integrated circuit and a reconfiguration data path. During normal operation, the normal data path of the integrated circuit is generally selected. During a reconfiguration mode, the reconfiguration data path is selected. The reconfiguration data path provides the user-selected data, which is used to determine the output state during the reconfiguration mode.
A control node of the tristate buffer is coupled to a tristate multiplexer. The control node controls whether the tristate buffer is enabled or disabled. When enabled, data will be output through the tristate buffer to the pad. When disabled, the tristate buffer will provide a high impedance or tristate the pad.
During normal operation, the tristate multiplexer generally selects a normal tristate path for controlling the tristate buffer. During the reconfiguration mode, the tristate multiplexer selects the reconfiguration tristate path. The reconfiguration tristate path provides the user-selected data for controlling the tristate buffer, which is used to determine whether the tristate buffer is enabled or disabled.
More specifically, the method of reconfiguring a programmable integrated circuit of the present includes the following steps: providing a user-selected input to the programmable integrated circuit; passing the user-selected input to a pad when the programmable integrated circuit is being reconfigured; and reconfiguring the programmable integrated circuit.
In a further embodiment of the present invention, a circuit which embodies the preconditioning technique of the present invention includes: a pad; a tristate buffer, coupled to the pad; and a first multiplexer, coupled through the tristate buffer to the pad, where the first multiplexer selects between a data path input and a user-selected data path input. The circuit may further include: a second multiplexer, coupled to a control node of the tristate buffer, where the second multiplexer selects between a tristate path input and a user-selected tristate path input; and a reconfiguration signal, coupled to the first multiplexer and the second multiplexer, for indicating when the programmable integrated circuit is in a reconfigure mode. During the reconfigure mode, the first multiplexer of this circuit of the present invention couples the user-selected data path input to the tristate buffer and the second multiplexer couples the user-selected tristate path input to the control node of the tristate buffer.
Other objects, features, and advantages of the present invention will become apparent upon consideration of the following detailed description and the accompanying drawings, in which like reference designations represent like features throughout the figures.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of a digital system incorporating a programmable logic device integrated circuit;
FIG. 2 is a block diagram showing the overall architecture of a programmable logic device;
FIG. 3 is a simplified block diagram of a logic array block (LAB) of a programmable logic device;
FIG. 4 is a schematic of an embodiment of the present invention;
FIG. 5 is a schematic of an embodiment of the present invention which conforms to the IEEE 1149.1 standard; and
FIG. 6 is a flow diagram illustrating a technique of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
FIG. 1 shows a block diagram of a digital system within which the present invention may be embodied. In the particular embodiment of FIG. 1, a processing unit 101 is coupled to a memory 105 and an I/O 111 and incorporates a programmable logic device (PLD) 121. PLD 121 may be specially coupled to memory 105 through connection 131 and to I/O 111 through connection 135. The system may be a programmed digital computer system, digital signal processing system, specialized digital switching network, or other processing system. Moreover, the system may be a general purpose computer, a special purpose computer (such as telecommunications equipment) optimized for an application-specific task such as programming PLD 121, or a combination of a general purpose computer and auxiliary special purpose hardware.
Processing unit 101 may direct data to an appropriate system component for processing or storage, execute a program stored in memory 105 or input using I/O 111, or other similar function. Processing unit 101 may be a central processing unit (CPU), microprocessor, floating point coprocessor, graphics coprocessor, hardware controller, microcontroller, programmable logic device programmed for use as a controller, or other processing unit. Furthermore, in many embodiments, there is often no need for a CPU. For example, instead of a CPU, one or more PLDs 121 may control the logical operations of the system.
In some embodiments, processing unit 101 may even be a computer system. In one embodiment, source code may be stored in memory 105, compiled into machine language, and executed by processing unit 101. Processing unit 101 need not contain a CPU and in one embodiment, instructions may be executed by one or more PLDs 121. Instead of storing source code in memory 105, only the machine language representation of the source code, without the source code, may be stored in memory 105 for execution by processing unit 101. Memory 105 may be a random access memory (RAM), read only memory (ROM), fixed or flexible disk media, PC Card flash disk memory, tape, or any other storage retrieval means, or any combination of these storage retrieval means.
Processing unit 101 uses I/O 111 to provide an input and output path for user interaction. For example, a user may input logical functions to be programmed into programmable logic device 121. I/O 111 may be a keyboard, mouse, track ball, digitizing tablet, text or graphical display, touch screen, pen tablet, printer, or other input or output means, or any combination of these means. In one embodiment, I/O 111 includes a printer used for printing a hard copy of any processing unit 101 output. In particular, using I/O 111, a user may print a copy of a document prepared using a word processing program executed using processing unit 101. In other cases, a user may print out a copy of the source code or a listing of the logical functions contained within PLD 121.
PLD 121 may serve many different purposes within the system in FIG. 1. PLD 121 may be a logical building block of processing unit 101, supporting its internal and external operations. PLD 121 is programmed to implement the logical functions necessary to carry on its particular role in system operation.
FIG. 2 shows a six-by-six two-dimensional array of thirty-six logic array blocks (LABs) 200. LAB 200 is a physically grouped set of logical resources that is configured or programmed to perform logical functions. The internal architecture of a LAB will be described in more detail below in connection with FIG. 3. PLDs may contain any arbitrary number of LABS, more or less than the PLD 121 shown in FIG. 2. Generally, in the future, as technology advances and improves, programmable logic devices with even greater numbers of logic array blocks will undoubtedly be created. Furthermore, LABs 200 need not be organized in a square matrix; for example, the array may be organized in a five-by-seven or a twenty-by-seventy matrix of LABs.
LAB 200 has inputs and outputs (not shown) which may or may not be programmably connected to a global interconnect structure, comprising an array of global horizontal interconnects (GHs) 210 and global vertical interconnects (GVs) 220. Although shown as single lines in FIG. 2, each GH 210 and GV 220 line represents a plurality of signal conductors. The inputs and outputs of LAB 200 are programmably connectable to an adjacent GH 210 and an adjacent GV 220. Utilizing GH 210 and GV 220 interconnects, multiple LABs 200 may be connected and combined to implement larger, more complex logic functions than can be realized using a single LAB 200.
In one embodiment, GH 210 and GV 220 conductors may or may not be programmably connectable at intersections 225 of these conductors. Moreover, GH 210 and GV 220 conductors may make multiple connections to other GH 210 and GV 220 conductors. Various GH 210 and GV 220 conductors may be programmably connected together to create a signal path from a LAB 200 at one location on PLD 121 to another LAB 200 at another location on PLD 121. Furthermore, an output signal from one LAB 200 can be directed into the inputs of one or more LABs 200. Also, using the global interconnect, signals from a LAB 200 can be fed back into the same LAB 200. In other embodiments or the present invention, only selected GH 210 conductors are programmably connectable to a selection of GV 220 conductors. Furthermore, in still further embodiments, GH 210 and GV 220 conductors may be specifically used for passing signal in a specific direction, such as input or output, but not both.
The PLD architecture in FIG. 2 further shows at the peripheries of the chip, input-output drivers 230. Input-output drivers 230 are for interfacing the PLD to external, off-chip circuitry. FIG. 2 shows thirty-two input-output drivers 230; however, a PLD may contain any number of input-output output drivers, more or less than the number depicted. Each input-output driver 230 is configurable for use as an input driver, output driver, or bidirectional driver. An input driver takes signals from outside the chip and interfaces them to on-chip circuitry. An output drive takes internal signals and interfaces them to the outside world. A bidirectional driver performs the functions of both a input driver and an output driver. In addition, a bidirectional drive has a high-impedance mode which allows the driver to interface with a bidirectional bus. In other embodiments of the present invention, a PLD may have dedicated input drivers and dedicated output driver, as well as special “fast” input drivers and the like.
Like LABs 200, input-output drivers 230 are programmably connectable to adjacent GH 210 and GV 220 conductors. Using GH 210 and GV 220 conductors, input-output drivers 230 are programmably connectable to any LAB 200. Input-output drivers 230 facilitate the transfer of data between LABs 200 and external, off-chip circuitry. For example, off-chip logic signals from other chips may be coupled through input-output drivers 230 to drive one or more LABs 200. Based on these off-chip inputs and the logical functions programmed into LABs 200, LABs 200 will generate output signals that are coupled through the global interconnect to input-output drivers 230 for interfacing with off-chip circuitry.
FIG. 3 shows a simplified block diagram of LAB 200 of FIG. 2. LAB 200 is comprised of a varying number of logic elements (LEs) 300, sometimes referred to as “logic cells,” and a local (or internal) interconnect structure 310. LAB 200 has eight LEs 300, but LAB 200 may have any number of LEs, more or less than eight. In a further embodiment of the present invention, LAB 200 has two “banks” of eight LEs for a total of sixteen LEs, where each bank has separate inputs, outputs, control signals, and carry chains.
A general overview of LE 300 is presented here, sufficient to provide a basic understanding of the present invention. LE 300 is the smallest logical building block of a PLD. Signals external to the LAB, such as from GHs 210 and GVs 220, are programmably connected to LE 300 through local interconnect structure 310, although LE 300 may be implemented in many architectures other than those shown in FIGS. 1-3. In one embodiment, LE 300 of the present invention incorporates a function generator that is configurable to provide a logical function of a number of variables, such a four-variable Boolean operation. As well as combinatorial functions, LE 300 also provides support for sequential and registered functions using, for example, D flip-flops. Logic functions may also be performed using lookup tables, AND-OR arrays, product terms, and multiplexers, to name a few.
LE 300 provides combinatorial and registered outputs that are connectable to the GHs 210 and GVs 220, outside LAB 200. Furthermore, the outputs from LE 300 may be internally fed back into local interconnect structure 310; through local interconnect structure 310, an output from one LE 300 may be programmably connected to the inputs of other LEs 300, without using the global interconnect structure's GHs 210 and GVs 220. Local interconnect structure 310 allows short-distance interconnection of LEs, without utilizing the limited global resources, GHs 210 and GVs 220. Through local interconnect structure 310 and local feedback, LEs 300 are programmably connectable to form larger, more complex logical functions than can be realized using a single LE 300. Furthermore, because of its reduced size and shorter length, local interconnect structure 310 has reduced parasitics compared to the global interconnection structure. Consequently, local interconnect structure 310 generally allows signals to propagate faster than through the global interconnect structure.
FIG. 4 is a block diagram illustrating a circuit implementation of the preconditioning scheme of the present invention. The preconditioning scheme of the present invention is a technique for predefining or preconditioning the outputs of a programmable integrated circuit before the integrated circuit is configured in a reconfiguration mode. The technique is applicable to programmable logic devices, as well as other types of programmable and configurable integrated circuits including EPROMs, EEPROMs, CLAs, FPGAS, and many others.
As discussed in the Background section, a potential problem results when reconfiguring programmable circuits because during the reconfiguration mode, the outputs will typically be in unchangeable or undefined states. For example, the outputs may be logic high, logic low, or even at high impedance. Since the user generally does not and can not control the state of the outputs during reconfiguration mode, the programmable integrated circuit may potentially damage itself or other components when it is being configured.
In particular, when entering the reconfiguration mode, the outputs of the programmable integrated circuit may be states, possibly undefined, that may conflict with the devices, sources, or other components that are coupled to those outputs. For example, an output of the integrated circuit may become shorted with another component during the reconfiguration mode, which may result in serious damage to the devices.
The problem may be especially significant in the situation of in-system programming (ISP). ISP programming is a technique where a programmable integrated circuit is configured or programmed while resident in the system. ISP programming allows greater flexibility when reprogramming programmable circuits. For example, the configuration information in a programmable integrated circuit may be upgraded as needed without requiring the removal and installation of components, or disassembly of the system.
Potential problems, however, may arise when using ISP programming. For example, a programmable integrated circuit is resident on a printed circuit board (PCB) of a digital system. The programmable integrated circuit may even be soldered to the board. During ISP programming, the programmable integrated circuit will be programmed while it remains on the PCB. Thus, during ISP programming, the programmable integrated circuit may not be easily isolated or decoupled from the other components of the system. Hence, because the outputs may be at undefined or unexpected states, damage may result to the programmable integrated circuit itself or other components in the system.
The present invention may be used to prevent these problems. Using the technique of the present invention, a user may precondition or predefine an output of the programmable integrated circuit before entering the reconfiguration mode. Then, the output will be at an expected or desired state, thus avoiding the problems discussed above.
The circuit configuration shown in FIG. 4 will typically be used in the output path of the integrated circuit. In this embodiment, the output is tristateable. However, in other embodiments of the present invention, the output may not be tristateable, and the circuitry may be modified appropriately.
The circuitry in FIG. 4 may be part of an output buffer, input-output (bidirectional) buffer, bus driver, and other similar circuits. For example, this circuitry may be used to implement the input-output drivers of a programmable logic device as shown in FIG. 2.
In this embodiment of the present invention, a multiplexer 410 selects between a data path input line 420 and a user-selected input line 425. Multiplexer 410 is controlled by a control line 430. Signals may be provided on data path input line 420 for output from the integrated circuit. For example, in a programmable logic device, data path input line 420 may be programmably coupled to the LABs, LEs, GVs, GHs, and other components.
Control line 430 is used for selecting between the multiplexer inputs 420 and 425. Control line 430 will be typically coupled to a signal indicating whether the programmable integrated circuit is in a normal operation mode or a reconfiguration mode. During normal operation, a programmable logic device, for example, will perform the logic functions for which it has been configured. While during reconfiguration mode, the programmable logic device may be reconfigured or reprogrammed so that it may perform different or additional logic functions.
Typically during normal operation, control line 430 selects to pass a signal on data path input line 420 to a multiplexer output. During the reconfiguration mode, the control line 430 selects to pass a signal on user-selected input line 425 to the multiplexer output. User-selected input line 425 contains the data to be output during the reconfiguration mode.
User-selected input line 425 may be driven from various sources. For example, user-selected input line 425 may be driven by a LAB, LE, GH or GV, or input pin of a programmable logic device. User-selected input line 425 may also be coupled to a storage block 435 as shown in FIG. 4. Storage block 435 will hold the data which will be output during the reconfiguration mode. Storage block 435 may be a register, flip-flop, memory cell, or other component used to store data. In a preferred embodiment, storage block 435 is a register.
From multiplexer 410 output, either the data path input line 420 or user-selected input line 425 may be driven directly to a pad 440. However, in the embodiment shown in FIG. 4, to provide a tristateable output, multiplexer 410 output is driven through a tristate buffer 445 to pad 440.
Tristate buffer 445 may be enabled or disabled. When enabled, tristate buffer 445 outputs data at its input to 440. When disabled, tristate buffer 445 provides a high impedance (or tristate) at pad 440. Tristate buffer 445 provides additional functionality by allowing pad 440 to be tristated. For example, when tristated, pad 440 may be coupled to a bidirectional bus and used as an input.
Tristate buffer 445 is controlled by a way of a multiplexer 450. Based on a signal on control line 430, multiplexer 450 selectively couples either a tristate control input 455 or a user-selected tristate input 460 to a control line 465 of tristate buffer 455. For example, if control line 430 is high, user-selected tristate input 460 controls tristate buffer 445. If control line 430 is low, tristate control input 455 controls tristate buffer 445.
During normal operation mode, tristate control input 455 of multiplexer 450 will typically be selected to control the operation of tristate buffer 445. For example, in a programmable logic device, tristate control input 455 may be programmably coupled to various sources including LABs, LEs, GHs, GVs, and pads for controlling the tristate output of tristate buffer 445.
During reconfiguration mode, user-selected tristate input 460 will typically be selected to control the operation of tristate buffer 445. User-selected tristate input 460 may come from sources similar to that used for user-selected input line 425. For example, user-selected tristate input 460 may be driven by a LAB, LE, GH or GV, or input pin of a programmable logic device. User-selected tristate input 460 may also be coupled to a storage block 470. Storage block 470 will hold the data which will determine whether tristate buffer 445 is enabled or disabled during reconfiguration mode. Storage block 470 may be register, flip-flop, memory cell, or other component used to store data. In a preferred embodiment, storage block 470 is a register.
In operation, the circuitry of the present invention may be used to predefine or precondition the input-output pads, outputs, and I/Os of an integrated circuit during reconfiguration or reprogramming. This will avoid and prevent the problems described above. For example, using the present invention, the user may decide to tristate certain pads, drive high on certain pads, or drive low on certain pads.
The present invention allows a user to clearly define the states of the outputs during reconfiguration. When entering the reconfiguration mode, the outputs will be in known states. Thus, the user can ensure that the states of the outputs will not conflict or contend with other components. This avoids the problem of potentially damaging the programmable integrated circuit itself or other components in the system. As discussed above, this is especially useful for ISP programming.
To precondition the pads, user-selected input line 425 and user-selected tristate input 460 are driven to a known state before the reconfiguration mode. For example, to drive pad 440 high, user-selected input line 425 and user-selected tristate input 460 are driven high. Accordingly, in the reconfiguration mode, control line 430 will be high, and the user-selected inputs 425 and 460 are passed to tristate buffer 445. Tristate buffer 445 is enabled and pad 440 will be a logic high.
Similarly, a logic low may be driven to pad 440 by driving user-selected input line 425 low and user-selected tristate input 460 high before reconfiguring.
To place pad 440 in tristate for the reconfiguration mode, user-selected tristate input 460 should be driven low and user-selected input line 425 may be driven high or low (don't care).
Storage blocks 435 and 470 may be used to store the user-selected data for lines 425 and 460. The data for these storage blocks may be input into the device in many different ways. For example, data may be input into storage blocks 435 and 470 directly, serially, in parallel, cascaded through other devices, via GHs and GVs, via LABs and LEs, through dedicated pins, and many other ways.
In one embodiment, storage blocks 435 and 470 are part of a shift register. A user may specify user-selected data by serially loading and shifting this data into the appropriate storage blocks. Then, this data will control the output of the programmable integrated circuit during the reconfiguration mode.
Furthermore, in a typical integrated circuit, there may be a plurality of pads, including output and input-output pads. These output and input-output blocks may include the circuitry of the present invention. In such an embodiment, there would typically be a plurality of storage blocks (or a shift register) for holding user-selected preconditioning data. The user-selected data may be loaded in a shift register fashion by cascading and serpentining the data through the plurality of storage blocks.
FIG. 5 shows another embodiment of the present invention. The circuity shown in FIG. 5 implements the present invention and also conforms to IEEE Standard 1149.1 (hereinafter “IEEE 1149.1”). The IEEE 1149.1 standard is described in IEEE Standard Test Access Port and Boundary-Scan Architecture, which is incorporated herein by reference. Since IEEE 1149.1 described what is known as a boundary scan architecture, the circuitry shown in FIG. 5 may also be referred to as a boundary scan cell.
IEEE 1149.1 was also developed in part by the Joint Test Action Group (JTAG), and was also adopted as a JTAG standard. A brief description of IEEE 1149.1 is given here, sufficient for understanding the invention. For a more detailed discussion, please refer to the IEEE 1149.1documentation.
Generally, IEEE 1149.1 provides guidelines for device testing at the board level. IEEE 1149.1 provides standard instructions and functionality for testing integrated circuits. For example, some pins of an integrated circuit may be dedicated for receiving these IEEE 1149.1 instructions. The instructions can be used to exercise particular features such as checking the input and output paths, among others, of the integrated circuit.
The circuitry shown in FIG. 5 conforms to and provides the functionality of the IEEE 1149.1 standard. Furthermore, by using standard IEEE 1149.1 instructions, the circuitry in FIG. 5 may also be used to implement a preconditioning scheme of the present invention.
This circuitry is coupled to a pad 501, which may be used to output data from the integrated circuit. Furthermore, in cases when pad 501 is coupled to an input-output block, pad 501 may also be used to input data into the integrated circuit through input data line 503. Hence, pad 501 would be used bidirectionally. Furthermore, input data line 503 may also be used to feedback output data from the integrated circuit.
The output circuitry is tristateable. A tristate buffer 506, which may be enabled or disabled, is coupled to pad 501. When enabled, tristate buffer 506 drives a data output to pad 501. When disabled, tristate buffer 506 will tristate pad 501, placing pad 501 at a high impedance.
Tristate buffer 506 is coupled to a data path multiplexer 509 and a tristate path multiplexer 512. Data path multiplexer 509 provides data for output to pad 501 while tristate path multiplexer 512 provides data for controlling tristate buffer 506.
Data path multiplexer 509 selects between a data path input line 515 and a user-selected data input line 518. During normal operation, data path input line 515 typically provides data for output from internally within the integrated circuit. For example, in a programmable logic device, data path input line 518 may be programmably coupled to programmable interconnect lines, GHs, GVs, LABs, LEs, programmable cells, and other components.
A control node 521 controls the selection of multiplexers 509 and 512. In this embodiment, control 521 is coupled to a NOR gate 524 having inputs for an EXTEST signal and a RECONFIG signal. Although NOR gate 524 is shown controlling both multiplexers 509 and 512, the multiplexers 509 and 519 may be individually controlled by gates and circuitry in other embodiments. Furthermore, equivalent logic may be used without using NOR gates. For example, NAND, AND, OR, XOR, inverters, product terms, and combinations of these may be used to implement the logic to control multiplexers 509 and 512. Furthermore, control node 521 may also be controlled by way of programmable cells such as RAM, SRAM, EEPROM, EPROM, ROM, antifuse, and others.
User-selected data input line 518 provides for IEEE 1149.1 functionality. User-selected data input line 518 also provides for the output preconditioning functionality of the present invention.
Coupled between data path multiplexer 509 and a multiplexer 527 are a boundary scan register 531 and an update register 535. Boundary scan register 531 is sometimes referred to as a capture register. Multiplexer 527 selects between data path input line 515 and an SDIN input. A control node of multiplexer 527 is coupled to a SHIFT signal for controlling multiplexer selection.
Boundary scan register 531 and update register 535 are typically D-type registers, although other types of registers such as T, J-K, and S-R may be used. An output of multiplexer 527 is coupled to an input of boundary scan register 531. Boundary scan register 531 is clocked using a CLOCK signal. In this embodiment, boundary scan register 531 may be cleared, which may occur asynchronously, using a CLEAR signal. In other embodiments of the present invention, boundary scan register 531 may not include a clear feature.
An output of boundary scan register 531 is coupled to an input of update register 535. Update register 535 is clocked using an UPDATE signal. An output of update register 535 is coupled to data path input line 518.
Tristate multiplexer 512 is coupled to a tristate control node of tristate buffer 506. The tristate control node, which uses active low logic, controls whether tristate buffer 504 is enabled or disabled. For example, when the tristate control node is low, tristate buffer 506 will be enabled. When tristate control node is high, tristate buffer 506 is disabled.
Tristate multiplexer 512 selects from a tristate path input 538 and a user-selected tristate input 542. Tristate path input 538 is typically coupled internally within the integrated circuit for controlling tristate buffer 506 operation. For example, in a programmable logic device, may be programmably coupled to programmable interconnect lines, GHs, GVs, LABs, LEs, programmable cells, and other components.
User-selected tristate input 542 generally provides IEEE 1149.1 functionality. User-selected tristate input 542 also provides for the output preconditioning functionality of the present invention.
Coupled between tristate multiplexer 512 and a multiplexer 545 are a boundary scan register 548 and an update register 551. Boundary scan register 548 is sometimes referred to as a capture register. Multiplexer 545 selects between tristate path input 538 and the output of boundary scan register 531. A control node of multiplexer 545 is coupled to the SHIFT signal for controlling multiplexer selection.
Boundary scan register 548 and update register 551 are typically D-type registers, although other types of registers such as T, J-K, and S-R may be used. An output of multiplexer 545 is coupled to an input of boundary scan register 548. Boundary scan register 548 is clocked using the CLOCK signal. In this embodiment, boundary scan register 548 may be cleared, which may occur asynchronously, using the CLEAR signal. However, in other embodiments of the present invention, boundary scan register 548 may not include the clear feature.
An output of boundary scan register 548 is coupled to an input of update register 551. Update register 551 is clocked using the UPDATE signal. An output of update register 551 is coupled to tristate path input 542.
Input data line 503 may be selectively coupled through a multiplexer 554 to a boundary scan register 557. The output of boundary scan register 548 may also be selectively coupled through multiplexer 554 to boundary scan register 554. Multiplexer 554 is controlled by the SHIFT signal. Boundary scan register 557 is clocked using the CLOCK signal. Boundary scan register 557 may be cleared, which may occur asynchronously, using the CLEAR signal. An output of boundary scan register 557 is coupled it SDOUT, which is typically for a serial data output.
In operation, the circuit shown in FIG. 5 conforms to the IEEE 1149.1 standard. For a programmable integrated circuit, the circuitry may be used to provide IEEE 1149.1 functionality and also precondition the outputs during reconfiguration.
The EXTEST signal and RECONFIG signal are used to indicate the particular mode operation. For example, typically during normal operation, the EXTEST signal and RECONFIG signal are logic low. Then, the boundary scan architecture circuitry will be effectively bypassed. And data path input 515 and tristate path input 538 are used to determine and control the output. When exercising the boundary scan features of IEEE 1149.1, EXTEST will be logic high, thus enabling these functions to be performed. IEEE 1149.1 functions are described in IEEE Standard Test Access Port and Boundary-Scan Architecture document discussed above.
For preconditioning the output, RECONFIG signal will be logic high during reconfiguration mode. Then, multiplexers 509 and 512 will select registers 535 and 551, respectively, to determine and control the output. In particular, the preconditioning technique of the present invention may be implemented using IEEE 1149.1 conventions.
For example, FIG. 6 shows of flowchart of an implementation of the present invention using the circuitry in FIG. 5. In a step 610, a user preloads boundary scan registers 531 and 548 with user-selected data. In the IEEE 1149.1 standard, this may be accomplished using a “preload” instruction. The user will input data, and this user-selected data will determine the preconditioned state of a particular output. Specifically, data may be preloaded through SDIN. SHIFT is set to a logic high. This configures boundary scan registers 531, 548, and 557 to be linked serially in a serpentine fashion. Then, in response to the CLOCK signal, data may be clocked into boundary scan registers 548, 531, and 557 serially in a shift register fashion.
When the integrated circuit contains a plurality of pads, a plurality of boundary scan cells of FIG. 5 may be used. There may be a boundary scan cell of FIG. 5 associated with each pad 501. Accordingly, the boundary scan registers of these cells of the integrated circuit may be linked in serial serpentine fashion. For example, the SDOUT output of a first boundary scan cell may be linked to the SDIN output of a second boundary scan cell, and so forth. Data may be loaded and clocked into the boundary scan registers of the integrated circuit in a serial shift register fashion.
The data loaded into boundary scan register 548 will determine whether tristate buffer 506 is enabled or disabled. For example, if a logic low is loaded into boundary scan register 548, then tristate buffer 506 will be enabled. On the other hand, if a logic high is loaded into boundary scan register 548, then tristate buffer 506 will be disabled.
The data loaded into boundary scan register 531 will determine whether the output will drive high or low at pad 501 when tristate buffer 506 is enabled. For example, if a logic low is loaded into boundary scan register 531, then the output at pad 501 will be a low. On the other hand, if a logic high is loaded into boundary scan register 531, then the output at pad 501 will be a high.
In a further embodiment of the present invention, during step 610, boundary scan register 531, 548, and 557 are cleared using the CLEAR signal before user-selected data is preloaded. In particular, by clearing boundary scan registers 531, 548, and 557, tristate buffer 506 is enabled to pass a logic low. Consequently, a low will be provided at pad 501.
This feature handles cases where the user does not wish to precondition pad 501. This feature may also be used to provide backwards compatibility to previous generation programmable integrated circuits which do not permit the preconditioning technique of the present invention. By clearing the boundary scan registers, this ensures that the state of pad 510 will be low unless the user preloads the registers with other data. This provides a known state at pad 510.
In a step 620, the data stored in boundary scan registers 531 and 548 are transferred into update registers 535 and 551, respectively. In the IEEE 1149.1 standard, this may be accomplished using an “update” instruction. More specifically, data clocked into boundary scan registers 531 and 548 in step 610 are output and coupled to the inputs of update registers 535 and 551. Then, this data is clocked into update registers 535 and 551 in response to the UPDATE signal.
In a step 630, the integrated circuit is placed into the reconfiguration mode. This may be accomplished using a “reconfiguration” instruction. In particular, the RECONFIG signal will be set to a logic high.
In a step 635, the user-selected data is provided to precondition, preconfigure, or predefine pad 501 to the user-defined defined state. Specifically, in response to RECONFIG, multiplexers 509 and 512 will couple update registers 535 and 551 to the input and control node, respectively, of tristate buffer 506. Accordingly, pad 501 will be at the user-defined state (i.e., logic high, logic low, or tristate).
In a step 640, the integrated circuit may be reconfigured, programmed, or reprogrammed. The programmable integrated circuit may be programmed using various techniques. As discussed above, because the states of the pads may be preconditioned before the reconfiguration mode, this prevents possible damage (e.g., from shorts, etc.) to the integrated circuit part itself and the system and other components. This is especially useful for an in-system programming environment.
After reconfiguring or reprogramming the programmable integrated circuit, the reconfiguration mode is exited, and the device may be used to provide the newly configured functions.
The foregoing description of preferred embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form described, and many modifications and variations are possible in light of the teaching above. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications to thereby enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto.

Claims (27)

What is claimed is:
1. A method of configuring a programmable integrated circuit comprising:
providing a user-selected input to the programmable integrated circuit;
storing the user-selected input in a register, wherein the register is a JTAG boundary scan register of the programmable logic integrated circuit;
driving a pad to a state based on the user-selected input when the programmable integrated circuit is being reconfigured; and
configuring the programmable integrated circuit.
2. The method of claim 1 wherein the pad is driven to a state based on the user-selected input using circuitry of the programmable integrated circuit.
3. The method of claim 1 wherein the programmable integrated circuit is reconfigured by programming memory cells of the programmable integrated circuit.
4. The method of claim 3 wherein the memory cells are SRAM cells.
5. The method of claim 3 wherein the memory cells are EEPROM cells.
6. The method of claim 1 wherein the programmable integrated circuit is configured using configuration data from an external source.
7. The method of claim 1 wherein the programmable integrated circuit is configured while it remains resident in a system.
8. The method of claim 1 wherein the user-selected input is serially input to the register.
9. The method of claim 1 wherein a bit of user-selected input is provided for each of the I/O pins of the programmable integrated circuit.
10. The method of claim 1 wherein the pad is driven to a high state or a low state based on contents of the register.
11. The method of claim 1 wherein the pad is at the state based on the user-selected input throughout reconfiguration of the programmable integrated circuit.
12. A method of programming a programmable logic device comprising:
preconditioning outputs of the programmable logic device using a JTAG boundary scan cell before entering a reconfiguration mode, wherein output pads of the programmable logic device are placed in preconditioned states during the reconfiguration mode; and
configuring programmable elements of the programmable logic device during the reconfiguration mode.
13. A method of configuring a programmable integrated circuit comprising:
inputting a first user-selected bit and a second user-selected bit into a register of the programmable integrated circuit;
when the programmable integrated circuit is being configured, transferring the first user-selected bit to a data input of a tristate buffer and the second user-selected bit to an enable input of the tristate buffer; and
configuring the programmable integrated circuit.
14. The method of claim 13 wherein the first and second user-selected bits are serially shifted into the register.
15. The method of claim 13 wherein the transferring the first user-selected bit comprises:
passing the first and second user-selected bits from the register to a second register, wherein the register may be loaded with new data without disturbing data stored in the second register; and
selectively coupling the first and second user-selected bits, stored in the second register, to the tristate driver based on a reconfiguration signal.
16. The method of claim 13 further comprising:
placing a pad, coupled to the tristate buffer, in a user-selected state based on the first and second user-selected bits.
17. The method of claim 13 further comprising:
driving a pad coupled to an output of the tristate driver to a user-selected state, wherein the second user-selected bit determines whether the pad is placed in a high impedance state, and when the pad is not placed in a high impedance state, the first user-selected bit determines whether the pad is driven to a logic high or a logic low.
18. The method of claim 13 further comprising:
when the programmable integrated circuit is in a normal mode, controlling the tristate buffer with a signal generated from a logical circuit within the programmable integrated circuit.
19. A method of configuring a programmable integrated circuit comprising;
serially loading a first register with user-input bits;
transferring in parallel the user-input bits from the first register to a second register; and
when the programmable integrated circuit is being configured, controlling the tristate buffer using the user-input bits in a second register.
20. The method of claim 19 further comprising:
when in a normal mode, controlling the tristate buffer using logical signals from a core of the programmable integrated circuit.
21. The method of claim 19 wherein a multiplexer is coupled between the second register and the tristate buffer, and a control input of the multiplexer is coupled to a signal indicating whether the programmable integrated circuit is in a configuration mode.
22. A method of reconfiguring a programmable circuit comprising:
providing a user-selected input;
driving a pad with a tristate buffer controlled by the user-selected input when the programmable circuit is being configured, wherein the user-selected input is coupled to a first input of a multiplexer and data signal is coupled to a second input of the multiplexer, wherein an output of the multiplexer is coupled to the tristate buffer, and a control node of the multiplexer is controlled by a signal indicating whether the programmable circuit is being configured; and
configuring the programmable circuit.
23. A method of configuring a programmable integrated circuit via in-system programming utilizing the method of claim 22.
24. A programmable integrated circuit comprising:
a first multiplexer coupled to internal logical data;
a boundary scan register, coupled to the first multiplexer, wherein in a first mode the first multiplexer permits parallel loading of internal logical data into the boundary scan register, and in a second mode, the first multiplexer permits serial loading of the boundary scan register;
an update register coupled to the boundary scan register;
an output buffer to place a pad into a logic high state, a logic low state, or a high impedance state; and
a second multiplexer, selectively coupling the update register or the internal logical data to the output buffer, wherein a control input to the second multiplexer is coupled to a reconfiguration signal indicating whether the integrated circuit is in a reconfiguration mode, and when in the reconfiguration mode, the update register is coupled to the output buffer.
25. The programmable integrated circuit of claim 26 wherein contents of the boundary scan register are transferred in parallel to the update register in response to the an update signal.
26. The programmable integrated circuit of claim 24 wherein in the reconfiguration mode, user-selected data input serially into the boundary scan register and transferred in parallel into the update register determines a state of the pad.
27. An electronic system comprising a programmable integrated circuit as recited in claim 24.
US09/026,885 1996-04-05 1998-02-19 Technique for preconditioning I/Os during reconfiguration Expired - Lifetime US6208162B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/026,885 US6208162B1 (en) 1996-04-05 1998-02-19 Technique for preconditioning I/Os during reconfiguration

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US1495396P 1996-04-05 1996-04-05
US08/647,102 US5869979A (en) 1996-04-05 1996-05-09 Technique for preconditioning I/Os during reconfiguration
US09/026,885 US6208162B1 (en) 1996-04-05 1998-02-19 Technique for preconditioning I/Os during reconfiguration

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US08/647,102 Continuation US5869979A (en) 1996-04-05 1996-05-09 Technique for preconditioning I/Os during reconfiguration

Publications (1)

Publication Number Publication Date
US6208162B1 true US6208162B1 (en) 2001-03-27

Family

ID=26686757

Family Applications (2)

Application Number Title Priority Date Filing Date
US08/647,102 Expired - Lifetime US5869979A (en) 1996-04-05 1996-05-09 Technique for preconditioning I/Os during reconfiguration
US09/026,885 Expired - Lifetime US6208162B1 (en) 1996-04-05 1998-02-19 Technique for preconditioning I/Os during reconfiguration

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US08/647,102 Expired - Lifetime US5869979A (en) 1996-04-05 1996-05-09 Technique for preconditioning I/Os during reconfiguration

Country Status (1)

Country Link
US (2) US5869979A (en)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6356107B1 (en) * 1998-05-21 2002-03-12 Lattice Semiconductor Corporation Method and structure dynamic in-system programming
US6408432B1 (en) * 1996-11-14 2002-06-18 Altera Corporation Apparatus and method for in-system programming of integrated circuits containing programmable elements
WO2002054594A1 (en) * 2000-12-29 2002-07-11 Quicklogic Corporation Architecture for field programmable gate array
US20030042929A1 (en) * 2001-08-31 2003-03-06 Kock Ernst Josef Driver circuit
US20050028220A1 (en) * 2003-03-04 2005-02-03 Broadcom Corporation Television functionality on a chip
US20050036523A1 (en) * 2003-08-14 2005-02-17 Sweet James D. System and method using an I/O multiplexer module
US20060050568A1 (en) * 2004-09-08 2006-03-09 Kao Oliver C Programmable logic auto write-back
US20070022345A1 (en) * 2005-06-02 2007-01-25 Cpu Technology, Inc. Pseudo-random test generator in an integrated circuit
US7287189B1 (en) * 2003-06-25 2007-10-23 Altera Corporation I/O configuration and reconfiguration trigger through testing interface
US20080250281A1 (en) * 2004-06-29 2008-10-09 Manoj Kumar Agarwal Methods and apparatus for monitoring internal signals in an integrated circuit
US7459931B1 (en) * 2006-04-05 2008-12-02 Lattice Semiconductor Corporation Programmable logic devices with transparent field reconfiguration
US7532029B1 (en) * 2007-04-18 2009-05-12 Altera Corporation Techniques for reconfiguring programmable circuit blocks
US7538574B1 (en) 2005-12-05 2009-05-26 Lattice Semiconductor Corporation Transparent field reconfiguration for programmable logic devices
US7652500B1 (en) 2006-02-09 2010-01-26 Lattice Semiconductor Corporation Reconfiguration of programmable logic devices
US7724030B1 (en) * 2007-12-03 2010-05-25 Xilinx, Inc. Method and apparatus for providing a feedback path for an output signal
US20110175647A1 (en) * 2008-10-01 2011-07-21 Sangwook Kim Method of operating inverter
US8384428B1 (en) 2011-01-14 2013-02-26 Lattice Semiconductor Corporation Pre-configuration programmability of I/O circuitry

Families Citing this family (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5869979A (en) * 1996-04-05 1999-02-09 Altera Corporation Technique for preconditioning I/Os during reconfiguration
US5996106A (en) * 1997-02-04 1999-11-30 Micron Technology, Inc. Multi bank test mode for memory devices
US5913928A (en) 1997-05-09 1999-06-22 Micron Technology, Inc. Data compression test mode independent of redundancy
US6691267B1 (en) 1997-06-10 2004-02-10 Altera Corporation Technique to test an integrated circuit using fewer pins
JPH1172541A (en) 1997-06-10 1999-03-16 Altera Corp Method for constituting programmable integrated circuit, usage of programmable integrated circuit and jtag circuit, and usage of command inputted to jtag command register
US6018250A (en) * 1997-06-26 2000-01-25 Xilinx, Inc. Programming method to enable system recovery after power failure
US6020760A (en) * 1997-07-16 2000-02-01 Altera Corporation I/O buffer circuit with pin multiplexing
US6044417A (en) * 1997-12-31 2000-03-28 Intel Corporation System for controlling operational characteristics of buffer group where capture registers receive control signals in parallel and update registers transfer control signals to buffer group
US7389487B1 (en) * 1998-04-28 2008-06-17 Actel Corporation Dedicated interface architecture for a hybrid integrated circuit
JPH11328972A (en) * 1998-05-18 1999-11-30 Mitsubishi Electric Corp Semiconductor device, design and inspection methods thereof
US6389565B2 (en) 1998-05-29 2002-05-14 Agilent Technologies, Inc. Mechanism and display for boundary-scan debugging information
US7119576B1 (en) 2000-09-18 2006-10-10 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US7346644B1 (en) 2000-09-18 2008-03-18 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US6981090B1 (en) * 2000-10-26 2005-12-27 Cypress Semiconductor Corporation Multiple use of microcontroller pad
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US6892310B1 (en) * 2000-10-26 2005-05-10 Cypress Semiconductor Corporation Method for efficient supply of power to a microcontroller
US8160864B1 (en) 2000-10-26 2012-04-17 Cypress Semiconductor Corporation In-circuit emulator and pod synchronized boot
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US6529041B1 (en) * 2001-03-23 2003-03-04 Xilinx, Inc. System power control output circuit for programmable logic devices
US6651238B1 (en) * 2001-04-17 2003-11-18 Xilinx, Inc. Providing fault coverage of interconnect in an FPGA
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US7844437B1 (en) 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US7770113B1 (en) 2001-11-19 2010-08-03 Cypress Semiconductor Corporation System and method for dynamically generating a configuration datasheet
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
US7774190B1 (en) 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
US6861867B2 (en) * 2002-03-07 2005-03-01 Lightspeed Semiconductor Corporation Method and apparatus for built-in self-test of logic circuits with multiple clock domains
US8103497B1 (en) 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
US7308608B1 (en) 2002-05-01 2007-12-11 Cypress Semiconductor Corporation Reconfigurable testing system and method
US7761845B1 (en) 2002-09-09 2010-07-20 Cypress Semiconductor Corporation Method for parameterizing a user module
US6973588B2 (en) * 2002-11-27 2005-12-06 Symbol Technologies, Inc. Disaster recovery port in a portable computer
JP3869387B2 (en) * 2003-04-25 2007-01-17 株式会社東芝 Semiconductor integrated circuit
US6856171B1 (en) * 2003-06-11 2005-02-15 Lattice Semiconductor Corporation Synchronization of programmable multiplexers and demultiplexers
US7158536B2 (en) * 2004-01-28 2007-01-02 Rambus Inc. Adaptive-allocation of I/O bandwidth using a configurable interconnect topology
US7295049B1 (en) 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
US7313730B1 (en) * 2004-05-20 2007-12-25 Xilinx, Inc. Configuration logic for embedded software
US8286125B2 (en) 2004-08-13 2012-10-09 Cypress Semiconductor Corporation Model for a hardware device-independent method of defining embedded firmware for programmable systems
US8069436B2 (en) 2004-08-13 2011-11-29 Cypress Semiconductor Corporation Providing hardware independence to automate code generation of processing device firmware
US7332976B1 (en) 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
JP4444860B2 (en) * 2005-03-10 2010-03-31 富士通株式会社 Reconfigurable circuit and configuration method thereof
DE102005014133B3 (en) * 2005-03-29 2006-06-14 Bernhard Engl Integrated circuit for bus systems has second connection which is electrically coupled to analog signal processing medium and command detection medium
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
US8089461B2 (en) * 2005-06-23 2012-01-03 Cypress Semiconductor Corporation Touch wake for electronic devices
US8620980B1 (en) 2005-09-27 2013-12-31 Altera Corporation Programmable device with specialized multiplier blocks
US8085067B1 (en) 2005-12-21 2011-12-27 Cypress Semiconductor Corporation Differential-to-single ended signal converter circuit and method
US8266199B2 (en) * 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8301681B1 (en) 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US8041759B1 (en) 2006-02-09 2011-10-18 Altera Corporation Specialized processing block for programmable logic device
US8266198B2 (en) * 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
US7836117B1 (en) 2006-04-07 2010-11-16 Altera Corporation Specialized processing block for programmable logic device
US7583102B1 (en) * 2006-05-05 2009-09-01 Xilinx, Inc. Testing of input/output devices of an integrated circuit
US7822799B1 (en) 2006-06-26 2010-10-26 Altera Corporation Adder-rounder circuitry for specialized processing block in programmable logic device
US8386550B1 (en) 2006-09-20 2013-02-26 Altera Corporation Method for configuring a finite impulse response filter in a programmable logic device
US7930336B2 (en) * 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7814137B1 (en) 2007-01-09 2010-10-12 Altera Corporation Combined interpolation and decimation filter for programmable logic device
US7865541B1 (en) 2007-01-22 2011-01-04 Altera Corporation Configuring floating point operations in a programmable logic device
US8650231B1 (en) 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US8130025B2 (en) * 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US7737724B2 (en) 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US7949699B1 (en) 2007-08-30 2011-05-24 Altera Corporation Implementation of decimation filter in integrated circuit device using ram-based data storage
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US8327173B2 (en) * 2007-12-17 2012-12-04 Nvidia Corporation Integrated circuit device core power down independent of peripheral device operation
US9088176B2 (en) * 2007-12-17 2015-07-21 Nvidia Corporation Power management efficiency using DC-DC and linear regulators in conjunction
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8244789B1 (en) 2008-03-14 2012-08-14 Altera Corporation Normalization of floating point operations in a programmable integrated circuit device
US9423846B2 (en) 2008-04-10 2016-08-23 Nvidia Corporation Powered ring to maintain IO state independent of the core of an integrated circuit device
US8762759B2 (en) * 2008-04-10 2014-06-24 Nvidia Corporation Responding to interrupts while in a reduced power state
US8626815B1 (en) 2008-07-14 2014-01-07 Altera Corporation Configuring a programmable integrated circuit device to perform matrix multiplication
US8255448B1 (en) 2008-10-02 2012-08-28 Altera Corporation Implementing division in a programmable integrated circuit device
US8307023B1 (en) 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
US8549055B2 (en) * 2009-03-03 2013-10-01 Altera Corporation Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry
US8886696B1 (en) 2009-03-03 2014-11-11 Altera Corporation Digital signal processing circuitry with redundancy and ability to support larger multipliers
US8805916B2 (en) * 2009-03-03 2014-08-12 Altera Corporation Digital signal processing circuitry with redundancy and bidirectional data paths
US8468192B1 (en) 2009-03-03 2013-06-18 Altera Corporation Implementing multipliers in a programmable integrated circuit device
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8706790B1 (en) 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
US8650236B1 (en) 2009-08-04 2014-02-11 Altera Corporation High-rate interpolation or decimation filter in integrated circuit device
US8412756B1 (en) 2009-09-11 2013-04-02 Altera Corporation Multi-operand floating point operations in a programmable integrated circuit device
US8396914B1 (en) 2009-09-11 2013-03-12 Altera Corporation Matrix decomposition in an integrated circuit device
US7948267B1 (en) 2010-02-09 2011-05-24 Altera Corporation Efficient rounding circuits and methods in configurable integrated circuit devices
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
US8601044B2 (en) * 2010-03-02 2013-12-03 Altera Corporation Discrete Fourier Transform in an integrated circuit device
US8458243B1 (en) 2010-03-03 2013-06-04 Altera Corporation Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering
US8484265B1 (en) 2010-03-04 2013-07-09 Altera Corporation Angular range reduction in an integrated circuit device
US8510354B1 (en) 2010-03-12 2013-08-13 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8539014B2 (en) * 2010-03-25 2013-09-17 Altera Corporation Solving linear matrices in an integrated circuit device
US8862650B2 (en) 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8589463B2 (en) 2010-06-25 2013-11-19 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8577951B1 (en) 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
US8645451B2 (en) 2011-03-10 2014-02-04 Altera Corporation Double-clocked specialized processing block in an integrated circuit device
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
US8812576B1 (en) 2011-09-12 2014-08-19 Altera Corporation QR decomposition in an integrated circuit device
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8762443B1 (en) 2011-11-15 2014-06-24 Altera Corporation Matrix operations in an integrated circuit device
US8543634B1 (en) 2012-03-30 2013-09-24 Altera Corporation Specialized processing block for programmable integrated circuit device
US9098332B1 (en) 2012-06-01 2015-08-04 Altera Corporation Specialized processing block with fixed- and floating-point structures
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
US9379687B1 (en) 2014-01-14 2016-06-28 Altera Corporation Pipelined systolic finite impulse response filter
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
US9602108B1 (en) * 2015-09-11 2017-03-21 Xilinx, Inc. Lut cascading circuit
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
US10541686B1 (en) * 2018-11-15 2020-01-21 Xilinx, Inc. Circuit and method for ensuring a stable IO interface during partial reconfiguration of a reprogrammable integrated circuit device

Citations (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3473160A (en) 1966-10-10 1969-10-14 Stanford Research Inst Electronically controlled microelectronic cellular logic array
US3761695A (en) 1972-10-16 1973-09-25 Ibm Method of level sensitive testing a functional logic system
US3783254A (en) 1972-10-16 1974-01-01 Ibm Level sensitive logic system
US3806891A (en) 1972-12-26 1974-04-23 Ibm Logic circuit for scan-in/scan-out
GB1444084A (en) 1972-06-21 1976-07-28 Honeywell Inf Systems Generalized logic device
US4020469A (en) 1975-04-09 1977-04-26 Frank Manning Programmable arrays
US4124899A (en) 1977-05-23 1978-11-07 Monolithic Memories, Inc. Programmable array logic circuit
US4286173A (en) 1978-03-27 1981-08-25 Hitachi, Ltd. Logical circuit having bypass circuit
US4293919A (en) 1979-08-13 1981-10-06 International Business Machines Corporation Level sensitive scan design (LSSD) system
US4298980A (en) 1978-09-30 1981-11-03 International Business Machines Corporation LSI Circuitry conforming to level sensitive scan design (LSSD) rules and method of testing same
US4366393A (en) 1979-03-15 1982-12-28 Nippon Electric Co., Ltd. Integrated logic circuit adapted to performance tests
US4428060A (en) 1980-08-09 1984-01-24 International Business Machines Corporation Shift register latch circuit means for check and test purposes and contained in LSI circuitry conforming to level sensitive scan design (LSSD) rules and techniques
WO1984001225A1 (en) 1982-09-21 1984-03-29 Advanced Micro Devices Inc A diagnostic circuit for digital systems
WO1984002580A1 (en) 1982-12-27 1984-07-05 Storage Technology Partners Vlsi chip with integral testing circuit
US4488259A (en) 1982-10-29 1984-12-11 Ibm Corporation On chip monitor
US4546273A (en) 1983-01-11 1985-10-08 Burroughs Corporation Dynamic re-programmable PLA
US4597042A (en) 1982-09-28 1986-06-24 International Business Machines Corporation Device for loading and reading strings of latches in a data processing system
US4609986A (en) 1984-06-14 1986-09-02 Altera Corporation Programmable logic array device using EPROM technology
US4617479A (en) 1984-05-03 1986-10-14 Altera Corporation Programmable logic array device using EPROM technology
US4642487A (en) 1984-09-26 1987-02-10 Xilinx, Inc. Special interconnect for configurable logic array
US4649539A (en) 1985-11-04 1987-03-10 Honeywell Information Systems Inc. Apparatus providing improved diagnosability
US4667325A (en) 1983-03-04 1987-05-19 Hitachi, Ltd. Method and apparatus of scanning control for information processing systems
US4670877A (en) 1983-09-26 1987-06-02 Kabushiki Kaisha Toshiba LSI circuit with self-checking facilitating circuit built therein
US4677318A (en) 1985-04-12 1987-06-30 Altera Corporation Programmable logic storage element for programmable logic devices
US4680733A (en) 1983-12-15 1987-07-14 International Business Machines Corporation Device for serializing/deserializing bit configurations of variable length
US4701920A (en) 1985-11-08 1987-10-20 Eta Systems, Inc. Built-in self-test system for VLSI circuit chips
US4706216A (en) 1985-02-27 1987-11-10 Xilinx, Inc. Configurable logic element
US4710927A (en) 1986-07-24 1987-12-01 Integrated Device Technology, Inc. Diagnostic circuit
US4713792A (en) 1985-06-06 1987-12-15 Altera Corporation Programmable macrocell using eprom or eeprom transistors for architecture control in programmable logic circuits
US4717912A (en) 1982-10-07 1988-01-05 Advanced Micro Devices, Inc. Apparatus for producing any one of a plurality of signals at a single output
US4750149A (en) 1986-07-03 1988-06-07 Integrated Device Technology, Inc. Programmable FIFO buffer
US4760517A (en) 1986-10-17 1988-07-26 Integrated Device Technology, Inc. Thirty-two bit, bit slice processor
US4780822A (en) 1986-09-17 1988-10-25 Integrated Device Technology, Inc. Semaphore circuit for shared memory cells
US4871930A (en) 1988-05-05 1989-10-03 Altera Corporation Programmable logic device with array blocks connected via programmable interconnect
US4899067A (en) 1988-07-22 1990-02-06 Altera Corporation Programmable logic devices with spare circuits for use in replacing defective circuits
US4912342A (en) 1988-05-05 1990-03-27 Altera Corporation Programmable logic device with array blocks with programmable clocking
US4912522A (en) 1988-08-17 1990-03-27 Asea Brown Boveri Inc. Light driven remote system and power supply therefor
US4961191A (en) 1988-09-02 1990-10-02 Mitsubishi Denki Kabushiki Kaisha Test circuit for logic circuits
US4962070A (en) 1985-10-31 1990-10-09 Sullivan Thomas M Non-porous metal-oxide coated carbonaceous fibers and applications in ceramic matrices
US5017813A (en) 1990-05-11 1991-05-21 Actel Corporation Input/output module with latches
US5053949A (en) 1989-04-03 1991-10-01 Motorola, Inc. No-chip debug peripheral which uses externally provided instructions to control a core processing unit
US5079693A (en) 1989-02-28 1992-01-07 Integrated Device Technology, Inc. Bidirectional FIFO buffer having reread and rewrite means
US5099481A (en) 1989-02-28 1992-03-24 Integrated Device Technology, Inc. Registered RAM array with parallel and serial interface
US5121006A (en) 1991-04-22 1992-06-09 Altera Corporation Registered logic macrocell with product term allocation and adjacent product term stealing
EP0511752A1 (en) 1991-04-26 1992-11-04 AT&T Corp. High-speed integrated circuit testing with jtag
WO1992020157A1 (en) 1991-05-03 1992-11-12 Lattice Semiconductor Corporation Structure and method for multiplexing pins for in-system programming
US5175859A (en) 1990-05-01 1992-12-29 Integrated Device Technology, Inc. Apparatus for disabling unused cache tag input/output pins during processor reset by sensing pull-down resistors connected to disabled pins
US5221865A (en) 1991-06-21 1993-06-22 Crosspoint Solutions, Inc. Programmable input/output buffer circuit with test capability
USRE34363E (en) 1984-03-12 1993-08-31 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
US5241224A (en) 1991-04-25 1993-08-31 Altera Corporation High-density erasable programmable logic device architecture using multiplexer interconnections
US5260611A (en) 1991-09-03 1993-11-09 Altera Corporation Programmable logic array having local and long distance conductors
US5260610A (en) 1991-09-03 1993-11-09 Altera Corporation Programmable logic element interconnections for programmable logic array integrated circuits
GB2267767A (en) 1992-06-11 1993-12-15 Nokia Mobile Phones Ltd On-board (or in-situ) programming of microprocessor memories.
US5317212A (en) 1993-03-19 1994-05-31 Wahlstrom Sven E Dynamic control of configurable logic
US5331645A (en) 1990-01-17 1994-07-19 Integrated Device Technology, Inc. Expandable digital error detection and correction device
US5336950A (en) 1991-08-29 1994-08-09 National Semiconductor Corporation Configuration features in a configurable logic array
US5350954A (en) 1993-03-29 1994-09-27 Altera Corporation Macrocell with flexible product term allocation
US5361373A (en) 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5379300A (en) 1991-03-27 1995-01-03 Nec Corporation Test signal output circuit for LSI
EP0639006A1 (en) 1993-08-13 1995-02-15 Lattice Semiconductor Corporation Multiplexed control pins for in-system programming and boundary scan testing using state machines in a high density programmable logic device
US5392296A (en) 1991-09-05 1995-02-21 Nec Corporation Testing circuit provided in digital logic circuits
US5398250A (en) 1988-06-22 1995-03-14 Kabushiki Kaisha Toshiba Circuit for testing circuit blocks controlled by microinstructions
US5430735A (en) 1986-09-10 1995-07-04 U.S. Philips Corporation Testing integrated circuits provided on a carrier
US5448576A (en) 1992-10-29 1995-09-05 Bull Hn Information Systems Inc. Boundary scan architecture extension
US5572148A (en) 1995-03-22 1996-11-05 Altera Corporation Programmable logic array integrated circuit with general-purpose memory configurable as a random access or FIFO memory
US5581564A (en) 1990-12-18 1996-12-03 Integrated Device Technology, Inc. Diagnostic circuit
US5594367A (en) 1995-10-16 1997-01-14 Xilinx, Inc. Output multiplexer within input/output circuit for time multiplexing and high speed logic
US5644496A (en) 1989-08-15 1997-07-01 Advanced Micro Devices, Inc. Programmable logic device with internal time-constant multiplexing of signals from external interconnect buses
US5705938A (en) * 1995-05-02 1998-01-06 Xilinx, Inc. Programmable switch for FPGA input/output signals
US5869979A (en) * 1996-04-05 1999-02-09 Altera Corporation Technique for preconditioning I/Os during reconfiguration

Patent Citations (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3473160A (en) 1966-10-10 1969-10-14 Stanford Research Inst Electronically controlled microelectronic cellular logic array
GB1444084A (en) 1972-06-21 1976-07-28 Honeywell Inf Systems Generalized logic device
US3761695A (en) 1972-10-16 1973-09-25 Ibm Method of level sensitive testing a functional logic system
US3783254A (en) 1972-10-16 1974-01-01 Ibm Level sensitive logic system
US3806891A (en) 1972-12-26 1974-04-23 Ibm Logic circuit for scan-in/scan-out
US4020469A (en) 1975-04-09 1977-04-26 Frank Manning Programmable arrays
US4124899B1 (en) 1977-05-23 1987-04-28
US4124899A (en) 1977-05-23 1978-11-07 Monolithic Memories, Inc. Programmable array logic circuit
US4286173A (en) 1978-03-27 1981-08-25 Hitachi, Ltd. Logical circuit having bypass circuit
US4298980A (en) 1978-09-30 1981-11-03 International Business Machines Corporation LSI Circuitry conforming to level sensitive scan design (LSSD) rules and method of testing same
US4366393A (en) 1979-03-15 1982-12-28 Nippon Electric Co., Ltd. Integrated logic circuit adapted to performance tests
US4293919A (en) 1979-08-13 1981-10-06 International Business Machines Corporation Level sensitive scan design (LSSD) system
US4428060A (en) 1980-08-09 1984-01-24 International Business Machines Corporation Shift register latch circuit means for check and test purposes and contained in LSI circuitry conforming to level sensitive scan design (LSSD) rules and techniques
US4476560A (en) 1982-09-21 1984-10-09 Advanced Micro Devices, Inc. Diagnostic circuit for digital systems
WO1984001225A1 (en) 1982-09-21 1984-03-29 Advanced Micro Devices Inc A diagnostic circuit for digital systems
US4597042A (en) 1982-09-28 1986-06-24 International Business Machines Corporation Device for loading and reading strings of latches in a data processing system
US4717912A (en) 1982-10-07 1988-01-05 Advanced Micro Devices, Inc. Apparatus for producing any one of a plurality of signals at a single output
US4488259A (en) 1982-10-29 1984-12-11 Ibm Corporation On chip monitor
WO1984002580A1 (en) 1982-12-27 1984-07-05 Storage Technology Partners Vlsi chip with integral testing circuit
US4546273A (en) 1983-01-11 1985-10-08 Burroughs Corporation Dynamic re-programmable PLA
US4667325A (en) 1983-03-04 1987-05-19 Hitachi, Ltd. Method and apparatus of scanning control for information processing systems
US4670877A (en) 1983-09-26 1987-06-02 Kabushiki Kaisha Toshiba LSI circuit with self-checking facilitating circuit built therein
US4680733A (en) 1983-12-15 1987-07-14 International Business Machines Corporation Device for serializing/deserializing bit configurations of variable length
USRE34363E (en) 1984-03-12 1993-08-31 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
US4617479A (en) 1984-05-03 1986-10-14 Altera Corporation Programmable logic array device using EPROM technology
US4617479B1 (en) 1984-05-03 1993-09-21 Altera Semiconductor Corp. Programmable logic array device using eprom technology
US4609986A (en) 1984-06-14 1986-09-02 Altera Corporation Programmable logic array device using EPROM technology
US4642487A (en) 1984-09-26 1987-02-10 Xilinx, Inc. Special interconnect for configurable logic array
US4706216A (en) 1985-02-27 1987-11-10 Xilinx, Inc. Configurable logic element
US4677318A (en) 1985-04-12 1987-06-30 Altera Corporation Programmable logic storage element for programmable logic devices
US4713792A (en) 1985-06-06 1987-12-15 Altera Corporation Programmable macrocell using eprom or eeprom transistors for architecture control in programmable logic circuits
US4962070A (en) 1985-10-31 1990-10-09 Sullivan Thomas M Non-porous metal-oxide coated carbonaceous fibers and applications in ceramic matrices
US4649539A (en) 1985-11-04 1987-03-10 Honeywell Information Systems Inc. Apparatus providing improved diagnosability
US4701920A (en) 1985-11-08 1987-10-20 Eta Systems, Inc. Built-in self-test system for VLSI circuit chips
US4750149A (en) 1986-07-03 1988-06-07 Integrated Device Technology, Inc. Programmable FIFO buffer
US4710927A (en) 1986-07-24 1987-12-01 Integrated Device Technology, Inc. Diagnostic circuit
US4710927B1 (en) 1986-07-24 1993-08-31 Integrated Device Tech
US5430735A (en) 1986-09-10 1995-07-04 U.S. Philips Corporation Testing integrated circuits provided on a carrier
US4780822A (en) 1986-09-17 1988-10-25 Integrated Device Technology, Inc. Semaphore circuit for shared memory cells
US4760517A (en) 1986-10-17 1988-07-26 Integrated Device Technology, Inc. Thirty-two bit, bit slice processor
US4871930A (en) 1988-05-05 1989-10-03 Altera Corporation Programmable logic device with array blocks connected via programmable interconnect
US4912342A (en) 1988-05-05 1990-03-27 Altera Corporation Programmable logic device with array blocks with programmable clocking
US5398250A (en) 1988-06-22 1995-03-14 Kabushiki Kaisha Toshiba Circuit for testing circuit blocks controlled by microinstructions
US4899067A (en) 1988-07-22 1990-02-06 Altera Corporation Programmable logic devices with spare circuits for use in replacing defective circuits
US4912522A (en) 1988-08-17 1990-03-27 Asea Brown Boveri Inc. Light driven remote system and power supply therefor
US4961191A (en) 1988-09-02 1990-10-02 Mitsubishi Denki Kabushiki Kaisha Test circuit for logic circuits
US5079693A (en) 1989-02-28 1992-01-07 Integrated Device Technology, Inc. Bidirectional FIFO buffer having reread and rewrite means
US5099481A (en) 1989-02-28 1992-03-24 Integrated Device Technology, Inc. Registered RAM array with parallel and serial interface
US5053949A (en) 1989-04-03 1991-10-01 Motorola, Inc. No-chip debug peripheral which uses externally provided instructions to control a core processing unit
US5644496A (en) 1989-08-15 1997-07-01 Advanced Micro Devices, Inc. Programmable logic device with internal time-constant multiplexing of signals from external interconnect buses
US5331645A (en) 1990-01-17 1994-07-19 Integrated Device Technology, Inc. Expandable digital error detection and correction device
US5175859A (en) 1990-05-01 1992-12-29 Integrated Device Technology, Inc. Apparatus for disabling unused cache tag input/output pins during processor reset by sensing pull-down resistors connected to disabled pins
US5017813A (en) 1990-05-11 1991-05-21 Actel Corporation Input/output module with latches
US5581564A (en) 1990-12-18 1996-12-03 Integrated Device Technology, Inc. Diagnostic circuit
US5379300A (en) 1991-03-27 1995-01-03 Nec Corporation Test signal output circuit for LSI
US5121006A (en) 1991-04-22 1992-06-09 Altera Corporation Registered logic macrocell with product term allocation and adjacent product term stealing
US5241224A (en) 1991-04-25 1993-08-31 Altera Corporation High-density erasable programmable logic device architecture using multiplexer interconnections
US5355369A (en) 1991-04-26 1994-10-11 At&T Bell Laboratories High-speed integrated circuit testing with JTAG
EP0511752A1 (en) 1991-04-26 1992-11-04 AT&T Corp. High-speed integrated circuit testing with jtag
WO1992020157A1 (en) 1991-05-03 1992-11-12 Lattice Semiconductor Corporation Structure and method for multiplexing pins for in-system programming
US5221865A (en) 1991-06-21 1993-06-22 Crosspoint Solutions, Inc. Programmable input/output buffer circuit with test capability
US5336950A (en) 1991-08-29 1994-08-09 National Semiconductor Corporation Configuration features in a configurable logic array
US5260611A (en) 1991-09-03 1993-11-09 Altera Corporation Programmable logic array having local and long distance conductors
US5260610A (en) 1991-09-03 1993-11-09 Altera Corporation Programmable logic element interconnections for programmable logic array integrated circuits
US5392296A (en) 1991-09-05 1995-02-21 Nec Corporation Testing circuit provided in digital logic circuits
GB2267767A (en) 1992-06-11 1993-12-15 Nokia Mobile Phones Ltd On-board (or in-situ) programming of microprocessor memories.
US5448576A (en) 1992-10-29 1995-09-05 Bull Hn Information Systems Inc. Boundary scan architecture extension
US5361373A (en) 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5317212A (en) 1993-03-19 1994-05-31 Wahlstrom Sven E Dynamic control of configurable logic
US5375086A (en) 1993-03-19 1994-12-20 Wahlstrom; Sven E. Dynamic control of configurable logic
US5350954A (en) 1993-03-29 1994-09-27 Altera Corporation Macrocell with flexible product term allocation
EP0639006A1 (en) 1993-08-13 1995-02-15 Lattice Semiconductor Corporation Multiplexed control pins for in-system programming and boundary scan testing using state machines in a high density programmable logic device
US5572148A (en) 1995-03-22 1996-11-05 Altera Corporation Programmable logic array integrated circuit with general-purpose memory configurable as a random access or FIFO memory
US5705938A (en) * 1995-05-02 1998-01-06 Xilinx, Inc. Programmable switch for FPGA input/output signals
US5594367A (en) 1995-10-16 1997-01-14 Xilinx, Inc. Output multiplexer within input/output circuit for time multiplexing and high speed logic
US5869979A (en) * 1996-04-05 1999-02-09 Altera Corporation Technique for preconditioning I/Os during reconfiguration

Non-Patent Citations (50)

* Cited by examiner, † Cited by third party
Title
"Checking Out VLSI With Standard Test Gear," Technology to Watch, Electronics, May 26, 1986, pp. 33-35.
"Generalized Scan Test Technique for VLSI Circuits," IBM Technical Disclosure Bulletin, vol. 28, No. 4, Sep. 1985, pp. 1600-1604.
"Variable Access Latch Test," IBM Technical Disclosure Bulletin, vol. 28, No. 10, Mar. 1986, pp. 4475-4477.
"VLSI-Chip Test System Itself at Board Level," Technology to Watch, Electronics, Aug. 5, 1985, pp. 46-49.
Albicki et al., "Distribution of Control Signals in Self-Testing Designs," Technical Report EL-86-02, University of Rochester, College of Engineering and Applied Sciences, Department of Electrical Engineering, Rochester, N.Y., Feb. 1986 (Albicki), pp. 1-22 and Appendix,pp. A-1 to A-4.
Altera Corporation, Application Brief 141, "In-System Programmability in MAX 9000 Devices," Jun. 1995, Version 1, pp. 1-8.
Altera Corporation, Application Brief 145, "Designing for In-System Programmability in MAX 7000S Devices," Jun. 1995, Version 1, pp. 1-9.
Altera Corporation, Application Brief Note 39, "JTAG Boundary-Scan Testing in Altera Devices," Nov. 1995, Version 3, pp. 1-28.
Altera Corporation, Application Note 33, "Configuring Flex 8000 Devices," May 1994, Version 3, pp. 33-71.
Altera Corporation, Application Note 38, "Configuring Multiples Flex 8000 Devices," May 1994, Version 2, pp. 71-91.
Altera Corporation, Application Note 45, "Configuring Flashlogic Devices," Apr. 1996, Version 1, pp. 1-8.
AT&T Microlectronics, Advance Data Sheet, Optimized Reconfigurable Cell Array (Orca) Series Field-Programmable Gate Arrays, Feb. 1993, pp. 1-87.
Aylor et al., "Structured Design for Testability in Semicustom VLSI," IEEE Micro, Feb. 1986, pp. 51-58.
Barnes, "Interconnection Test Arrangement," IBM Technical Disclosure Bulletin, vol. 22, No. 8B, Jan. 1980, pp. 3679-3680.
Becker et al., "Element Test and Maintenance Bus (ETM-Bus)," VHSIC Phase 2 Interoperability Standards, Version 1.0, IBM, Honeywell TRW, 1985, pp. 1-19.
Berglund, "Level-Sensitive Scan Design Test Chips, Boards, System," Electronics, Mar. 15, 1979, pp. 108-110.
Buchanan, "Scan-Design Methods Increase Testability of Standard Cells," Computer Design, Mar. 1, 1986, pp. 79-84.
DasGupta et al., "A Variation of LSSD and Its Implications on Design and Test Pattern Generation in VLSI," 1982 IEEE Test Conference, Paper 3.3, pp. 63-66.
DasGupta, "LSSD Scan Technique," IBM Technical Disclosure Bulletin, vol. 24, No. 8, Jan. 1982, p. 4425.
Eichelberger et al., A Logic Design Structure for LSI Testability, Proceedings, 14th Design Automation Conference, 1977, pp. 462-468.
Flex 8000 Programmable Logic Device Family Handbook pp. 33-70, May 1994.
Flex 8000 Programmable Logic Device Family Handbook pp. 91-113, Aug. 1994.
Gerner et al., "Scan Path in CMOS Semicustom LSI Chips?" 1984 IEEE International Test Conference, Paper 25.1, pp. 834-841.
Godoy et al., "Automatic Checking of Logic Design Structures for Compliance with Testability Ground Rules," Proceedings 14th Design Automation Conference, 1977, pp. 469-478.
Goel et al., "Electronic Chip-In-Place Test," 1982 IEEE Test Conference, Paper 3.6, pp. 83-89.
Goel et al., "Electronic Chip-In-Place Test," Digest of Papers, 1982 International Test Conference, Nov. 15-18, 1982, pp. 83-90.
Goel et al., "Electronic Chip-In-Place Test," Proceedings 19th Design Automation Conference, 1982, Paper 30.1, pp. 482-488.
Goel, "Logic-Array Isolation for Testing," IBM Technical Disclosure Bulletin, vol. 23, No. 7A, Dec. 1980, pp. 2794-2799.
Grason et al., "Digital Test Generation and Design for Testability," Association for Computing Machinery, 1980, IEEE Catalog No. 0-8979102-0-6/80/0600/0175, pp. 175-189.
Hsu et al., "Selective Controllability: A Proposal for Testing and Diagnosis," Proceedings of the 1978 Semiconductor Test Conference, pp. 110-116.
Hsu et al., "Structured Trace Diagnosis for LSSD Board Testing-An Alternative to Full Fault Simulated Diagnosis," Proceedings, 18th Design Automation Conference, 1981, Paper 44.3, pp. 891-897.
Hsu et al., "Structured Trace Diagnosis for LSSD Board Testing—An Alternative to Full Fault Simulated Diagnosis," Proceedings, 18th Design Automation Conference, 1981, Paper 44.3, pp. 891-897.
IEEE Standard Test Access Port and Boundary-Scan Architecture, 1993.
Jones et al., "An Approach to a Testing System for LSI," Computer Aided Design of Digital Electronic Circuits and Systems, 1979, pp. 187-204.
Komonytsky, "LSI Self-Test Using Level Sensitive Scan Design and Signature Analysis," Digest of Papers, 1982 International Test Conference, Nov. 15-18, 1982, pp. 414-424.
Konemann et al., "Built-In Test for Compex Digital Integrated Circuits," IEEE Journal of Solid-State Circuits, vol. SC-15, No. 3, Jun. 1980, pp. 315-319.
Saluja et al., "An Alternative to Scan Design Methods for Sequential Machines," IEEE Transactions on Computers, vol. C-35, No. 4, Apr. 1986, pp. 384-388.
Saluja, "An Enhancement of LSSD to Reduce Test Pattern Generation Effort and Increase Fault Coverage," Proceedings of the 19th Design Automation Conference, 1982, Paper 30.2, pp. 489-494.
Segers, "A Self-Test Method for Digital Circuits," 1981 IEEE Test Conference, Paper 4.1, pp. 79-85.
Turino, "Testability Circuit Solves SMT Board Access Problems" Electronic Packaging and Production, Jan. 1986, pp. 110-113.
Westcoot, "The Self-Assist Test Approach to Embedded Arrays," 1981 IEEE Test Conference, Paper 9.1, pp. 203-207.
Williams et al., "Design for Testability-A Survey," IEEE Transactions on Computers, vol. C-31, No. 1, Jan. 1982, pp. 2-15.
Williams et al., "Design for Testability—A Survey," IEEE Transactions on Computers, vol. C-31, No. 1, Jan. 1982, pp. 2-15.
Williams, "VLSI Testing," Computer, Oct. 1984, pp. 126-136.
Xilinx 3000 Logic Cell Array Families Handbook, pp. 2-105 through 2-152, Aug. 1993.
Xilinx 4000 Logic Cell Array Families Handbook, pp. 2-7 through 2-46, Aug. 1993.
Xilinx Corp., The Programmable Logic Data Book, "Boundary Scan in XC4000 Devices," pp. 8-45 to pp. 8-52 (1994).
Xilinx Corp., The Programmable Logic Data Book, "Boundary-Scan Emulator in XC3000 Devices," pp. 8-53 to pp. 8-59 (1994).
Xilinx Corp., The Programmable Logic Data Book, "XC2000, Logic Cell Array Families", pp. 2-187 to 2-216 (version 4, Aug., 1994).
Zasio, "Shifting Away from Probes for Wafer Test," Digest of Papers, Compcon Spring 83, 1983, pp. 395,398.

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6408432B1 (en) * 1996-11-14 2002-06-18 Altera Corporation Apparatus and method for in-system programming of integrated circuits containing programmable elements
US6356107B1 (en) * 1998-05-21 2002-03-12 Lattice Semiconductor Corporation Method and structure dynamic in-system programming
WO2002054594A1 (en) * 2000-12-29 2002-07-11 Quicklogic Corporation Architecture for field programmable gate array
US6426649B1 (en) * 2000-12-29 2002-07-30 Quicklogic Corporation Architecture for field programmable gate array
US20030042929A1 (en) * 2001-08-31 2003-03-06 Kock Ernst Josef Driver circuit
US7489362B2 (en) 2003-03-04 2009-02-10 Broadcom Corporation Television functionality on a chip
US7961255B2 (en) 2003-03-04 2011-06-14 Broadcom Corporation Television functionality on a chip
US20050028220A1 (en) * 2003-03-04 2005-02-03 Broadcom Corporation Television functionality on a chip
US20090190656A1 (en) * 2003-03-04 2009-07-30 Broadcom Corporation Television Functionality on a Chip
US8854545B2 (en) 2003-03-04 2014-10-07 Broadcom Corporation Television functionality on a chip
US7287189B1 (en) * 2003-06-25 2007-10-23 Altera Corporation I/O configuration and reconfiguration trigger through testing interface
US7532648B2 (en) * 2003-08-14 2009-05-12 Broadcom Corporation System and method using an I/O multiplexer module
US20050036523A1 (en) * 2003-08-14 2005-02-17 Sweet James D. System and method using an I/O multiplexer module
US20080250281A1 (en) * 2004-06-29 2008-10-09 Manoj Kumar Agarwal Methods and apparatus for monitoring internal signals in an integrated circuit
US7669096B2 (en) * 2004-06-29 2010-02-23 Electronics For Imaging, Inc. Methods and apparatus for monitoring internal signals in an integrated circuit
US7183801B2 (en) * 2004-09-08 2007-02-27 Atmel Corporation Programmable logic auto write-back
WO2006028623A3 (en) * 2004-09-08 2006-11-09 Atmel Corp Programmable logic auto write-back
WO2006028623A2 (en) * 2004-09-08 2006-03-16 Atmel Corporation Programmable logic auto write-back
US20060050568A1 (en) * 2004-09-08 2006-03-09 Kao Oliver C Programmable logic auto write-back
US20070022345A1 (en) * 2005-06-02 2007-01-25 Cpu Technology, Inc. Pseudo-random test generator in an integrated circuit
US7500162B2 (en) * 2005-06-02 2009-03-03 Cpu Technology, Inc. Sourcing internal signals to output pins of an integrated circuit through sequential multiplexing
US7538574B1 (en) 2005-12-05 2009-05-26 Lattice Semiconductor Corporation Transparent field reconfiguration for programmable logic devices
US7652500B1 (en) 2006-02-09 2010-01-26 Lattice Semiconductor Corporation Reconfiguration of programmable logic devices
US7459931B1 (en) * 2006-04-05 2008-12-02 Lattice Semiconductor Corporation Programmable logic devices with transparent field reconfiguration
US7532029B1 (en) * 2007-04-18 2009-05-12 Altera Corporation Techniques for reconfiguring programmable circuit blocks
US7724030B1 (en) * 2007-12-03 2010-05-25 Xilinx, Inc. Method and apparatus for providing a feedback path for an output signal
US20110175647A1 (en) * 2008-10-01 2011-07-21 Sangwook Kim Method of operating inverter
US8384428B1 (en) 2011-01-14 2013-02-26 Lattice Semiconductor Corporation Pre-configuration programmability of I/O circuitry

Also Published As

Publication number Publication date
US5869979A (en) 1999-02-09

Similar Documents

Publication Publication Date Title
US6208162B1 (en) Technique for preconditioning I/Os during reconfiguration
US5821773A (en) Look-up table based logic element with complete permutability of the inputs to the secondary signals
US6184707B1 (en) Look-up table based logic element with complete permutability of the inputs to the secondary signals
US5894228A (en) Tristate structures for programmable logic devices
US5570040A (en) Programmable logic array integrated circuit incorporating a first-in first-out memory
US5646544A (en) System and method for dynamically reconfiguring a programmable gate array
US7474121B1 (en) Configurable memory design for masked programmable logic
US5757207A (en) Programmable logic array integrated circuit incorporating a first-in first-out memory
US5572148A (en) Programmable logic array integrated circuit with general-purpose memory configurable as a random access or FIFO memory
US6049223A (en) Programmable logic array integrated circuit with general-purpose memory configurable as a random access or FIFO memory
US5764076A (en) Circuit for partially reprogramming an operational programmable logic device
US6034540A (en) Programmable logic integrated circuit architecture incorporating a lonely register
US6499124B1 (en) Intest security circuit for boundary-scan architecture
US5606266A (en) Programmable logic array integrated circuits with enhanced output routing
EP0868667B1 (en) High impedance test mode for jtag
US5883526A (en) Hierarchical interconnect for programmable logic devices
US6882177B1 (en) Tristate structures for programmable logic devices
EP0617513A2 (en) Field programmable gate array with direct input/output connection
JP2002505756A (en) Configuration Control in Programmable Logic Devices Using Nonvolatile Elements
JPH0256114A (en) Programmable logic device having array block coupled through programmable wiring
EP0449608A1 (en) Programmable connector
US7489163B2 (en) FPGA powerup to known functional state
US6570404B1 (en) High-performance programmable logic architecture
US7406642B1 (en) Techniques for capturing signals at output pins in a programmable logic integrated circuit
US9946667B2 (en) Microcontroller with configurable logic array

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

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

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12